@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 @@
|
|
|
1
|
+
export * from '@bendyline/gezel/local-loop';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@bendyline/gezel/local-loop';
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { type GezelConfig } from '@bendyline/gezel';
|
|
2
|
+
import type { CatalogService } from '@bendyline/gezel-catalog';
|
|
3
|
+
import { Ds4Provider } from './provider.js';
|
|
4
|
+
/**
|
|
5
|
+
* Default ds4 context window for the host's unified-memory tier.
|
|
6
|
+
*
|
|
7
|
+
* The old two-tier policy gave every machine below 192 GiB a 128K window.
|
|
8
|
+
* That was calibrated on DeepSeek V4's small resident core and was too
|
|
9
|
+
* aggressive for a 64 GiB Mac running Qwen3.8 Flash Next, whose main/MTP
|
|
10
|
+
* weights alone occupy about 42 GiB. Keep 64 GiB-class machines at 64K,
|
|
11
|
+
* while 96 GiB+ machines retain the measured 128K default.
|
|
12
|
+
*/
|
|
13
|
+
export declare function ds4RamTieredContext(totalRamBytes: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* Resolve ds4's launch `--ctx` from the device tier and the model's catalog
|
|
16
|
+
* cap.
|
|
17
|
+
*
|
|
18
|
+
* A high explicit `config.ds4NumCtx` wins. A lower value cannot push a
|
|
19
|
+
* long-context model below Gezel's viability floor (64K, or 32K on a
|
|
20
|
+
* memory-constrained host); a catalog model whose native launch cap is
|
|
21
|
+
* genuinely smaller retains that smaller cap. Otherwise the RAM tier is an
|
|
22
|
+
* upper bound that a model may lower but never raise — the tier is calibrated
|
|
23
|
+
* on DeepSeek V4 Flash's ~4 GiB of resident non-routed weights, and a model
|
|
24
|
+
* holding five times that much cannot afford the same KV allocation on the
|
|
25
|
+
* same machine.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveDs4LaunchCtx(opts: {
|
|
28
|
+
configured?: number | undefined;
|
|
29
|
+
ramTieredCtx: number;
|
|
30
|
+
catalogMaxCtx?: number | undefined;
|
|
31
|
+
minViableContextTokens?: number | undefined;
|
|
32
|
+
}): number;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the one vision configuration the launch arguments, request wire
|
|
35
|
+
* shape, and turn-level capability gate must agree on.
|
|
36
|
+
*
|
|
37
|
+
* An explicit language-model path must never silently borrow an encoder from
|
|
38
|
+
* a catalog install: ds4 encoders are checkpoint-specific, and a mismatched
|
|
39
|
+
* pair is worse than an honest text-only launch. External servers own their
|
|
40
|
+
* argv, so Gezel cannot claim they support vision without a future capability
|
|
41
|
+
* handshake.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveDs4VisionLaunch(opts: {
|
|
44
|
+
modelId?: string | undefined;
|
|
45
|
+
nativeVision?: Record<string, boolean> | undefined;
|
|
46
|
+
installedVisionEncoderPath?: string | undefined;
|
|
47
|
+
explicitModelPath?: string | undefined;
|
|
48
|
+
explicitVisionEncoderPath?: string | undefined;
|
|
49
|
+
externalBaseUrl?: string | undefined;
|
|
50
|
+
}): {
|
|
51
|
+
visionEncoderPath?: string;
|
|
52
|
+
enabled: boolean;
|
|
53
|
+
};
|
|
54
|
+
/** Command-line fragment for the resolved ds4 vision state. */
|
|
55
|
+
export declare function ds4VisionArgs(vision: {
|
|
56
|
+
visionEncoderPath?: string;
|
|
57
|
+
enabled: boolean;
|
|
58
|
+
}): string[];
|
|
59
|
+
/** Model-specific memory/graph flags that must stay aligned with residency policy. */
|
|
60
|
+
export declare function ds4RuntimeArgs(opts: {
|
|
61
|
+
ssdStreaming: boolean;
|
|
62
|
+
cacheExpertsGb?: number | undefined;
|
|
63
|
+
prefillChunk?: number | undefined;
|
|
64
|
+
}): string[];
|
|
65
|
+
/**
|
|
66
|
+
* Build a ds4 (DwarfStar) provider. `ds4-server` is wire-compatible with
|
|
67
|
+
* `llama-server` (OpenAI `/v1/chat/completions` SSE), so this returns a
|
|
68
|
+
* {@link Ds4Provider} wrapping a {@link LlamaCppProvider} pointed at either an
|
|
69
|
+
* external ds4-server (`config.ds4BaseUrl` / `GEZEL_DS4_SERVER_URL`) or a
|
|
70
|
+
* supervised bundled `ds4-server` (`GEZEL_DS4_SERVER_BIN`).
|
|
71
|
+
*
|
|
72
|
+
* ds4 is not a general GGUF runner: it loads the specific DeepSeek V4/V4.1,
|
|
73
|
+
* GLM 5.2/5.3, and Qwen3.8 Flash Next quants its engine was built for,
|
|
74
|
+
* detecting the family at load time from the GGUF's `general.architecture`.
|
|
75
|
+
* Models reach the supervised path through the catalog's `ds4` source block,
|
|
76
|
+
* or an EXPLICIT GGUF via
|
|
77
|
+
* `config.ds4ModelPath` / `GEZEL_DS4_MODEL`. GPU-only: `--metal` on darwin,
|
|
78
|
+
* `--cuda` on linux (ds4's CPU path crashes the macOS kernel, so we never fall
|
|
79
|
+
* back to it). Readiness probes `GET /v1/models` because ds4 has no `/health`
|
|
80
|
+
* endpoint.
|
|
81
|
+
*/
|
|
82
|
+
export declare function buildDs4Provider(opts: {
|
|
83
|
+
config: GezelConfig;
|
|
84
|
+
affinity: boolean | undefined;
|
|
85
|
+
home: string;
|
|
86
|
+
/**
|
|
87
|
+
* ds4 GGUF store (a `LlamaCppModelManager` with engine:'ds4'). When set, the
|
|
88
|
+
* supervised path resolves the catalog modelId to an installed weights file
|
|
89
|
+
* — so the model picker's "install" flow works without a manual path.
|
|
90
|
+
*/
|
|
91
|
+
ds4Models?: import('../llama-cpp/index.js').LlamaCppModelManager;
|
|
92
|
+
/** Catalog metadata drives the model-specific streaming cache and fit gate. */
|
|
93
|
+
catalog?: CatalogService;
|
|
94
|
+
modelOverride?: {
|
|
95
|
+
modelId: string;
|
|
96
|
+
replicaIdx: number;
|
|
97
|
+
};
|
|
98
|
+
broker?: import('../native/capacity-broker.js').CapacityBroker;
|
|
99
|
+
arbiter?: import('../gpu-arbiter.js').GpuArbiter;
|
|
100
|
+
}): Promise<Ds4Provider>;
|
|
@@ -0,0 +1,539 @@
|
|
|
1
|
+
import { basename, dirname, join } from 'node:path';
|
|
2
|
+
import { DEFAULT_LOCAL_ENGINE_IDLE_TIMEOUT_MS, createLogger, } from '@bendyline/gezel';
|
|
3
|
+
import { gezelPaths } from '@bendyline/gezel/paths';
|
|
4
|
+
import { LlamaCppProvider } from '../llama-cpp/index.js';
|
|
5
|
+
import { minViableLocalContextTokens, pressureIdleGraceMs } from '../native/capacity-broker.js';
|
|
6
|
+
import { pickFreePort } from '../native/port.js';
|
|
7
|
+
import { NativeEngineSupervisor } from '../native/supervisor.js';
|
|
8
|
+
import { patientFetch } from '../patient-fetch.js';
|
|
9
|
+
import { nativeVisionEnabledFor } from '../vision-capability.js';
|
|
10
|
+
import { ds4DsparkArgs, resolveDs4Dspark } from './dspark.js';
|
|
11
|
+
import { ds4MtpArgs, resolveDs4Mtp } from './mtp.js';
|
|
12
|
+
import { Ds4Provider } from './provider.js';
|
|
13
|
+
const log = createLogger('chat');
|
|
14
|
+
/**
|
|
15
|
+
* Default ds4 context window for the host's unified-memory tier.
|
|
16
|
+
*
|
|
17
|
+
* The old two-tier policy gave every machine below 192 GiB a 128K window.
|
|
18
|
+
* That was calibrated on DeepSeek V4's small resident core and was too
|
|
19
|
+
* aggressive for a 64 GiB Mac running Qwen3.8 Flash Next, whose main/MTP
|
|
20
|
+
* weights alone occupy about 42 GiB. Keep 64 GiB-class machines at 64K,
|
|
21
|
+
* while 96 GiB+ machines retain the measured 128K default.
|
|
22
|
+
*/
|
|
23
|
+
export function ds4RamTieredContext(totalRamBytes) {
|
|
24
|
+
const totalRamGb = totalRamBytes / 1024 ** 3;
|
|
25
|
+
if (totalRamGb >= 192)
|
|
26
|
+
return 262_144;
|
|
27
|
+
if (totalRamGb >= 96)
|
|
28
|
+
return 131_072;
|
|
29
|
+
return 65_536;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolve ds4's launch `--ctx` from the device tier and the model's catalog
|
|
33
|
+
* cap.
|
|
34
|
+
*
|
|
35
|
+
* A high explicit `config.ds4NumCtx` wins. A lower value cannot push a
|
|
36
|
+
* long-context model below Gezel's viability floor (64K, or 32K on a
|
|
37
|
+
* memory-constrained host); a catalog model whose native launch cap is
|
|
38
|
+
* genuinely smaller retains that smaller cap. Otherwise the RAM tier is an
|
|
39
|
+
* upper bound that a model may lower but never raise — the tier is calibrated
|
|
40
|
+
* on DeepSeek V4 Flash's ~4 GiB of resident non-routed weights, and a model
|
|
41
|
+
* holding five times that much cannot afford the same KV allocation on the
|
|
42
|
+
* same machine.
|
|
43
|
+
*/
|
|
44
|
+
export function resolveDs4LaunchCtx(opts) {
|
|
45
|
+
const floor = opts.minViableContextTokens && opts.minViableContextTokens > 0
|
|
46
|
+
? opts.minViableContextTokens
|
|
47
|
+
: minViableLocalContextTokens();
|
|
48
|
+
const resolved = opts.configured ??
|
|
49
|
+
(opts.catalogMaxCtx ? Math.min(opts.ramTieredCtx, opts.catalogMaxCtx) : opts.ramTieredCtx);
|
|
50
|
+
if (opts.catalogMaxCtx && opts.catalogMaxCtx < floor) {
|
|
51
|
+
return opts.catalogMaxCtx;
|
|
52
|
+
}
|
|
53
|
+
return Math.max(floor, resolved);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the one vision configuration the launch arguments, request wire
|
|
57
|
+
* shape, and turn-level capability gate must agree on.
|
|
58
|
+
*
|
|
59
|
+
* An explicit language-model path must never silently borrow an encoder from
|
|
60
|
+
* a catalog install: ds4 encoders are checkpoint-specific, and a mismatched
|
|
61
|
+
* pair is worse than an honest text-only launch. External servers own their
|
|
62
|
+
* argv, so Gezel cannot claim they support vision without a future capability
|
|
63
|
+
* handshake.
|
|
64
|
+
*/
|
|
65
|
+
export function resolveDs4VisionLaunch(opts) {
|
|
66
|
+
if (opts.externalBaseUrl)
|
|
67
|
+
return { enabled: false };
|
|
68
|
+
const visionEncoderPath = opts.explicitVisionEncoderPath ??
|
|
69
|
+
(opts.explicitModelPath ? undefined : opts.installedVisionEncoderPath);
|
|
70
|
+
const enabled = Boolean(visionEncoderPath) &&
|
|
71
|
+
(opts.modelId ? nativeVisionEnabledFor(opts.nativeVision, opts.modelId) : true);
|
|
72
|
+
return {
|
|
73
|
+
...(visionEncoderPath ? { visionEncoderPath } : {}),
|
|
74
|
+
enabled,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** Command-line fragment for the resolved ds4 vision state. */
|
|
78
|
+
export function ds4VisionArgs(vision) {
|
|
79
|
+
return vision.enabled && vision.visionEncoderPath ? ['--vision', vision.visionEncoderPath] : [];
|
|
80
|
+
}
|
|
81
|
+
/** Model-specific memory/graph flags that must stay aligned with residency policy. */
|
|
82
|
+
export function ds4RuntimeArgs(opts) {
|
|
83
|
+
const args = [];
|
|
84
|
+
if (opts.ssdStreaming) {
|
|
85
|
+
args.push('--ssd-streaming');
|
|
86
|
+
if (opts.cacheExpertsGb && opts.cacheExpertsGb > 0) {
|
|
87
|
+
args.push('--ssd-streaming-cache-experts', `${opts.cacheExpertsGb}GB`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (opts.prefillChunk)
|
|
91
|
+
args.push('--prefill-chunk', String(opts.prefillChunk));
|
|
92
|
+
return args;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Build a ds4 (DwarfStar) provider. `ds4-server` is wire-compatible with
|
|
96
|
+
* `llama-server` (OpenAI `/v1/chat/completions` SSE), so this returns a
|
|
97
|
+
* {@link Ds4Provider} wrapping a {@link LlamaCppProvider} pointed at either an
|
|
98
|
+
* external ds4-server (`config.ds4BaseUrl` / `GEZEL_DS4_SERVER_URL`) or a
|
|
99
|
+
* supervised bundled `ds4-server` (`GEZEL_DS4_SERVER_BIN`).
|
|
100
|
+
*
|
|
101
|
+
* ds4 is not a general GGUF runner: it loads the specific DeepSeek V4/V4.1,
|
|
102
|
+
* GLM 5.2/5.3, and Qwen3.8 Flash Next quants its engine was built for,
|
|
103
|
+
* detecting the family at load time from the GGUF's `general.architecture`.
|
|
104
|
+
* Models reach the supervised path through the catalog's `ds4` source block,
|
|
105
|
+
* or an EXPLICIT GGUF via
|
|
106
|
+
* `config.ds4ModelPath` / `GEZEL_DS4_MODEL`. GPU-only: `--metal` on darwin,
|
|
107
|
+
* `--cuda` on linux (ds4's CPU path crashes the macOS kernel, so we never fall
|
|
108
|
+
* back to it). Readiness probes `GET /v1/models` because ds4 has no `/health`
|
|
109
|
+
* endpoint.
|
|
110
|
+
*/
|
|
111
|
+
export async function buildDs4Provider(opts) {
|
|
112
|
+
const { config, affinity, home } = opts;
|
|
113
|
+
const defaultModelId = opts.modelOverride?.modelId ?? config.defaultModel?.ds4;
|
|
114
|
+
// ds4 models support ~1M context and SSD-STREAM their KV cache to disk, so
|
|
115
|
+
// the practical ceiling on a given box is RAM for the Metal context buffers
|
|
116
|
+
// (~0.75 GiB at 24K, scaling with ctx) — which share RAM with the expert
|
|
117
|
+
// cache. Scale ctx with device RAM, far above llama.cpp-class defaults to use
|
|
118
|
+
// the engine's headline strength, but bounded so buffers + expert cache still
|
|
119
|
+
// fit and the KV stays under ds4-server's ~4 GiB disk budget. A small window
|
|
120
|
+
// throws away exactly what ds4 is for and overflows on large specialist
|
|
121
|
+
// handoffs. (Full 1M needs a 128 GB+ box AND a raised ds4 --kv-disk-budget.)
|
|
122
|
+
//
|
|
123
|
+
// This tier assumes DeepSeek-V4's small resident footprint. A model whose
|
|
124
|
+
// non-routed weights are much larger caps it further via the catalog's
|
|
125
|
+
// `ds4.maxLaunchCtx`; see `resolveDs4LaunchCtx` below.
|
|
126
|
+
const totalRamBytes = (await import('node:os')).totalmem();
|
|
127
|
+
const totalRamGb = totalRamBytes / 1024 ** 3;
|
|
128
|
+
const ramTieredCtx = ds4RamTieredContext(totalRamBytes);
|
|
129
|
+
const ds4ConstrainedToolNoSignalMs = (() => {
|
|
130
|
+
const raw = process.env.GEZEL_DS4_CONSTRAINED_TOOL_NO_SIGNAL_MS;
|
|
131
|
+
if (raw) {
|
|
132
|
+
const parsed = Number.parseInt(raw, 10);
|
|
133
|
+
if (Number.isFinite(parsed) && parsed > 0)
|
|
134
|
+
return parsed;
|
|
135
|
+
}
|
|
136
|
+
return 600_000;
|
|
137
|
+
})();
|
|
138
|
+
const baseProviderOpts = {
|
|
139
|
+
fetchImpl: patientFetch(),
|
|
140
|
+
...(defaultModelId ? { defaultModel: defaultModelId } : {}),
|
|
141
|
+
...(affinity !== undefined ? { affinity } : {}),
|
|
142
|
+
// ds4-server emits per-turn token usage only when the request asks via
|
|
143
|
+
// stream_options.include_usage — opt in so usage/tok-s telemetry works.
|
|
144
|
+
includeUsageInStream: true,
|
|
145
|
+
// Reasoning is a per-request server control. Mirror Gezel's selected
|
|
146
|
+
// effort into both the OpenAI-compatible field and Qwen-style template
|
|
147
|
+
// kwargs; the standalone agent's launch-time control is intentionally not
|
|
148
|
+
// part of the server argv.
|
|
149
|
+
reasoningEffortRequestShape: 'ds4',
|
|
150
|
+
// ds4-server replays assistant turns as `<think>{reasoning_content}</think>`
|
|
151
|
+
// and keeps per-call DSML by tool-call id. Echoing the captured reasoning
|
|
152
|
+
// back keeps the re-rendered history byte-identical to what was generated,
|
|
153
|
+
// so the engine's live-KV prefix survives each tool iteration and a
|
|
154
|
+
// continuation prefills only the new tool results — instead of the
|
|
155
|
+
// `live kv cache miss … reason=token-mismatch` full-tail re-prefill
|
|
156
|
+
// (minutes per iteration at SSD-streamed prefill speeds). The env var is
|
|
157
|
+
// a no-rebuild kill switch while the replay path is field-tuned.
|
|
158
|
+
replayReasoningContent: process.env.GEZEL_DS4_NO_REASONING_REPLAY !== '1',
|
|
159
|
+
// DS4 prefill can exceed three minutes even on compact tool prompts when
|
|
160
|
+
// a continuation misses the live KV prefix and re-streams expert weights.
|
|
161
|
+
// Keep the constrained mutation watchdog active, but give the engine a
|
|
162
|
+
// model-appropriate prefill allowance. Override with
|
|
163
|
+
// GEZEL_DS4_CONSTRAINED_TOOL_NO_SIGNAL_MS.
|
|
164
|
+
constrainedToolNoSignalMs: ds4ConstrainedToolNoSignalMs,
|
|
165
|
+
// ds4-server is a hard singleton backed by an unusually large SSD-streamed
|
|
166
|
+
// model. Never overlap foreground and background generations: concurrent
|
|
167
|
+
// expert reads can saturate the SSD and make the whole workstation
|
|
168
|
+
// unresponsive even when the bounded resident cache itself fits.
|
|
169
|
+
concurrency: 1,
|
|
170
|
+
reserveBackgroundSlot: false,
|
|
171
|
+
};
|
|
172
|
+
// External ds4-server (dev iteration / LAN). Wins whenever set — a single
|
|
173
|
+
// external server already holds the model, so model resolution is moot.
|
|
174
|
+
// This is the path validated against a locally-run `ds4-server` while the
|
|
175
|
+
// bundled-binary vendoring (M2) lands.
|
|
176
|
+
const externalBaseUrl = process.env.GEZEL_DS4_SERVER_URL ?? config.ds4BaseUrl;
|
|
177
|
+
// Per-model context override (Settings → Local models → Context size…),
|
|
178
|
+
// more specific than the machine-wide ds4NumCtx.
|
|
179
|
+
const perModelCtxOverride = defaultModelId
|
|
180
|
+
? config.modelContextOverrides?.[`ds4:${defaultModelId}`]
|
|
181
|
+
: undefined;
|
|
182
|
+
if (externalBaseUrl) {
|
|
183
|
+
return new Ds4Provider({
|
|
184
|
+
inner: new LlamaCppProvider({
|
|
185
|
+
baseUrl: externalBaseUrl,
|
|
186
|
+
disableThinkingRequestShape: 'deepseek',
|
|
187
|
+
// The external server owns its own `--ctx`; we only need a window to
|
|
188
|
+
// reason about pressure with, so the catalog cap can't apply here.
|
|
189
|
+
numCtx: perModelCtxOverride ?? config.ds4NumCtx ?? ramTieredCtx,
|
|
190
|
+
...baseProviderOpts,
|
|
191
|
+
}),
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
// Supervised: bundled ds4-server binary (set by the Electron supervisor /
|
|
195
|
+
// eval harness once vendored).
|
|
196
|
+
const binary = process.env.GEZEL_DS4_SERVER_BIN;
|
|
197
|
+
if (!binary) {
|
|
198
|
+
const err = new Error('DwarfStar (ds4) engine: no ds4-server is available. Point Settings → DwarfStar (ds4) → External URL at a running ds4-server, or install a Gezel build that bundles ds4-server for this platform (Apple-Silicon Metal or Linux CUDA only).');
|
|
199
|
+
err.isActionable = true;
|
|
200
|
+
throw err;
|
|
201
|
+
}
|
|
202
|
+
// Model path: explicit env/config wins; otherwise resolve the catalog
|
|
203
|
+
// modelId through the ds4 GGUF store (installed via the model picker into
|
|
204
|
+
// `engines/ds4/models`). Mirrors buildLlamaCppProvider's precedence.
|
|
205
|
+
const explicitModelPath = process.env.GEZEL_DS4_MODEL ?? config.ds4ModelPath;
|
|
206
|
+
let modelPath = explicitModelPath;
|
|
207
|
+
let installedModel;
|
|
208
|
+
if (!modelPath && opts.ds4Models) {
|
|
209
|
+
if (defaultModelId) {
|
|
210
|
+
installedModel = await opts.ds4Models.resolveModel(defaultModelId);
|
|
211
|
+
if (installedModel)
|
|
212
|
+
modelPath = installedModel.weightsPath;
|
|
213
|
+
}
|
|
214
|
+
if (!modelPath && !opts.modelOverride) {
|
|
215
|
+
installedModel = await opts.ds4Models.resolveDefaultModel();
|
|
216
|
+
if (installedModel)
|
|
217
|
+
modelPath = installedModel.weightsPath;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (!modelPath) {
|
|
221
|
+
const err = new Error(defaultModelId
|
|
222
|
+
? `DwarfStar (ds4) engine: model "${defaultModelId}" isn't available locally yet — download it from Settings → DwarfStar (ds4), or set config.ds4ModelPath / GEZEL_DS4_MODEL to a GGUF DwarfStar supports.`
|
|
223
|
+
: 'DwarfStar (ds4) engine: no DwarfStar model is available locally — download one from Settings → DwarfStar (ds4), or set config.ds4ModelPath / GEZEL_DS4_MODEL. DwarfStar is not a general GGUF runner; it runs the specific DeepSeek-V4 and GLM 5.2/5.3 builds its engine supports.');
|
|
224
|
+
err.isActionable = true;
|
|
225
|
+
throw err;
|
|
226
|
+
}
|
|
227
|
+
// GPU backend: Metal on Apple Silicon, CUDA on Linux. ds4's CPU path
|
|
228
|
+
// crashes the macOS kernel, so it is never selected on darwin.
|
|
229
|
+
const backendFlag = process.platform === 'darwin' ? '--metal' : '--cuda';
|
|
230
|
+
const effectiveModelId = defaultModelId ?? installedModel?.id;
|
|
231
|
+
const vision = resolveDs4VisionLaunch({
|
|
232
|
+
...(effectiveModelId ? { modelId: effectiveModelId } : {}),
|
|
233
|
+
...(config.nativeVision ? { nativeVision: config.nativeVision } : {}),
|
|
234
|
+
...(installedModel?.visionEncoderPath
|
|
235
|
+
? { installedVisionEncoderPath: installedModel.visionEncoderPath }
|
|
236
|
+
: {}),
|
|
237
|
+
...(explicitModelPath ? { explicitModelPath } : {}),
|
|
238
|
+
...((process.env.GEZEL_DS4_VISION_ENCODER ?? config.ds4VisionEncoderPath)
|
|
239
|
+
? {
|
|
240
|
+
explicitVisionEncoderPath: process.env.GEZEL_DS4_VISION_ENCODER ?? config.ds4VisionEncoderPath,
|
|
241
|
+
}
|
|
242
|
+
: {}),
|
|
243
|
+
});
|
|
244
|
+
const catalogDetail = effectiveModelId
|
|
245
|
+
? await opts.catalog?.get('chat-model', effectiveModelId).catch(() => null)
|
|
246
|
+
: null;
|
|
247
|
+
const ds4Source = catalogDetail?.manifest.kind === 'chat-model' ? catalogDetail.manifest.ds4 : undefined;
|
|
248
|
+
let modelSizeBytes = installedModel?.approxSizeBytes ?? ds4Source?.approxSizeBytes;
|
|
249
|
+
if (!modelSizeBytes) {
|
|
250
|
+
const { stat: statDs4Model } = await import('node:fs/promises');
|
|
251
|
+
modelSizeBytes = await statDs4Model(modelPath)
|
|
252
|
+
.then((st) => st.size)
|
|
253
|
+
.catch(() => undefined);
|
|
254
|
+
}
|
|
255
|
+
// Some ds4 GGUFs deliberately contain very large tables that never become
|
|
256
|
+
// resident: Qwen3.8 n-grams and DeepSeek V4.1 Engrams are read row-wise from
|
|
257
|
+
// disk in every mode. Charge the full-residency gate only for the weights
|
|
258
|
+
// that can actually enter RAM; older catalog entries fall back to file size.
|
|
259
|
+
const residentWeightBytes = ds4Source?.residentWeightBytes ?? modelSizeBytes;
|
|
260
|
+
// The supervised launch may resolve its model by scanning installed models
|
|
261
|
+
// (resolveDefaultModel above), so re-read the override against the id that
|
|
262
|
+
// actually launches when the config carried none.
|
|
263
|
+
const launchCtxOverride = perModelCtxOverride ??
|
|
264
|
+
(effectiveModelId ? config.modelContextOverrides?.[`ds4:${effectiveModelId}`] : undefined);
|
|
265
|
+
// An override below the host floor is deliberate user intent — lower the
|
|
266
|
+
// floor to the override instead of raising the request back to 64K.
|
|
267
|
+
const ds4Floor = launchCtxOverride !== undefined
|
|
268
|
+
? Math.min(minViableLocalContextTokens(), launchCtxOverride)
|
|
269
|
+
: minViableLocalContextTokens();
|
|
270
|
+
const numCtx = resolveDs4LaunchCtx({
|
|
271
|
+
configured: launchCtxOverride ?? config.ds4NumCtx,
|
|
272
|
+
ramTieredCtx,
|
|
273
|
+
catalogMaxCtx: ds4Source?.maxLaunchCtx,
|
|
274
|
+
minViableContextTokens: ds4Floor,
|
|
275
|
+
});
|
|
276
|
+
if (numCtx !== (launchCtxOverride ?? config.ds4NumCtx ?? ramTieredCtx)) {
|
|
277
|
+
log.info(`[ds4] ${effectiveModelId ?? basename(modelPath)} caps launch context at ${numCtx} ` +
|
|
278
|
+
`(device tier would allow ${ramTieredCtx})`);
|
|
279
|
+
}
|
|
280
|
+
// Residency is the default wherever the model fits — streaming costs roughly
|
|
281
|
+
// an order of magnitude (1.85 vs 18.1 tok/s measured on the same IQ2_XXS
|
|
282
|
+
// build). `shouldUseDs4SsdStreaming` still refuses a model that cannot fit,
|
|
283
|
+
// which is what keeps the flip safe: overriding that on a 90.89 GiB build
|
|
284
|
+
// OOM-killed the engine mid-load on a 121.63 GiB host.
|
|
285
|
+
const { ds4VisionResidentBytes, planDs4ExpertCache, shouldUseDs4SsdStreaming } = await import('./residency.js');
|
|
286
|
+
let visionEncoderSizeBytes = installedModel?.visionEncoderSizeBytes;
|
|
287
|
+
if (vision.enabled && vision.visionEncoderPath && !visionEncoderSizeBytes) {
|
|
288
|
+
const { stat: statVisionEncoder } = await import('node:fs/promises');
|
|
289
|
+
visionEncoderSizeBytes = await statVisionEncoder(vision.visionEncoderPath)
|
|
290
|
+
.then((st) => st.size)
|
|
291
|
+
.catch(() => undefined);
|
|
292
|
+
}
|
|
293
|
+
const visionResidentBytes = ds4VisionResidentBytes(vision.enabled ? visionEncoderSizeBytes : undefined);
|
|
294
|
+
const ssdStreaming = shouldUseDs4SsdStreaming({
|
|
295
|
+
configured: config.ds4SsdStreaming,
|
|
296
|
+
...(ds4Source?.ssdStreamingSupported !== undefined
|
|
297
|
+
? { ssdStreamingSupported: ds4Source.ssdStreamingSupported }
|
|
298
|
+
: {}),
|
|
299
|
+
modelSizeBytes: residentWeightBytes,
|
|
300
|
+
totalRamBytes,
|
|
301
|
+
...(visionResidentBytes > 0 ? { companionBytes: visionResidentBytes } : {}),
|
|
302
|
+
});
|
|
303
|
+
if (config.ds4SsdStreaming === false && ssdStreaming) {
|
|
304
|
+
log.warn(`[ds4] ignored unsafe full-residency override for ${effectiveModelId ?? modelPath}; ` +
|
|
305
|
+
`model=${modelSizeBytes ?? 'unknown'} bytes, system=${Math.round(totalRamGb)} GiB`);
|
|
306
|
+
}
|
|
307
|
+
if (config.ds4SsdStreaming === true && ds4Source?.ssdStreamingSupported === false) {
|
|
308
|
+
log.warn(`[ds4] ignored SSD-streaming override for ${effectiveModelId ?? modelPath}; this model keeps its lookup tables on disk but does not implement routed-expert streaming`);
|
|
309
|
+
}
|
|
310
|
+
// DSpark speculative decoding. Resolved here, beside the residency decision
|
|
311
|
+
// it depends on: ds4 aborts at startup if an external `--mtp-model` is combined with
|
|
312
|
+
// `--ssd-streaming`, so this can only ever draft on a fully resident launch.
|
|
313
|
+
const dsparkSupportPath = config.ds4DsparkModelPath ?? installedModel?.draftModelPath;
|
|
314
|
+
// Residency is decided on the weights alone, then the companion is priced
|
|
315
|
+
// against what is left. That precedence is deliberate and not symmetric:
|
|
316
|
+
// residency is worth ~9.5x and drafting ~1.05x, so a companion that would
|
|
317
|
+
// push the model out of memory loses its own flag rather than costing the
|
|
318
|
+
// launch its residency.
|
|
319
|
+
let companionFitsMemory = true;
|
|
320
|
+
let dsparkCompanionBytes = 0;
|
|
321
|
+
if (dsparkSupportPath && !ssdStreaming) {
|
|
322
|
+
const { canUseDs4FullResidency } = await import('./residency.js');
|
|
323
|
+
const { stat: statCompanion } = await import('node:fs/promises');
|
|
324
|
+
const companionBytes = await statCompanion(dsparkSupportPath)
|
|
325
|
+
.then((st) => st.size)
|
|
326
|
+
.catch(() => undefined);
|
|
327
|
+
dsparkCompanionBytes = companionBytes ?? 0;
|
|
328
|
+
companionFitsMemory = canUseDs4FullResidency({
|
|
329
|
+
modelSizeBytes: residentWeightBytes,
|
|
330
|
+
totalRamBytes,
|
|
331
|
+
...(companionBytes !== undefined || visionResidentBytes > 0
|
|
332
|
+
? { companionBytes: (companionBytes ?? 0) + visionResidentBytes }
|
|
333
|
+
: {}),
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
const dspark = resolveDs4Dspark({
|
|
337
|
+
mode: config.ds4Dspark,
|
|
338
|
+
backend: backendFlag.slice(2),
|
|
339
|
+
ssdStreaming,
|
|
340
|
+
companionFitsMemory,
|
|
341
|
+
...(dsparkSupportPath ? { supportModelPath: dsparkSupportPath } : {}),
|
|
342
|
+
});
|
|
343
|
+
if (dspark.unmetRequest)
|
|
344
|
+
log.warn(`[ds4] ${dspark.unmetRequest}`);
|
|
345
|
+
// Model-embedded MTP (Qwen3.8 / GLM 5.3) is independent of DSpark's
|
|
346
|
+
// external support GGUF. `auto` requires an explicit catalog capability so
|
|
347
|
+
// older or hand-supplied models never receive a flag they may reject.
|
|
348
|
+
const mtpMode = (() => {
|
|
349
|
+
const raw = process.env.GEZEL_DS4_MTP;
|
|
350
|
+
return raw === 'off' || raw === 'on' || raw === 'auto' ? raw : config.ds4Mtp;
|
|
351
|
+
})();
|
|
352
|
+
const mtpExactSampling = (() => {
|
|
353
|
+
const raw = process.env.GEZEL_DS4_MTP_EXACT_SAMPLING;
|
|
354
|
+
if (raw === '1' || raw === 'true')
|
|
355
|
+
return true;
|
|
356
|
+
if (raw === '0' || raw === 'false')
|
|
357
|
+
return false;
|
|
358
|
+
return config.ds4MtpExactSampling;
|
|
359
|
+
})();
|
|
360
|
+
const mtp = resolveDs4Mtp({
|
|
361
|
+
mode: mtpMode,
|
|
362
|
+
...(ds4Source?.mtp ? { catalog: ds4Source.mtp } : {}),
|
|
363
|
+
...(mtpExactSampling !== undefined ? { exactSampling: mtpExactSampling } : {}),
|
|
364
|
+
dsparkEnabled: dspark.enabled,
|
|
365
|
+
});
|
|
366
|
+
if (mtp.unmetRequest)
|
|
367
|
+
log.warn(`[ds4] ${mtp.unmetRequest}`);
|
|
368
|
+
const cachePlan = planDs4ExpertCache({
|
|
369
|
+
configuredGb: config.ds4CacheExpertsGb,
|
|
370
|
+
catalogCacheBytes: ds4Source?.cacheExpertsBytes,
|
|
371
|
+
catalogResidentBytes: ds4Source?.residentBytes !== undefined || visionResidentBytes > 0
|
|
372
|
+
? (ds4Source?.residentBytes ?? 0) + visionResidentBytes
|
|
373
|
+
: undefined,
|
|
374
|
+
totalRamBytes: totalRamGb * 1024 ** 3,
|
|
375
|
+
});
|
|
376
|
+
if (ssdStreaming && !cachePlan.safe) {
|
|
377
|
+
const err = new Error(`DwarfStar (ds4) engine: ${effectiveModelId ?? 'the selected model'} cannot keep a safe minimum expert cache while preserving memory for the operating system. Choose a lighter model in Settings → DwarfStar (ds4).`);
|
|
378
|
+
err.isActionable = true;
|
|
379
|
+
throw err;
|
|
380
|
+
}
|
|
381
|
+
if (cachePlan.clamped) {
|
|
382
|
+
log.warn(`[ds4] clamped expert cache ${cachePlan.requestedGb} → ${cachePlan.cacheGb} GiB to preserve system headroom`);
|
|
383
|
+
}
|
|
384
|
+
const cacheExpertsGb = cachePlan.cacheGb;
|
|
385
|
+
const kvDir = join(home, 'engines', 'ds4', 'kv');
|
|
386
|
+
const { mkdir: mkdirDs4 } = await import('node:fs/promises');
|
|
387
|
+
await mkdirDs4(kvDir, { recursive: true }).catch(() => { });
|
|
388
|
+
// ds4-server compiles its Metal shaders from `./metal/*.metal` resolved
|
|
389
|
+
// relative to its working directory (each source is only overridable by a
|
|
390
|
+
// separate env var — cwd is the clean lever). build.sh stages `metal/` next
|
|
391
|
+
// to the binary, and the dev/external `GEZEL_DS4_SERVER_BIN` points at the
|
|
392
|
+
// ds4 checkout which also has `metal/`, so cwd = the binary's directory.
|
|
393
|
+
// Without this, startup aborts with "metal backend unavailable".
|
|
394
|
+
const { dirname: ds4Dirname } = await import('node:path');
|
|
395
|
+
const ds4BundleDir = process.env.GEZEL_DS4_CWD ?? ds4Dirname(binary);
|
|
396
|
+
// Cold mmap of an 87GB GGUF + first-run Metal shader compile is minutes,
|
|
397
|
+
// not seconds. Default 10 min; env-overridable for slow cold SSD reads.
|
|
398
|
+
const startupTimeoutMs = (() => {
|
|
399
|
+
const env = process.env.GEZEL_DS4_STARTUP_TIMEOUT_MS;
|
|
400
|
+
if (env) {
|
|
401
|
+
const n = Number.parseInt(env, 10);
|
|
402
|
+
if (Number.isFinite(n) && n > 0)
|
|
403
|
+
return n;
|
|
404
|
+
}
|
|
405
|
+
return 600_000;
|
|
406
|
+
})();
|
|
407
|
+
const idleMs = config.localEngineIdleTimeoutMs ?? DEFAULT_LOCAL_ENGINE_IDLE_TIMEOUT_MS;
|
|
408
|
+
// Persist DS4 stdout/stderr independently from llama.cpp. Dev embedded mode
|
|
409
|
+
// has no service-*.log capture, so without this file a force-quit erases the
|
|
410
|
+
// only evidence of model loading, cache sizing, or a native-engine failure.
|
|
411
|
+
const { LlamaCppLogFile: Ds4LogFile } = await import('../llama-cpp/log.js');
|
|
412
|
+
const ds4LogFile = new Ds4LogFile(gezelPaths(home).logs, 'ds4-server');
|
|
413
|
+
// Same holder pattern as buildLlamaCppProvider: the supervisor is
|
|
414
|
+
// constructed before the provider, so onRawLine closes over a ref that's
|
|
415
|
+
// filled in below. Routing stderr through onStdoutLine (with the ds4
|
|
416
|
+
// classifier) is what turns ds4's prefill-chunk / decode / page-warming
|
|
417
|
+
// lines into live engine_phase progress in the chat — without it a
|
|
418
|
+
// multi-minute DS4 prefill is a silent spinner.
|
|
419
|
+
const ds4ProviderHolder = { current: null };
|
|
420
|
+
const { classifyDs4Line } = await import('./stdout-parser.js');
|
|
421
|
+
let cachedDs4Port;
|
|
422
|
+
const supervisor = new NativeEngineSupervisor({
|
|
423
|
+
capacity: {
|
|
424
|
+
home,
|
|
425
|
+
priority: () => (ds4ProviderHolder.current?.queue.describe().runningInteractive ?? 0) > 0
|
|
426
|
+
? 'interactive'
|
|
427
|
+
: 'background',
|
|
428
|
+
requirement: async () => {
|
|
429
|
+
const { ds4AdmissionGpuBytes, ds4BaseResidentBytes, ds4ResidentLine, ds4ProjectedResidentBytes, ds4ResidentBytesForMode, } = await import('./residency.js');
|
|
430
|
+
const line = ds4ResidentLine(ds4Source ?? {});
|
|
431
|
+
const projected = line ? ds4ProjectedResidentBytes(line, numCtx) : ds4Source?.residentBytes;
|
|
432
|
+
const base = ssdStreaming
|
|
433
|
+
? Math.max(0, (projected ?? 8 * 1024 ** 3) - (ds4Source?.cacheExpertsBytes ?? 0)) +
|
|
434
|
+
cacheExpertsGb * 1024 ** 3
|
|
435
|
+
: ds4BaseResidentBytes({
|
|
436
|
+
projectedBytes: projected,
|
|
437
|
+
modelSizeBytes: residentWeightBytes,
|
|
438
|
+
});
|
|
439
|
+
const workingSetBytes = base + visionResidentBytes + (dspark.enabled ? dsparkCompanionBytes : 0);
|
|
440
|
+
const bytes = ds4ResidentBytesForMode(workingSetBytes, ssdStreaming, ds4Source?.ssdStreamingSupported);
|
|
441
|
+
const gpuBytes = ds4AdmissionGpuBytes({
|
|
442
|
+
workingSetBytes,
|
|
443
|
+
reservationBytes: bytes,
|
|
444
|
+
kvBytesPerToken: ds4Source?.kvBytesPerToken,
|
|
445
|
+
numCtx,
|
|
446
|
+
});
|
|
447
|
+
return {
|
|
448
|
+
bytes,
|
|
449
|
+
...(gpuBytes !== undefined ? { gpuBytes } : {}),
|
|
450
|
+
exclusive: !ssdStreaming,
|
|
451
|
+
};
|
|
452
|
+
},
|
|
453
|
+
},
|
|
454
|
+
logPrefix: '[ds4-server]',
|
|
455
|
+
startupTimeoutMs,
|
|
456
|
+
idleTimeoutMs: idleMs,
|
|
457
|
+
isBusy: () => ds4ProviderHolder.current?.isEngineBusy() ?? false,
|
|
458
|
+
...(opts.arbiter
|
|
459
|
+
? {
|
|
460
|
+
memoryPressure: () => opts.arbiter.getMemoryPressureStatus(),
|
|
461
|
+
pressureIdleTimeoutMs: pressureIdleGraceMs(),
|
|
462
|
+
}
|
|
463
|
+
: {}),
|
|
464
|
+
// ds4 exposes no /health — a 200 on /v1/models is the readiness signal.
|
|
465
|
+
readinessPath: '/v1/models',
|
|
466
|
+
onLog: (line) => {
|
|
467
|
+
log.info(line);
|
|
468
|
+
ds4LogFile.write(line);
|
|
469
|
+
},
|
|
470
|
+
onRawLine: (line) => ds4ProviderHolder.current?.onStdoutLine(line),
|
|
471
|
+
resolveLaunch: async () => {
|
|
472
|
+
const port = cachedDs4Port ?? (await pickFreePort());
|
|
473
|
+
cachedDs4Port = port;
|
|
474
|
+
const args = [
|
|
475
|
+
'--model',
|
|
476
|
+
modelPath,
|
|
477
|
+
backendFlag,
|
|
478
|
+
'--ctx',
|
|
479
|
+
String(numCtx),
|
|
480
|
+
'--host',
|
|
481
|
+
'127.0.0.1',
|
|
482
|
+
'--port',
|
|
483
|
+
String(port),
|
|
484
|
+
'--kv-disk-dir',
|
|
485
|
+
kvDir,
|
|
486
|
+
// ds4-server's default disk budget is 4096 MiB — about 7 large
|
|
487
|
+
// (40k-token ≈ 540 MiB) session chunks, which a busy multi-session
|
|
488
|
+
// install churns through in minutes and the LRU then evicts the
|
|
489
|
+
// very chunk a resumed session needs. Disk is the cheap resource
|
|
490
|
+
// here; 16 GiB keeps ~30 large chunks live. Override with
|
|
491
|
+
// GEZEL_DS4_KV_DISK_MB.
|
|
492
|
+
'--kv-disk-space-mb',
|
|
493
|
+
String((() => {
|
|
494
|
+
const raw = process.env.GEZEL_DS4_KV_DISK_MB;
|
|
495
|
+
if (raw) {
|
|
496
|
+
const parsed = Number.parseInt(raw, 10);
|
|
497
|
+
if (Number.isFinite(parsed) && parsed > 0)
|
|
498
|
+
return parsed;
|
|
499
|
+
}
|
|
500
|
+
return 16_384;
|
|
501
|
+
})()),
|
|
502
|
+
// NOT `--cors`. ds4 leaves Access-Control-Allow-* headers OFF by
|
|
503
|
+
// default and that flag opts into them, which would let any web page
|
|
504
|
+
// the user has open drive this engine and read the answer, given the
|
|
505
|
+
// port. Nothing in Gezel needs it: the daemon talks to the engine
|
|
506
|
+
// server-side, where CORS — a browser policy — does not apply.
|
|
507
|
+
];
|
|
508
|
+
args.push(...ds4RuntimeArgs({
|
|
509
|
+
ssdStreaming,
|
|
510
|
+
cacheExpertsGb,
|
|
511
|
+
...(ds4Source?.prefillChunk ? { prefillChunk: ds4Source.prefillChunk } : {}),
|
|
512
|
+
}));
|
|
513
|
+
args.push(...ds4VisionArgs(vision));
|
|
514
|
+
args.push(...ds4MtpArgs(mtp));
|
|
515
|
+
args.push(...ds4DsparkArgs(dspark));
|
|
516
|
+
// Record the effective safety policy before spawn. ds4-server's own
|
|
517
|
+
// stdout does not reliably echo its argv, and a hard lockup/force-quit
|
|
518
|
+
// otherwise leaves no way to tell whether streaming was actually on.
|
|
519
|
+
ds4LogFile.write(`[ds4-server] launch model=${effectiveModelId ?? basename(modelPath)} ` +
|
|
520
|
+
`sizeGiB=${modelSizeBytes ? (modelSizeBytes / 1024 ** 3).toFixed(1) : 'unknown'} ` +
|
|
521
|
+
`backend=${backendFlag.slice(2)} ctx=${numCtx} ` +
|
|
522
|
+
`prefillChunk=${ds4Source?.prefillChunk ?? 'engine-default'} ` +
|
|
523
|
+
`ssdStreaming=${ssdStreaming} cacheExpertsGiB=${ssdStreaming ? cacheExpertsGb : 0} ` +
|
|
524
|
+
`vision=${vision.enabled} mtp=${mtp.enabled} exactSampling=${mtp.exactSampling} (${mtp.reason}) ` +
|
|
525
|
+
`dspark=${dspark.enabled} (${dspark.reason})`);
|
|
526
|
+
return { command: binary, args, baseUrl: `http://127.0.0.1:${port}`, cwd: ds4BundleDir };
|
|
527
|
+
},
|
|
528
|
+
});
|
|
529
|
+
const ds4Inner = new LlamaCppProvider({
|
|
530
|
+
supervisor,
|
|
531
|
+
logFile: ds4LogFile,
|
|
532
|
+
disableThinkingRequestShape: 'deepseek',
|
|
533
|
+
classifyLine: classifyDs4Line,
|
|
534
|
+
visionEnabled: vision.enabled,
|
|
535
|
+
...baseProviderOpts,
|
|
536
|
+
});
|
|
537
|
+
ds4ProviderHolder.current = ds4Inner;
|
|
538
|
+
return new Ds4Provider({ inner: ds4Inner });
|
|
539
|
+
}
|