@bendyline/gezel-inference 0.0.0-stage → 0.1.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,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure builder for llama-server's ENGINE launch flags (argv), kept
|
|
3
|
+
* separate from the launcher in `chat/manager.ts` so it can be
|
|
4
|
+
* unit-tested in isolation. It owns only the flags that were NOT
|
|
5
|
+
* already computed by the launcher (`--model`, `--ctx-size`,
|
|
6
|
+
* `--parallel`, `--slot-save-path`, `--cache-type-k/v`, `--jinja`,
|
|
7
|
+
* `--mmproj` and `--reasoning-budget` stay in the launcher).
|
|
8
|
+
*
|
|
9
|
+
* Three input layers, merged per-field with this precedence (first
|
|
10
|
+
* defined wins):
|
|
11
|
+
*
|
|
12
|
+
* 1. `config` — user's global `GezelConfig.llamaCpp*` overrides.
|
|
13
|
+
* 2. `perModel` — the catalog manifest's `tuning.engine.llamaCpp`.
|
|
14
|
+
* 3. `planner` — Phase v2's hardware-aware offload decision.
|
|
15
|
+
*
|
|
16
|
+
* …then `config.llamaCppExtraArgs` is appended LAST so it can override
|
|
17
|
+
* anything above (llama-server honours the last occurrence of a flag).
|
|
18
|
+
*
|
|
19
|
+
* Types are declared structurally here (not imported from
|
|
20
|
+
* `@bendyline/gezel-core`) so the helper and its tests carry no schema
|
|
21
|
+
* dependency; the real `GezelConfig` / `LlamaCppEngineConfig` satisfy
|
|
22
|
+
* these shapes by construction.
|
|
23
|
+
*/
|
|
24
|
+
/** The subset of `GezelConfig` this builder reads (global overrides). */
|
|
25
|
+
export interface GlobalLlamaCppFlags {
|
|
26
|
+
llamaCppFlashAttn?: boolean | 'on' | 'off' | 'auto';
|
|
27
|
+
llamaCppNGpuLayers?: number;
|
|
28
|
+
llamaCppCpuMoe?: boolean;
|
|
29
|
+
llamaCppNCpuMoe?: number;
|
|
30
|
+
llamaCppNCpuFfn?: number;
|
|
31
|
+
llamaCppLoadMode?: 'auto' | 'none' | 'mmap' | 'mlock' | 'mmap+mlock' | 'dio';
|
|
32
|
+
/** Legacy input, translated to v0.4.0's `--load-mode mlock`. */
|
|
33
|
+
llamaCppMlock?: boolean;
|
|
34
|
+
llamaCppLazyMode?: 'on' | 'auto' | 'off';
|
|
35
|
+
llamaCppCacheReuse?: number;
|
|
36
|
+
llamaCppSwaFull?: boolean;
|
|
37
|
+
llamaCppThreads?: number;
|
|
38
|
+
llamaCppBatchSize?: number;
|
|
39
|
+
llamaCppUbatchSize?: number;
|
|
40
|
+
llamaCppSpecType?: string;
|
|
41
|
+
llamaCppDraftModelPath?: string;
|
|
42
|
+
llamaCppSpecDraftNMax?: number;
|
|
43
|
+
llamaCppSpecDraftSampling?: 'greedy' | 'probabilistic';
|
|
44
|
+
llamaCppExtraArgs?: Record<string, string | number | boolean>;
|
|
45
|
+
}
|
|
46
|
+
/** The catalog manifest's per-model `tuning.engine.llamaCpp` block. */
|
|
47
|
+
export interface PerModelLlamaCppEngineConfig {
|
|
48
|
+
nGpuLayers?: number;
|
|
49
|
+
cpuMoe?: boolean;
|
|
50
|
+
nCpuMoe?: number;
|
|
51
|
+
nCpuFfn?: number;
|
|
52
|
+
loadMode?: 'auto' | 'none' | 'mmap' | 'mlock' | 'mmap+mlock' | 'dio';
|
|
53
|
+
lazyMode?: 'on' | 'auto' | 'off';
|
|
54
|
+
cacheReuse?: number;
|
|
55
|
+
swaFull?: boolean;
|
|
56
|
+
flashAttn?: 'on' | 'off' | 'auto';
|
|
57
|
+
ubatchSize?: number;
|
|
58
|
+
contextSize?: number;
|
|
59
|
+
chatTemplate?: string;
|
|
60
|
+
threads?: number;
|
|
61
|
+
batchSize?: number;
|
|
62
|
+
spec?: {
|
|
63
|
+
type?: string;
|
|
64
|
+
mtp?: boolean;
|
|
65
|
+
draftModelId?: string;
|
|
66
|
+
nMax?: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** Phase v2 hardware-aware offload decision (lowest precedence). */
|
|
70
|
+
export interface PlannerOffloadDecision {
|
|
71
|
+
nGpuLayers?: number;
|
|
72
|
+
cpuMoe?: boolean;
|
|
73
|
+
nCpuMoe?: number;
|
|
74
|
+
nCpuFfn?: number;
|
|
75
|
+
/** Every weight fits the GPU pool (see `MoeOffloadDecision.fullGpuResidency`). */
|
|
76
|
+
fullGpuResidency?: true;
|
|
77
|
+
/** Human-readable reason, for the decision log (not emitted as a flag). */
|
|
78
|
+
reason?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface EngineFlagInput {
|
|
81
|
+
config: GlobalLlamaCppFlags;
|
|
82
|
+
perModel?: PerModelLlamaCppEngineConfig | undefined;
|
|
83
|
+
planner?: PlannerOffloadDecision | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* The resolved KV-cache type the launcher is passing to
|
|
86
|
+
* `--cache-type-k/v`. Used only for the flash-attn coherence rule:
|
|
87
|
+
* a quantized KV cache wants FA on for the fast path, so when FA is
|
|
88
|
+
* otherwise unset we force it on.
|
|
89
|
+
*/
|
|
90
|
+
kvCacheType?: string | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Server slot count (`--parallel`). b9843 rejects `--cache-reuse`
|
|
93
|
+
* under multi-slot non-unified KV, so the auto-on cache-reuse default
|
|
94
|
+
* is applied ONLY when this is exactly 1. An explicit config/manifest
|
|
95
|
+
* `cacheReuse` is passed regardless.
|
|
96
|
+
*/
|
|
97
|
+
slots?: number | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* Whether the model's GGUF actually ships MTP (`nextn`) layers, read
|
|
100
|
+
* from its header. A safety cross-check for an explicit `draft-mtp`
|
|
101
|
+
* request: selecting it for a model without MTP layers makes llama-server
|
|
102
|
+
* exit with a fatal load error, so the flag is emitted only when this
|
|
103
|
+
* confirms the capability.
|
|
104
|
+
*/
|
|
105
|
+
ggufHasMtp?: boolean | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* Absolute path to a catalog-installed speculative draft sidecar.
|
|
108
|
+
* Separate MTP assistants (Gemma) and other draft algorithms need this;
|
|
109
|
+
* combined MTP GGUFs (Qwen) intentionally leave it unset.
|
|
110
|
+
*/
|
|
111
|
+
installedDraftModelPath?: string | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* `--reasoning-format <value>` opt-in (resolved from the
|
|
114
|
+
* `GEZEL_LLAMA_REASONING_FORMAT` env var at the call site). `none`
|
|
115
|
+
* stops llama-server from parsing chat-template tool-call / channel
|
|
116
|
+
* markup server-side, so raw model output reaches `delta.content`
|
|
117
|
+
* where the salvage layer can catch it — the A/B lever for the
|
|
118
|
+
* peg-gemma4 parser dropping mangled `<|tool_call>` turns entirely
|
|
119
|
+
* pre-SSE (cbmx-20260720-195716, ~74 trials). Omitted when unset:
|
|
120
|
+
* default behavior is unchanged.
|
|
121
|
+
*/
|
|
122
|
+
reasoningFormat?: string | undefined;
|
|
123
|
+
/**
|
|
124
|
+
* Preserve assistant reasoning across tool-loop/history turns. This is an
|
|
125
|
+
* explicit experiment because it changes the rendered prompt and only works
|
|
126
|
+
* when the client also replays `reasoning_content`.
|
|
127
|
+
*/
|
|
128
|
+
reasoningPreserve?: boolean | undefined;
|
|
129
|
+
/**
|
|
130
|
+
* The model's GGUF `general.architecture`, for the Gemma-family auto
|
|
131
|
+
* defaults (sliding-window full cache). Undefined disables the arch
|
|
132
|
+
* heuristic; an explicit config/manifest `swaFull` still applies.
|
|
133
|
+
*/
|
|
134
|
+
architecture?: string | undefined;
|
|
135
|
+
/** The resolved model id, a fallback for `architecture` (see isGemmaModel). */
|
|
136
|
+
modelId?: string | undefined;
|
|
137
|
+
/**
|
|
138
|
+
* Whether resident weights plus the full SWA KV cache fit the host's
|
|
139
|
+
* fast-memory pool (VRAM on a discrete GPU). The exact estimate honors
|
|
140
|
+
* per-layer SWA dimensions and shared-KV layers. `false` declines the
|
|
141
|
+
* auto-default so a low-memory device keeps the model's full context on
|
|
142
|
+
* the windowed cache instead of spilling or OOMing. `undefined` (unknown
|
|
143
|
+
* host/metadata) and `true` retain the compatibility default. An explicit
|
|
144
|
+
* config/manifest `swaFull` wins regardless.
|
|
145
|
+
*/
|
|
146
|
+
swaFullAutoFits?: boolean | undefined;
|
|
147
|
+
/**
|
|
148
|
+
* The llama-server build's backend (`cuda`, `vulkan`, `metal`, `cpu`).
|
|
149
|
+
* Only a GPU backend can receive the GPU-resident thread default.
|
|
150
|
+
*/
|
|
151
|
+
backend?: string | undefined;
|
|
152
|
+
/** Logical CPUs available to the daemon; caps the GPU-resident thread default. */
|
|
153
|
+
hostCpuCount?: number | undefined;
|
|
154
|
+
}
|
|
155
|
+
/** Default `--cache-reuse` chunk when neither config nor manifest set it. */
|
|
156
|
+
export declare const DEFAULT_CACHE_REUSE = 256;
|
|
157
|
+
/**
|
|
158
|
+
* Upper bound on `--threads` for an engine whose every weight is on the GPU,
|
|
159
|
+
* when neither config nor manifest chose a count.
|
|
160
|
+
*
|
|
161
|
+
* Left alone, llama.cpp sizes its CPU pool to every physical core: all 20 on
|
|
162
|
+
* a DGX Spark, where nothing is held back because there is no SMT and no
|
|
163
|
+
* efficiency-core exclusion on Linux ARM. The pool spins between steps even
|
|
164
|
+
* though the GPU does the model's work, and from the bundled 0.1.48 build
|
|
165
|
+
* (upstream v0.6.0) on it spins hard enough that a pool covering every core
|
|
166
|
+
* starves the thread driving the GPU. Measured on the Spark: gemma4-e2b
|
|
167
|
+
* decoded at 72 t/s with the default 20 threads and ~120 t/s anywhere from 1
|
|
168
|
+
* to 16; 10 threads pinned to 10 cores fell to 58 t/s, so the cause is the
|
|
169
|
+
* missing spare core, not the core type. gemma4-e4b, granite-vision and
|
|
170
|
+
* qwen3.8-flash-next lost 15-41% the same way. Decode and prefill were flat
|
|
171
|
+
* across small pools while CPU time grew linearly with the thread count, so
|
|
172
|
+
* a small pool with headroom is both the fastest and the cheapest setting.
|
|
173
|
+
*/
|
|
174
|
+
export declare const GPU_RESIDENT_THREADS = 4;
|
|
175
|
+
/**
|
|
176
|
+
* Build the engine-flag argv fragment. Deterministic ordering: the
|
|
177
|
+
* first-class flags in a fixed sequence, then `extraArgs` in insertion
|
|
178
|
+
* order. Returns a flat `string[]` ready to splice into the launcher's
|
|
179
|
+
* `args` array.
|
|
180
|
+
*/
|
|
181
|
+
export declare function buildLlamaCppEngineArgs(input: EngineFlagInput): string[];
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure builder for llama-server's ENGINE launch flags (argv), kept
|
|
3
|
+
* separate from the launcher in `chat/manager.ts` so it can be
|
|
4
|
+
* unit-tested in isolation. It owns only the flags that were NOT
|
|
5
|
+
* already computed by the launcher (`--model`, `--ctx-size`,
|
|
6
|
+
* `--parallel`, `--slot-save-path`, `--cache-type-k/v`, `--jinja`,
|
|
7
|
+
* `--mmproj` and `--reasoning-budget` stay in the launcher).
|
|
8
|
+
*
|
|
9
|
+
* Three input layers, merged per-field with this precedence (first
|
|
10
|
+
* defined wins):
|
|
11
|
+
*
|
|
12
|
+
* 1. `config` — user's global `GezelConfig.llamaCpp*` overrides.
|
|
13
|
+
* 2. `perModel` — the catalog manifest's `tuning.engine.llamaCpp`.
|
|
14
|
+
* 3. `planner` — Phase v2's hardware-aware offload decision.
|
|
15
|
+
*
|
|
16
|
+
* …then `config.llamaCppExtraArgs` is appended LAST so it can override
|
|
17
|
+
* anything above (llama-server honours the last occurrence of a flag).
|
|
18
|
+
*
|
|
19
|
+
* Types are declared structurally here (not imported from
|
|
20
|
+
* `@bendyline/gezel-core`) so the helper and its tests carry no schema
|
|
21
|
+
* dependency; the real `GezelConfig` / `LlamaCppEngineConfig` satisfy
|
|
22
|
+
* these shapes by construction.
|
|
23
|
+
*/
|
|
24
|
+
import { isGemmaModel } from './kv-cache-type.js';
|
|
25
|
+
/** Default `--cache-reuse` chunk when neither config nor manifest set it. */
|
|
26
|
+
export const DEFAULT_CACHE_REUSE = 256;
|
|
27
|
+
/**
|
|
28
|
+
* Upper bound on `--threads` for an engine whose every weight is on the GPU,
|
|
29
|
+
* when neither config nor manifest chose a count.
|
|
30
|
+
*
|
|
31
|
+
* Left alone, llama.cpp sizes its CPU pool to every physical core: all 20 on
|
|
32
|
+
* a DGX Spark, where nothing is held back because there is no SMT and no
|
|
33
|
+
* efficiency-core exclusion on Linux ARM. The pool spins between steps even
|
|
34
|
+
* though the GPU does the model's work, and from the bundled 0.1.48 build
|
|
35
|
+
* (upstream v0.6.0) on it spins hard enough that a pool covering every core
|
|
36
|
+
* starves the thread driving the GPU. Measured on the Spark: gemma4-e2b
|
|
37
|
+
* decoded at 72 t/s with the default 20 threads and ~120 t/s anywhere from 1
|
|
38
|
+
* to 16; 10 threads pinned to 10 cores fell to 58 t/s, so the cause is the
|
|
39
|
+
* missing spare core, not the core type. gemma4-e4b, granite-vision and
|
|
40
|
+
* qwen3.8-flash-next lost 15-41% the same way. Decode and prefill were flat
|
|
41
|
+
* across small pools while CPU time grew linearly with the thread count, so
|
|
42
|
+
* a small pool with headroom is both the fastest and the cheapest setting.
|
|
43
|
+
*/
|
|
44
|
+
export const GPU_RESIDENT_THREADS = 4;
|
|
45
|
+
/** Cores left free for the server, sampling and GPU-driver threads. */
|
|
46
|
+
const GPU_RESIDENT_SPARE_CORES = 2;
|
|
47
|
+
function gpuResidentThreads(hostCpuCount) {
|
|
48
|
+
const available = typeof hostCpuCount === 'number' && hostCpuCount > 0
|
|
49
|
+
? hostCpuCount - GPU_RESIDENT_SPARE_CORES
|
|
50
|
+
: GPU_RESIDENT_THREADS;
|
|
51
|
+
return Math.max(1, Math.min(GPU_RESIDENT_THREADS, available));
|
|
52
|
+
}
|
|
53
|
+
const GPU_BACKENDS = new Set(['cuda', 'vulkan', 'metal']);
|
|
54
|
+
/**
|
|
55
|
+
* `llamaCppExtraArgs` keys that either choose a thread pool or may move
|
|
56
|
+
* weights to the CPU; any of them makes the GPU-resident default stand down.
|
|
57
|
+
*/
|
|
58
|
+
const EXTRA_ARGS_OWNING_THREADS = new Set([
|
|
59
|
+
'threads',
|
|
60
|
+
't',
|
|
61
|
+
'threads-batch',
|
|
62
|
+
'tb',
|
|
63
|
+
'cpu-mask',
|
|
64
|
+
'cpu-range',
|
|
65
|
+
'n-gpu-layers',
|
|
66
|
+
'gpu-layers',
|
|
67
|
+
'ngl',
|
|
68
|
+
'cpu-moe',
|
|
69
|
+
'n-cpu-moe',
|
|
70
|
+
'n-cpu-ffn',
|
|
71
|
+
'override-tensor',
|
|
72
|
+
'ot',
|
|
73
|
+
]);
|
|
74
|
+
function extraArgsOwnThreads(extraArgs) {
|
|
75
|
+
if (!extraArgs)
|
|
76
|
+
return false;
|
|
77
|
+
return Object.keys(extraArgs).some((key) => EXTRA_ARGS_OWNING_THREADS.has(key.replace(/^-+/, '')));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Normalize the tri-state-or-legacy-boolean flash-attn config into the
|
|
81
|
+
* string llama-server wants, or `undefined` to omit the flag.
|
|
82
|
+
* Back-compat: legacy `true` → force `on`; legacy `false` → omit (its
|
|
83
|
+
* historical meaning was "don't pass the flag", i.e. server default),
|
|
84
|
+
* NOT force-off. Force-off is reachable only via the explicit `'off'`.
|
|
85
|
+
*/
|
|
86
|
+
function normalizeFlashAttn(v) {
|
|
87
|
+
if (v === true)
|
|
88
|
+
return 'on';
|
|
89
|
+
if (v === false || v === undefined)
|
|
90
|
+
return undefined;
|
|
91
|
+
return v;
|
|
92
|
+
}
|
|
93
|
+
/** Strip any leading dashes and re-prefix with `--`. */
|
|
94
|
+
function normalizeFlagKey(key) {
|
|
95
|
+
return `--${key.replace(/^-+/, '')}`;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Build the engine-flag argv fragment. Deterministic ordering: the
|
|
99
|
+
* first-class flags in a fixed sequence, then `extraArgs` in insertion
|
|
100
|
+
* order. Returns a flat `string[]` ready to splice into the launcher's
|
|
101
|
+
* `args` array.
|
|
102
|
+
*/
|
|
103
|
+
export function buildLlamaCppEngineArgs(input) {
|
|
104
|
+
const { config, perModel, planner, kvCacheType, slots, ggufHasMtp, installedDraftModelPath, reasoningFormat, reasoningPreserve, architecture, modelId, swaFullAutoFits, backend, hostCpuCount, } = input;
|
|
105
|
+
const args = [];
|
|
106
|
+
// ── GPU-layer offload (`--n-gpu-layers`) ──────────────────────────
|
|
107
|
+
const nGpuLayers = config.llamaCppNGpuLayers ?? perModel?.nGpuLayers ?? planner?.nGpuLayers;
|
|
108
|
+
if (typeof nGpuLayers === 'number') {
|
|
109
|
+
args.push('--n-gpu-layers', nGpuLayers === -1 ? 'all' : String(nGpuLayers));
|
|
110
|
+
}
|
|
111
|
+
// ── MoE expert offload (`--cpu-moe` / `--n-cpu-moe`) ──────────────
|
|
112
|
+
// Tri-state: an explicit `true`/`false` in config or manifest wins;
|
|
113
|
+
// `undefined` at both layers falls through to the planner's auto
|
|
114
|
+
// decision. An explicit `false` is "force experts onto the GPU" — it
|
|
115
|
+
// must also suppress the planner's partial `--n-cpu-moe`, not just the
|
|
116
|
+
// all-experts `--cpu-moe`, or "Off" would silently still offload.
|
|
117
|
+
const explicitCpuMoe = config.llamaCppCpuMoe ?? perModel?.cpuMoe;
|
|
118
|
+
const cpuMoe = explicitCpuMoe ?? planner?.cpuMoe;
|
|
119
|
+
// An explicit partial split (config/manifest) is a specific opinion that
|
|
120
|
+
// always applies. Only the planner's suggested partial split is
|
|
121
|
+
// suppressed when experts are explicitly forced off.
|
|
122
|
+
const explicitNCpuMoe = config.llamaCppNCpuMoe ?? perModel?.nCpuMoe;
|
|
123
|
+
const nCpuMoe = explicitNCpuMoe ?? (explicitCpuMoe === false ? undefined : planner?.nCpuMoe);
|
|
124
|
+
if (cpuMoe) {
|
|
125
|
+
// All experts on CPU — the granular `--n-cpu-moe` would be redundant.
|
|
126
|
+
args.push('--cpu-moe');
|
|
127
|
+
}
|
|
128
|
+
else if (typeof nCpuMoe === 'number') {
|
|
129
|
+
args.push('--n-cpu-moe', String(nCpuMoe));
|
|
130
|
+
}
|
|
131
|
+
// ── Dense FFN offload (`--n-cpu-ffn`) ────────────────────────────
|
|
132
|
+
// Zero is an explicit "do not offload" sentinel: omit the CLI flag but
|
|
133
|
+
// suppress the planner. Positive values pin the first N blocks' dense
|
|
134
|
+
// FFN tensors to CPU while `-ngl all` can keep attention on the GPU.
|
|
135
|
+
const explicitNCpuFfn = config.llamaCppNCpuFfn ?? perModel?.nCpuFfn;
|
|
136
|
+
const nCpuFfn = explicitNCpuFfn ?? planner?.nCpuFfn;
|
|
137
|
+
if (typeof nCpuFfn === 'number' && nCpuFfn > 0) {
|
|
138
|
+
args.push('--n-cpu-ffn', String(nCpuFfn));
|
|
139
|
+
}
|
|
140
|
+
// ── Model loading (`--load-mode` / `--lazy-mode`) ────────────────
|
|
141
|
+
// v0.4.0 consolidates mmap/mlock/direct-I/O under --load-mode. Preserve
|
|
142
|
+
// the old `llamaCppMlock` setting without emitting its deprecated flag.
|
|
143
|
+
const loadMode = config.llamaCppLoadMode ?? (config.llamaCppMlock ? 'mlock' : undefined) ?? perModel?.loadMode;
|
|
144
|
+
if (loadMode)
|
|
145
|
+
args.push('--load-mode', loadMode);
|
|
146
|
+
const lazyMode = config.llamaCppLazyMode ?? perModel?.lazyMode;
|
|
147
|
+
if (lazyMode)
|
|
148
|
+
args.push('--lazy-mode', lazyMode);
|
|
149
|
+
// ── Flash attention (`--flash-attn on|off|auto`) ──────────────────
|
|
150
|
+
let flashAttn = normalizeFlashAttn(config.llamaCppFlashAttn) ?? perModel?.flashAttn;
|
|
151
|
+
// Coherence: quantized KV cache wants FA on for the fast path. Only
|
|
152
|
+
// applied when neither config nor manifest expressed an opinion.
|
|
153
|
+
if (flashAttn === undefined && kvCacheType && kvCacheType !== 'f16') {
|
|
154
|
+
flashAttn = 'on';
|
|
155
|
+
}
|
|
156
|
+
if (flashAttn !== undefined)
|
|
157
|
+
args.push('--flash-attn', flashAttn);
|
|
158
|
+
// ── Cross-request prefix KV reuse (`--cache-reuse`) ───────────────
|
|
159
|
+
// Passed regardless of slot count. The old rule withheld the default
|
|
160
|
+
// whenever `slots !== 1`, because b9843 was believed to reject
|
|
161
|
+
// `--cache-reuse` under multi-slot non-unified KV. Re-measured against
|
|
162
|
+
// the bundled 0.1.36 engine (upstream f8def7f) by launching it directly:
|
|
163
|
+
//
|
|
164
|
+
// dense model, --parallel 1 -> accepted, no warning, no error
|
|
165
|
+
// dense model, --parallel 4 -> accepted, no warning, no error
|
|
166
|
+
//
|
|
167
|
+
// `kv_unified='false'` turns out to be normal at EVERY slot count — the
|
|
168
|
+
// dense control reports it at `--parallel 1` too — so it was never the
|
|
169
|
+
// discriminator the old comment took it for. What actually decides
|
|
170
|
+
// support is whether the context's cache can be partially rewound:
|
|
171
|
+
//
|
|
172
|
+
// dense (granite 4b) -> supported
|
|
173
|
+
// hybrid recurrent (qwen3.5+) -> "not supported ... will be disabled"
|
|
174
|
+
// gemma windowed (SWA) -> "not supported ... will be disabled"
|
|
175
|
+
// gemma + `--swa-full` -> supported
|
|
176
|
+
//
|
|
177
|
+
// So the engine already declines it precisely when it cannot honour it,
|
|
178
|
+
// which is what the warning is for. Withholding the flag ourselves only
|
|
179
|
+
// cost reuse on multi-slot dense engines. Note the coupling this exposes:
|
|
180
|
+
// the memory-driven `--swa-full` decision below also silently decides
|
|
181
|
+
// whether Gemma gets any cross-request prefix reuse at all.
|
|
182
|
+
const explicitCacheReuse = config.llamaCppCacheReuse ?? perModel?.cacheReuse;
|
|
183
|
+
const cacheReuse = explicitCacheReuse ?? DEFAULT_CACHE_REUSE;
|
|
184
|
+
if (cacheReuse > 0)
|
|
185
|
+
args.push('--cache-reuse', String(cacheReuse));
|
|
186
|
+
// ── SWA full cache (`--swa-full`) ─────────────────────────────────
|
|
187
|
+
// Tri-state: explicit config/manifest `true`/`false` wins; `undefined`
|
|
188
|
+
// at both layers falls through to the Gemma-family auto-default. Gemma's
|
|
189
|
+
// sliding-window attention refuses cross-request prefix reuse under the
|
|
190
|
+
// memory-efficient windowed cache; the full cache preserves old SWA KV
|
|
191
|
+
// for cache operations by allocating full-context storage on every
|
|
192
|
+
// cache-owning layer. The cost varies sharply with model geometry, so
|
|
193
|
+
// Auto is gated on `swaFullAutoFits`: when weights + full KV do not fit
|
|
194
|
+
// fast memory, Gemma launches with the windowed cache instead.
|
|
195
|
+
const swaFull = config.llamaCppSwaFull ??
|
|
196
|
+
perModel?.swaFull ??
|
|
197
|
+
(swaFullAutoFits !== false && isGemmaModel({ architecture, modelId }));
|
|
198
|
+
if (swaFull)
|
|
199
|
+
args.push('--swa-full');
|
|
200
|
+
// ── Thread / batch overrides ──────────────────────────────────────
|
|
201
|
+
// The GPU-resident default needs positive evidence that no model compute
|
|
202
|
+
// runs on the CPU: a GPU build, a planner that measured a full fit, and no
|
|
203
|
+
// CPU placement from any layer. Anything less keeps llama.cpp's own
|
|
204
|
+
// all-cores default, because CPU-resident layers need every thread.
|
|
205
|
+
const gpuResident = backend !== undefined &&
|
|
206
|
+
GPU_BACKENDS.has(backend) &&
|
|
207
|
+
planner?.fullGpuResidency === true &&
|
|
208
|
+
(nGpuLayers === undefined || nGpuLayers === -1) &&
|
|
209
|
+
!cpuMoe &&
|
|
210
|
+
!(typeof nCpuMoe === 'number' && nCpuMoe > 0) &&
|
|
211
|
+
!(typeof nCpuFfn === 'number' && nCpuFfn > 0) &&
|
|
212
|
+
!extraArgsOwnThreads(config.llamaCppExtraArgs);
|
|
213
|
+
const threads = config.llamaCppThreads ??
|
|
214
|
+
perModel?.threads ??
|
|
215
|
+
(gpuResident ? gpuResidentThreads(hostCpuCount) : undefined);
|
|
216
|
+
if (typeof threads === 'number')
|
|
217
|
+
args.push('--threads', String(threads));
|
|
218
|
+
const batchSize = config.llamaCppBatchSize ?? perModel?.batchSize;
|
|
219
|
+
if (typeof batchSize === 'number')
|
|
220
|
+
args.push('--batch-size', String(batchSize));
|
|
221
|
+
const ubatchSize = config.llamaCppUbatchSize ?? perModel?.ubatchSize;
|
|
222
|
+
if (typeof ubatchSize === 'number')
|
|
223
|
+
args.push('--ubatch-size', String(ubatchSize));
|
|
224
|
+
if (perModel?.chatTemplate)
|
|
225
|
+
args.push('--chat-template', perModel.chatTemplate);
|
|
226
|
+
// ── Speculative decoding (`--spec-type` + draft knobs) ────────────
|
|
227
|
+
// MTP is ON by default for a GGUF that carries the head, having cleared the
|
|
228
|
+
// A/B gate this comment used to wait for (reports/llama-mtp-eval-20260829.md):
|
|
229
|
+
// +12.7% / +4.1% / +15.6% / +19.3% decode at 5.5k / 21.7k / 54k / 87k
|
|
230
|
+
// context, never negative, byte-identical greedy output, +1.35 GB resident.
|
|
231
|
+
// The gain GROWS with context — long-context decode is bound by reading the
|
|
232
|
+
// KV cache, and verifying K drafted tokens costs one pass over it instead of
|
|
233
|
+
// K — which is the regime agent turns actually run in.
|
|
234
|
+
//
|
|
235
|
+
// `ggufHasMtp` is the load-bearing gate either way: llama-server exits
|
|
236
|
+
// FATALLY when draft-mtp is selected for a model with no MTP tensors, so
|
|
237
|
+
// the default may only ever apply where the metadata confirms the head.
|
|
238
|
+
// Explicit config and manifest `spec.type` still win, including 'none'.
|
|
239
|
+
const specType = config.llamaCppSpecType ?? perModel?.spec?.type ?? (ggufHasMtp ? 'draft-mtp' : undefined);
|
|
240
|
+
const safeSpecType = specType === 'draft-mtp' && !ggufHasMtp ? undefined : specType;
|
|
241
|
+
if (safeSpecType && safeSpecType !== 'none') {
|
|
242
|
+
args.push('--spec-type', safeSpecType);
|
|
243
|
+
if (safeSpecType.startsWith('draft-')) {
|
|
244
|
+
const draftModel = config.llamaCppDraftModelPath ?? installedDraftModelPath ?? perModel?.spec?.draftModelId;
|
|
245
|
+
if (draftModel)
|
|
246
|
+
args.push('--spec-draft-model', draftModel);
|
|
247
|
+
}
|
|
248
|
+
const nMax = config.llamaCppSpecDraftNMax ?? perModel?.spec?.nMax;
|
|
249
|
+
if (typeof nMax === 'number')
|
|
250
|
+
args.push('--spec-draft-n-max', String(nMax));
|
|
251
|
+
// v0.6.0 supports probabilistic selection only for MTP/simple drafts.
|
|
252
|
+
// Leave the upstream greedy default untouched unless explicitly set.
|
|
253
|
+
if ((safeSpecType === 'draft-mtp' || safeSpecType === 'draft-simple') &&
|
|
254
|
+
config.llamaCppSpecDraftSampling) {
|
|
255
|
+
args.push('--spec-draft-sampling', config.llamaCppSpecDraftSampling);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// ── Server-side output parsing (`--reasoning-format`) ─────────────
|
|
259
|
+
if (reasoningFormat)
|
|
260
|
+
args.push('--reasoning-format', reasoningFormat);
|
|
261
|
+
// ── Cross-turn reasoning history (`--reasoning-preserve`) ─────────
|
|
262
|
+
if (reasoningPreserve === true)
|
|
263
|
+
args.push('--reasoning-preserve');
|
|
264
|
+
else if (reasoningPreserve === false)
|
|
265
|
+
args.push('--no-reasoning-preserve');
|
|
266
|
+
// ── Escape hatch (`llamaCppExtraArgs`) — applied last, wins ────────
|
|
267
|
+
if (config.llamaCppExtraArgs) {
|
|
268
|
+
for (const [rawKey, value] of Object.entries(config.llamaCppExtraArgs)) {
|
|
269
|
+
if (value === false)
|
|
270
|
+
continue; // false = omit the flag entirely
|
|
271
|
+
const key = normalizeFlagKey(rawKey);
|
|
272
|
+
if (value === true)
|
|
273
|
+
args.push(key);
|
|
274
|
+
else
|
|
275
|
+
args.push(key, String(value));
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return args;
|
|
279
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type GgufSummary } from './gguf-metadata.js';
|
|
2
|
+
export interface GgufSummaryOptions {
|
|
3
|
+
includeTensors?: boolean;
|
|
4
|
+
includeTensorSizes?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Inspect a GGUF without blocking the daemon event loop. Results are keyed by
|
|
8
|
+
* file identity and option set, so Settings' model-list polling only parses a
|
|
9
|
+
* given installed payload once and a replaced model invalidates naturally.
|
|
10
|
+
*/
|
|
11
|
+
export declare function readGgufSummaryAsync(path: string, options?: GgufSummaryOptions): Promise<GgufSummary>;
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { stat } from 'node:fs/promises';
|
|
2
|
+
import { basename, dirname, join, resolve } from 'node:path';
|
|
3
|
+
import { Worker } from 'node:worker_threads';
|
|
4
|
+
import { createLogger } from '@bendyline/gezel';
|
|
5
|
+
import { findServiceWorkerEntry } from '../../utils/service-worker-entry.js';
|
|
6
|
+
import { readGgufSummary } from './gguf-metadata.js';
|
|
7
|
+
const log = createLogger('gguf:metadata-worker');
|
|
8
|
+
const MAX_CACHE_ENTRIES = 32;
|
|
9
|
+
let worker = null;
|
|
10
|
+
let nextId = 1;
|
|
11
|
+
const pending = new Map();
|
|
12
|
+
const cache = new Map();
|
|
13
|
+
const inFlight = new Map();
|
|
14
|
+
/**
|
|
15
|
+
* Inspect a GGUF without blocking the daemon event loop. Results are keyed by
|
|
16
|
+
* file identity and option set, so Settings' model-list polling only parses a
|
|
17
|
+
* given installed payload once and a replaced model invalidates naturally.
|
|
18
|
+
*/
|
|
19
|
+
export async function readGgufSummaryAsync(path, options) {
|
|
20
|
+
const shardPaths = await discoverShardPaths(path);
|
|
21
|
+
const infos = await Promise.all(shardPaths.map((shardPath) => stat(shardPath)));
|
|
22
|
+
const key = [
|
|
23
|
+
...shardPaths.flatMap((shardPath, index) => [
|
|
24
|
+
resolve(shardPath),
|
|
25
|
+
infos[index].size,
|
|
26
|
+
infos[index].mtimeMs,
|
|
27
|
+
]),
|
|
28
|
+
options?.includeTensors === true ? 1 : 0,
|
|
29
|
+
options?.includeTensorSizes === true ? 1 : 0,
|
|
30
|
+
].join('\n');
|
|
31
|
+
const cached = cache.get(key);
|
|
32
|
+
if (cached)
|
|
33
|
+
return cached;
|
|
34
|
+
const active = inFlight.get(key);
|
|
35
|
+
if (active)
|
|
36
|
+
return active;
|
|
37
|
+
const request = Promise.all(shardPaths.map((shardPath) => runInWorker(shardPath, options))).then((summaries) => {
|
|
38
|
+
const summary = aggregateShardSummaries(summaries);
|
|
39
|
+
cache.set(key, summary);
|
|
40
|
+
while (cache.size > MAX_CACHE_ENTRIES)
|
|
41
|
+
cache.delete(cache.keys().next().value);
|
|
42
|
+
return summary;
|
|
43
|
+
});
|
|
44
|
+
inFlight.set(key, request);
|
|
45
|
+
try {
|
|
46
|
+
return await request;
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
if (inFlight.get(key) === request)
|
|
50
|
+
inFlight.delete(key);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const SPLIT_GGUF_RE = /^(.*)-(\d+)-of-(\d+)\.gguf$/i;
|
|
54
|
+
/** Resolve every sibling of a standard `-00001-of-00003.gguf` split. */
|
|
55
|
+
async function discoverShardPaths(path) {
|
|
56
|
+
const match = SPLIT_GGUF_RE.exec(basename(path));
|
|
57
|
+
if (!match)
|
|
58
|
+
return [path];
|
|
59
|
+
const count = Number(match[3]);
|
|
60
|
+
const width = match[2].length;
|
|
61
|
+
if (!Number.isSafeInteger(count) || count < 1 || count > 10_000)
|
|
62
|
+
return [path];
|
|
63
|
+
const paths = Array.from({ length: count }, (_, index) => join(dirname(path), `${match[1]}-${String(index + 1).padStart(width, '0')}-of-${match[3]}.gguf`));
|
|
64
|
+
try {
|
|
65
|
+
await Promise.all(paths.map((shardPath) => stat(shardPath)));
|
|
66
|
+
return paths;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// An in-progress/partial install is not a valid model yet, but preserving
|
|
70
|
+
// single-file inspection keeps download validation and Settings previews
|
|
71
|
+
// useful instead of turning a missing sibling into a parser failure.
|
|
72
|
+
return [path];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function sumField(summaries, field) {
|
|
76
|
+
const values = summaries
|
|
77
|
+
.map((summary) => summary[field])
|
|
78
|
+
.filter((value) => value !== undefined);
|
|
79
|
+
return values.length > 0 ? values.reduce((sum, value) => sum + value, 0) : undefined;
|
|
80
|
+
}
|
|
81
|
+
function sumLayerField(summaries, field) {
|
|
82
|
+
const arrays = summaries
|
|
83
|
+
.map((summary) => summary[field])
|
|
84
|
+
.filter((value) => value !== undefined);
|
|
85
|
+
const length = Math.max(0, ...arrays.map((values) => values.length));
|
|
86
|
+
if (arrays.length === 0)
|
|
87
|
+
return undefined;
|
|
88
|
+
return Array.from({ length }, (_, index) => arrays.reduce((sum, values) => sum + (values[index] ?? 0), 0));
|
|
89
|
+
}
|
|
90
|
+
function aggregateShardSummaries(summaries) {
|
|
91
|
+
const first = summaries[0];
|
|
92
|
+
if (summaries.length === 1)
|
|
93
|
+
return first;
|
|
94
|
+
const tensorNames = summaries.flatMap((summary) => summary.tensorNames ?? []);
|
|
95
|
+
return {
|
|
96
|
+
...first,
|
|
97
|
+
tensorCount: summaries.reduce((sum, summary) => sum + summary.tensorCount, 0n),
|
|
98
|
+
fileSizeBytes: summaries.reduce((sum, summary) => sum + summary.fileSizeBytes, 0),
|
|
99
|
+
bytesRead: summaries.reduce((sum, summary) => sum + summary.bytesRead, 0),
|
|
100
|
+
readOperations: summaries.reduce((sum, summary) => sum + summary.readOperations, 0),
|
|
101
|
+
shardCount: summaries.length,
|
|
102
|
+
...(tensorNames.length > 0 ? { tensorNames } : {}),
|
|
103
|
+
expertBytesTotal: sumField(summaries, 'expertBytesTotal'),
|
|
104
|
+
nonExpertBytes: sumField(summaries, 'nonExpertBytes'),
|
|
105
|
+
expertBytesByLayer: sumLayerField(summaries, 'expertBytesByLayer'),
|
|
106
|
+
denseFfnBytesTotal: sumField(summaries, 'denseFfnBytesTotal'),
|
|
107
|
+
nonDenseFfnBytes: sumField(summaries, 'nonDenseFfnBytes'),
|
|
108
|
+
denseFfnBytesByLayer: sumLayerField(summaries, 'denseFfnBytesByLayer'),
|
|
109
|
+
lazyTensorBytesTotal: sumField(summaries, 'lazyTensorBytesTotal'),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async function runInWorker(path, options) {
|
|
113
|
+
// Vitest runs the TS source tree without emitted worker entries. Keep its
|
|
114
|
+
// synthetic fixtures simple and deterministic; production builds must ship
|
|
115
|
+
// the worker and fail this advisory preview if packaging regresses.
|
|
116
|
+
if (process.env.VITEST)
|
|
117
|
+
return readGgufSummary(path, options);
|
|
118
|
+
const target = ensureWorker();
|
|
119
|
+
if (!target) {
|
|
120
|
+
throw new Error('GGUF metadata worker is missing; rebuild @bendyline/gezel-service before starting the daemon');
|
|
121
|
+
}
|
|
122
|
+
const id = nextId++;
|
|
123
|
+
return new Promise((resolveSummary, reject) => {
|
|
124
|
+
pending.set(id, { resolve: resolveSummary, reject });
|
|
125
|
+
target.postMessage({ id, path, ...(options ? { options } : {}) });
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function ensureWorker() {
|
|
129
|
+
if (worker)
|
|
130
|
+
return worker;
|
|
131
|
+
const entry = workerEntry();
|
|
132
|
+
if (!entry)
|
|
133
|
+
return null;
|
|
134
|
+
try {
|
|
135
|
+
const next = new Worker(entry);
|
|
136
|
+
next.on('message', onMessage);
|
|
137
|
+
next.on('error', (error) => onWorkerDown(error.message));
|
|
138
|
+
next.on('exit', (code) => {
|
|
139
|
+
if (code !== 0)
|
|
140
|
+
onWorkerDown(`worker exited with code ${code}`);
|
|
141
|
+
else if (worker === next)
|
|
142
|
+
worker = null;
|
|
143
|
+
});
|
|
144
|
+
next.unref();
|
|
145
|
+
worker = next;
|
|
146
|
+
return next;
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
log.error(`failed to start GGUF metadata worker: ${describe(error)}`);
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function workerEntry() {
|
|
154
|
+
return findServiceWorkerEntry(import.meta.url, 'gguf-metadata');
|
|
155
|
+
}
|
|
156
|
+
function onMessage(reply) {
|
|
157
|
+
const request = pending.get(reply.id);
|
|
158
|
+
if (!request)
|
|
159
|
+
return;
|
|
160
|
+
pending.delete(reply.id);
|
|
161
|
+
if (reply.error)
|
|
162
|
+
request.reject(new Error(reply.error));
|
|
163
|
+
else if (reply.summary)
|
|
164
|
+
request.resolve(reply.summary);
|
|
165
|
+
else
|
|
166
|
+
request.reject(new Error('GGUF metadata worker returned no summary'));
|
|
167
|
+
}
|
|
168
|
+
function onWorkerDown(reason) {
|
|
169
|
+
const dead = worker;
|
|
170
|
+
worker = null;
|
|
171
|
+
if (dead)
|
|
172
|
+
void dead.terminate().catch(() => { });
|
|
173
|
+
const error = new Error(`GGUF metadata worker stopped: ${reason}`);
|
|
174
|
+
for (const request of pending.values())
|
|
175
|
+
request.reject(error);
|
|
176
|
+
pending.clear();
|
|
177
|
+
}
|
|
178
|
+
function describe(error) {
|
|
179
|
+
return error instanceof Error ? error.message : String(error);
|
|
180
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Worker-thread host for GGUF metadata inspection.
|
|
2
|
+
*
|
|
3
|
+
* Large tokenizer vocabularies are cheap in bytes but expensive to walk. Keep
|
|
4
|
+
* even the first uncached inspection away from Electron's main thread when the
|
|
5
|
+
* service is embedded in a development app.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|