@bendyline/gezel-inference 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +13 -2
- package/dist/cache/adapter.d.ts +115 -0
- package/dist/cache/adapter.js +23 -0
- package/dist/cache/budget.d.ts +15 -0
- package/dist/cache/budget.js +31 -0
- package/dist/cache/controller.d.ts +205 -0
- package/dist/cache/controller.js +377 -0
- package/dist/catalog/LICENSE +21 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/manifest.json +146 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/manifest.json +146 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.2/manifest.json +15 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/manifest.json +166 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/versions/1.1.0/manifest.json +62 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/versions/1.1.1/manifest.json +61 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-mxfp4/manifest.json +125 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-mxfp4/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/manifest.json +125 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/versions/1.1.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2q4/manifest.json +126 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2q4/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/manifest.json +318 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/versions/1.0.0/manifest.json +225 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/versions/1.1.0/manifest.json +225 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/manifest.json +249 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.0.0/manifest.json +70 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.2/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.3/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.2.0/manifest.json +98 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/manifest.json +228 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.2/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.3/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.1.0/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/manifest.json +220 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.1.0/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.0/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.1/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.2/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.3.0/manifest.json +81 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/manifest.json +226 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.1.0/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.1.1/manifest.json +82 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.0/manifest.json +82 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.1/manifest.json +95 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.2/manifest.json +95 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.3.0/manifest.json +86 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/manifest.json +213 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.1.0/manifest.json +67 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.1.2/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.2.0/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.2.1/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.3.0/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/manifest.json +205 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.1.2/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.2.0/manifest.json +76 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.2.1/manifest.json +76 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.3.0/manifest.json +76 -0
- package/dist/catalog/chat-models/gl/glm-5.2-754b-q2/manifest.json +127 -0
- package/dist/catalog/chat-models/gl/glm-5.2-754b-q2/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/manifest.json +140 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.0/manifest.json +23 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.1/manifest.json +26 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/manifest.json +247 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/versions/1.0.0/manifest.json +137 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/versions/1.1.0/manifest.json +135 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/manifest.json +195 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/versions/1.1.1/manifest.json +71 -0
- package/dist/catalog/chat-models/gr/granite4.2-30b-q4/manifest.json +200 -0
- package/dist/catalog/chat-models/gr/granite4.2-30b-q4/versions/1.0.0/manifest.json +72 -0
- package/dist/catalog/chat-models/gr/granite4.2-3b-q4/manifest.json +196 -0
- package/dist/catalog/chat-models/gr/granite4.2-3b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/gr/granite4.2-8b-q4/manifest.json +189 -0
- package/dist/catalog/chat-models/gr/granite4.2-8b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/index.json +1 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/manifest.json +235 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.0/manifest.json +124 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.1/manifest.json +124 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.2/manifest.json +123 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/manifest.json +257 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/versions/1.0.0/manifest.json +145 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/versions/1.0.1/manifest.json +145 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/manifest.json +285 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.0/manifest.json +174 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.1/manifest.json +174 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.2/manifest.json +173 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/manifest.json +162 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/versions/1.0.0/manifest.json +59 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/versions/1.0.1/manifest.json +58 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/manifest.json +134 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/versions/1.1.0/manifest.json +57 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/versions/1.1.1/manifest.json +56 -0
- package/dist/catalog/chat-models/mi/minicpm5-1b-q4/manifest.json +156 -0
- package/dist/catalog/chat-models/mi/minicpm5-1b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/mi/minicpm5-2b-q4/manifest.json +161 -0
- package/dist/catalog/chat-models/mi/minicpm5-2b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/manifest.json +159 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/versions/1.1.0/manifest.json +62 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/versions/1.1.1/manifest.json +61 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +275 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/versions/1.0.0/manifest.json +154 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/versions/1.0.1/manifest.json +153 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/manifest.json +135 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.1/manifest.json +20 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.2/manifest.json +20 -0
- package/dist/catalog/chat-models/na/nanbeige4.2-3b-q4/manifest.json +138 -0
- package/dist/catalog/chat-models/na/nanbeige4.2-3b-q4/versions/1.0.0/manifest.json +14 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/manifest.json +212 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.0/manifest.json +94 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.1/manifest.json +94 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.2/manifest.json +93 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/manifest.json +135 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/versions/1.0.0/manifest.json +30 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/versions/1.0.1/manifest.json +30 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/manifest.json +192 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/versions/1.0.0/manifest.json +74 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/versions/1.0.1/manifest.json +73 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/manifest.json +207 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/versions/1.0.0/manifest.json +89 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/versions/1.0.1/manifest.json +88 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/manifest.json +224 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/versions/1.0.0/manifest.json +94 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/manifest.json +244 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/versions/1.0.0/manifest.json +114 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/manifest.json +215 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/versions/1.0.0/manifest.json +84 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/versions/1.0.1/manifest.json +83 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q4/manifest.json +208 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q4/versions/1.0.0/manifest.json +74 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q8/manifest.json +223 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q8/versions/1.0.0/manifest.json +89 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/manifest.json +187 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/versions/1.0.0/manifest.json +53 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/versions/1.0.1/manifest.json +77 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/manifest.json +192 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/versions/1.0.0/manifest.json +58 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/versions/1.0.1/manifest.json +82 -0
- package/dist/catalog/chat-models/qw/qwen3.5-0.8b-q4/manifest.json +192 -0
- package/dist/catalog/chat-models/qw/qwen3.5-0.8b-q4/versions/1.0.0/manifest.json +75 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/manifest.json +315 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.0/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.1/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.2/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.3/manifest.json +163 -0
- package/dist/catalog/chat-models/qw/qwen3.5-27b-q4/manifest.json +217 -0
- package/dist/catalog/chat-models/qw/qwen3.5-27b-q4/versions/1.0.0/manifest.json +90 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.0/manifest.json +77 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.2/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.3/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/manifest.json +188 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.0/manifest.json +77 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.2/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.3/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/manifest.json +205 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.0/manifest.json +82 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.2/manifest.json +81 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.3/manifest.json +81 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/manifest.json +230 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.0/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.4/manifest.json +91 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.5/manifest.json +91 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.6/manifest.json +115 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/manifest.json +240 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.0/manifest.json +102 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.2/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.3/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.4/manifest.json +127 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/manifest.json +233 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.0/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.2/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.3/manifest.json +117 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/manifest.json +252 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.0/manifest.json +112 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.2/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.3/manifest.json +137 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-iq1-s/manifest.json +195 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-iq1-s/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q2/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q2/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/versions/1.0.1/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/manifest.json +291 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.2/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.3/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.4/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.5/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/manifest.json +278 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.1/manifest.json +104 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.2/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.3/manifest.json +127 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/manifest.json +278 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.0/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.2/manifest.json +137 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq3/manifest.json +221 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq3/versions/1.0.0/manifest.json +36 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/manifest.json +429 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.0.0/manifest.json +36 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.1.0/manifest.json +205 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.1.1/manifest.json +244 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/manifest.json +203 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.0/manifest.json +21 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.1/manifest.json +31 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.2/manifest.json +30 -0
- package/dist/catalog/chat-models/raw-index.json +1 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/manifest.json +79 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/manifest.json +204 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/versions/1.0.0/manifest.json +70 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/versions/1.0.1/manifest.json +70 -0
- package/dist/catalog/chat-models/un/underdog-saluki-27b-iq2-mix/manifest.json +164 -0
- package/dist/catalog/chat-models/un/underdog-saluki-27b-iq2-mix/versions/1.0.0/manifest.json +14 -0
- package/dist/catalog/knowledge-catalogs/be/bendyline-how-to-books/manifest.json +26 -0
- package/dist/catalog/knowledge-catalogs/be/bendyline-how-to-books/versions/2026.10.8/manifest.json +8950 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-alaska-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-alaska-part-0001/versions/2026.10.1/manifest.json +658 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-nevada-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-nevada-part-0001/versions/2026.10.1/manifest.json +666 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-300-399-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-300-399-part-0001/versions/2026.10.2/manifest.json +182 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-347-349/manifest.json +25 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-347-349/versions/2026.10.5/manifest.json +38 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0001/versions/2026.10.1/manifest.json +558 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0002/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0002/versions/2026.10.1/manifest.json +258 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0001/versions/2026.10.1/manifest.json +318 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0002/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0002/versions/2026.10.1/manifest.json +266 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0003/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0003/versions/2026.10.1/manifest.json +186 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0004/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0004/versions/2026.10.1/manifest.json +138 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0005/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0005/versions/2026.10.1/manifest.json +138 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-wyoming-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-wyoming-part-0001/versions/2026.10.3/manifest.json +626 -0
- package/dist/catalog/knowledge-catalogs/index.json +1 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/versions/2026.10.16/manifest.json +18270 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/versions/2026.10.16/manifest.json +1098 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/versions/2026.10.16/manifest.json +722 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/versions/2026.10.16/manifest.json +530 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/versions/2026.10.16/manifest.json +602 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/versions/2026.10.16/manifest.json +250 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-dotnet-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-dotnet-en/versions/2026.10.16/manifest.json +16794 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/versions/2026.10.16/manifest.json +1106 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/versions/2026.10.16/manifest.json +234 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-powershell-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-powershell-en/versions/2026.10.16/manifest.json +522 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-sql-server-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-sql-server-en/versions/2026.10.16/manifest.json +1850 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/versions/2026.10.16/manifest.json +1734 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-server-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-server-en/versions/2026.10.16/manifest.json +774 -0
- package/dist/catalog/knowledge-catalogs/raw-index.json +1 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/manifest.json +28 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.2/manifest.json +53 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.3/manifest.json +885 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.5/manifest.json +157 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/manifest.json +32 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.2/manifest.json +69 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.3/manifest.json +741 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.5/manifest.json +173 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/manifest.json +69 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/versions/2026.4.4/manifest.json +217 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/versions/2026.4.5/manifest.json +217 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/versions/2026.4.4/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.3/manifest.json +925 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/manifest.json +28 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.2/manifest.json +53 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.3/manifest.json +1665 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.5/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.3/manifest.json +1233 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.5/manifest.json +141 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.3/manifest.json +493 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/manifest.json +63 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/versions/2026.4.4/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/versions/2026.4.5/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/manifest.json +30 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.2/manifest.json +61 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.3/manifest.json +665 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.5/manifest.json +177 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.3/manifest.json +745 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/manifest.json +62 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/versions/2026.4.4/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/versions/2026.4.4/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/manifest.json +30 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.2/manifest.json +61 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.3/manifest.json +1253 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.3/manifest.json +1957 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/manifest.json +63 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/versions/2026.4.5/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/manifest.json +45 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/versions/2026.4.4/manifest.json +121 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/versions/2026.4.5/manifest.json +173 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/manifest.json +62 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/versions/2026.4.4/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/provenance.json +8 -0
- package/dist/chat/catalog-model-lookup.d.ts +21 -0
- package/dist/chat/catalog-model-lookup.js +48 -0
- package/dist/chat/local-model-tier.d.ts +1 -0
- package/dist/chat/local-model-tier.js +2 -0
- package/dist/chat/vision-capability.d.ts +1 -0
- package/dist/chat/vision-capability.js +3 -0
- package/dist/engine-components.d.ts +30 -0
- package/dist/engine-components.js +144 -0
- package/dist/engines/electron-native-reuse.d.ts +65 -0
- package/dist/engines/electron-native-reuse.js +305 -0
- package/dist/engines/native-file-manifest.json +1320 -0
- package/dist/engines/native-manifest.d.ts +70 -0
- package/dist/engines/native-manifest.js +98 -0
- package/dist/engines/registry.d.ts +88 -0
- package/dist/engines/registry.js +217 -0
- package/dist/engines/resolver.d.ts +121 -0
- package/dist/engines/resolver.js +894 -0
- package/dist/engines/signature.d.ts +85 -0
- package/dist/engines/signature.js +231 -0
- package/dist/fs/atomic.d.ts +53 -0
- package/dist/fs/atomic.js +202 -0
- package/dist/fs/config-store.d.ts +14 -0
- package/dist/fs/config-store.js +101 -0
- package/dist/fs/home-permissions.d.ts +18 -0
- package/dist/fs/home-permissions.js +27 -0
- package/dist/fs/safe-paths.d.ts +107 -0
- package/dist/fs/safe-paths.js +264 -0
- package/dist/fs/security-json.d.ts +13 -0
- package/dist/fs/security-json.js +67 -0
- package/dist/http/auth-context.d.ts +23 -0
- package/dist/http/auth-context.js +1 -0
- package/dist/http/engine-runtime-context.d.ts +30 -0
- package/dist/http/engine-runtime-context.js +1 -0
- package/dist/http/external-conversation-contract.d.ts +49 -0
- package/dist/http/external-conversation-contract.js +1 -0
- package/dist/http/external-conversation-headers.d.ts +11 -0
- package/dist/http/external-conversation-headers.js +11 -0
- package/dist/http/inference-context.d.ts +36 -0
- package/dist/http/inference-context.js +1 -0
- package/dist/http/model-inventory-cache.d.ts +8 -0
- package/dist/http/model-inventory-cache.js +8 -0
- package/dist/http/openai-compat/action-ledger.d.ts +15 -0
- package/dist/http/openai-compat/action-ledger.js +119 -0
- package/dist/http/openai-compat/apple-model.d.ts +3 -0
- package/dist/http/openai-compat/apple-model.js +44 -0
- package/dist/http/openai-compat/caller-owned-profile.d.ts +7 -0
- package/dist/http/openai-compat/caller-owned-profile.js +18 -0
- package/dist/http/openai-compat/chat-progress.d.ts +9 -0
- package/dist/http/openai-compat/chat-progress.js +69 -0
- package/dist/http/openai-compat/chat-target.d.ts +76 -0
- package/dist/http/openai-compat/chat-target.js +97 -0
- package/dist/http/openai-compat/embeddings.d.ts +37 -0
- package/dist/http/openai-compat/embeddings.js +86 -0
- package/dist/http/openai-compat/request-tuning.d.ts +35 -0
- package/dist/http/openai-compat/request-tuning.js +87 -0
- package/dist/http/openai-compat/responses-streaming.d.ts +351 -0
- package/dist/http/openai-compat/responses-streaming.js +717 -0
- package/dist/http/openai-compat/responses-translate.d.ts +215 -0
- package/dist/http/openai-compat/responses-translate.js +377 -0
- package/dist/http/openai-compat/streaming-telemetry.d.ts +30 -0
- package/dist/http/openai-compat/streaming-telemetry.js +88 -0
- package/dist/http/openai-compat/streaming.d.ts +141 -0
- package/dist/http/openai-compat/streaming.js +687 -0
- package/dist/http/openai-compat/tool-call-stream-filter.d.ts +33 -0
- package/dist/http/openai-compat/tool-call-stream-filter.js +110 -0
- package/dist/http/openai-compat/translate.d.ts +254 -0
- package/dist/http/openai-compat/translate.js +485 -0
- package/dist/http/routes/engines.d.ts +13 -0
- package/dist/http/routes/engines.js +366 -0
- package/dist/http/routes/machine-engine-proxy.d.ts +26 -0
- package/dist/http/routes/machine-engine-proxy.js +43 -0
- package/dist/http/routes/model-bundles.d.ts +4 -0
- package/dist/http/routes/model-bundles.js +190 -0
- package/dist/http/routes/v1-chat.d.ts +72 -0
- package/dist/http/routes/v1-chat.js +645 -0
- package/dist/http/routes/v1-embeddings.d.ts +3 -0
- package/dist/http/routes/v1-embeddings.js +82 -0
- package/dist/http/routes/v1-knowledge.d.ts +4 -0
- package/dist/http/routes/v1-knowledge.js +304 -0
- package/dist/http/routes/v1-models-ensure.d.ts +32 -0
- package/dist/http/routes/v1-models-ensure.js +122 -0
- package/dist/http/routes/v1-models.d.ts +8 -0
- package/dist/http/routes/v1-models.js +189 -0
- package/dist/http/routes/v1-responses.d.ts +20 -0
- package/dist/http/routes/v1-responses.js +327 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/inference-service.d.ts +28 -0
- package/dist/inference-service.js +275 -0
- package/dist/knowledge/admission.d.ts +3 -0
- package/dist/knowledge/admission.js +22 -0
- package/dist/knowledge/bundled-catalog.d.ts +2 -0
- package/dist/knowledge/bundled-catalog.js +2 -0
- package/dist/knowledge/catalog-host.d.ts +103 -0
- package/dist/knowledge/catalog-host.js +180 -0
- package/dist/knowledge/catalog-source.d.ts +22 -0
- package/dist/knowledge/catalog-source.js +35 -0
- package/dist/knowledge/install.d.ts +55 -0
- package/dist/knowledge/install.js +274 -0
- package/dist/knowledge/manager.d.ts +287 -0
- package/dist/knowledge/manager.js +1540 -0
- package/dist/knowledge/registry.d.ts +35 -0
- package/dist/knowledge/registry.js +123 -0
- package/dist/knowledge/search-worker.d.ts +17 -0
- package/dist/knowledge/search-worker.js +36 -0
- package/dist/knowledge/shared-install-contract.d.ts +19 -0
- package/dist/knowledge/shared-install-contract.js +1 -0
- package/dist/knowledge/spatial-query.d.ts +11 -0
- package/dist/knowledge/spatial-query.js +33 -0
- package/dist/knowledge/trust-anchors.d.ts +11 -0
- package/dist/knowledge/trust-anchors.js +51 -0
- package/dist/knowledge/vector-floors.d.ts +44 -0
- package/dist/knowledge/vector-floors.js +92 -0
- package/dist/knowledge/worker-host.d.ts +9 -0
- package/dist/knowledge/worker-host.js +179 -0
- package/dist/kokoro-lexicon/LICENSE +202 -0
- package/dist/kokoro-lexicon/lexicon-gb-en.txt.gz +0 -0
- package/dist/kokoro-lexicon/lexicon-us-en.txt.gz +0 -0
- package/dist/kokoro-lexicon/manifest.json +23 -0
- package/dist/machine-engine/inspect-runtime.d.ts +3 -0
- package/dist/machine-engine/inspect-runtime.js +48 -0
- package/dist/machine-engine/knowledge-assets.d.ts +79 -0
- package/dist/machine-engine/knowledge-assets.js +505 -0
- package/dist/memory/embed-core.d.ts +131 -0
- package/dist/memory/embed-core.js +398 -0
- package/dist/memory/embed-worker.d.ts +23 -0
- package/dist/memory/embed-worker.js +49 -0
- package/dist/memory/embeddings.d.ts +105 -0
- package/dist/memory/embeddings.js +467 -0
- package/dist/model-profile/behaviors/tools-mlx-template-fix.d.ts +1 -0
- package/dist/model-profile/behaviors/tools-mlx-template-fix.js +2 -0
- package/dist/model-profile/behaviors/turn-ramble-detection.d.ts +1 -0
- package/dist/model-profile/behaviors/turn-ramble-detection.js +2 -0
- package/dist/model-profile/defaults.d.ts +1 -0
- package/dist/model-profile/defaults.js +2 -0
- package/dist/model-profile/index.d.ts +9 -0
- package/dist/model-profile/index.js +7 -0
- package/dist/model-profile/registry.d.ts +15 -0
- package/dist/model-profile/registry.js +18 -0
- package/dist/model-profile/runtime.d.ts +48 -0
- package/dist/model-profile/runtime.js +131 -0
- package/dist/model-profile/tool-grammar.d.ts +1 -0
- package/dist/model-profile/tool-grammar.js +2 -0
- package/dist/model-profile/tuning.d.ts +19 -0
- package/dist/model-profile/tuning.js +21 -0
- package/dist/model-profile/types.d.ts +1 -0
- package/dist/model-profile/types.js +2 -0
- package/dist/models/bundle-storage.d.ts +28 -0
- package/dist/models/bundle-storage.js +80 -0
- package/dist/models/catalog-drift.d.ts +48 -0
- package/dist/models/catalog-drift.js +94 -0
- package/dist/models/catalog-payload-identity.d.ts +107 -0
- package/dist/models/catalog-payload-identity.js +254 -0
- package/dist/models/ensure.d.ts +125 -0
- package/dist/models/ensure.js +205 -0
- package/dist/models/gezmodel.d.ts +47 -0
- package/dist/models/gezmodel.js +742 -0
- package/dist/models/install-registry.d.ts +101 -0
- package/dist/models/install-registry.js +216 -0
- package/dist/models/model-id.d.ts +22 -0
- package/dist/models/model-id.js +40 -0
- package/dist/models/storage-roots.d.ts +274 -0
- package/dist/models/storage-roots.js +865 -0
- package/dist/native-release-entry.d.ts +16 -0
- package/dist/native-release-entry.js +16 -0
- package/dist/perf/redact-path.d.ts +2 -0
- package/dist/perf/redact-path.js +27 -0
- package/dist/perf/responsiveness.d.ts +70 -0
- package/dist/perf/responsiveness.js +560 -0
- package/dist/providers/active-install-message.d.ts +42 -0
- package/dist/providers/active-install-message.js +49 -0
- package/dist/providers/apple-foundation-models/binary.d.ts +4 -0
- package/dist/providers/apple-foundation-models/binary.js +18 -0
- package/dist/providers/apple-foundation-models/helper.d.ts +66 -0
- package/dist/providers/apple-foundation-models/helper.js +262 -0
- package/dist/providers/apple-foundation-models/provider.d.ts +82 -0
- package/dist/providers/apple-foundation-models/provider.js +389 -0
- package/dist/providers/apple-foundation-models/status.d.ts +9 -0
- package/dist/providers/apple-foundation-models/status.js +49 -0
- package/dist/providers/audio/kokoro-frontend.d.ts +50 -0
- package/dist/providers/audio/kokoro-frontend.js +113 -0
- package/dist/providers/audio/managed-speech-model.d.ts +9 -0
- package/dist/providers/audio/managed-speech-model.js +86 -0
- package/dist/providers/audio/types.d.ts +202 -0
- package/dist/providers/audio/types.js +17 -0
- package/dist/providers/audio/whisper-cpp.d.ts +99 -0
- package/dist/providers/audio/whisper-cpp.js +420 -0
- package/dist/providers/audio-persister-contract.d.ts +13 -0
- package/dist/providers/audio-persister-contract.js +1 -0
- package/dist/providers/catalog-model-config.d.ts +63 -0
- package/dist/providers/catalog-model-config.js +95 -0
- package/dist/providers/code-block-salvage.d.ts +1 -0
- package/dist/providers/code-block-salvage.js +2 -0
- package/dist/providers/codex-cli/reasoning.d.ts +8 -0
- package/dist/providers/codex-cli/reasoning.js +17 -0
- package/dist/providers/complete-tool-call.d.ts +16 -0
- package/dist/providers/complete-tool-call.js +25 -0
- package/dist/providers/constrained-turn.d.ts +1 -0
- package/dist/providers/constrained-turn.js +2 -0
- package/dist/providers/deliverable-read-pacing.d.ts +1 -0
- package/dist/providers/deliverable-read-pacing.js +2 -0
- package/dist/providers/direct-file-work-prompt.d.ts +1 -0
- package/dist/providers/direct-file-work-prompt.js +2 -0
- package/dist/providers/ds4/build-provider.d.ts +100 -0
- package/dist/providers/ds4/build-provider.js +539 -0
- package/dist/providers/ds4/cache-adapter.d.ts +42 -0
- package/dist/providers/ds4/cache-adapter.js +110 -0
- package/dist/providers/ds4/dspark.d.ts +83 -0
- package/dist/providers/ds4/dspark.js +107 -0
- package/dist/providers/ds4/mtp.d.ts +32 -0
- package/dist/providers/ds4/mtp.js +46 -0
- package/dist/providers/ds4/provider.d.ts +67 -0
- package/dist/providers/ds4/provider.js +104 -0
- package/dist/providers/ds4/residency.d.ts +143 -0
- package/dist/providers/ds4/residency.js +139 -0
- package/dist/providers/ds4/stdout-parser.d.ts +47 -0
- package/dist/providers/ds4/stdout-parser.js +134 -0
- package/dist/providers/duplicate-tool-calls.d.ts +1 -0
- package/dist/providers/duplicate-tool-calls.js +2 -0
- package/dist/providers/file-repair-policy.d.ts +1 -0
- package/dist/providers/file-repair-policy.js +2 -0
- package/dist/providers/gpu-arbiter.d.ts +159 -0
- package/dist/providers/gpu-arbiter.js +301 -0
- package/dist/providers/image-persister-contract.d.ts +15 -0
- package/dist/providers/image-persister-contract.js +1 -0
- package/dist/providers/llama-cpp/build-metadata.d.ts +13 -0
- package/dist/providers/llama-cpp/build-metadata.js +39 -0
- package/dist/providers/llama-cpp/build-provider.d.ts +66 -0
- package/dist/providers/llama-cpp/build-provider.js +1491 -0
- package/dist/providers/llama-cpp/cache-adapter.d.ts +242 -0
- package/dist/providers/llama-cpp/cache-adapter.js +689 -0
- package/dist/providers/llama-cpp/devices.d.ts +130 -0
- package/dist/providers/llama-cpp/devices.js +256 -0
- package/dist/providers/llama-cpp/disk-cache.d.ts +8 -0
- package/dist/providers/llama-cpp/disk-cache.js +112 -0
- package/dist/providers/llama-cpp/engine-flags.d.ts +181 -0
- package/dist/providers/llama-cpp/engine-flags.js +279 -0
- package/dist/providers/llama-cpp/gguf-metadata-async.d.ts +11 -0
- package/dist/providers/llama-cpp/gguf-metadata-async.js +180 -0
- package/dist/providers/llama-cpp/gguf-metadata-worker.d.ts +7 -0
- package/dist/providers/llama-cpp/gguf-metadata-worker.js +27 -0
- package/dist/providers/llama-cpp/gguf-metadata.d.ts +198 -0
- package/dist/providers/llama-cpp/gguf-metadata.js +615 -0
- package/dist/providers/llama-cpp/gguf-quantization-backfill.d.ts +32 -0
- package/dist/providers/llama-cpp/gguf-quantization-backfill.js +75 -0
- package/dist/providers/llama-cpp/index.d.ts +10 -0
- package/dist/providers/llama-cpp/index.js +13 -0
- package/dist/providers/llama-cpp/kv-cache-type.d.ts +118 -0
- package/dist/providers/llama-cpp/kv-cache-type.js +140 -0
- package/dist/providers/llama-cpp/log.d.ts +92 -0
- package/dist/providers/llama-cpp/log.js +280 -0
- package/dist/providers/llama-cpp/models.d.ts +389 -0
- package/dist/providers/llama-cpp/models.js +1011 -0
- package/dist/providers/llama-cpp/offload-planner.d.ts +339 -0
- package/dist/providers/llama-cpp/offload-planner.js +524 -0
- package/dist/providers/llama-cpp/provider.d.ts +493 -0
- package/dist/providers/llama-cpp/provider.js +862 -0
- package/dist/providers/llama-cpp/reasoning-launch.d.ts +7 -0
- package/dist/providers/llama-cpp/reasoning-launch.js +14 -0
- package/dist/providers/llama-cpp/spec-draft.d.ts +44 -0
- package/dist/providers/llama-cpp/spec-draft.js +44 -0
- package/dist/providers/llama-cpp/stdout-parser.d.ts +70 -0
- package/dist/providers/llama-cpp/stdout-parser.js +197 -0
- package/dist/providers/local-tool-call-salvage.d.ts +1 -0
- package/dist/providers/local-tool-call-salvage.js +2 -0
- package/dist/providers/local-turn-policy.d.ts +1 -0
- package/dist/providers/local-turn-policy.js +2 -0
- package/dist/providers/mlx/async-file-handoff.d.ts +11 -0
- package/dist/providers/mlx/async-file-handoff.js +25 -0
- package/dist/providers/mlx/build-provider.d.ts +65 -0
- package/dist/providers/mlx/build-provider.js +717 -0
- package/dist/providers/mlx/cache-adapter.d.ts +161 -0
- package/dist/providers/mlx/cache-adapter.js +445 -0
- package/dist/providers/mlx/chat-protocol.d.ts +48 -0
- package/dist/providers/mlx/chat-protocol.js +8 -0
- package/dist/providers/mlx/config-parser.d.ts +29 -0
- package/dist/providers/mlx/config-parser.js +81 -0
- package/dist/providers/mlx/engine-gate.d.ts +51 -0
- package/dist/providers/mlx/engine-gate.js +207 -0
- package/dist/providers/mlx/engine-hold.d.ts +41 -0
- package/dist/providers/mlx/engine-hold.js +59 -0
- package/dist/providers/mlx/engine-log-router.d.ts +84 -0
- package/dist/providers/mlx/engine-log-router.js +137 -0
- package/dist/providers/mlx/engine-stats-sampler.d.ts +36 -0
- package/dist/providers/mlx/engine-stats-sampler.js +59 -0
- package/dist/providers/mlx/index.d.ts +10 -0
- package/dist/providers/mlx/index.js +10 -0
- package/dist/providers/mlx/log.d.ts +55 -0
- package/dist/providers/mlx/log.js +157 -0
- package/dist/providers/mlx/model-geometry.d.ts +35 -0
- package/dist/providers/mlx/model-geometry.js +118 -0
- package/dist/providers/mlx/models.d.ts +289 -0
- package/dist/providers/mlx/models.js +1079 -0
- package/dist/providers/mlx/provider.d.ts +404 -0
- package/dist/providers/mlx/provider.js +3017 -0
- package/dist/providers/mlx/python/cache_persist.py +348 -0
- package/dist/providers/mlx/python/cache_seed.py +402 -0
- package/dist/providers/mlx/python/gezel_mlx_server.py +4491 -0
- package/dist/providers/mlx/python/lfm2_compat.py +55 -0
- package/dist/providers/mlx/python/qwen3_5_text_compat.py +60 -0
- package/dist/providers/mlx/python/qwen4_ple.py +159 -0
- package/dist/providers/mlx/python/spec_decode.py +775 -0
- package/dist/providers/mlx/python/template_stability.py +133 -0
- package/dist/providers/mlx/python/think_budget.py +113 -0
- package/dist/providers/mlx/python/tool_args_json.py +297 -0
- package/dist/providers/mlx/python/tool_call_stream.py +265 -0
- package/dist/providers/mlx/python/tool_grammar.py +794 -0
- package/dist/providers/mlx/python/vision_inputs.py +64 -0
- package/dist/providers/mlx/python/wave_policy.py +147 -0
- package/dist/providers/mlx/reasoning-stream.d.ts +85 -0
- package/dist/providers/mlx/reasoning-stream.js +196 -0
- package/dist/providers/mlx/request-shape.d.ts +34 -0
- package/dist/providers/mlx/request-shape.js +42 -0
- package/dist/providers/mlx/runtime-diagnostics.d.ts +29 -0
- package/dist/providers/mlx/runtime-diagnostics.js +162 -0
- package/dist/providers/mlx/spec-drafter.d.ts +25 -0
- package/dist/providers/mlx/spec-drafter.js +73 -0
- package/dist/providers/mlx/stdout-parser.d.ts +60 -0
- package/dist/providers/mlx/stdout-parser.js +254 -0
- package/dist/providers/mlx/textual-tool-call-salvage.d.ts +46 -0
- package/dist/providers/mlx/textual-tool-call-salvage.js +396 -0
- package/dist/providers/mlx/tool-call-protocol.d.ts +65 -0
- package/dist/providers/mlx/tool-call-protocol.js +140 -0
- package/dist/providers/mlx/tool-call-stripper.d.ts +68 -0
- package/dist/providers/mlx/tool-call-stripper.js +153 -0
- package/dist/providers/mlx/tool-image-retention.d.ts +23 -0
- package/dist/providers/mlx/tool-image-retention.js +43 -0
- package/dist/providers/mlx/turn-telemetry.d.ts +22 -0
- package/dist/providers/mlx/turn-telemetry.js +45 -0
- package/dist/providers/mlx/venv.d.ts +91 -0
- package/dist/providers/mlx/venv.js +111 -0
- package/dist/providers/mlx/vision-mode.d.ts +92 -0
- package/dist/providers/mlx/vision-mode.js +187 -0
- package/dist/providers/mlx/vision.d.ts +2 -0
- package/dist/providers/mlx/vision.js +12 -0
- package/dist/providers/mlx/wire-transcript.d.ts +14 -0
- package/dist/providers/mlx/wire-transcript.js +43 -0
- package/dist/providers/native/capacity-broker.d.ts +812 -0
- package/dist/providers/native/capacity-broker.js +1058 -0
- package/dist/providers/native/capacity-budget.d.ts +133 -0
- package/dist/providers/native/capacity-budget.js +265 -0
- package/dist/providers/native/device-capacity-ledger.d.ts +31 -0
- package/dist/providers/native/device-capacity-ledger.js +196 -0
- package/dist/providers/native/device-capacity.d.ts +84 -0
- package/dist/providers/native/device-capacity.js +431 -0
- package/dist/providers/native/engine-api-key.d.ts +57 -0
- package/dist/providers/native/engine-api-key.js +72 -0
- package/dist/providers/native/engine-key.d.ts +18 -0
- package/dist/providers/native/engine-key.js +41 -0
- package/dist/providers/native/engine-router.d.ts +145 -0
- package/dist/providers/native/engine-router.js +191 -0
- package/dist/providers/native/gpu-panic-guard.d.ts +54 -0
- package/dist/providers/native/gpu-panic-guard.js +59 -0
- package/dist/providers/native/inference.d.ts +33 -0
- package/dist/providers/native/inference.js +49 -0
- package/dist/providers/native/local-engine-runtime.d.ts +412 -0
- package/dist/providers/native/local-engine-runtime.js +1714 -0
- package/dist/providers/native/measured-budget.d.ts +32 -0
- package/dist/providers/native/measured-budget.js +54 -0
- package/dist/providers/native/port.d.ts +11 -0
- package/dist/providers/native/port.js +29 -0
- package/dist/providers/native/provider-pool.d.ts +474 -0
- package/dist/providers/native/provider-pool.js +1166 -0
- package/dist/providers/native/supervisor.d.ts +503 -0
- package/dist/providers/native/supervisor.js +1466 -0
- package/dist/providers/observation-context.d.ts +16 -0
- package/dist/providers/observation-context.js +1 -0
- package/dist/providers/openai-compatible/sse.d.ts +1 -0
- package/dist/providers/openai-compatible/sse.js +2 -0
- package/dist/providers/patient-fetch.d.ts +36 -0
- package/dist/providers/patient-fetch.js +44 -0
- package/dist/providers/project-macro-loop-bail.d.ts +7 -0
- package/dist/providers/project-macro-loop-bail.js +21 -0
- package/dist/providers/prose-document-salvage.d.ts +1 -0
- package/dist/providers/prose-document-salvage.js +2 -0
- package/dist/providers/provider-disposal.d.ts +1 -0
- package/dist/providers/provider-disposal.js +2 -0
- package/dist/providers/queue.d.ts +15 -0
- package/dist/providers/queue.js +23 -0
- package/dist/providers/ramble-abort-message.d.ts +1 -0
- package/dist/providers/ramble-abort-message.js +2 -0
- package/dist/providers/ramble-detector.d.ts +1 -0
- package/dist/providers/ramble-detector.js +2 -0
- package/dist/providers/reasoning-depth.d.ts +1 -0
- package/dist/providers/reasoning-depth.js +2 -0
- package/dist/providers/required-input-reads.d.ts +1 -0
- package/dist/providers/required-input-reads.js +2 -0
- package/dist/providers/session-defaults.d.ts +13 -0
- package/dist/providers/session-defaults.js +49 -0
- package/dist/providers/session-hooks.d.ts +26 -0
- package/dist/providers/session-hooks.js +1 -0
- package/dist/providers/streaming-session.d.ts +1 -0
- package/dist/providers/streaming-session.js +2 -0
- package/dist/providers/terminal-tool-policy.d.ts +1 -0
- package/dist/providers/terminal-tool-policy.js +2 -0
- package/dist/providers/tool-arg-schema-coercion.d.ts +1 -0
- package/dist/providers/tool-arg-schema-coercion.js +2 -0
- package/dist/providers/tool-executor.d.ts +12 -0
- package/dist/providers/tool-executor.js +20 -0
- package/dist/providers/tool-failure-tracker.d.ts +1 -0
- package/dist/providers/tool-failure-tracker.js +2 -0
- package/dist/providers/tool-repeat-tracker.d.ts +1 -0
- package/dist/providers/tool-repeat-tracker.js +2 -0
- package/dist/providers/turn-timeout.d.ts +1 -0
- package/dist/providers/turn-timeout.js +1 -0
- package/dist/providers/types.d.ts +834 -0
- package/dist/providers/types.js +42 -0
- package/dist/providers/usage-builder.d.ts +1 -0
- package/dist/providers/usage-builder.js +2 -0
- package/dist/providers/vision-capability.d.ts +109 -0
- package/dist/providers/vision-capability.js +137 -0
- package/dist/python/mlx-runtime-status-bus.d.ts +39 -0
- package/dist/python/mlx-runtime-status-bus.js +27 -0
- package/dist/python/uv-runtime.d.ts +176 -0
- package/dist/python/uv-runtime.js +492 -0
- package/dist/relevance/install.d.ts +28 -0
- package/dist/relevance/install.js +114 -0
- package/dist/relevance/manager.d.ts +79 -0
- package/dist/relevance/manager.js +211 -0
- package/dist/relevance/registry.d.ts +11 -0
- package/dist/relevance/registry.js +158 -0
- package/dist/relevance/relevance-core.d.ts +67 -0
- package/dist/relevance/relevance-core.js +189 -0
- package/dist/relevance/relevance-model.d.ts +42 -0
- package/dist/relevance/relevance-model.js +292 -0
- package/dist/relevance/relevance-worker.d.ts +20 -0
- package/dist/relevance/relevance-worker.js +57 -0
- package/dist/relevance/settings.d.ts +30 -0
- package/dist/relevance/settings.js +81 -0
- package/dist/remotes/identity.d.ts +121 -0
- package/dist/remotes/identity.js +348 -0
- package/dist/remotes/pinned-fetch.d.ts +45 -0
- package/dist/remotes/pinned-fetch.js +193 -0
- package/dist/remotes/types.d.ts +54 -0
- package/dist/remotes/types.js +1 -0
- package/dist/runtime-lock.d.ts +29 -0
- package/dist/runtime-lock.js +85 -0
- package/dist/search/relevance-stage.d.ts +81 -0
- package/dist/search/relevance-stage.js +177 -0
- package/dist/secrets/types.d.ts +63 -0
- package/dist/secrets/types.js +64 -0
- package/dist/speech.d.ts +1 -0
- package/dist/speech.js +1 -0
- package/dist/system/darwin-memory.d.ts +26 -0
- package/dist/system/darwin-memory.js +81 -0
- package/dist/system/gezel-process-memory.d.ts +55 -0
- package/dist/system/gezel-process-memory.js +156 -0
- package/dist/system/memory.d.ts +154 -0
- package/dist/system/memory.js +501 -0
- package/dist/transformers-cache.d.ts +112 -0
- package/dist/transformers-cache.js +392 -0
- package/dist/utils/disk-space.d.ts +55 -0
- package/dist/utils/disk-space.js +72 -0
- package/dist/utils/download-common.d.ts +138 -0
- package/dist/utils/download-common.js +196 -0
- package/dist/utils/download-with-retry.d.ts +85 -0
- package/dist/utils/download-with-retry.js +522 -0
- package/dist/utils/extract-zip.d.ts +22 -0
- package/dist/utils/extract-zip.js +103 -0
- package/dist/utils/retire-model-worker.d.ts +15 -0
- package/dist/utils/retire-model-worker.js +24 -0
- package/dist/utils/service-worker-entry.d.ts +59 -0
- package/dist/utils/service-worker-entry.js +69 -0
- package/dist/utils/xet-download.d.ts +40 -0
- package/dist/utils/xet-download.js +526 -0
- package/dist/utils/xet.d.ts +86 -0
- package/dist/utils/xet.js +201 -0
- package/package.json +103 -3
- package/scripts/embedding-packaging.cjs +264 -0
- package/scripts/embedding-packaging.d.cts +16 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { createLogger } from '@bendyline/gezel';
|
|
2
|
+
const log = createLogger('mlx');
|
|
3
|
+
/** Read a process's resident-set size (bytes) via `ps` for engine telemetry. */
|
|
4
|
+
export async function readProcessRssBytes(pid) {
|
|
5
|
+
const { spawn } = await import('node:child_process');
|
|
6
|
+
return await new Promise((resolve) => {
|
|
7
|
+
try {
|
|
8
|
+
const proc = spawn('ps', ['-o', 'rss=', '-p', String(pid)], {
|
|
9
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
10
|
+
});
|
|
11
|
+
let stdout = '';
|
|
12
|
+
proc.stdout.on('data', (chunk) => {
|
|
13
|
+
stdout += chunk.toString('utf8');
|
|
14
|
+
});
|
|
15
|
+
proc.on('error', () => resolve(null));
|
|
16
|
+
proc.on('close', (code) => {
|
|
17
|
+
if (code !== 0)
|
|
18
|
+
return resolve(null);
|
|
19
|
+
const kb = Number.parseInt(stdout.trim(), 10);
|
|
20
|
+
if (!Number.isFinite(kb) || kb <= 0)
|
|
21
|
+
return resolve(null);
|
|
22
|
+
resolve(kb * 1024);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
resolve(null);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/** Translate known mlx_vlm response shapes into user-actionable errors. */
|
|
31
|
+
export function translateMlxHttpError(status, statusText, body) {
|
|
32
|
+
if (/Repository Not Found for url/i.test(body) || /401 Client Error/i.test(body)) {
|
|
33
|
+
return ("[Mac AI] The engine couldn't load this model. Try, in order:\n" +
|
|
34
|
+
' 1. Settings → This Mac → Delete the local model, then download it again (in case the on-disk files are incomplete).\n' +
|
|
35
|
+
' 2. Settings → This Mac → Advanced → Reset venv (in case mlx-vlm is too old for this architecture).\n' +
|
|
36
|
+
' 3. Restart gezel and retry.');
|
|
37
|
+
}
|
|
38
|
+
if (/Received \d+ parameters not in model/i.test(body)) {
|
|
39
|
+
return ("[Mac AI] The on-device runtime doesn't recognize this model's architecture.\n" +
|
|
40
|
+
'Settings → This Mac → Advanced → Reset venv, then retry. If it still fails, the catalog entry may need a newer mlx-vlm.');
|
|
41
|
+
}
|
|
42
|
+
if (/out of memory|mps backend|allocation failed/i.test(body)) {
|
|
43
|
+
return ('[Mac AI] Not enough unified memory to load this model.\n' +
|
|
44
|
+
'Try the E2B variant, close other memory-heavy apps, or restart this Mac to release cached memory.');
|
|
45
|
+
}
|
|
46
|
+
if (/FileNotFoundError|No such file or directory/i.test(body)) {
|
|
47
|
+
const filename = body.match(/['"]?([^'"\s]+\.(?:json|safetensors|jinja|model))['"]?/)?.[1];
|
|
48
|
+
return `[Mac AI] The local model is missing a file the engine needs${filename ? ` (\`${filename}\`)` : ''}.\nSettings → This Mac → Delete the local model, then download it again.`;
|
|
49
|
+
}
|
|
50
|
+
const detail = tryParseJsonDetail(body) ?? body.slice(0, 200);
|
|
51
|
+
return `[Mac AI] engine returned ${status} ${statusText}: ${detail}`;
|
|
52
|
+
}
|
|
53
|
+
/** Detect an engine-side HTTP response stream closing mid-flight. */
|
|
54
|
+
export function isMidStreamConnectionDrop(err) {
|
|
55
|
+
if (!(err instanceof Error))
|
|
56
|
+
return false;
|
|
57
|
+
if (err.name === 'AbortError')
|
|
58
|
+
return false;
|
|
59
|
+
const haystacks = [err.message];
|
|
60
|
+
const cause = err.cause;
|
|
61
|
+
if (cause instanceof Error)
|
|
62
|
+
haystacks.push(cause.message);
|
|
63
|
+
const causeCode = cause && typeof cause === 'object' && 'code' in cause
|
|
64
|
+
? String(cause.code)
|
|
65
|
+
: '';
|
|
66
|
+
if (causeCode)
|
|
67
|
+
haystacks.push(causeCode);
|
|
68
|
+
const blob = haystacks.join(' ').toLowerCase();
|
|
69
|
+
return (/\bterminated\b/.test(blob) ||
|
|
70
|
+
blob.includes('other side closed') ||
|
|
71
|
+
blob.includes('premature close') ||
|
|
72
|
+
blob.includes('und_err_socket') ||
|
|
73
|
+
blob.includes('econnreset'));
|
|
74
|
+
}
|
|
75
|
+
/** Format a tokens-per-second number for the in-chat status line. */
|
|
76
|
+
export function formatTps(rate) {
|
|
77
|
+
if (rate >= 10)
|
|
78
|
+
return rate.toFixed(0);
|
|
79
|
+
return rate.toFixed(1);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* What a person reads when a turn never started answering. Written for the
|
|
83
|
+
* person, not the engineer: no "first byte", "prefill", token counts, or
|
|
84
|
+
* server names. The engine-side facts behind each case go to the service
|
|
85
|
+
* log instead, where someone diagnosing it will look.
|
|
86
|
+
*/
|
|
87
|
+
export function buildPreFirstByteAbortMessage(lastPrefill, busyElsewhere) {
|
|
88
|
+
// Checked first, and only when THIS request saw no prefill of its own:
|
|
89
|
+
// an engine that was demonstrably prefilling someone else's turn is
|
|
90
|
+
// neither loading nor unhealthy, and saying so sends the reader off to
|
|
91
|
+
// restart a perfectly good engine. Wild-caught on a restart that resumed
|
|
92
|
+
// four sessions at once — one turn waited 10m36s behind a neighbour's
|
|
93
|
+
// 124s prefill and was told the model might be sick.
|
|
94
|
+
if (!lastPrefill && busyElsewhere) {
|
|
95
|
+
const what = busyElsewhere.detail ? ` (${busyElsewhere.detail})` : '';
|
|
96
|
+
log.warn(`pre-first-byte abort: waited behind another session's prefill${what} last seen ${busyElsewhere.secondsAgo}s ago`);
|
|
97
|
+
return '[Mac AI] This message was waiting for the AI on your Mac to finish another chat, and it never got its turn. Nothing is wrong with the AI — send the message again. When several gezels are working at once, they take turns.';
|
|
98
|
+
}
|
|
99
|
+
if (lastPrefill && lastPrefill.progress > 0) {
|
|
100
|
+
const pct = Math.round(lastPrefill.progress * 100);
|
|
101
|
+
log.warn(`pre-first-byte abort: own prefill stalled at ${pct}% (${lastPrefill.detail || '-'})`);
|
|
102
|
+
return `[Mac AI] The AI on your Mac stopped partway through reading this conversation (${pct}% done). It may be too long for this model to get through in time. Try again, start a new chat, or switch to a faster model.`;
|
|
103
|
+
}
|
|
104
|
+
if (lastPrefill?.detail) {
|
|
105
|
+
log.warn(`pre-first-byte abort: still prefilling ${lastPrefill.detail} at the deadline`);
|
|
106
|
+
return '[Mac AI] The AI on your Mac was still reading this conversation when it ran out of time. Try again — the second try is quicker, because it keeps what it has already read — or switch to a faster model.';
|
|
107
|
+
}
|
|
108
|
+
log.warn('pre-first-byte abort: no engine activity observed for this request');
|
|
109
|
+
return "[Mac AI] The AI on your Mac didn't start answering. It may still be loading the model. Try again in a moment; if it keeps happening, quit and reopen Gezel.";
|
|
110
|
+
}
|
|
111
|
+
/** Build the user-facing message for an engine stream that died mid-turn. */
|
|
112
|
+
export function buildMidStreamDropMessage(charsReceived, plannedStop, engineStillRunning) {
|
|
113
|
+
const got = charsReceived > 0 ? `after ${charsReceived} chars` : 'before any output';
|
|
114
|
+
if (plannedStop) {
|
|
115
|
+
return `[Mac AI] this turn stopped ${got} because Gezel unloaded the on-device engine while it was answering. Changing your settings restarts chat sessions so the new settings apply, and unloading a model in Settings → On-device or quitting the app does the same. The model didn't crash — send the message again to redo this turn.`;
|
|
116
|
+
}
|
|
117
|
+
if (engineStillRunning) {
|
|
118
|
+
return `[Mac AI] the connection to the on-device engine dropped ${got}, but the engine is still running — so it did not crash or run out of memory. Something closed the HTTP request underneath the turn. Send the message again; if it keeps happening at roughly the same elapsed time each turn, that points at a timeout rather than the model, so capture the service log for that window.`;
|
|
119
|
+
}
|
|
120
|
+
return `[Mac AI] the on-device engine dropped the connection mid-turn (${got}). This usually means the mlx server crashed, ran out of memory, or was restarted while the turn was streaming — this turn's work was lost. Retry the turn; if it keeps happening, restart the engine in Settings → On-device.`;
|
|
121
|
+
}
|
|
122
|
+
/** Estimate request tokens from message bodies and serialized tool schemas. */
|
|
123
|
+
export function estimatePromptTokens(messages, tools) {
|
|
124
|
+
let chars = 0;
|
|
125
|
+
try {
|
|
126
|
+
chars += JSON.stringify(messages)?.length ?? 0;
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
/* circular or unstringifiable */
|
|
130
|
+
}
|
|
131
|
+
if (tools) {
|
|
132
|
+
try {
|
|
133
|
+
chars += JSON.stringify(tools)?.length ?? 0;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
/* circular or unstringifiable */
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return Math.ceil(chars / 4);
|
|
140
|
+
}
|
|
141
|
+
export const PRE_FIRST_BYTE_BASE_MS = 300_000;
|
|
142
|
+
const PRE_FIRST_BYTE_BASELINE_TOKENS = 8_000;
|
|
143
|
+
const PRE_FIRST_BYTE_MS_PER_1K_TOKENS = 12_000;
|
|
144
|
+
const PRE_FIRST_BYTE_CAP_MS = 900_000;
|
|
145
|
+
/** Scale the pre-first-byte watchdog for slow, large-context MLX prefills. */
|
|
146
|
+
export function computePreFirstByteBudgetMs(approxPromptTokens) {
|
|
147
|
+
const over = Math.max(0, approxPromptTokens - PRE_FIRST_BYTE_BASELINE_TOKENS);
|
|
148
|
+
const scaled = PRE_FIRST_BYTE_BASE_MS + (over / 1000) * PRE_FIRST_BYTE_MS_PER_1K_TOKENS;
|
|
149
|
+
return Math.min(PRE_FIRST_BYTE_CAP_MS, Math.round(scaled));
|
|
150
|
+
}
|
|
151
|
+
function tryParseJsonDetail(body) {
|
|
152
|
+
try {
|
|
153
|
+
const obj = JSON.parse(body);
|
|
154
|
+
if (obj && typeof obj === 'object' && 'detail' in obj && typeof obj.detail === 'string') {
|
|
155
|
+
return obj.detail.slice(0, 200);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
/* not JSON */
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** Sidecar-visible drafter selection, or null when speculation stays off. */
|
|
2
|
+
export interface SpecDrafterPlan {
|
|
3
|
+
/** Absolute path passed to the sidecar as `--spec-draft-model`. */
|
|
4
|
+
dir: string;
|
|
5
|
+
/** On-disk size, added to the resident-weights figure for memory planning. */
|
|
6
|
+
bytes: number;
|
|
7
|
+
/** Why this drafter was chosen — for the launch log. */
|
|
8
|
+
source: 'configured' | 'convention';
|
|
9
|
+
}
|
|
10
|
+
/** Directory name a model's drafter is expected to occupy. */
|
|
11
|
+
export declare function drafterDirFor(modelDir: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the drafter for a model build.
|
|
14
|
+
*
|
|
15
|
+
* `configured` wins outright (an operator pointing at a shared or
|
|
16
|
+
* hand-built drafter), otherwise the convention path is used when it
|
|
17
|
+
* exists. Returns null when speculation is disabled or nothing is present.
|
|
18
|
+
* Never throws: an unreadable drafter directory is a reason to serve
|
|
19
|
+
* normally, not a reason to fail a launch.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveSpecDrafter(opts: {
|
|
22
|
+
modelDir?: string;
|
|
23
|
+
configuredPath?: string | null;
|
|
24
|
+
enabled?: boolean | null;
|
|
25
|
+
}): SpecDrafterPlan | null;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where an MTP drafter lives, and what it costs to keep resident.
|
|
3
|
+
*
|
|
4
|
+
* Speculative decoding is on by default, but "on" can only mean "on when a
|
|
5
|
+
* drafter for this model is actually present": the drafter is a separate
|
|
6
|
+
* ~0.8 GB artifact split out of an MTP-preserving source checkpoint, and no
|
|
7
|
+
* MLX conversion carries the `mtp.*` tensors it is made of (mlx-lm's
|
|
8
|
+
* `sanitize()` strips them). So the launcher looks beside the model tree
|
|
9
|
+
* instead of requiring configuration, and a model with no drafter simply
|
|
10
|
+
* serves normally — the sidecar's probe logs one `[spec] off` line and the
|
|
11
|
+
* turn takes the ordinary path.
|
|
12
|
+
*
|
|
13
|
+
* Convention: `<engines>/mlx/drafters/<modelDirName>-mtp`, a sibling of
|
|
14
|
+
* `<engines>/mlx/models/<modelDirName>`. Keyed on the model directory, not a
|
|
15
|
+
* base-model guess, because string-surgering a quantization suffix off an id
|
|
16
|
+
* is how a drafter ends up silently paired with the wrong checkpoint. A
|
|
17
|
+
* drafter genuinely shared across quantizations of one base model is a
|
|
18
|
+
* symlink (or an explicit `mlxSpecDraftModelPath`), which keeps the sharing
|
|
19
|
+
* decision the operator's rather than a parser's.
|
|
20
|
+
*
|
|
21
|
+
* The bytes matter as much as the path. MLX slot planning reserves memory
|
|
22
|
+
* from the target's weights, and an unpriced second resident model is
|
|
23
|
+
* exactly the over-commit that makes a Metal command-buffer OOM abort the
|
|
24
|
+
* whole python process. `drafterBytes` feeds the same weights figure the
|
|
25
|
+
* ceiling math already uses.
|
|
26
|
+
*/
|
|
27
|
+
import { readdirSync, statSync } from 'node:fs';
|
|
28
|
+
import { basename, join, resolve } from 'node:path';
|
|
29
|
+
/** Directory name a model's drafter is expected to occupy. */
|
|
30
|
+
export function drafterDirFor(modelDir) {
|
|
31
|
+
return resolve(modelDir, '..', '..', 'drafters', `${basename(modelDir)}-mtp`);
|
|
32
|
+
}
|
|
33
|
+
function directorySize(dir) {
|
|
34
|
+
let total = 0;
|
|
35
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
36
|
+
if (entry.isDirectory()) {
|
|
37
|
+
total += directorySize(join(dir, entry.name));
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (!entry.isFile())
|
|
41
|
+
continue;
|
|
42
|
+
total += statSync(join(dir, entry.name)).size;
|
|
43
|
+
}
|
|
44
|
+
return total;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the drafter for a model build.
|
|
48
|
+
*
|
|
49
|
+
* `configured` wins outright (an operator pointing at a shared or
|
|
50
|
+
* hand-built drafter), otherwise the convention path is used when it
|
|
51
|
+
* exists. Returns null when speculation is disabled or nothing is present.
|
|
52
|
+
* Never throws: an unreadable drafter directory is a reason to serve
|
|
53
|
+
* normally, not a reason to fail a launch.
|
|
54
|
+
*/
|
|
55
|
+
export function resolveSpecDrafter(opts) {
|
|
56
|
+
if (opts.enabled === false)
|
|
57
|
+
return null;
|
|
58
|
+
const candidate = opts.configuredPath?.trim()
|
|
59
|
+
? { dir: opts.configuredPath.trim(), source: 'configured' }
|
|
60
|
+
: opts.modelDir
|
|
61
|
+
? { dir: drafterDirFor(opts.modelDir), source: 'convention' }
|
|
62
|
+
: null;
|
|
63
|
+
if (!candidate)
|
|
64
|
+
return null;
|
|
65
|
+
try {
|
|
66
|
+
if (!statSync(candidate.dir).isDirectory())
|
|
67
|
+
return null;
|
|
68
|
+
return { ...candidate, bytes: directorySize(candidate.dir) };
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classify lines from `mlx_vlm.server`'s stdout/stderr into structured
|
|
3
|
+
* `EnginePhaseEvent`s so the UI surfaces "loading model N%" instead of
|
|
4
|
+
* a silent spinner.
|
|
5
|
+
*
|
|
6
|
+
* `mlx_vlm.server` logs look like:
|
|
7
|
+
*
|
|
8
|
+
* INFO: Started server process [12345]
|
|
9
|
+
* INFO: Waiting for application startup.
|
|
10
|
+
* INFO: Application startup complete.
|
|
11
|
+
* INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
|
|
12
|
+
* INFO: Loading model: /path/to/model
|
|
13
|
+
* INFO: Model loaded
|
|
14
|
+
* INFO: 127.0.0.1:58420 - "POST /v1/chat/completions HTTP/1.1" 200 OK
|
|
15
|
+
*
|
|
16
|
+
* The format isn't guaranteed stable across mlx-vlm versions, so the
|
|
17
|
+
* matchers are intentionally permissive: we look for substrings rather
|
|
18
|
+
* than exact lines, and silently return null for anything we don't
|
|
19
|
+
* recognize. Unknown lines still flow to the log file via the
|
|
20
|
+
* supervisor's `onLog` — we just don't fan them out as phase events.
|
|
21
|
+
*/
|
|
22
|
+
import type { EnginePhaseEvent } from '../streaming-session.js';
|
|
23
|
+
/**
|
|
24
|
+
* The sidecar's wave-scheduling markers (see python/wave_policy.py):
|
|
25
|
+
*
|
|
26
|
+
* [batch] waiting cache=<id> ahead=<n> behind=<id,id|->
|
|
27
|
+
* [batch] paused cache=<id> for=<id,id|->
|
|
28
|
+
* [batch] admitted cache=<id> waited=<seconds>s
|
|
29
|
+
*
|
|
30
|
+
* Each names exactly one request, so it is always delivered to that session
|
|
31
|
+
* alone. The `[batch] queued …` line the sidecar prints beside the first
|
|
32
|
+
* `waiting` marker is diagnostic only and deliberately does not match.
|
|
33
|
+
*/
|
|
34
|
+
export declare function classifyMlxQueueLine(line: string): EnginePhaseEvent | null;
|
|
35
|
+
export declare function classifyMlxStartupLine(line: string): EnginePhaseEvent | null;
|
|
36
|
+
/**
|
|
37
|
+
* Detect fatal Python exceptions emitted by `mlx_vlm.server` — model
|
|
38
|
+
* load failures, OOM, missing dependencies, tokenizer mismatches.
|
|
39
|
+
* The server's httpd keeps running after the `_generate` worker
|
|
40
|
+
* thread dies, so `/health` lies and chat requests hang — we need a
|
|
41
|
+
* log-side signal to fail fast instead of trusting the health probe.
|
|
42
|
+
*
|
|
43
|
+
* Specifically catches the `NameError: ...` / `ValueError: ...` / etc.
|
|
44
|
+
* leaf line of a traceback — they're one-liners that appear on every
|
|
45
|
+
* Python exception, and the message after the colon is the most
|
|
46
|
+
* useful bit to show a user. Returns null for lines that aren't the
|
|
47
|
+
* leaf exception line, including ordinary warnings and info logs.
|
|
48
|
+
*
|
|
49
|
+
* Specific recognized hints turn into suggested recovery actions the
|
|
50
|
+
* UI can surface inline. For anything we don't recognize we still
|
|
51
|
+
* bubble the raw `<ErrorClass>: <message>` up so the user can copy
|
|
52
|
+
* it into a search.
|
|
53
|
+
*/
|
|
54
|
+
export interface MlxFatalError {
|
|
55
|
+
category: 'model-arch-mismatch' | 'model-arch-unsupported' | 'missing-dependency' | 'out-of-memory' | 'tokenizer-mismatch' | 'other';
|
|
56
|
+
message: string;
|
|
57
|
+
/** Short human-readable hint on how to recover, when we recognize the pattern. */
|
|
58
|
+
hint?: string;
|
|
59
|
+
}
|
|
60
|
+
export declare function classifyMlxFatalErrorLine(line: string): MlxFatalError | null;
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classify lines from `mlx_vlm.server`'s stdout/stderr into structured
|
|
3
|
+
* `EnginePhaseEvent`s so the UI surfaces "loading model N%" instead of
|
|
4
|
+
* a silent spinner.
|
|
5
|
+
*
|
|
6
|
+
* `mlx_vlm.server` logs look like:
|
|
7
|
+
*
|
|
8
|
+
* INFO: Started server process [12345]
|
|
9
|
+
* INFO: Waiting for application startup.
|
|
10
|
+
* INFO: Application startup complete.
|
|
11
|
+
* INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
|
|
12
|
+
* INFO: Loading model: /path/to/model
|
|
13
|
+
* INFO: Model loaded
|
|
14
|
+
* INFO: 127.0.0.1:58420 - "POST /v1/chat/completions HTTP/1.1" 200 OK
|
|
15
|
+
*
|
|
16
|
+
* The format isn't guaranteed stable across mlx-vlm versions, so the
|
|
17
|
+
* matchers are intentionally permissive: we look for substrings rather
|
|
18
|
+
* than exact lines, and silently return null for anything we don't
|
|
19
|
+
* recognize. Unknown lines still flow to the log file via the
|
|
20
|
+
* supervisor's `onLog` — we just don't fan them out as phase events.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* The sidecar's wave-scheduling markers (see python/wave_policy.py):
|
|
24
|
+
*
|
|
25
|
+
* [batch] waiting cache=<id> ahead=<n> behind=<id,id|->
|
|
26
|
+
* [batch] paused cache=<id> for=<id,id|->
|
|
27
|
+
* [batch] admitted cache=<id> waited=<seconds>s
|
|
28
|
+
*
|
|
29
|
+
* Each names exactly one request, so it is always delivered to that session
|
|
30
|
+
* alone. The `[batch] queued …` line the sidecar prints beside the first
|
|
31
|
+
* `waiting` marker is diagnostic only and deliberately does not match.
|
|
32
|
+
*/
|
|
33
|
+
export function classifyMlxQueueLine(line) {
|
|
34
|
+
const m = line.match(/\[batch\] (waiting|paused|admitted) cache=(\S+)(?: ahead=(\d+))?(?: (?:behind|for)=(\S+))?/);
|
|
35
|
+
if (!m)
|
|
36
|
+
return null;
|
|
37
|
+
const state = m[1];
|
|
38
|
+
const cacheId = m[2];
|
|
39
|
+
const ids = m[4] && m[4] !== '-' ? m[4].split(',').filter(Boolean) : [];
|
|
40
|
+
return {
|
|
41
|
+
provider: 'mlx',
|
|
42
|
+
phase: 'prefill',
|
|
43
|
+
cacheId,
|
|
44
|
+
engineQueue: {
|
|
45
|
+
state,
|
|
46
|
+
...(state === 'admitted' ? {} : { behind: ids }),
|
|
47
|
+
...(m[3] !== undefined ? { ahead: Number.parseInt(m[3], 10) } : {}),
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function classifyMlxStartupLine(line) {
|
|
52
|
+
if (line.includes('memory-admission:'))
|
|
53
|
+
return { provider: 'mlx', phase: 'starting', detail: 'Waiting for available memory' };
|
|
54
|
+
const lower = line.toLowerCase();
|
|
55
|
+
// ── Process starting ──
|
|
56
|
+
if (/started server process/i.test(line) || /waiting for application startup/i.test(line)) {
|
|
57
|
+
// Phase `detail` is what the engine pill renders verbatim
|
|
58
|
+
// (uppercased by CSS). Keep it human-readable — "Mac AI" beats
|
|
59
|
+
// shipping "mlx_vlm.server" to the user even though that's the
|
|
60
|
+
// literal binary name. The internal `provider: 'mlx'` discriminator
|
|
61
|
+
// and the supervisor's log prefix are unchanged.
|
|
62
|
+
return { provider: 'mlx', phase: 'starting', detail: 'Mac AI server starting' };
|
|
63
|
+
}
|
|
64
|
+
// ── Chunked prefill progress ──
|
|
65
|
+
// mlx_vlm prints a tqdm bar to stdout once chunked prefill kicks in
|
|
66
|
+
// for prompts longer than `--prefill-step-size`. The format is:
|
|
67
|
+
//
|
|
68
|
+
// Prefill: 8%|██▍ | 2048/24726 [00:08<01:33, 242.65tok/s]
|
|
69
|
+
//
|
|
70
|
+
// Each batch flushes a fresh line because tqdm uses `\r` to overwrite
|
|
71
|
+
// and the supervisor splits chunks on `\n` (not `\r`), so we see
|
|
72
|
+
// every step. Surface this as a `prefill` phase event with `progress`
|
|
73
|
+
// set so the UI can render a real percentage during the long silent
|
|
74
|
+
// window before the first generated token. The 0% line ships with
|
|
75
|
+
// `?tok/s` — handle the missing rate gracefully.
|
|
76
|
+
const prefill = line.match(/^(?:\[[^\]]+\]\s+)?Prefill:\s*(\d+)%[^|]*\|[^|]*\|\s*(\d+)\/(\d+)\s*\[[^,\]]*(?:,\s*([\d.]+)tok\/s)?/i);
|
|
77
|
+
if (prefill) {
|
|
78
|
+
const pct = Number.parseInt(prefill[1] ?? '0', 10);
|
|
79
|
+
const cur = Number.parseInt(prefill[2] ?? '0', 10);
|
|
80
|
+
const total = Number.parseInt(prefill[3] ?? '0', 10);
|
|
81
|
+
const tps = prefill[4] ? Number.parseFloat(prefill[4]) : null;
|
|
82
|
+
const detailParts = [
|
|
83
|
+
`${cur.toLocaleString('en-US')} / ${total.toLocaleString('en-US')} tokens`,
|
|
84
|
+
];
|
|
85
|
+
if (tps !== null && Number.isFinite(tps) && tps > 0) {
|
|
86
|
+
detailParts.push(`${tps >= 10 ? tps.toFixed(0) : tps.toFixed(1)} tok/s`);
|
|
87
|
+
}
|
|
88
|
+
// `cache=<id>` names the sub this marker belongs to. Matched separately
|
|
89
|
+
// from the tqdm shape above so the bar itself keeps parsing from engines
|
|
90
|
+
// that don't emit the tag (older sidecars, the aggregate fallback path).
|
|
91
|
+
const owner = line.match(/\bcache=(\S+)/);
|
|
92
|
+
return {
|
|
93
|
+
provider: 'mlx',
|
|
94
|
+
phase: 'prefill',
|
|
95
|
+
detail: detailParts.join(' · '),
|
|
96
|
+
progress: Math.max(0, Math.min(1, pct / 100)),
|
|
97
|
+
...(owner?.[1] ? { cacheId: owner[1] } : {}),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
// ── Loading model ──
|
|
101
|
+
// Match phrases seen in the wild: "Loading model", "Loading weights",
|
|
102
|
+
// "Fetching", "Loading tokenizer". Don't try to parse percentages —
|
|
103
|
+
// mlx-vlm doesn't emit them; UI just shows an indefinite "Loading".
|
|
104
|
+
if (/loading model|loading weights|loading tokenizer|fetching/i.test(lower)) {
|
|
105
|
+
return { provider: 'mlx', phase: 'loading_model', detail: 'Loading weights' };
|
|
106
|
+
}
|
|
107
|
+
// ── Ready ──
|
|
108
|
+
// "Model loaded" (mlx-vlm), "Uvicorn running" (the HTTP server's own
|
|
109
|
+
// readiness line), or "Application startup complete" — any is proof
|
|
110
|
+
// the engine can accept traffic.
|
|
111
|
+
if (/model loaded/i.test(line) ||
|
|
112
|
+
/uvicorn running on/i.test(line) ||
|
|
113
|
+
/application startup complete/i.test(line)) {
|
|
114
|
+
return { provider: 'mlx', phase: 'ready' };
|
|
115
|
+
}
|
|
116
|
+
// ── Cache events (Phase 2 wrapped server) ──
|
|
117
|
+
// The wrapper logs `[cache] hit cache_id=... prior_tokens=N`,
|
|
118
|
+
// `[cache] miss cache_id=...`, `[cache] saved cache_id=... tokens=N`,
|
|
119
|
+
// `[cache] evicted cache_id=...`, `[cache] warmed cache_id=...`. We
|
|
120
|
+
// surface hits and warms as `ready` phase events with a friendly
|
|
121
|
+
// detail so the engine pill briefly flashes "Cache hit · 24K tokens
|
|
122
|
+
// reused" instead of staying silent on near-instant turns. Saved /
|
|
123
|
+
// evicted events are bookkeeping only — no UI signal needed.
|
|
124
|
+
const hit = line.match(/\[cache\] hit cache_id=\S+ prior_tokens=(\d+)/);
|
|
125
|
+
if (hit) {
|
|
126
|
+
return {
|
|
127
|
+
provider: 'mlx',
|
|
128
|
+
phase: 'ready',
|
|
129
|
+
detail: `Cache hit · reusing ${Number.parseInt(hit[1] ?? '0', 10).toLocaleString('en-US')} tokens`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const warmed = line.match(/\[cache\] warmed cache_id=\S+ tokens=(\d+)/);
|
|
133
|
+
if (warmed) {
|
|
134
|
+
return {
|
|
135
|
+
provider: 'mlx',
|
|
136
|
+
phase: 'ready',
|
|
137
|
+
detail: `Cache warmed · ${Number.parseInt(warmed[1] ?? '0', 10).toLocaleString('en-US')} tokens ready`,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
export function classifyMlxFatalErrorLine(line) {
|
|
143
|
+
// ── "X requires the Y library" body line ──
|
|
144
|
+
// transformers' `requires_backends` raises ImportError with the leaf
|
|
145
|
+
// class name on one line ("ImportError:") and the actual hint on
|
|
146
|
+
// following lines: "Qwen3VLVideoProcessor requires the PyTorch
|
|
147
|
+
// library but it was not found in your environment." We match the
|
|
148
|
+
// body line directly because the leaf line is empty after the colon
|
|
149
|
+
// and the classifier needs a single-line signal — there's no
|
|
150
|
+
// multi-line state in the supervisor's per-line dispatch loop. This
|
|
151
|
+
// catches the most common "model X needs torch/torchvision" path
|
|
152
|
+
// even when the bare `ImportError:` line is empty.
|
|
153
|
+
const requiresBackend = line.match(/^(?:\[(?:mlx|mlx_v?lm\.server)\]\s+)?(\S+) requires the (\S+) library but it was not found/);
|
|
154
|
+
if (requiresBackend) {
|
|
155
|
+
const className = requiresBackend[1] ?? '';
|
|
156
|
+
const backend = requiresBackend[2] ?? '';
|
|
157
|
+
return {
|
|
158
|
+
category: 'missing-dependency',
|
|
159
|
+
message: `ImportError: ${className} requires the ${backend} library but it was not found`,
|
|
160
|
+
hint: `This model needs the ${backend} backend, which isn't in the on-device venv. Pick a different model from the catalog (the recommended ones don't need ${backend}), or open Settings → This Mac → Advanced and add ${backend.toLowerCase()} to the package spec then Reset venv.`,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
// Match the leaf exception line: optional supervisor `[mlx]` prefix
|
|
164
|
+
// OR mlx-vlm's own `[mlx_lm.server]` / `[mlx_vlm.server]` prefix
|
|
165
|
+
// (depending on whether the supervisor or mlx-vlm tagged the line)
|
|
166
|
+
// then `<ClassName>Error: <message>`. The supervisor's `[mlx]`
|
|
167
|
+
// prefix is the common case in production; the mlx-vlm prefixes
|
|
168
|
+
// appear when the inner process logs through its own logger.
|
|
169
|
+
const match = line.match(/^(?:\[(?:mlx|mlx_v?lm\.server)\]\s+)?([A-Z][A-Za-z]+Error):\s+(.*)$/);
|
|
170
|
+
if (!match)
|
|
171
|
+
return null;
|
|
172
|
+
const errorClass = match[1] ?? '';
|
|
173
|
+
const message = (match[2] ?? '').trim();
|
|
174
|
+
if (!errorClass)
|
|
175
|
+
return null;
|
|
176
|
+
// Empty-message ImportError is a real signal (transformers'
|
|
177
|
+
// `requires_backends` produces this) — surface it so we don't keep
|
|
178
|
+
// accepting requests against a dead engine. The followup "X requires
|
|
179
|
+
// the Y library" line above gives a more specific message; this
|
|
180
|
+
// branch is a fallback for cases where that pattern doesn't appear
|
|
181
|
+
// (or arrives after we've already locked in this generic message).
|
|
182
|
+
if (!message) {
|
|
183
|
+
if (errorClass === 'ImportError' || errorClass === 'ModuleNotFoundError') {
|
|
184
|
+
return {
|
|
185
|
+
category: 'missing-dependency',
|
|
186
|
+
message: `${errorClass} (no detail emitted)`,
|
|
187
|
+
hint: 'The on-device runtime is missing a required Python module. Try a different model from the catalog, or Settings → This Mac → Advanced → Reset venv.',
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
// ── Model architecture mismatch ──
|
|
193
|
+
// Two distinct flavors hit this branch, both surfaced as the same
|
|
194
|
+
// strict-load `ValueError` with a list of unrecognized tensors:
|
|
195
|
+
// 1. Older mlx-vlm builds that don't know a brand-new model
|
|
196
|
+
// class at all (the original Gemma 3n / `gemma3n` case).
|
|
197
|
+
// 2. A specific quant repacker (e.g. lmstudio-community's Gemma 4
|
|
198
|
+
// MLX-4bit) chose to quantize a layer that mlx-vlm's model
|
|
199
|
+
// defines as a custom non-quantizable class — so the weights
|
|
200
|
+
// ship `<layer>.scales` / `<layer>.biases` that mlx_vlm has
|
|
201
|
+
// no slot for. The fix in that case is to switch to a quant
|
|
202
|
+
// that left the custom layer alone, not to bump the package.
|
|
203
|
+
// The hint covers both paths — bump mlx-vlm first, then if still
|
|
204
|
+
// broken delete the install and pick a different catalog entry.
|
|
205
|
+
if (errorClass === 'ValueError' && /Received \d+ parameters not in model/i.test(message)) {
|
|
206
|
+
return {
|
|
207
|
+
category: 'model-arch-mismatch',
|
|
208
|
+
message: `${errorClass}: ${message}`,
|
|
209
|
+
hint: "The on-device runtime doesn't recognize this model's architecture (or this quant's layer layout). Try, in order:\n 1. Settings → This Mac → Advanced: leave the package spec blank for the latest release, then Reset venv.\n 2. If the error persists, the model file layout itself isn't compatible — delete the local model and pick a different catalog entry.",
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
// ── Model architecture unsupported (checkpoint MISSING params) ──
|
|
213
|
+
// The mirror of the branch above: `ValueError: Missing N parameters`
|
|
214
|
+
// means mlx-vlm built a model graph with slots the checkpoint doesn't
|
|
215
|
+
// fill — i.e. the loader's model class can't fully represent this
|
|
216
|
+
// architecture yet, so no quant of it will load. Distinct hint from the
|
|
217
|
+
// extra-params case: the fix is an mlx-vlm that adds the architecture,
|
|
218
|
+
// not a different quant — and until then the model is llama.cpp-only.
|
|
219
|
+
if (errorClass === 'ValueError' && /Missing \d+ parameters?/i.test(message)) {
|
|
220
|
+
return {
|
|
221
|
+
category: 'model-arch-unsupported',
|
|
222
|
+
message: `${errorClass}: ${message}`,
|
|
223
|
+
hint: "The on-device runtime (mlx-vlm) can't fully build this model's architecture — the loader expects parameters this checkpoint doesn't provide, so no quant of it will load on MLX yet. Try, in order:\n 1. Settings → This Mac → Advanced: blank the package spec for the latest mlx-vlm, then Reset venv (a newer release may add support).\n 2. If it persists, run this model via llama instead — same weights, different engine — or pick a different catalog entry.",
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
// ── Missing Python dependency ──
|
|
227
|
+
if (errorClass === 'ImportError' || errorClass === 'ModuleNotFoundError') {
|
|
228
|
+
return {
|
|
229
|
+
category: 'missing-dependency',
|
|
230
|
+
message: `${errorClass}: ${message}`,
|
|
231
|
+
hint: 'The on-device runtime is missing a required component. Reset venv from Settings → This Mac → Advanced to re-provision it.',
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
// ── Out of memory ──
|
|
235
|
+
if (errorClass === 'MemoryError' || /out of memory|mps backend out of memory/i.test(message)) {
|
|
236
|
+
return {
|
|
237
|
+
category: 'out-of-memory',
|
|
238
|
+
message: `${errorClass}: ${message}`,
|
|
239
|
+
hint: 'Not enough unified memory for this model. Try a smaller variant (E2B instead of E4B) or close other memory-heavy apps.',
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
// ── Tokenizer / chat-template mismatch ──
|
|
243
|
+
if (/tokenizer|chat.?template/i.test(message)) {
|
|
244
|
+
return {
|
|
245
|
+
category: 'tokenizer-mismatch',
|
|
246
|
+
message: `${errorClass}: ${message}`,
|
|
247
|
+
hint: 'The tokenizer_config is malformed or missing the expected chat template. Try deleting the local model and downloading it again from Settings → This Mac.',
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
category: 'other',
|
|
252
|
+
message: `${errorClass}: ${message}`,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { findTruncatedJsonEnvelope } from '../local-tool-call-salvage.js';
|
|
2
|
+
import type { MlxToolCallAccumulator } from './tool-call-protocol.js';
|
|
3
|
+
type SalvagedToolCalls = ReturnType<MlxToolCallAccumulator['finalize']>;
|
|
4
|
+
/** What the textual passes recovered from one generation, by the shape that matched. */
|
|
5
|
+
export interface TextualToolCallSalvage {
|
|
6
|
+
/** The visible text with every salvaged call (and a truncated tail) stripped. */
|
|
7
|
+
turnContent: string;
|
|
8
|
+
proseRepaired: SalvagedToolCalls;
|
|
9
|
+
xmlTagRepaired: SalvagedToolCalls;
|
|
10
|
+
claudeInvokeRepaired: SalvagedToolCalls;
|
|
11
|
+
glmRepaired: SalvagedToolCalls;
|
|
12
|
+
hermesRepaired: SalvagedToolCalls;
|
|
13
|
+
shellRepaired: SalvagedToolCalls;
|
|
14
|
+
envelopeRepaired: SalvagedToolCalls;
|
|
15
|
+
envelopeTruncated: ReturnType<typeof findTruncatedJsonEnvelope>;
|
|
16
|
+
/** A JSON envelope naming a tool this turn does not have. */
|
|
17
|
+
unknownCall: {
|
|
18
|
+
wanted: string;
|
|
19
|
+
suggestion: string | null;
|
|
20
|
+
} | null;
|
|
21
|
+
truncatedSalvage: SalvagedToolCalls;
|
|
22
|
+
bareInvokeRepaired: SalvagedToolCalls;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The salvage passes that read tool calls out of a generation's visible text,
|
|
26
|
+
* run after the structured calls and the stripped-marker repair. Each pass is
|
|
27
|
+
* gated on every earlier one having found nothing, so one intent never fires
|
|
28
|
+
* twice. Truncated calls are reported through `truncatedCallIds` and
|
|
29
|
+
* `droppedTruncatedPayloadCalls`, which the tool loop reads afterwards.
|
|
30
|
+
*/
|
|
31
|
+
export declare function salvageTextualToolCalls(input: {
|
|
32
|
+
turnContent: string;
|
|
33
|
+
knownToolNames: Set<string>;
|
|
34
|
+
seq: number;
|
|
35
|
+
turn: number;
|
|
36
|
+
structuredCalls: SalvagedToolCalls;
|
|
37
|
+
repairedCalls: SalvagedToolCalls;
|
|
38
|
+
codeBlockRepaired: SalvagedToolCalls;
|
|
39
|
+
truncatedCallIds: Set<string>;
|
|
40
|
+
droppedTruncatedPayloadCalls: Array<{
|
|
41
|
+
name: string;
|
|
42
|
+
args: Record<string, unknown>;
|
|
43
|
+
}>;
|
|
44
|
+
emitWarning: (message: string) => void;
|
|
45
|
+
}): TextualToolCallSalvage;
|
|
46
|
+
export {};
|