@bendyline/gezel-inference 0.0.0-stage → 1.0.0
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/LICENSE +21 -0
- package/README.md +13 -2
- package/dist/cache/adapter.d.ts +115 -0
- package/dist/cache/adapter.js +23 -0
- package/dist/cache/budget.d.ts +15 -0
- package/dist/cache/budget.js +31 -0
- package/dist/cache/controller.d.ts +205 -0
- package/dist/cache/controller.js +377 -0
- package/dist/catalog/LICENSE +21 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/manifest.json +146 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/manifest.json +146 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.2/manifest.json +15 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/manifest.json +166 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/versions/1.1.0/manifest.json +62 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/versions/1.1.1/manifest.json +61 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-mxfp4/manifest.json +125 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-mxfp4/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/manifest.json +125 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/versions/1.1.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2q4/manifest.json +126 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2q4/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/manifest.json +318 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/versions/1.0.0/manifest.json +225 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/versions/1.1.0/manifest.json +225 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/manifest.json +249 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.0.0/manifest.json +70 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.2/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.3/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.2.0/manifest.json +98 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/manifest.json +228 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.2/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.3/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.1.0/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/manifest.json +220 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.1.0/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.0/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.1/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.2/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.3.0/manifest.json +81 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/manifest.json +226 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.1.0/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.1.1/manifest.json +82 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.0/manifest.json +82 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.1/manifest.json +95 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.2/manifest.json +95 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.3.0/manifest.json +86 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/manifest.json +213 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.1.0/manifest.json +67 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.1.2/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.2.0/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.2.1/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.3.0/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/manifest.json +205 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.1.2/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.2.0/manifest.json +76 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.2.1/manifest.json +76 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.3.0/manifest.json +76 -0
- package/dist/catalog/chat-models/gl/glm-5.2-754b-q2/manifest.json +127 -0
- package/dist/catalog/chat-models/gl/glm-5.2-754b-q2/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/manifest.json +140 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.0/manifest.json +23 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.1/manifest.json +26 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/manifest.json +247 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/versions/1.0.0/manifest.json +137 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/versions/1.1.0/manifest.json +135 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/manifest.json +195 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/versions/1.1.1/manifest.json +71 -0
- package/dist/catalog/chat-models/gr/granite4.2-30b-q4/manifest.json +200 -0
- package/dist/catalog/chat-models/gr/granite4.2-30b-q4/versions/1.0.0/manifest.json +72 -0
- package/dist/catalog/chat-models/gr/granite4.2-3b-q4/manifest.json +196 -0
- package/dist/catalog/chat-models/gr/granite4.2-3b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/gr/granite4.2-8b-q4/manifest.json +189 -0
- package/dist/catalog/chat-models/gr/granite4.2-8b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/index.json +1 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/manifest.json +235 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.0/manifest.json +124 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.1/manifest.json +124 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.2/manifest.json +123 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/manifest.json +257 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/versions/1.0.0/manifest.json +145 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/versions/1.0.1/manifest.json +145 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/manifest.json +285 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.0/manifest.json +174 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.1/manifest.json +174 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.2/manifest.json +173 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/manifest.json +162 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/versions/1.0.0/manifest.json +59 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/versions/1.0.1/manifest.json +58 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/manifest.json +134 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/versions/1.1.0/manifest.json +57 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/versions/1.1.1/manifest.json +56 -0
- package/dist/catalog/chat-models/mi/minicpm5-1b-q4/manifest.json +156 -0
- package/dist/catalog/chat-models/mi/minicpm5-1b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/mi/minicpm5-2b-q4/manifest.json +161 -0
- package/dist/catalog/chat-models/mi/minicpm5-2b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/manifest.json +159 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/versions/1.1.0/manifest.json +62 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/versions/1.1.1/manifest.json +61 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +275 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/versions/1.0.0/manifest.json +154 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/versions/1.0.1/manifest.json +153 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/manifest.json +135 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.1/manifest.json +20 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.2/manifest.json +20 -0
- package/dist/catalog/chat-models/na/nanbeige4.2-3b-q4/manifest.json +138 -0
- package/dist/catalog/chat-models/na/nanbeige4.2-3b-q4/versions/1.0.0/manifest.json +14 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/manifest.json +212 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.0/manifest.json +94 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.1/manifest.json +94 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.2/manifest.json +93 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/manifest.json +135 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/versions/1.0.0/manifest.json +30 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/versions/1.0.1/manifest.json +30 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/manifest.json +192 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/versions/1.0.0/manifest.json +74 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/versions/1.0.1/manifest.json +73 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/manifest.json +207 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/versions/1.0.0/manifest.json +89 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/versions/1.0.1/manifest.json +88 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/manifest.json +224 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/versions/1.0.0/manifest.json +94 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/manifest.json +244 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/versions/1.0.0/manifest.json +114 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/manifest.json +215 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/versions/1.0.0/manifest.json +84 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/versions/1.0.1/manifest.json +83 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q4/manifest.json +208 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q4/versions/1.0.0/manifest.json +74 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q8/manifest.json +223 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q8/versions/1.0.0/manifest.json +89 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/manifest.json +187 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/versions/1.0.0/manifest.json +53 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/versions/1.0.1/manifest.json +77 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/manifest.json +192 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/versions/1.0.0/manifest.json +58 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/versions/1.0.1/manifest.json +82 -0
- package/dist/catalog/chat-models/qw/qwen3.5-0.8b-q4/manifest.json +192 -0
- package/dist/catalog/chat-models/qw/qwen3.5-0.8b-q4/versions/1.0.0/manifest.json +75 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/manifest.json +315 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.0/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.1/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.2/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.3/manifest.json +163 -0
- package/dist/catalog/chat-models/qw/qwen3.5-27b-q4/manifest.json +217 -0
- package/dist/catalog/chat-models/qw/qwen3.5-27b-q4/versions/1.0.0/manifest.json +90 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.0/manifest.json +77 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.2/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.3/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/manifest.json +188 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.0/manifest.json +77 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.2/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.3/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/manifest.json +205 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.0/manifest.json +82 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.2/manifest.json +81 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.3/manifest.json +81 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/manifest.json +230 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.0/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.4/manifest.json +91 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.5/manifest.json +91 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.6/manifest.json +115 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/manifest.json +240 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.0/manifest.json +102 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.2/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.3/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.4/manifest.json +127 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/manifest.json +233 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.0/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.2/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.3/manifest.json +117 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/manifest.json +252 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.0/manifest.json +112 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.2/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.3/manifest.json +137 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-iq1-s/manifest.json +195 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-iq1-s/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q2/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q2/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/versions/1.0.1/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/manifest.json +291 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.2/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.3/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.4/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.5/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/manifest.json +278 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.1/manifest.json +104 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.2/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.3/manifest.json +127 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/manifest.json +278 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.0/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.2/manifest.json +137 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq3/manifest.json +221 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq3/versions/1.0.0/manifest.json +36 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/manifest.json +429 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.0.0/manifest.json +36 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.1.0/manifest.json +205 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.1.1/manifest.json +244 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/manifest.json +203 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.0/manifest.json +21 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.1/manifest.json +31 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.2/manifest.json +30 -0
- package/dist/catalog/chat-models/raw-index.json +1 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/manifest.json +79 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/manifest.json +204 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/versions/1.0.0/manifest.json +70 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/versions/1.0.1/manifest.json +70 -0
- package/dist/catalog/chat-models/un/underdog-saluki-27b-iq2-mix/manifest.json +164 -0
- package/dist/catalog/chat-models/un/underdog-saluki-27b-iq2-mix/versions/1.0.0/manifest.json +14 -0
- package/dist/catalog/knowledge-catalogs/be/bendyline-how-to-books/manifest.json +26 -0
- package/dist/catalog/knowledge-catalogs/be/bendyline-how-to-books/versions/2026.10.8/manifest.json +8950 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-alaska-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-alaska-part-0001/versions/2026.10.1/manifest.json +658 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-nevada-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-nevada-part-0001/versions/2026.10.1/manifest.json +666 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-300-399-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-300-399-part-0001/versions/2026.10.2/manifest.json +182 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-347-349/manifest.json +25 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-347-349/versions/2026.10.5/manifest.json +38 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0001/versions/2026.10.1/manifest.json +558 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0002/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0002/versions/2026.10.1/manifest.json +258 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0001/versions/2026.10.1/manifest.json +318 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0002/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0002/versions/2026.10.1/manifest.json +266 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0003/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0003/versions/2026.10.1/manifest.json +186 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0004/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0004/versions/2026.10.1/manifest.json +138 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0005/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0005/versions/2026.10.1/manifest.json +138 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-wyoming-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-wyoming-part-0001/versions/2026.10.3/manifest.json +626 -0
- package/dist/catalog/knowledge-catalogs/index.json +1 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/versions/2026.10.16/manifest.json +18270 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/versions/2026.10.16/manifest.json +1098 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/versions/2026.10.16/manifest.json +722 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/versions/2026.10.16/manifest.json +530 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/versions/2026.10.16/manifest.json +602 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/versions/2026.10.16/manifest.json +250 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-dotnet-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-dotnet-en/versions/2026.10.16/manifest.json +16794 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/versions/2026.10.16/manifest.json +1106 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/versions/2026.10.16/manifest.json +234 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-powershell-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-powershell-en/versions/2026.10.16/manifest.json +522 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-sql-server-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-sql-server-en/versions/2026.10.16/manifest.json +1850 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/versions/2026.10.16/manifest.json +1734 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-server-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-server-en/versions/2026.10.16/manifest.json +774 -0
- package/dist/catalog/knowledge-catalogs/raw-index.json +1 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/manifest.json +28 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.2/manifest.json +53 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.3/manifest.json +885 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.5/manifest.json +157 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/manifest.json +32 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.2/manifest.json +69 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.3/manifest.json +741 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.5/manifest.json +173 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/manifest.json +69 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/versions/2026.4.4/manifest.json +217 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/versions/2026.4.5/manifest.json +217 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/versions/2026.4.4/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.3/manifest.json +925 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/manifest.json +28 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.2/manifest.json +53 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.3/manifest.json +1665 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.5/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.3/manifest.json +1233 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.5/manifest.json +141 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.3/manifest.json +493 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/manifest.json +63 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/versions/2026.4.4/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/versions/2026.4.5/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/manifest.json +30 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.2/manifest.json +61 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.3/manifest.json +665 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.5/manifest.json +177 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.3/manifest.json +745 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/manifest.json +62 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/versions/2026.4.4/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/versions/2026.4.4/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/manifest.json +30 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.2/manifest.json +61 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.3/manifest.json +1253 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.3/manifest.json +1957 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/manifest.json +63 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/versions/2026.4.5/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/manifest.json +45 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/versions/2026.4.4/manifest.json +121 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/versions/2026.4.5/manifest.json +173 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/manifest.json +62 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/versions/2026.4.4/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/provenance.json +8 -0
- package/dist/chat/catalog-model-lookup.d.ts +21 -0
- package/dist/chat/catalog-model-lookup.js +48 -0
- package/dist/chat/local-model-tier.d.ts +1 -0
- package/dist/chat/local-model-tier.js +2 -0
- package/dist/chat/vision-capability.d.ts +1 -0
- package/dist/chat/vision-capability.js +3 -0
- package/dist/engine-components.d.ts +30 -0
- package/dist/engine-components.js +144 -0
- package/dist/engines/electron-native-reuse.d.ts +65 -0
- package/dist/engines/electron-native-reuse.js +305 -0
- package/dist/engines/native-file-manifest.json +1320 -0
- package/dist/engines/native-manifest.d.ts +70 -0
- package/dist/engines/native-manifest.js +98 -0
- package/dist/engines/registry.d.ts +88 -0
- package/dist/engines/registry.js +217 -0
- package/dist/engines/resolver.d.ts +121 -0
- package/dist/engines/resolver.js +894 -0
- package/dist/engines/signature.d.ts +85 -0
- package/dist/engines/signature.js +231 -0
- package/dist/fs/atomic.d.ts +53 -0
- package/dist/fs/atomic.js +202 -0
- package/dist/fs/config-store.d.ts +14 -0
- package/dist/fs/config-store.js +101 -0
- package/dist/fs/home-permissions.d.ts +18 -0
- package/dist/fs/home-permissions.js +27 -0
- package/dist/fs/safe-paths.d.ts +107 -0
- package/dist/fs/safe-paths.js +264 -0
- package/dist/fs/security-json.d.ts +13 -0
- package/dist/fs/security-json.js +67 -0
- package/dist/http/auth-context.d.ts +23 -0
- package/dist/http/auth-context.js +1 -0
- package/dist/http/engine-runtime-context.d.ts +30 -0
- package/dist/http/engine-runtime-context.js +1 -0
- package/dist/http/external-conversation-contract.d.ts +49 -0
- package/dist/http/external-conversation-contract.js +1 -0
- package/dist/http/external-conversation-headers.d.ts +11 -0
- package/dist/http/external-conversation-headers.js +11 -0
- package/dist/http/inference-context.d.ts +36 -0
- package/dist/http/inference-context.js +1 -0
- package/dist/http/model-inventory-cache.d.ts +8 -0
- package/dist/http/model-inventory-cache.js +8 -0
- package/dist/http/openai-compat/action-ledger.d.ts +15 -0
- package/dist/http/openai-compat/action-ledger.js +119 -0
- package/dist/http/openai-compat/apple-model.d.ts +3 -0
- package/dist/http/openai-compat/apple-model.js +44 -0
- package/dist/http/openai-compat/caller-owned-profile.d.ts +7 -0
- package/dist/http/openai-compat/caller-owned-profile.js +18 -0
- package/dist/http/openai-compat/chat-progress.d.ts +9 -0
- package/dist/http/openai-compat/chat-progress.js +69 -0
- package/dist/http/openai-compat/chat-target.d.ts +76 -0
- package/dist/http/openai-compat/chat-target.js +97 -0
- package/dist/http/openai-compat/embeddings.d.ts +37 -0
- package/dist/http/openai-compat/embeddings.js +86 -0
- package/dist/http/openai-compat/request-tuning.d.ts +35 -0
- package/dist/http/openai-compat/request-tuning.js +87 -0
- package/dist/http/openai-compat/responses-streaming.d.ts +351 -0
- package/dist/http/openai-compat/responses-streaming.js +717 -0
- package/dist/http/openai-compat/responses-translate.d.ts +215 -0
- package/dist/http/openai-compat/responses-translate.js +377 -0
- package/dist/http/openai-compat/streaming-telemetry.d.ts +30 -0
- package/dist/http/openai-compat/streaming-telemetry.js +88 -0
- package/dist/http/openai-compat/streaming.d.ts +141 -0
- package/dist/http/openai-compat/streaming.js +687 -0
- package/dist/http/openai-compat/tool-call-stream-filter.d.ts +33 -0
- package/dist/http/openai-compat/tool-call-stream-filter.js +110 -0
- package/dist/http/openai-compat/translate.d.ts +254 -0
- package/dist/http/openai-compat/translate.js +485 -0
- package/dist/http/routes/engines.d.ts +13 -0
- package/dist/http/routes/engines.js +366 -0
- package/dist/http/routes/machine-engine-proxy.d.ts +26 -0
- package/dist/http/routes/machine-engine-proxy.js +43 -0
- package/dist/http/routes/model-bundles.d.ts +4 -0
- package/dist/http/routes/model-bundles.js +190 -0
- package/dist/http/routes/v1-chat.d.ts +72 -0
- package/dist/http/routes/v1-chat.js +645 -0
- package/dist/http/routes/v1-embeddings.d.ts +3 -0
- package/dist/http/routes/v1-embeddings.js +82 -0
- package/dist/http/routes/v1-knowledge.d.ts +4 -0
- package/dist/http/routes/v1-knowledge.js +304 -0
- package/dist/http/routes/v1-models-ensure.d.ts +32 -0
- package/dist/http/routes/v1-models-ensure.js +122 -0
- package/dist/http/routes/v1-models.d.ts +8 -0
- package/dist/http/routes/v1-models.js +189 -0
- package/dist/http/routes/v1-responses.d.ts +20 -0
- package/dist/http/routes/v1-responses.js +327 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/inference-service.d.ts +28 -0
- package/dist/inference-service.js +275 -0
- package/dist/knowledge/admission.d.ts +3 -0
- package/dist/knowledge/admission.js +22 -0
- package/dist/knowledge/bundled-catalog.d.ts +2 -0
- package/dist/knowledge/bundled-catalog.js +2 -0
- package/dist/knowledge/catalog-host.d.ts +103 -0
- package/dist/knowledge/catalog-host.js +180 -0
- package/dist/knowledge/catalog-source.d.ts +22 -0
- package/dist/knowledge/catalog-source.js +35 -0
- package/dist/knowledge/install.d.ts +55 -0
- package/dist/knowledge/install.js +274 -0
- package/dist/knowledge/manager.d.ts +287 -0
- package/dist/knowledge/manager.js +1540 -0
- package/dist/knowledge/registry.d.ts +35 -0
- package/dist/knowledge/registry.js +123 -0
- package/dist/knowledge/search-worker.d.ts +17 -0
- package/dist/knowledge/search-worker.js +36 -0
- package/dist/knowledge/shared-install-contract.d.ts +19 -0
- package/dist/knowledge/shared-install-contract.js +1 -0
- package/dist/knowledge/spatial-query.d.ts +11 -0
- package/dist/knowledge/spatial-query.js +33 -0
- package/dist/knowledge/trust-anchors.d.ts +11 -0
- package/dist/knowledge/trust-anchors.js +51 -0
- package/dist/knowledge/vector-floors.d.ts +44 -0
- package/dist/knowledge/vector-floors.js +92 -0
- package/dist/knowledge/worker-host.d.ts +9 -0
- package/dist/knowledge/worker-host.js +179 -0
- package/dist/kokoro-lexicon/LICENSE +202 -0
- package/dist/kokoro-lexicon/lexicon-gb-en.txt.gz +0 -0
- package/dist/kokoro-lexicon/lexicon-us-en.txt.gz +0 -0
- package/dist/kokoro-lexicon/manifest.json +23 -0
- package/dist/machine-engine/inspect-runtime.d.ts +3 -0
- package/dist/machine-engine/inspect-runtime.js +48 -0
- package/dist/machine-engine/knowledge-assets.d.ts +79 -0
- package/dist/machine-engine/knowledge-assets.js +505 -0
- package/dist/memory/embed-core.d.ts +131 -0
- package/dist/memory/embed-core.js +398 -0
- package/dist/memory/embed-worker.d.ts +23 -0
- package/dist/memory/embed-worker.js +49 -0
- package/dist/memory/embeddings.d.ts +105 -0
- package/dist/memory/embeddings.js +467 -0
- package/dist/model-profile/behaviors/tools-mlx-template-fix.d.ts +1 -0
- package/dist/model-profile/behaviors/tools-mlx-template-fix.js +2 -0
- package/dist/model-profile/behaviors/turn-ramble-detection.d.ts +1 -0
- package/dist/model-profile/behaviors/turn-ramble-detection.js +2 -0
- package/dist/model-profile/defaults.d.ts +1 -0
- package/dist/model-profile/defaults.js +2 -0
- package/dist/model-profile/index.d.ts +9 -0
- package/dist/model-profile/index.js +7 -0
- package/dist/model-profile/registry.d.ts +15 -0
- package/dist/model-profile/registry.js +18 -0
- package/dist/model-profile/runtime.d.ts +48 -0
- package/dist/model-profile/runtime.js +131 -0
- package/dist/model-profile/tool-grammar.d.ts +1 -0
- package/dist/model-profile/tool-grammar.js +2 -0
- package/dist/model-profile/tuning.d.ts +19 -0
- package/dist/model-profile/tuning.js +21 -0
- package/dist/model-profile/types.d.ts +1 -0
- package/dist/model-profile/types.js +2 -0
- package/dist/models/bundle-storage.d.ts +28 -0
- package/dist/models/bundle-storage.js +80 -0
- package/dist/models/catalog-drift.d.ts +48 -0
- package/dist/models/catalog-drift.js +94 -0
- package/dist/models/catalog-payload-identity.d.ts +107 -0
- package/dist/models/catalog-payload-identity.js +254 -0
- package/dist/models/ensure.d.ts +125 -0
- package/dist/models/ensure.js +205 -0
- package/dist/models/gezmodel.d.ts +47 -0
- package/dist/models/gezmodel.js +742 -0
- package/dist/models/install-registry.d.ts +101 -0
- package/dist/models/install-registry.js +216 -0
- package/dist/models/model-id.d.ts +22 -0
- package/dist/models/model-id.js +40 -0
- package/dist/models/storage-roots.d.ts +274 -0
- package/dist/models/storage-roots.js +865 -0
- package/dist/native-release-entry.d.ts +16 -0
- package/dist/native-release-entry.js +16 -0
- package/dist/perf/redact-path.d.ts +2 -0
- package/dist/perf/redact-path.js +27 -0
- package/dist/perf/responsiveness.d.ts +70 -0
- package/dist/perf/responsiveness.js +560 -0
- package/dist/providers/active-install-message.d.ts +42 -0
- package/dist/providers/active-install-message.js +49 -0
- package/dist/providers/apple-foundation-models/binary.d.ts +4 -0
- package/dist/providers/apple-foundation-models/binary.js +18 -0
- package/dist/providers/apple-foundation-models/helper.d.ts +66 -0
- package/dist/providers/apple-foundation-models/helper.js +262 -0
- package/dist/providers/apple-foundation-models/provider.d.ts +82 -0
- package/dist/providers/apple-foundation-models/provider.js +389 -0
- package/dist/providers/apple-foundation-models/status.d.ts +9 -0
- package/dist/providers/apple-foundation-models/status.js +49 -0
- package/dist/providers/audio/kokoro-frontend.d.ts +50 -0
- package/dist/providers/audio/kokoro-frontend.js +113 -0
- package/dist/providers/audio/managed-speech-model.d.ts +9 -0
- package/dist/providers/audio/managed-speech-model.js +86 -0
- package/dist/providers/audio/types.d.ts +202 -0
- package/dist/providers/audio/types.js +17 -0
- package/dist/providers/audio/whisper-cpp.d.ts +99 -0
- package/dist/providers/audio/whisper-cpp.js +420 -0
- package/dist/providers/audio-persister-contract.d.ts +13 -0
- package/dist/providers/audio-persister-contract.js +1 -0
- package/dist/providers/catalog-model-config.d.ts +63 -0
- package/dist/providers/catalog-model-config.js +95 -0
- package/dist/providers/code-block-salvage.d.ts +1 -0
- package/dist/providers/code-block-salvage.js +2 -0
- package/dist/providers/codex-cli/reasoning.d.ts +8 -0
- package/dist/providers/codex-cli/reasoning.js +17 -0
- package/dist/providers/complete-tool-call.d.ts +16 -0
- package/dist/providers/complete-tool-call.js +25 -0
- package/dist/providers/constrained-turn.d.ts +1 -0
- package/dist/providers/constrained-turn.js +2 -0
- package/dist/providers/deliverable-read-pacing.d.ts +1 -0
- package/dist/providers/deliverable-read-pacing.js +2 -0
- package/dist/providers/direct-file-work-prompt.d.ts +1 -0
- package/dist/providers/direct-file-work-prompt.js +2 -0
- package/dist/providers/ds4/build-provider.d.ts +100 -0
- package/dist/providers/ds4/build-provider.js +539 -0
- package/dist/providers/ds4/cache-adapter.d.ts +42 -0
- package/dist/providers/ds4/cache-adapter.js +110 -0
- package/dist/providers/ds4/dspark.d.ts +83 -0
- package/dist/providers/ds4/dspark.js +107 -0
- package/dist/providers/ds4/mtp.d.ts +32 -0
- package/dist/providers/ds4/mtp.js +46 -0
- package/dist/providers/ds4/provider.d.ts +67 -0
- package/dist/providers/ds4/provider.js +104 -0
- package/dist/providers/ds4/residency.d.ts +143 -0
- package/dist/providers/ds4/residency.js +139 -0
- package/dist/providers/ds4/stdout-parser.d.ts +47 -0
- package/dist/providers/ds4/stdout-parser.js +134 -0
- package/dist/providers/duplicate-tool-calls.d.ts +1 -0
- package/dist/providers/duplicate-tool-calls.js +2 -0
- package/dist/providers/file-repair-policy.d.ts +1 -0
- package/dist/providers/file-repair-policy.js +2 -0
- package/dist/providers/gpu-arbiter.d.ts +159 -0
- package/dist/providers/gpu-arbiter.js +301 -0
- package/dist/providers/image-persister-contract.d.ts +15 -0
- package/dist/providers/image-persister-contract.js +1 -0
- package/dist/providers/llama-cpp/build-metadata.d.ts +13 -0
- package/dist/providers/llama-cpp/build-metadata.js +39 -0
- package/dist/providers/llama-cpp/build-provider.d.ts +66 -0
- package/dist/providers/llama-cpp/build-provider.js +1491 -0
- package/dist/providers/llama-cpp/cache-adapter.d.ts +242 -0
- package/dist/providers/llama-cpp/cache-adapter.js +689 -0
- package/dist/providers/llama-cpp/devices.d.ts +130 -0
- package/dist/providers/llama-cpp/devices.js +256 -0
- package/dist/providers/llama-cpp/disk-cache.d.ts +8 -0
- package/dist/providers/llama-cpp/disk-cache.js +112 -0
- package/dist/providers/llama-cpp/engine-flags.d.ts +181 -0
- package/dist/providers/llama-cpp/engine-flags.js +279 -0
- package/dist/providers/llama-cpp/gguf-metadata-async.d.ts +11 -0
- package/dist/providers/llama-cpp/gguf-metadata-async.js +180 -0
- package/dist/providers/llama-cpp/gguf-metadata-worker.d.ts +7 -0
- package/dist/providers/llama-cpp/gguf-metadata-worker.js +27 -0
- package/dist/providers/llama-cpp/gguf-metadata.d.ts +198 -0
- package/dist/providers/llama-cpp/gguf-metadata.js +615 -0
- package/dist/providers/llama-cpp/gguf-quantization-backfill.d.ts +32 -0
- package/dist/providers/llama-cpp/gguf-quantization-backfill.js +75 -0
- package/dist/providers/llama-cpp/index.d.ts +10 -0
- package/dist/providers/llama-cpp/index.js +13 -0
- package/dist/providers/llama-cpp/kv-cache-type.d.ts +118 -0
- package/dist/providers/llama-cpp/kv-cache-type.js +140 -0
- package/dist/providers/llama-cpp/log.d.ts +92 -0
- package/dist/providers/llama-cpp/log.js +280 -0
- package/dist/providers/llama-cpp/models.d.ts +389 -0
- package/dist/providers/llama-cpp/models.js +1011 -0
- package/dist/providers/llama-cpp/offload-planner.d.ts +339 -0
- package/dist/providers/llama-cpp/offload-planner.js +524 -0
- package/dist/providers/llama-cpp/provider.d.ts +493 -0
- package/dist/providers/llama-cpp/provider.js +862 -0
- package/dist/providers/llama-cpp/reasoning-launch.d.ts +7 -0
- package/dist/providers/llama-cpp/reasoning-launch.js +14 -0
- package/dist/providers/llama-cpp/spec-draft.d.ts +44 -0
- package/dist/providers/llama-cpp/spec-draft.js +44 -0
- package/dist/providers/llama-cpp/stdout-parser.d.ts +70 -0
- package/dist/providers/llama-cpp/stdout-parser.js +197 -0
- package/dist/providers/local-tool-call-salvage.d.ts +1 -0
- package/dist/providers/local-tool-call-salvage.js +2 -0
- package/dist/providers/local-turn-policy.d.ts +1 -0
- package/dist/providers/local-turn-policy.js +2 -0
- package/dist/providers/mlx/async-file-handoff.d.ts +11 -0
- package/dist/providers/mlx/async-file-handoff.js +25 -0
- package/dist/providers/mlx/build-provider.d.ts +65 -0
- package/dist/providers/mlx/build-provider.js +717 -0
- package/dist/providers/mlx/cache-adapter.d.ts +161 -0
- package/dist/providers/mlx/cache-adapter.js +445 -0
- package/dist/providers/mlx/chat-protocol.d.ts +48 -0
- package/dist/providers/mlx/chat-protocol.js +8 -0
- package/dist/providers/mlx/config-parser.d.ts +29 -0
- package/dist/providers/mlx/config-parser.js +81 -0
- package/dist/providers/mlx/engine-gate.d.ts +51 -0
- package/dist/providers/mlx/engine-gate.js +207 -0
- package/dist/providers/mlx/engine-hold.d.ts +41 -0
- package/dist/providers/mlx/engine-hold.js +59 -0
- package/dist/providers/mlx/engine-log-router.d.ts +84 -0
- package/dist/providers/mlx/engine-log-router.js +137 -0
- package/dist/providers/mlx/engine-stats-sampler.d.ts +36 -0
- package/dist/providers/mlx/engine-stats-sampler.js +59 -0
- package/dist/providers/mlx/index.d.ts +10 -0
- package/dist/providers/mlx/index.js +10 -0
- package/dist/providers/mlx/log.d.ts +55 -0
- package/dist/providers/mlx/log.js +157 -0
- package/dist/providers/mlx/model-geometry.d.ts +35 -0
- package/dist/providers/mlx/model-geometry.js +118 -0
- package/dist/providers/mlx/models.d.ts +289 -0
- package/dist/providers/mlx/models.js +1079 -0
- package/dist/providers/mlx/provider.d.ts +404 -0
- package/dist/providers/mlx/provider.js +3017 -0
- package/dist/providers/mlx/python/cache_persist.py +348 -0
- package/dist/providers/mlx/python/cache_seed.py +402 -0
- package/dist/providers/mlx/python/gezel_mlx_server.py +4491 -0
- package/dist/providers/mlx/python/lfm2_compat.py +55 -0
- package/dist/providers/mlx/python/qwen3_5_text_compat.py +60 -0
- package/dist/providers/mlx/python/qwen4_ple.py +159 -0
- package/dist/providers/mlx/python/spec_decode.py +775 -0
- package/dist/providers/mlx/python/template_stability.py +133 -0
- package/dist/providers/mlx/python/think_budget.py +113 -0
- package/dist/providers/mlx/python/tool_args_json.py +297 -0
- package/dist/providers/mlx/python/tool_call_stream.py +265 -0
- package/dist/providers/mlx/python/tool_grammar.py +794 -0
- package/dist/providers/mlx/python/vision_inputs.py +64 -0
- package/dist/providers/mlx/python/wave_policy.py +147 -0
- package/dist/providers/mlx/reasoning-stream.d.ts +85 -0
- package/dist/providers/mlx/reasoning-stream.js +196 -0
- package/dist/providers/mlx/request-shape.d.ts +34 -0
- package/dist/providers/mlx/request-shape.js +42 -0
- package/dist/providers/mlx/runtime-diagnostics.d.ts +29 -0
- package/dist/providers/mlx/runtime-diagnostics.js +162 -0
- package/dist/providers/mlx/spec-drafter.d.ts +25 -0
- package/dist/providers/mlx/spec-drafter.js +73 -0
- package/dist/providers/mlx/stdout-parser.d.ts +60 -0
- package/dist/providers/mlx/stdout-parser.js +254 -0
- package/dist/providers/mlx/textual-tool-call-salvage.d.ts +46 -0
- package/dist/providers/mlx/textual-tool-call-salvage.js +396 -0
- package/dist/providers/mlx/tool-call-protocol.d.ts +65 -0
- package/dist/providers/mlx/tool-call-protocol.js +140 -0
- package/dist/providers/mlx/tool-call-stripper.d.ts +68 -0
- package/dist/providers/mlx/tool-call-stripper.js +153 -0
- package/dist/providers/mlx/tool-image-retention.d.ts +23 -0
- package/dist/providers/mlx/tool-image-retention.js +43 -0
- package/dist/providers/mlx/turn-telemetry.d.ts +22 -0
- package/dist/providers/mlx/turn-telemetry.js +45 -0
- package/dist/providers/mlx/venv.d.ts +91 -0
- package/dist/providers/mlx/venv.js +111 -0
- package/dist/providers/mlx/vision-mode.d.ts +92 -0
- package/dist/providers/mlx/vision-mode.js +187 -0
- package/dist/providers/mlx/vision.d.ts +2 -0
- package/dist/providers/mlx/vision.js +12 -0
- package/dist/providers/mlx/wire-transcript.d.ts +14 -0
- package/dist/providers/mlx/wire-transcript.js +43 -0
- package/dist/providers/native/capacity-broker.d.ts +812 -0
- package/dist/providers/native/capacity-broker.js +1058 -0
- package/dist/providers/native/capacity-budget.d.ts +133 -0
- package/dist/providers/native/capacity-budget.js +265 -0
- package/dist/providers/native/device-capacity-ledger.d.ts +31 -0
- package/dist/providers/native/device-capacity-ledger.js +196 -0
- package/dist/providers/native/device-capacity.d.ts +84 -0
- package/dist/providers/native/device-capacity.js +431 -0
- package/dist/providers/native/engine-api-key.d.ts +57 -0
- package/dist/providers/native/engine-api-key.js +72 -0
- package/dist/providers/native/engine-key.d.ts +18 -0
- package/dist/providers/native/engine-key.js +41 -0
- package/dist/providers/native/engine-router.d.ts +145 -0
- package/dist/providers/native/engine-router.js +191 -0
- package/dist/providers/native/gpu-panic-guard.d.ts +54 -0
- package/dist/providers/native/gpu-panic-guard.js +59 -0
- package/dist/providers/native/inference.d.ts +33 -0
- package/dist/providers/native/inference.js +49 -0
- package/dist/providers/native/local-engine-runtime.d.ts +412 -0
- package/dist/providers/native/local-engine-runtime.js +1714 -0
- package/dist/providers/native/measured-budget.d.ts +32 -0
- package/dist/providers/native/measured-budget.js +54 -0
- package/dist/providers/native/port.d.ts +11 -0
- package/dist/providers/native/port.js +29 -0
- package/dist/providers/native/provider-pool.d.ts +474 -0
- package/dist/providers/native/provider-pool.js +1166 -0
- package/dist/providers/native/supervisor.d.ts +503 -0
- package/dist/providers/native/supervisor.js +1466 -0
- package/dist/providers/observation-context.d.ts +16 -0
- package/dist/providers/observation-context.js +1 -0
- package/dist/providers/openai-compatible/sse.d.ts +1 -0
- package/dist/providers/openai-compatible/sse.js +2 -0
- package/dist/providers/patient-fetch.d.ts +36 -0
- package/dist/providers/patient-fetch.js +44 -0
- package/dist/providers/project-macro-loop-bail.d.ts +7 -0
- package/dist/providers/project-macro-loop-bail.js +21 -0
- package/dist/providers/prose-document-salvage.d.ts +1 -0
- package/dist/providers/prose-document-salvage.js +2 -0
- package/dist/providers/provider-disposal.d.ts +1 -0
- package/dist/providers/provider-disposal.js +2 -0
- package/dist/providers/queue.d.ts +15 -0
- package/dist/providers/queue.js +23 -0
- package/dist/providers/ramble-abort-message.d.ts +1 -0
- package/dist/providers/ramble-abort-message.js +2 -0
- package/dist/providers/ramble-detector.d.ts +1 -0
- package/dist/providers/ramble-detector.js +2 -0
- package/dist/providers/reasoning-depth.d.ts +1 -0
- package/dist/providers/reasoning-depth.js +2 -0
- package/dist/providers/required-input-reads.d.ts +1 -0
- package/dist/providers/required-input-reads.js +2 -0
- package/dist/providers/session-defaults.d.ts +13 -0
- package/dist/providers/session-defaults.js +49 -0
- package/dist/providers/session-hooks.d.ts +26 -0
- package/dist/providers/session-hooks.js +1 -0
- package/dist/providers/streaming-session.d.ts +1 -0
- package/dist/providers/streaming-session.js +2 -0
- package/dist/providers/terminal-tool-policy.d.ts +1 -0
- package/dist/providers/terminal-tool-policy.js +2 -0
- package/dist/providers/tool-arg-schema-coercion.d.ts +1 -0
- package/dist/providers/tool-arg-schema-coercion.js +2 -0
- package/dist/providers/tool-executor.d.ts +12 -0
- package/dist/providers/tool-executor.js +20 -0
- package/dist/providers/tool-failure-tracker.d.ts +1 -0
- package/dist/providers/tool-failure-tracker.js +2 -0
- package/dist/providers/tool-repeat-tracker.d.ts +1 -0
- package/dist/providers/tool-repeat-tracker.js +2 -0
- package/dist/providers/turn-timeout.d.ts +1 -0
- package/dist/providers/turn-timeout.js +1 -0
- package/dist/providers/types.d.ts +834 -0
- package/dist/providers/types.js +42 -0
- package/dist/providers/usage-builder.d.ts +1 -0
- package/dist/providers/usage-builder.js +2 -0
- package/dist/providers/vision-capability.d.ts +109 -0
- package/dist/providers/vision-capability.js +137 -0
- package/dist/python/mlx-runtime-status-bus.d.ts +39 -0
- package/dist/python/mlx-runtime-status-bus.js +27 -0
- package/dist/python/uv-runtime.d.ts +176 -0
- package/dist/python/uv-runtime.js +492 -0
- package/dist/relevance/install.d.ts +28 -0
- package/dist/relevance/install.js +114 -0
- package/dist/relevance/manager.d.ts +79 -0
- package/dist/relevance/manager.js +211 -0
- package/dist/relevance/registry.d.ts +11 -0
- package/dist/relevance/registry.js +158 -0
- package/dist/relevance/relevance-core.d.ts +67 -0
- package/dist/relevance/relevance-core.js +189 -0
- package/dist/relevance/relevance-model.d.ts +42 -0
- package/dist/relevance/relevance-model.js +292 -0
- package/dist/relevance/relevance-worker.d.ts +20 -0
- package/dist/relevance/relevance-worker.js +57 -0
- package/dist/relevance/settings.d.ts +30 -0
- package/dist/relevance/settings.js +81 -0
- package/dist/remotes/identity.d.ts +121 -0
- package/dist/remotes/identity.js +348 -0
- package/dist/remotes/pinned-fetch.d.ts +45 -0
- package/dist/remotes/pinned-fetch.js +193 -0
- package/dist/remotes/types.d.ts +54 -0
- package/dist/remotes/types.js +1 -0
- package/dist/runtime-lock.d.ts +29 -0
- package/dist/runtime-lock.js +85 -0
- package/dist/search/relevance-stage.d.ts +81 -0
- package/dist/search/relevance-stage.js +177 -0
- package/dist/secrets/types.d.ts +63 -0
- package/dist/secrets/types.js +64 -0
- package/dist/speech.d.ts +1 -0
- package/dist/speech.js +1 -0
- package/dist/system/darwin-memory.d.ts +26 -0
- package/dist/system/darwin-memory.js +81 -0
- package/dist/system/gezel-process-memory.d.ts +55 -0
- package/dist/system/gezel-process-memory.js +156 -0
- package/dist/system/memory.d.ts +154 -0
- package/dist/system/memory.js +501 -0
- package/dist/transformers-cache.d.ts +112 -0
- package/dist/transformers-cache.js +392 -0
- package/dist/utils/disk-space.d.ts +55 -0
- package/dist/utils/disk-space.js +72 -0
- package/dist/utils/download-common.d.ts +138 -0
- package/dist/utils/download-common.js +196 -0
- package/dist/utils/download-with-retry.d.ts +85 -0
- package/dist/utils/download-with-retry.js +522 -0
- package/dist/utils/extract-zip.d.ts +22 -0
- package/dist/utils/extract-zip.js +103 -0
- package/dist/utils/retire-model-worker.d.ts +15 -0
- package/dist/utils/retire-model-worker.js +24 -0
- package/dist/utils/service-worker-entry.d.ts +59 -0
- package/dist/utils/service-worker-entry.js +69 -0
- package/dist/utils/xet-download.d.ts +40 -0
- package/dist/utils/xet-download.js +526 -0
- package/dist/utils/xet.d.ts +86 -0
- package/dist/utils/xet.js +201 -0
- package/package.json +103 -3
- package/scripts/embedding-packaging.cjs +264 -0
- package/scripts/embedding-packaging.d.cts +16 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { DS4_FULL_RESIDENCY_HEADROOM_BYTES } from '@bendyline/gezel';
|
|
2
|
+
export { DS4_FULL_RESIDENCY_HEADROOM_BYTES };
|
|
3
|
+
/**
|
|
4
|
+
* Conservative floor for the full-residency working set. Exclusivity is an
|
|
5
|
+
* explicit device lease at process startup, not a consequence of this number:
|
|
6
|
+
* the automatic model budget can exceed 96 GiB on larger machines.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DS4_FULL_RESIDENCY_RESERVATION_BYTES: number;
|
|
9
|
+
/**
|
|
10
|
+
* Extra resident memory for ds4's `--vision` encoder. The encoder is a GGUF
|
|
11
|
+
* tensor payload plus a separate image graph, matching the two terms measured
|
|
12
|
+
* for llama.cpp vision. Keep this conservative until ds4-specific telemetry
|
|
13
|
+
* gives us a tighter number.
|
|
14
|
+
*/
|
|
15
|
+
export declare function ds4VisionResidentBytes(encoderSizeBytes: number | undefined): number;
|
|
16
|
+
/**
|
|
17
|
+
* Base resident working set before optional vision/drafting companions.
|
|
18
|
+
*
|
|
19
|
+
* A catalog `residentBytes` value is a model-specific measurement that already
|
|
20
|
+
* includes runtime overhead. The generic weights multiplier is only a fallback
|
|
21
|
+
* for an unmeasured explicit GGUF; applying it as a lower bound discarded the
|
|
22
|
+
* better measurement and made the measured GLM 5.3 Q2 launch exceed the
|
|
23
|
+
* unified-GPU admission ceiling. Never accept a measurement below the raw
|
|
24
|
+
* weights themselves, which still fails safely for a malformed catalog row.
|
|
25
|
+
*/
|
|
26
|
+
export declare function ds4BaseResidentBytes(opts: {
|
|
27
|
+
projectedBytes?: number;
|
|
28
|
+
modelSizeBytes?: number;
|
|
29
|
+
}): number;
|
|
30
|
+
export interface Ds4ResidencyOptions {
|
|
31
|
+
configured?: boolean;
|
|
32
|
+
/** False when this architecture has no routed-expert SSD-streaming graph. */
|
|
33
|
+
ssdStreamingSupported?: boolean;
|
|
34
|
+
/** Bytes of the selected GGUF that actually become resident model weights. */
|
|
35
|
+
modelSizeBytes?: number;
|
|
36
|
+
totalRamBytes?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Resident bytes beyond the weights this launch would also hold (a DSpark
|
|
39
|
+
* companion). Not part of `modelSizeBytes`, so residency that ignores it
|
|
40
|
+
* under-reserves by exactly the companion's size.
|
|
41
|
+
*/
|
|
42
|
+
companionBytes?: number;
|
|
43
|
+
platform?: NodeJS.Platform;
|
|
44
|
+
arch?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Whether this exact model can be made fully resident without consuming the
|
|
48
|
+
* memory macOS/Linux and ds4's runtime still need. Delegates to core so the
|
|
49
|
+
* model list's fit badge and this launch decision cannot disagree.
|
|
50
|
+
*/
|
|
51
|
+
export declare function canUseDs4FullResidency(opts?: Ds4ResidencyOptions): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Decide whether ds4 should stream experts from SSD.
|
|
54
|
+
*
|
|
55
|
+
* **Residency is the default wherever it fits.** Streaming is roughly an
|
|
56
|
+
* order of magnitude slower — measured 1.85 tok/s streaming against 18.1
|
|
57
|
+
* tok/s resident for the same IQ2_XXS build on a DGX Spark — so a machine
|
|
58
|
+
* with the memory to hold a model should hold it.
|
|
59
|
+
*
|
|
60
|
+
* This inverts the original policy, which returned `true` unless the config
|
|
61
|
+
* said exactly `false`. Device RAM was then consulted only to VETO a user's
|
|
62
|
+
* explicit opt-out, never to choose residency, so no install ever ran resident
|
|
63
|
+
* without a hand-edited config key that has no UI. The safety direction is
|
|
64
|
+
* unchanged and is what makes the flip safe: a model that does not fit still
|
|
65
|
+
* streams, and {@link canUseDs4FullResidency} is what refuses it.
|
|
66
|
+
*
|
|
67
|
+
* `configured === true` remains an explicit opt-in to streaming and is always
|
|
68
|
+
* honored — a user who wants the memory back can have it.
|
|
69
|
+
*/
|
|
70
|
+
export declare function shouldUseDs4SsdStreaming(opts?: Ds4ResidencyOptions): boolean;
|
|
71
|
+
export interface Ds4ExpertCachePlanOptions {
|
|
72
|
+
configuredGb?: number;
|
|
73
|
+
catalogCacheBytes?: number;
|
|
74
|
+
catalogResidentBytes?: number;
|
|
75
|
+
totalRamBytes?: number;
|
|
76
|
+
}
|
|
77
|
+
export interface Ds4ExpertCachePlan {
|
|
78
|
+
cacheGb: number;
|
|
79
|
+
requestedGb: number;
|
|
80
|
+
clamped: boolean;
|
|
81
|
+
safe: boolean;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Pick a bounded routed-expert cache for streaming mode. Catalog guidance is
|
|
85
|
+
* model-aware (Q2 currently recommends 32 GiB; Q4 recommends 64 GiB), unlike
|
|
86
|
+
* the old RAM-tier heuristic which incorrectly gave both models 64 GiB on a
|
|
87
|
+
* 128 GiB Mac. Manual values are still accepted, but clamped so fixed model
|
|
88
|
+
* state + the cache cannot consume the runtime/OS reserve.
|
|
89
|
+
*/
|
|
90
|
+
export declare function planDs4ExpertCache(opts: Ds4ExpertCachePlanOptions): Ds4ExpertCachePlan;
|
|
91
|
+
/** Effective capacity-broker reservation for the chosen DS4 residency mode. */
|
|
92
|
+
export declare function ds4ResidentBytesForMode(catalogResidentBytes: number, ssdStreaming: boolean, ssdStreamingSupported?: boolean): number;
|
|
93
|
+
/** Allowance for ds4's compute and staging buffers beyond weights and KV rows. */
|
|
94
|
+
export declare const DS4_RUNTIME_BUFFER_BYTES: number;
|
|
95
|
+
/**
|
|
96
|
+
* Accelerator bytes a launch actually wires, for device admission's GPU
|
|
97
|
+
* check. `ds4ResidentBytesForMode` floors the RAM reservation at 96 GiB, and
|
|
98
|
+
* handing that floor over as GPU bytes compared it against a unified host's
|
|
99
|
+
* 0.75 × RAM ceiling — 91.2 GiB on a 121.6 GiB DGX Spark — so every
|
|
100
|
+
* full-residency deepseek-v4-flash q2 launch was refused, although ds4 itself
|
|
101
|
+
* plans that model at ~84 GiB (2026-09-29). Undefined when the floor did not
|
|
102
|
+
* raise the reservation: the reservation is then the working set already.
|
|
103
|
+
*/
|
|
104
|
+
export declare function ds4AdmissionGpuBytes(opts: {
|
|
105
|
+
workingSetBytes: number;
|
|
106
|
+
reservationBytes: number;
|
|
107
|
+
kvBytesPerToken?: number | undefined;
|
|
108
|
+
numCtx: number;
|
|
109
|
+
}): number | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* DS4's resident footprint as a line in the context window:
|
|
112
|
+
* `contextFreeBytes + kvBytesPerToken × ctx`.
|
|
113
|
+
*
|
|
114
|
+
* The catalog's `residentBytes` is a measurement at ONE window
|
|
115
|
+
* (`residentCtxTokens`), so re-basing it is what lets a 64K and a 256K launch
|
|
116
|
+
* of the same model quote different numbers. Everything that does not move
|
|
117
|
+
* with the window — expert cache, prefill expert reserve, resident non-routed
|
|
118
|
+
* weights, the raw KV rows pinned to the prefill chunk — collapses into
|
|
119
|
+
* `contextFreeBytes`.
|
|
120
|
+
*
|
|
121
|
+
* Same `fixed + slope × ctx` shape llama.cpp/MLX rows already carry, so the
|
|
122
|
+
* models list and the context slider price ds4 through their existing path.
|
|
123
|
+
*/
|
|
124
|
+
export interface Ds4ResidentLine {
|
|
125
|
+
/** Footprint at a zero-token window: everything the context doesn't move. */
|
|
126
|
+
contextFreeBytes: number;
|
|
127
|
+
/** Resident bytes per context token (compressed KV + scaling buffers). */
|
|
128
|
+
kvBytesPerToken: number;
|
|
129
|
+
}
|
|
130
|
+
export interface Ds4ResidentLineOptions {
|
|
131
|
+
residentBytes?: number | undefined;
|
|
132
|
+
kvBytesPerToken?: number | undefined;
|
|
133
|
+
residentCtxTokens?: number | undefined;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Build the line from a catalog `ds4` source block. Returns undefined unless
|
|
137
|
+
* the entry authors all three inputs — a slope without the window it was
|
|
138
|
+
* measured at cannot be re-based, and guessing one would quote confident
|
|
139
|
+
* numbers for a model nobody measured.
|
|
140
|
+
*/
|
|
141
|
+
export declare function ds4ResidentLine(opts: Ds4ResidentLineOptions): Ds4ResidentLine | undefined;
|
|
142
|
+
/** Evaluate {@link ds4ResidentLine} at a window. */
|
|
143
|
+
export declare function ds4ProjectedResidentBytes(line: Ds4ResidentLine, ctxTokens: number): number;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { totalmem } from 'node:os';
|
|
2
|
+
import { DS4_FULL_RESIDENCY_HEADROOM_BYTES, LLAMA_CPP_VISION_COMPUTE_BYTES, LLAMA_CPP_WEIGHTS_MULTIPLIER, ds4FitsFullResidency, } from '@bendyline/gezel';
|
|
3
|
+
const GB = 1024 ** 3;
|
|
4
|
+
export { DS4_FULL_RESIDENCY_HEADROOM_BYTES };
|
|
5
|
+
/**
|
|
6
|
+
* Conservative floor for the full-residency working set. Exclusivity is an
|
|
7
|
+
* explicit device lease at process startup, not a consequence of this number:
|
|
8
|
+
* the automatic model budget can exceed 96 GiB on larger machines.
|
|
9
|
+
*/
|
|
10
|
+
export const DS4_FULL_RESIDENCY_RESERVATION_BYTES = 96 * GB;
|
|
11
|
+
/**
|
|
12
|
+
* Extra resident memory for ds4's `--vision` encoder. The encoder is a GGUF
|
|
13
|
+
* tensor payload plus a separate image graph, matching the two terms measured
|
|
14
|
+
* for llama.cpp vision. Keep this conservative until ds4-specific telemetry
|
|
15
|
+
* gives us a tighter number.
|
|
16
|
+
*/
|
|
17
|
+
export function ds4VisionResidentBytes(encoderSizeBytes) {
|
|
18
|
+
if (!encoderSizeBytes || encoderSizeBytes <= 0)
|
|
19
|
+
return 0;
|
|
20
|
+
return (Math.round(encoderSizeBytes * LLAMA_CPP_WEIGHTS_MULTIPLIER) + LLAMA_CPP_VISION_COMPUTE_BYTES);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Base resident working set before optional vision/drafting companions.
|
|
24
|
+
*
|
|
25
|
+
* A catalog `residentBytes` value is a model-specific measurement that already
|
|
26
|
+
* includes runtime overhead. The generic weights multiplier is only a fallback
|
|
27
|
+
* for an unmeasured explicit GGUF; applying it as a lower bound discarded the
|
|
28
|
+
* better measurement and made the measured GLM 5.3 Q2 launch exceed the
|
|
29
|
+
* unified-GPU admission ceiling. Never accept a measurement below the raw
|
|
30
|
+
* weights themselves, which still fails safely for a malformed catalog row.
|
|
31
|
+
*/
|
|
32
|
+
export function ds4BaseResidentBytes(opts) {
|
|
33
|
+
const modelSizeBytes = Math.max(0, opts.modelSizeBytes ?? 0);
|
|
34
|
+
if (opts.projectedBytes !== undefined)
|
|
35
|
+
return Math.max(modelSizeBytes, Math.max(0, opts.projectedBytes));
|
|
36
|
+
return Math.round(modelSizeBytes * LLAMA_CPP_WEIGHTS_MULTIPLIER);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Whether this exact model can be made fully resident without consuming the
|
|
40
|
+
* memory macOS/Linux and ds4's runtime still need. Delegates to core so the
|
|
41
|
+
* model list's fit badge and this launch decision cannot disagree.
|
|
42
|
+
*/
|
|
43
|
+
export function canUseDs4FullResidency(opts = {}) {
|
|
44
|
+
return ds4FitsFullResidency({
|
|
45
|
+
modelSizeBytes: opts.modelSizeBytes,
|
|
46
|
+
totalRamBytes: opts.totalRamBytes ?? totalmem(),
|
|
47
|
+
companionBytes: opts.companionBytes,
|
|
48
|
+
platform: opts.platform ?? process.platform,
|
|
49
|
+
arch: opts.arch ?? process.arch,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Decide whether ds4 should stream experts from SSD.
|
|
54
|
+
*
|
|
55
|
+
* **Residency is the default wherever it fits.** Streaming is roughly an
|
|
56
|
+
* order of magnitude slower — measured 1.85 tok/s streaming against 18.1
|
|
57
|
+
* tok/s resident for the same IQ2_XXS build on a DGX Spark — so a machine
|
|
58
|
+
* with the memory to hold a model should hold it.
|
|
59
|
+
*
|
|
60
|
+
* This inverts the original policy, which returned `true` unless the config
|
|
61
|
+
* said exactly `false`. Device RAM was then consulted only to VETO a user's
|
|
62
|
+
* explicit opt-out, never to choose residency, so no install ever ran resident
|
|
63
|
+
* without a hand-edited config key that has no UI. The safety direction is
|
|
64
|
+
* unchanged and is what makes the flip safe: a model that does not fit still
|
|
65
|
+
* streams, and {@link canUseDs4FullResidency} is what refuses it.
|
|
66
|
+
*
|
|
67
|
+
* `configured === true` remains an explicit opt-in to streaming and is always
|
|
68
|
+
* honored — a user who wants the memory back can have it.
|
|
69
|
+
*/
|
|
70
|
+
export function shouldUseDs4SsdStreaming(opts = {}) {
|
|
71
|
+
if (opts.ssdStreamingSupported === false)
|
|
72
|
+
return false;
|
|
73
|
+
if (opts.configured === true)
|
|
74
|
+
return true;
|
|
75
|
+
return !canUseDs4FullResidency(opts);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Pick a bounded routed-expert cache for streaming mode. Catalog guidance is
|
|
79
|
+
* model-aware (Q2 currently recommends 32 GiB; Q4 recommends 64 GiB), unlike
|
|
80
|
+
* the old RAM-tier heuristic which incorrectly gave both models 64 GiB on a
|
|
81
|
+
* 128 GiB Mac. Manual values are still accepted, but clamped so fixed model
|
|
82
|
+
* state + the cache cannot consume the runtime/OS reserve.
|
|
83
|
+
*/
|
|
84
|
+
export function planDs4ExpertCache(opts) {
|
|
85
|
+
const totalRamBytes = opts.totalRamBytes ?? totalmem();
|
|
86
|
+
const catalogCacheBytes = opts.catalogCacheBytes ?? 0;
|
|
87
|
+
const fixedResidentBytes = Math.max(0, (opts.catalogResidentBytes ?? 0) - catalogCacheBytes);
|
|
88
|
+
const fallbackGb = totalRamBytes >= 120 * GB ? 64 : totalRamBytes >= 88 * GB ? 48 : 32;
|
|
89
|
+
const requestedGb = opts.configuredGb ?? (catalogCacheBytes > 0 ? catalogCacheBytes / GB : fallbackGb);
|
|
90
|
+
const safeCacheBytes = totalRamBytes - fixedResidentBytes - DS4_FULL_RESIDENCY_HEADROOM_BYTES;
|
|
91
|
+
const safeCacheGb = Math.floor(safeCacheBytes / GB);
|
|
92
|
+
if (safeCacheGb < 1) {
|
|
93
|
+
return { cacheGb: 1, requestedGb, clamped: true, safe: false };
|
|
94
|
+
}
|
|
95
|
+
const cacheGb = Math.max(1, Math.min(requestedGb, safeCacheGb));
|
|
96
|
+
return { cacheGb, requestedGb, clamped: cacheGb !== requestedGb, safe: true };
|
|
97
|
+
}
|
|
98
|
+
/** Effective capacity-broker reservation for the chosen DS4 residency mode. */
|
|
99
|
+
export function ds4ResidentBytesForMode(catalogResidentBytes, ssdStreaming, ssdStreamingSupported = true) {
|
|
100
|
+
return ssdStreaming || !ssdStreamingSupported
|
|
101
|
+
? catalogResidentBytes
|
|
102
|
+
: Math.max(catalogResidentBytes, DS4_FULL_RESIDENCY_RESERVATION_BYTES);
|
|
103
|
+
}
|
|
104
|
+
/** Allowance for ds4's compute and staging buffers beyond weights and KV rows. */
|
|
105
|
+
export const DS4_RUNTIME_BUFFER_BYTES = 4 * GB;
|
|
106
|
+
/**
|
|
107
|
+
* Accelerator bytes a launch actually wires, for device admission's GPU
|
|
108
|
+
* check. `ds4ResidentBytesForMode` floors the RAM reservation at 96 GiB, and
|
|
109
|
+
* handing that floor over as GPU bytes compared it against a unified host's
|
|
110
|
+
* 0.75 × RAM ceiling — 91.2 GiB on a 121.6 GiB DGX Spark — so every
|
|
111
|
+
* full-residency deepseek-v4-flash q2 launch was refused, although ds4 itself
|
|
112
|
+
* plans that model at ~84 GiB (2026-09-29). Undefined when the floor did not
|
|
113
|
+
* raise the reservation: the reservation is then the working set already.
|
|
114
|
+
*/
|
|
115
|
+
export function ds4AdmissionGpuBytes(opts) {
|
|
116
|
+
if (opts.reservationBytes <= opts.workingSetBytes)
|
|
117
|
+
return undefined;
|
|
118
|
+
const wired = opts.workingSetBytes + (opts.kvBytesPerToken ?? 0) * opts.numCtx + DS4_RUNTIME_BUFFER_BYTES;
|
|
119
|
+
return Math.min(opts.reservationBytes, wired);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Build the line from a catalog `ds4` source block. Returns undefined unless
|
|
123
|
+
* the entry authors all three inputs — a slope without the window it was
|
|
124
|
+
* measured at cannot be re-based, and guessing one would quote confident
|
|
125
|
+
* numbers for a model nobody measured.
|
|
126
|
+
*/
|
|
127
|
+
export function ds4ResidentLine(opts) {
|
|
128
|
+
const { residentBytes, kvBytesPerToken, residentCtxTokens } = opts;
|
|
129
|
+
if (!residentBytes || !kvBytesPerToken || !residentCtxTokens)
|
|
130
|
+
return undefined;
|
|
131
|
+
// A mis-authored slope that swallows the whole footprint would quote a
|
|
132
|
+
// negative floor; clamp rather than propagate it into admission math.
|
|
133
|
+
const contextFreeBytes = Math.max(0, residentBytes - kvBytesPerToken * residentCtxTokens);
|
|
134
|
+
return { contextFreeBytes, kvBytesPerToken };
|
|
135
|
+
}
|
|
136
|
+
/** Evaluate {@link ds4ResidentLine} at a window. */
|
|
137
|
+
export function ds4ProjectedResidentBytes(line, ctxTokens) {
|
|
138
|
+
return Math.round(line.contextFreeBytes + line.kvBytesPerToken * Math.max(0, ctxTokens));
|
|
139
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classify a single line of ds4-server stderr into a lifecycle phase +
|
|
3
|
+
* human-readable detail. The ds4 sibling of llama.cpp's
|
|
4
|
+
* `classifyStartupLine` — same `StartupPhase` contract, but matching
|
|
5
|
+
* antirez's log wording instead of llama-server's.
|
|
6
|
+
*
|
|
7
|
+
* ds4-server logs are unconditional (its log "levels" only pick a TTY
|
|
8
|
+
* color), so everything below is present on every run of the pinned
|
|
9
|
+
* build. The formats come from the upstream source at the commit in
|
|
10
|
+
* native/engines/ds4/VERSION:
|
|
11
|
+
*
|
|
12
|
+
* server_log() lines — `MMDD HH:MM:SS ds4-server: <msg>`:
|
|
13
|
+
* - `ds4-server: chat ctx=0..7880:7880 TOOLS prefill chunk 512/7880
|
|
14
|
+
* (6.5%) chunk=39.35 t/s avg=39.35 t/s 13.013s` — every prefill
|
|
15
|
+
* batch, i.e. every few seconds. DS4 prefill on a long prompt
|
|
16
|
+
* runs for MINUTES (~39 tok/s SSD-streamed), so this is the
|
|
17
|
+
* single biggest user-facing win — without it the chat sits on
|
|
18
|
+
* a bare "Thinking it through" the whole time.
|
|
19
|
+
* - same shape with phase `tool checkpoint rebuild` — mid-turn KV
|
|
20
|
+
* restore from the disk checkpoint before a continuation.
|
|
21
|
+
* - `ds4-server: chat ctx=… gen=150 TOOLS decoding chunk=5.20 t/s
|
|
22
|
+
* avg=5.35 t/s 28.846s` — every 50 decode tokens (~10-35s at
|
|
23
|
+
* DS4 speeds).
|
|
24
|
+
* - `ds4-server: listening on http://127.0.0.1:52341` — ready.
|
|
25
|
+
*
|
|
26
|
+
* raw core prints (no timestamp) during model load:
|
|
27
|
+
* - `ds4: metal prepared model tensor mappings 12.50 GiB` —
|
|
28
|
+
* cumulative mapping ticker, every ~10s on a pipe.
|
|
29
|
+
* - `ds4: warming mapped tensor pages: 81.20 GiB` /
|
|
30
|
+
* `ds4: warmed tensor pages in 93.001s (checksum=…)` — the
|
|
31
|
+
* minutes-long full-residency page warm.
|
|
32
|
+
* - `ds4: prefill layer 12/61`, `ds4: gpu streaming prefill token
|
|
33
|
+
* 512/7880` — `\r`-repaint progress meters from non-server code
|
|
34
|
+
* paths; matched for robustness (the supervisor splits on `\r`).
|
|
35
|
+
*
|
|
36
|
+
* Same tolerance contract as the llama.cpp classifier: unknown lines
|
|
37
|
+
* return null and flow to the raw log file; a format drift upstream
|
|
38
|
+
* degrades us to "no phase detail", never a crash.
|
|
39
|
+
*/
|
|
40
|
+
import type { StartupPhase } from '../llama-cpp/stdout-parser.js';
|
|
41
|
+
/**
|
|
42
|
+
* Pure classifier for ds4-server output. Returns a phase descriptor
|
|
43
|
+
* when the line matches a known pattern, null otherwise. Caller (the
|
|
44
|
+
* shared `LlamaCppProvider.onStdoutLine`) dedupes repeated identical
|
|
45
|
+
* phases and accumulates `bufferBytes`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function classifyDs4Line(rawLine: string): StartupPhase | null;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { parseMemorySize, stripLogPrefix } from '../llama-cpp/stdout-parser.js';
|
|
2
|
+
/** Strip server_log's `MMDD HH:MM:SS ` timestamp when present. */
|
|
3
|
+
function stripTimestamp(line) {
|
|
4
|
+
return line.replace(/^\d{4} \d{2}:\d{2}:\d{2} /, '');
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Format a tokens/sec figure the way a human scans it: one decimal
|
|
8
|
+
* below 10 (DS4 decode runs 1-5 tok/s where "1 tok/s" vs "1.4 tok/s"
|
|
9
|
+
* is a 40% difference), whole numbers above.
|
|
10
|
+
*/
|
|
11
|
+
function formatTps(tps) {
|
|
12
|
+
return tps < 10 ? tps.toFixed(1) : String(Math.round(tps));
|
|
13
|
+
}
|
|
14
|
+
const NUM = (n) => n.toLocaleString('en-US');
|
|
15
|
+
/**
|
|
16
|
+
* Pure classifier for ds4-server output. Returns a phase descriptor
|
|
17
|
+
* when the line matches a known pattern, null otherwise. Caller (the
|
|
18
|
+
* shared `LlamaCppProvider.onStdoutLine`) dedupes repeated identical
|
|
19
|
+
* phases and accumulates `bufferBytes`.
|
|
20
|
+
*/
|
|
21
|
+
export function classifyDs4Line(rawLine) {
|
|
22
|
+
if (rawLine.includes('memory-admission:'))
|
|
23
|
+
return { phase: 'starting', detail: 'Waiting for available memory' };
|
|
24
|
+
const line = stripTimestamp(stripLogPrefix(rawLine));
|
|
25
|
+
if (!line)
|
|
26
|
+
return null;
|
|
27
|
+
// Server is up and listening — the readiness probe (`GET /v1/models`)
|
|
28
|
+
// corroborates. Model load happens BEFORE this line in ds4-server's
|
|
29
|
+
// main(), so `ready` here really means "load finished, serving".
|
|
30
|
+
if (/^ds4-server: listening on /.test(line)) {
|
|
31
|
+
return { phase: 'ready', detail: 'Server ready' };
|
|
32
|
+
}
|
|
33
|
+
// Prompt prefill / mid-turn KV rebuild progress. One line per prefill
|
|
34
|
+
// batch:
|
|
35
|
+
// `ds4-server: chat ctx=0..7880:7880 TOOLS prefill chunk 512/7880
|
|
36
|
+
// (6.5%) chunk=39.35 t/s avg=39.35 t/s 13.013s`
|
|
37
|
+
// The optional flag words between `ctx=…` and the phase are
|
|
38
|
+
// uppercase tokens (RESPPROTO TOOLS THINKING …); the phase string is
|
|
39
|
+
// exactly `prefill` or `tool checkpoint rebuild`, so anchor on those.
|
|
40
|
+
const prefillMatch = line.match(/^ds4-server: (?:chat|completion) ctx=\S+.*?\b(prefill|tool checkpoint rebuild) chunk (\d+)\/(\d+) \(([\d.]+)%\).*?\bavg=([\d.]+) t\/s/);
|
|
41
|
+
if (prefillMatch) {
|
|
42
|
+
const current = Number.parseInt(prefillMatch[2], 10);
|
|
43
|
+
const total = Number.parseInt(prefillMatch[3], 10);
|
|
44
|
+
const avgTps = Number.parseFloat(prefillMatch[5]);
|
|
45
|
+
if (total > 0 && current >= 0 && current <= total) {
|
|
46
|
+
const progress = current / total;
|
|
47
|
+
const pctText = Math.round(progress * 100);
|
|
48
|
+
const rebuild = prefillMatch[1] === 'tool checkpoint rebuild';
|
|
49
|
+
const tpsText = Number.isFinite(avgTps) && avgTps > 0 ? ` · ${formatTps(avgTps)} tok/s` : '';
|
|
50
|
+
return {
|
|
51
|
+
phase: 'prefill',
|
|
52
|
+
detail: rebuild
|
|
53
|
+
? `Restoring session context (${pctText}% · ${NUM(current)} / ${NUM(total)} tokens)`
|
|
54
|
+
: `Processing prompt (${pctText}% · ${NUM(current)} / ${NUM(total)} tokens${tpsText})`,
|
|
55
|
+
progress,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Decode progress — every 50 generated tokens. Valuable during long
|
|
60
|
+
// hidden-reasoning stretches where no visible delta reaches the UI:
|
|
61
|
+
// `ds4-server: chat ctx=7880..8030:150 gen=150 TOOLS decoding
|
|
62
|
+
// chunk=5.20 t/s avg=5.35 t/s 28.846s`
|
|
63
|
+
const decodeMatch = line.match(/^ds4-server: (?:chat|completion) ctx=\S+ gen=(\d+)\b.*?\bdecoding\b.*?\bavg=([\d.]+) t\/s/);
|
|
64
|
+
if (decodeMatch) {
|
|
65
|
+
const gen = Number.parseInt(decodeMatch[1], 10);
|
|
66
|
+
const avgTps = Number.parseFloat(decodeMatch[2]);
|
|
67
|
+
// Counters only — no `detail`. The UI names the phase itself and has
|
|
68
|
+
// its own row for the numbers; a prose copy here would just be
|
|
69
|
+
// scraped back apart on the other side.
|
|
70
|
+
return {
|
|
71
|
+
phase: 'generating',
|
|
72
|
+
outputTokens: gen,
|
|
73
|
+
...(Number.isFinite(avgTps) && avgTps > 0 ? { tokensPerSec: avgTps } : {}),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// Model tensor mapping ticker (cumulative, so no bufferBytes — the
|
|
77
|
+
// provider would sum every tick into a wildly inflated RAM total):
|
|
78
|
+
// `ds4: metal prepared model tensor mappings 12.50 GiB`
|
|
79
|
+
const mappedMatch = line.match(/^ds4: \S+ prepared model tensor mappings ([\d.]+) GiB/);
|
|
80
|
+
if (mappedMatch) {
|
|
81
|
+
return {
|
|
82
|
+
phase: 'loading_model',
|
|
83
|
+
detail: `Mapping model tensors (${mappedMatch[1]} GB)`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Full-residency page warm — a single announce line, so its size IS
|
|
87
|
+
// safe to count once toward the engine RAM figure:
|
|
88
|
+
// `ds4: warming mapped tensor pages: 81.20 GiB`
|
|
89
|
+
const warmingMatch = line.match(/^ds4: warming mapped tensor pages: ([\d.]+) GiB/);
|
|
90
|
+
if (warmingMatch) {
|
|
91
|
+
const bytes = parseMemorySize(warmingMatch[1], 'GiB');
|
|
92
|
+
return {
|
|
93
|
+
phase: 'loading_model',
|
|
94
|
+
detail: `Warming model pages (${warmingMatch[1]} GB)`,
|
|
95
|
+
...(bytes !== null ? { bufferBytes: bytes } : {}),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
const warmedMatch = line.match(/^ds4: warmed tensor pages in ([\d.]+)s/);
|
|
99
|
+
if (warmedMatch) {
|
|
100
|
+
return {
|
|
101
|
+
phase: 'loading_model',
|
|
102
|
+
detail: `Warmed model pages in ${Math.round(Number.parseFloat(warmedMatch[1]))}s`,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// Core `\r`-repaint prefill meters (non-server code paths; matched
|
|
106
|
+
// defensively — the supervisor splits `\r` repaints into lines):
|
|
107
|
+
// `ds4: prefill layer 12/61` / `ds4: gpu prefill layer 12/61`
|
|
108
|
+
// `ds4: gpu streaming prefill token 512/7880`
|
|
109
|
+
const coreTokenMatch = line.match(/^ds4: .*?\bprefill token (\d+)\/(\d+)/);
|
|
110
|
+
if (coreTokenMatch) {
|
|
111
|
+
const current = Number.parseInt(coreTokenMatch[1], 10);
|
|
112
|
+
const total = Number.parseInt(coreTokenMatch[2], 10);
|
|
113
|
+
if (total > 0 && current >= 0 && current <= total) {
|
|
114
|
+
return {
|
|
115
|
+
phase: 'prefill',
|
|
116
|
+
detail: `Processing prompt (${Math.round((current / total) * 100)}% · ${NUM(current)} / ${NUM(total)} tokens)`,
|
|
117
|
+
progress: current / total,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const coreLayerMatch = line.match(/^ds4: .*?\bprefill layer (\d+)\/(\d+)/);
|
|
122
|
+
if (coreLayerMatch) {
|
|
123
|
+
const current = Number.parseInt(coreLayerMatch[1], 10);
|
|
124
|
+
const total = Number.parseInt(coreLayerMatch[2], 10);
|
|
125
|
+
if (total > 0 && current >= 0 && current <= total) {
|
|
126
|
+
return {
|
|
127
|
+
phase: 'prefill',
|
|
128
|
+
detail: `Prefill layer ${current} / ${total}`,
|
|
129
|
+
progress: current / total,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@bendyline/gezel/local-loop';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@bendyline/gezel/local-loop';
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GpuArbiter — thermal admission plus the user's explicit cross-slot swap
|
|
3
|
+
* preference. Automatic memory admission belongs to DeviceCapacityLedger,
|
|
4
|
+
* shared by all native supervisors and cooperating daemon processes.
|
|
5
|
+
*
|
|
6
|
+
* Policies:
|
|
7
|
+
* - `coexist` — no slot eviction; supervisors admit residency by bytes.
|
|
8
|
+
* - `swap` — `acquire(slot)` evicts the *other* slot first. The
|
|
9
|
+
* evicted engine's lazy-restart kicks in on its next request,
|
|
10
|
+
* so callers see a small one-time latency on the turn after a
|
|
11
|
+
* swap, not on every turn.
|
|
12
|
+
*
|
|
13
|
+
* Engines register an evictor via {@link registerEvictor}; the
|
|
14
|
+
* llama-cpp + sd-cpp providers each call this once at construction
|
|
15
|
+
* with their supervisor's `stop()`. When no engine has registered
|
|
16
|
+
* for a slot (e.g. cloud LLM + local image gen), `acquire()` for
|
|
17
|
+
* that slot is a no-op — there's nothing to evict.
|
|
18
|
+
*
|
|
19
|
+
* Designed to be light: no internal state machine, no per-request
|
|
20
|
+
* tracking. The supervisor's own state machine is the source of
|
|
21
|
+
* truth for "is the engine running"; an unconditional `stop()`
|
|
22
|
+
* call when the supervisor is already stopped is a tested no-op.
|
|
23
|
+
*/
|
|
24
|
+
import type { DeviceHealthGate, DeviceHealthStatusSnapshot, DeviceSafetyPolicyInput } from '@bendyline/gezel/native';
|
|
25
|
+
export type GpuSlot = 'llm' | 'image' | 'video';
|
|
26
|
+
export type GpuPolicy = 'coexist' | 'swap';
|
|
27
|
+
export type GpuPolicySetting = GpuPolicy | 'auto';
|
|
28
|
+
type DeviceHealthAdmissionGate = Pick<DeviceHealthGate, 'admit' | 'setPolicy' | 'status'>;
|
|
29
|
+
export interface GpuMemoryPressureStatus {
|
|
30
|
+
pressured: boolean;
|
|
31
|
+
freeBytes?: number;
|
|
32
|
+
totalBytes?: number;
|
|
33
|
+
detail?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface GpuArbiterOptions {
|
|
36
|
+
/**
|
|
37
|
+
* Initial policy. Use {@link detectGpuPolicy} to derive an `auto`
|
|
38
|
+
* default at boot, or pass `swap`/`coexist` directly when the user
|
|
39
|
+
* has overridden the auto pick in Settings.
|
|
40
|
+
*/
|
|
41
|
+
policy: GpuPolicy;
|
|
42
|
+
/**
|
|
43
|
+
* Where lifecycle messages go. Defaults to `console.log`. The
|
|
44
|
+
* service wires this to its structured logger so swap events show
|
|
45
|
+
* up in the daemon log.
|
|
46
|
+
*/
|
|
47
|
+
log?: (msg: string) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Optional cross-vendor admission gate. It is consulted for every GPU slot
|
|
50
|
+
* regardless of the memory coexist/swap policy, so thermal safety does not
|
|
51
|
+
* accidentally disappear on large-memory systems.
|
|
52
|
+
*/
|
|
53
|
+
healthGate?: DeviceHealthAdmissionGate;
|
|
54
|
+
/**
|
|
55
|
+
* How long a single lease may be held before the arbiter treats it as
|
|
56
|
+
* leaked and breaks it. Backstop only — see {@link STALE_LEASE_BREAK_MS}.
|
|
57
|
+
*/
|
|
58
|
+
staleLeaseBreakMs?: number;
|
|
59
|
+
}
|
|
60
|
+
export declare class GpuArbiter {
|
|
61
|
+
private policy;
|
|
62
|
+
/**
|
|
63
|
+
* Evictors per slot, keyed by owner. A slot can have multiple
|
|
64
|
+
* registered engines at once — the engine pool runs several
|
|
65
|
+
* llama-server replicas (one per resident model), each registering
|
|
66
|
+
* under its engine key — and an eviction of the slot must stop ALL
|
|
67
|
+
* of them, not just the most recently registered.
|
|
68
|
+
*/
|
|
69
|
+
private readonly evictors;
|
|
70
|
+
private readonly log;
|
|
71
|
+
private readonly healthGate?;
|
|
72
|
+
private activeLease;
|
|
73
|
+
private activeLeaseSince;
|
|
74
|
+
private leaseWaiters;
|
|
75
|
+
private readonly staleLeaseBreakMs;
|
|
76
|
+
constructor(opts: GpuArbiterOptions);
|
|
77
|
+
/**
|
|
78
|
+
* Drop a lease the holder can no longer release, so blocked acquirers make
|
|
79
|
+
* progress. Returns true when a lease was actually broken.
|
|
80
|
+
*/
|
|
81
|
+
private breakStaleLease;
|
|
82
|
+
/**
|
|
83
|
+
* Register the function the arbiter should call to evict an engine
|
|
84
|
+
* from the GPU. Typically the supervisor's `stop()`. Re-registering
|
|
85
|
+
* the same `(slot, ownerId)` replaces the previous evictor — useful
|
|
86
|
+
* when a provider is rebuilt (e.g. user switched llama-cpp models
|
|
87
|
+
* in Settings) and the old supervisor is gone. Distinct owners on
|
|
88
|
+
* the same slot coexist (pool replicas); pass the engine key as
|
|
89
|
+
* `ownerId` so each replica can be unregistered independently.
|
|
90
|
+
*/
|
|
91
|
+
registerEvictor(slot: GpuSlot, evict: () => Promise<void>, ownerId?: string): void;
|
|
92
|
+
/**
|
|
93
|
+
* Forget an evictor. Called when a provider is shut down for good
|
|
94
|
+
* (e.g. user switched from local to cloud, or the pool evicted a
|
|
95
|
+
* replica). After this, `acquire()` for the *other* slot won't try
|
|
96
|
+
* to evict here.
|
|
97
|
+
*/
|
|
98
|
+
unregisterEvictor(slot: GpuSlot, ownerId?: string): void;
|
|
99
|
+
/**
|
|
100
|
+
* Called by a provider just before it intends to use the GPU. In
|
|
101
|
+
* `swap` mode, evicts every other registered slot first; in
|
|
102
|
+
* `coexist` mode, returns immediately. Failures during eviction are
|
|
103
|
+
* logged and swallowed — the requesting engine still gets to run,
|
|
104
|
+
* which is the user-visible promise.
|
|
105
|
+
*/
|
|
106
|
+
acquire(slot: GpuSlot): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Acquire the GPU and keep an in-flight operation protected until the
|
|
109
|
+
* returned release function is called. Long local image generations use
|
|
110
|
+
* this so a chat nudge cannot evict sd-server halfway through VAE decode.
|
|
111
|
+
*/
|
|
112
|
+
acquireLease(slot: GpuSlot): Promise<() => void>;
|
|
113
|
+
private waitForForeignLease;
|
|
114
|
+
/**
|
|
115
|
+
* Resolves on the next release, or after {@link LEASE_WAIT_POLL_MS} so the
|
|
116
|
+
* caller re-evaluates. The timed wake is what makes the stale-lease breaker
|
|
117
|
+
* reachable: a leaked lease produces no release, so a wake-on-release-only
|
|
118
|
+
* wait would never re-check and the caller would park forever.
|
|
119
|
+
*/
|
|
120
|
+
private waitForLeaseRelease;
|
|
121
|
+
private wakeLeaseWaiters;
|
|
122
|
+
private evictOthers;
|
|
123
|
+
getPolicy(): GpuPolicy;
|
|
124
|
+
/**
|
|
125
|
+
* Hot-swap the policy. Used by the config PUT handler when the user
|
|
126
|
+
* flips the toggle in Settings. Doesn't preemptively load or evict
|
|
127
|
+
* anything — the new policy applies on the next `acquire()`.
|
|
128
|
+
*/
|
|
129
|
+
setPolicy(policy: GpuPolicy): void;
|
|
130
|
+
/** Hot-swap native device-safety thresholds for the next admission. */
|
|
131
|
+
setDeviceSafetyPolicy(policy: DeviceSafetyPolicyInput): void;
|
|
132
|
+
/** Latest normalized machine-health snapshot for the authenticated UI. */
|
|
133
|
+
getDeviceHealthStatus(maxAgeMs?: number): Promise<DeviceHealthStatusSnapshot | undefined>;
|
|
134
|
+
/**
|
|
135
|
+
* Low-free-VRAM signal for idle engine supervisors. This is deliberately a
|
|
136
|
+
* release hint, not an admission denial: active inference always finishes,
|
|
137
|
+
* then an idle model gets one minute to be reused before caches flush and
|
|
138
|
+
* its process exits.
|
|
139
|
+
*/
|
|
140
|
+
getMemoryPressureStatus(maxAgeMs?: number): Promise<GpuMemoryPressureStatus>;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Automatic co-residency is now admitted by the device memory ledger at actual
|
|
144
|
+
* engine startup. The slot arbiter retains explicit `swap` as an operator
|
|
145
|
+
* preference; platform/RAM heuristics must not serialize models that fit.
|
|
146
|
+
*/
|
|
147
|
+
export declare function detectGpuPolicy(_opts?: {
|
|
148
|
+
platform?: NodeJS.Platform;
|
|
149
|
+
arch?: string;
|
|
150
|
+
totalMemBytes?: number;
|
|
151
|
+
}): GpuPolicy;
|
|
152
|
+
/**
|
|
153
|
+
* Resolve the user-facing setting (which may be `'auto'`) into a
|
|
154
|
+
* concrete policy by consulting {@link detectGpuPolicy} for the
|
|
155
|
+
* `'auto'` case. Centralized so the service entrypoint and the
|
|
156
|
+
* config-change path agree on the same mapping.
|
|
157
|
+
*/
|
|
158
|
+
export declare function resolveGpuPolicy(setting: GpuPolicySetting | undefined): GpuPolicy;
|
|
159
|
+
export {};
|