@bendyline/gezel-inference 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +13 -2
- package/dist/cache/adapter.d.ts +115 -0
- package/dist/cache/adapter.js +23 -0
- package/dist/cache/budget.d.ts +15 -0
- package/dist/cache/budget.js +31 -0
- package/dist/cache/controller.d.ts +205 -0
- package/dist/cache/controller.js +377 -0
- package/dist/catalog/LICENSE +21 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/manifest.json +146 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/manifest.json +146 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.2/manifest.json +15 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/manifest.json +166 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/versions/1.1.0/manifest.json +62 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/versions/1.1.1/manifest.json +61 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-mxfp4/manifest.json +125 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-mxfp4/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/manifest.json +125 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/versions/1.1.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2q4/manifest.json +126 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2q4/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/manifest.json +318 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/versions/1.0.0/manifest.json +225 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/versions/1.1.0/manifest.json +225 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/manifest.json +249 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.0.0/manifest.json +70 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.2/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.3/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.2.0/manifest.json +98 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/manifest.json +228 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.2/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.3/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.1.0/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/manifest.json +220 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.1.0/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.0/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.1/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.2/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.3.0/manifest.json +81 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/manifest.json +226 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.1.0/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.1.1/manifest.json +82 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.0/manifest.json +82 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.1/manifest.json +95 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.2/manifest.json +95 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.3.0/manifest.json +86 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/manifest.json +213 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.1.0/manifest.json +67 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.1.2/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.2.0/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.2.1/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.3.0/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/manifest.json +205 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.1.2/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.2.0/manifest.json +76 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.2.1/manifest.json +76 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.3.0/manifest.json +76 -0
- package/dist/catalog/chat-models/gl/glm-5.2-754b-q2/manifest.json +127 -0
- package/dist/catalog/chat-models/gl/glm-5.2-754b-q2/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/manifest.json +140 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.0/manifest.json +23 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.1/manifest.json +26 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/manifest.json +247 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/versions/1.0.0/manifest.json +137 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/versions/1.1.0/manifest.json +135 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/manifest.json +195 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/versions/1.1.1/manifest.json +71 -0
- package/dist/catalog/chat-models/gr/granite4.2-30b-q4/manifest.json +200 -0
- package/dist/catalog/chat-models/gr/granite4.2-30b-q4/versions/1.0.0/manifest.json +72 -0
- package/dist/catalog/chat-models/gr/granite4.2-3b-q4/manifest.json +196 -0
- package/dist/catalog/chat-models/gr/granite4.2-3b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/gr/granite4.2-8b-q4/manifest.json +189 -0
- package/dist/catalog/chat-models/gr/granite4.2-8b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/index.json +1 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/manifest.json +235 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.0/manifest.json +124 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.1/manifest.json +124 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.2/manifest.json +123 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/manifest.json +257 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/versions/1.0.0/manifest.json +145 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/versions/1.0.1/manifest.json +145 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/manifest.json +285 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.0/manifest.json +174 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.1/manifest.json +174 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.2/manifest.json +173 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/manifest.json +162 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/versions/1.0.0/manifest.json +59 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/versions/1.0.1/manifest.json +58 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/manifest.json +134 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/versions/1.1.0/manifest.json +57 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/versions/1.1.1/manifest.json +56 -0
- package/dist/catalog/chat-models/mi/minicpm5-1b-q4/manifest.json +156 -0
- package/dist/catalog/chat-models/mi/minicpm5-1b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/mi/minicpm5-2b-q4/manifest.json +161 -0
- package/dist/catalog/chat-models/mi/minicpm5-2b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/manifest.json +159 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/versions/1.1.0/manifest.json +62 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/versions/1.1.1/manifest.json +61 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +275 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/versions/1.0.0/manifest.json +154 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/versions/1.0.1/manifest.json +153 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/manifest.json +135 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.1/manifest.json +20 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.2/manifest.json +20 -0
- package/dist/catalog/chat-models/na/nanbeige4.2-3b-q4/manifest.json +138 -0
- package/dist/catalog/chat-models/na/nanbeige4.2-3b-q4/versions/1.0.0/manifest.json +14 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/manifest.json +212 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.0/manifest.json +94 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.1/manifest.json +94 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.2/manifest.json +93 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/manifest.json +135 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/versions/1.0.0/manifest.json +30 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/versions/1.0.1/manifest.json +30 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/manifest.json +192 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/versions/1.0.0/manifest.json +74 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/versions/1.0.1/manifest.json +73 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/manifest.json +207 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/versions/1.0.0/manifest.json +89 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/versions/1.0.1/manifest.json +88 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/manifest.json +224 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/versions/1.0.0/manifest.json +94 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/manifest.json +244 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/versions/1.0.0/manifest.json +114 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/manifest.json +215 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/versions/1.0.0/manifest.json +84 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/versions/1.0.1/manifest.json +83 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q4/manifest.json +208 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q4/versions/1.0.0/manifest.json +74 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q8/manifest.json +223 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q8/versions/1.0.0/manifest.json +89 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/manifest.json +187 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/versions/1.0.0/manifest.json +53 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/versions/1.0.1/manifest.json +77 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/manifest.json +192 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/versions/1.0.0/manifest.json +58 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/versions/1.0.1/manifest.json +82 -0
- package/dist/catalog/chat-models/qw/qwen3.5-0.8b-q4/manifest.json +192 -0
- package/dist/catalog/chat-models/qw/qwen3.5-0.8b-q4/versions/1.0.0/manifest.json +75 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/manifest.json +315 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.0/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.1/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.2/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.3/manifest.json +163 -0
- package/dist/catalog/chat-models/qw/qwen3.5-27b-q4/manifest.json +217 -0
- package/dist/catalog/chat-models/qw/qwen3.5-27b-q4/versions/1.0.0/manifest.json +90 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.0/manifest.json +77 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.2/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.3/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/manifest.json +188 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.0/manifest.json +77 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.2/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.3/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/manifest.json +205 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.0/manifest.json +82 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.2/manifest.json +81 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.3/manifest.json +81 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/manifest.json +230 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.0/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.4/manifest.json +91 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.5/manifest.json +91 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.6/manifest.json +115 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/manifest.json +240 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.0/manifest.json +102 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.2/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.3/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.4/manifest.json +127 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/manifest.json +233 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.0/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.2/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.3/manifest.json +117 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/manifest.json +252 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.0/manifest.json +112 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.2/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.3/manifest.json +137 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-iq1-s/manifest.json +195 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-iq1-s/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q2/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q2/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/versions/1.0.1/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/manifest.json +291 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.2/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.3/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.4/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.5/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/manifest.json +278 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.1/manifest.json +104 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.2/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.3/manifest.json +127 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/manifest.json +278 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.0/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.2/manifest.json +137 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq3/manifest.json +221 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq3/versions/1.0.0/manifest.json +36 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/manifest.json +429 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.0.0/manifest.json +36 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.1.0/manifest.json +205 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.1.1/manifest.json +244 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/manifest.json +203 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.0/manifest.json +21 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.1/manifest.json +31 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.2/manifest.json +30 -0
- package/dist/catalog/chat-models/raw-index.json +1 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/manifest.json +79 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/manifest.json +204 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/versions/1.0.0/manifest.json +70 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/versions/1.0.1/manifest.json +70 -0
- package/dist/catalog/chat-models/un/underdog-saluki-27b-iq2-mix/manifest.json +164 -0
- package/dist/catalog/chat-models/un/underdog-saluki-27b-iq2-mix/versions/1.0.0/manifest.json +14 -0
- package/dist/catalog/knowledge-catalogs/be/bendyline-how-to-books/manifest.json +26 -0
- package/dist/catalog/knowledge-catalogs/be/bendyline-how-to-books/versions/2026.10.8/manifest.json +8950 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-alaska-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-alaska-part-0001/versions/2026.10.1/manifest.json +658 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-nevada-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-nevada-part-0001/versions/2026.10.1/manifest.json +666 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-300-399-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-300-399-part-0001/versions/2026.10.2/manifest.json +182 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-347-349/manifest.json +25 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-347-349/versions/2026.10.5/manifest.json +38 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0001/versions/2026.10.1/manifest.json +558 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0002/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0002/versions/2026.10.1/manifest.json +258 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0001/versions/2026.10.1/manifest.json +318 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0002/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0002/versions/2026.10.1/manifest.json +266 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0003/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0003/versions/2026.10.1/manifest.json +186 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0004/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0004/versions/2026.10.1/manifest.json +138 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0005/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0005/versions/2026.10.1/manifest.json +138 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-wyoming-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-wyoming-part-0001/versions/2026.10.3/manifest.json +626 -0
- package/dist/catalog/knowledge-catalogs/index.json +1 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/versions/2026.10.16/manifest.json +18270 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/versions/2026.10.16/manifest.json +1098 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/versions/2026.10.16/manifest.json +722 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/versions/2026.10.16/manifest.json +530 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/versions/2026.10.16/manifest.json +602 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/versions/2026.10.16/manifest.json +250 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-dotnet-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-dotnet-en/versions/2026.10.16/manifest.json +16794 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/versions/2026.10.16/manifest.json +1106 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/versions/2026.10.16/manifest.json +234 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-powershell-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-powershell-en/versions/2026.10.16/manifest.json +522 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-sql-server-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-sql-server-en/versions/2026.10.16/manifest.json +1850 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/versions/2026.10.16/manifest.json +1734 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-server-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-server-en/versions/2026.10.16/manifest.json +774 -0
- package/dist/catalog/knowledge-catalogs/raw-index.json +1 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/manifest.json +28 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.2/manifest.json +53 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.3/manifest.json +885 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.5/manifest.json +157 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/manifest.json +32 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.2/manifest.json +69 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.3/manifest.json +741 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.5/manifest.json +173 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/manifest.json +69 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/versions/2026.4.4/manifest.json +217 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/versions/2026.4.5/manifest.json +217 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/versions/2026.4.4/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.3/manifest.json +925 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/manifest.json +28 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.2/manifest.json +53 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.3/manifest.json +1665 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.5/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.3/manifest.json +1233 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.5/manifest.json +141 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.3/manifest.json +493 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/manifest.json +63 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/versions/2026.4.4/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/versions/2026.4.5/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/manifest.json +30 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.2/manifest.json +61 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.3/manifest.json +665 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.5/manifest.json +177 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.3/manifest.json +745 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/manifest.json +62 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/versions/2026.4.4/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/versions/2026.4.4/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/manifest.json +30 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.2/manifest.json +61 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.3/manifest.json +1253 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.3/manifest.json +1957 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/manifest.json +63 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/versions/2026.4.5/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/manifest.json +45 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/versions/2026.4.4/manifest.json +121 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/versions/2026.4.5/manifest.json +173 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/manifest.json +62 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/versions/2026.4.4/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/provenance.json +8 -0
- package/dist/chat/catalog-model-lookup.d.ts +21 -0
- package/dist/chat/catalog-model-lookup.js +48 -0
- package/dist/chat/local-model-tier.d.ts +1 -0
- package/dist/chat/local-model-tier.js +2 -0
- package/dist/chat/vision-capability.d.ts +1 -0
- package/dist/chat/vision-capability.js +3 -0
- package/dist/engine-components.d.ts +30 -0
- package/dist/engine-components.js +144 -0
- package/dist/engines/electron-native-reuse.d.ts +65 -0
- package/dist/engines/electron-native-reuse.js +305 -0
- package/dist/engines/native-file-manifest.json +1320 -0
- package/dist/engines/native-manifest.d.ts +70 -0
- package/dist/engines/native-manifest.js +98 -0
- package/dist/engines/registry.d.ts +88 -0
- package/dist/engines/registry.js +217 -0
- package/dist/engines/resolver.d.ts +121 -0
- package/dist/engines/resolver.js +894 -0
- package/dist/engines/signature.d.ts +85 -0
- package/dist/engines/signature.js +231 -0
- package/dist/fs/atomic.d.ts +53 -0
- package/dist/fs/atomic.js +202 -0
- package/dist/fs/config-store.d.ts +14 -0
- package/dist/fs/config-store.js +101 -0
- package/dist/fs/home-permissions.d.ts +18 -0
- package/dist/fs/home-permissions.js +27 -0
- package/dist/fs/safe-paths.d.ts +107 -0
- package/dist/fs/safe-paths.js +264 -0
- package/dist/fs/security-json.d.ts +13 -0
- package/dist/fs/security-json.js +67 -0
- package/dist/http/auth-context.d.ts +23 -0
- package/dist/http/auth-context.js +1 -0
- package/dist/http/engine-runtime-context.d.ts +30 -0
- package/dist/http/engine-runtime-context.js +1 -0
- package/dist/http/external-conversation-contract.d.ts +49 -0
- package/dist/http/external-conversation-contract.js +1 -0
- package/dist/http/external-conversation-headers.d.ts +11 -0
- package/dist/http/external-conversation-headers.js +11 -0
- package/dist/http/inference-context.d.ts +36 -0
- package/dist/http/inference-context.js +1 -0
- package/dist/http/model-inventory-cache.d.ts +8 -0
- package/dist/http/model-inventory-cache.js +8 -0
- package/dist/http/openai-compat/action-ledger.d.ts +15 -0
- package/dist/http/openai-compat/action-ledger.js +119 -0
- package/dist/http/openai-compat/apple-model.d.ts +3 -0
- package/dist/http/openai-compat/apple-model.js +44 -0
- package/dist/http/openai-compat/caller-owned-profile.d.ts +7 -0
- package/dist/http/openai-compat/caller-owned-profile.js +18 -0
- package/dist/http/openai-compat/chat-progress.d.ts +9 -0
- package/dist/http/openai-compat/chat-progress.js +69 -0
- package/dist/http/openai-compat/chat-target.d.ts +76 -0
- package/dist/http/openai-compat/chat-target.js +97 -0
- package/dist/http/openai-compat/embeddings.d.ts +37 -0
- package/dist/http/openai-compat/embeddings.js +86 -0
- package/dist/http/openai-compat/request-tuning.d.ts +35 -0
- package/dist/http/openai-compat/request-tuning.js +87 -0
- package/dist/http/openai-compat/responses-streaming.d.ts +351 -0
- package/dist/http/openai-compat/responses-streaming.js +717 -0
- package/dist/http/openai-compat/responses-translate.d.ts +215 -0
- package/dist/http/openai-compat/responses-translate.js +377 -0
- package/dist/http/openai-compat/streaming-telemetry.d.ts +30 -0
- package/dist/http/openai-compat/streaming-telemetry.js +88 -0
- package/dist/http/openai-compat/streaming.d.ts +141 -0
- package/dist/http/openai-compat/streaming.js +687 -0
- package/dist/http/openai-compat/tool-call-stream-filter.d.ts +33 -0
- package/dist/http/openai-compat/tool-call-stream-filter.js +110 -0
- package/dist/http/openai-compat/translate.d.ts +254 -0
- package/dist/http/openai-compat/translate.js +485 -0
- package/dist/http/routes/engines.d.ts +13 -0
- package/dist/http/routes/engines.js +366 -0
- package/dist/http/routes/machine-engine-proxy.d.ts +26 -0
- package/dist/http/routes/machine-engine-proxy.js +43 -0
- package/dist/http/routes/model-bundles.d.ts +4 -0
- package/dist/http/routes/model-bundles.js +190 -0
- package/dist/http/routes/v1-chat.d.ts +72 -0
- package/dist/http/routes/v1-chat.js +645 -0
- package/dist/http/routes/v1-embeddings.d.ts +3 -0
- package/dist/http/routes/v1-embeddings.js +82 -0
- package/dist/http/routes/v1-knowledge.d.ts +4 -0
- package/dist/http/routes/v1-knowledge.js +304 -0
- package/dist/http/routes/v1-models-ensure.d.ts +32 -0
- package/dist/http/routes/v1-models-ensure.js +122 -0
- package/dist/http/routes/v1-models.d.ts +8 -0
- package/dist/http/routes/v1-models.js +189 -0
- package/dist/http/routes/v1-responses.d.ts +20 -0
- package/dist/http/routes/v1-responses.js +327 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/inference-service.d.ts +28 -0
- package/dist/inference-service.js +275 -0
- package/dist/knowledge/admission.d.ts +3 -0
- package/dist/knowledge/admission.js +22 -0
- package/dist/knowledge/bundled-catalog.d.ts +2 -0
- package/dist/knowledge/bundled-catalog.js +2 -0
- package/dist/knowledge/catalog-host.d.ts +103 -0
- package/dist/knowledge/catalog-host.js +180 -0
- package/dist/knowledge/catalog-source.d.ts +22 -0
- package/dist/knowledge/catalog-source.js +35 -0
- package/dist/knowledge/install.d.ts +55 -0
- package/dist/knowledge/install.js +274 -0
- package/dist/knowledge/manager.d.ts +287 -0
- package/dist/knowledge/manager.js +1540 -0
- package/dist/knowledge/registry.d.ts +35 -0
- package/dist/knowledge/registry.js +123 -0
- package/dist/knowledge/search-worker.d.ts +17 -0
- package/dist/knowledge/search-worker.js +36 -0
- package/dist/knowledge/shared-install-contract.d.ts +19 -0
- package/dist/knowledge/shared-install-contract.js +1 -0
- package/dist/knowledge/spatial-query.d.ts +11 -0
- package/dist/knowledge/spatial-query.js +33 -0
- package/dist/knowledge/trust-anchors.d.ts +11 -0
- package/dist/knowledge/trust-anchors.js +51 -0
- package/dist/knowledge/vector-floors.d.ts +44 -0
- package/dist/knowledge/vector-floors.js +92 -0
- package/dist/knowledge/worker-host.d.ts +9 -0
- package/dist/knowledge/worker-host.js +179 -0
- package/dist/kokoro-lexicon/LICENSE +202 -0
- package/dist/kokoro-lexicon/lexicon-gb-en.txt.gz +0 -0
- package/dist/kokoro-lexicon/lexicon-us-en.txt.gz +0 -0
- package/dist/kokoro-lexicon/manifest.json +23 -0
- package/dist/machine-engine/inspect-runtime.d.ts +3 -0
- package/dist/machine-engine/inspect-runtime.js +48 -0
- package/dist/machine-engine/knowledge-assets.d.ts +79 -0
- package/dist/machine-engine/knowledge-assets.js +505 -0
- package/dist/memory/embed-core.d.ts +131 -0
- package/dist/memory/embed-core.js +398 -0
- package/dist/memory/embed-worker.d.ts +23 -0
- package/dist/memory/embed-worker.js +49 -0
- package/dist/memory/embeddings.d.ts +105 -0
- package/dist/memory/embeddings.js +467 -0
- package/dist/model-profile/behaviors/tools-mlx-template-fix.d.ts +1 -0
- package/dist/model-profile/behaviors/tools-mlx-template-fix.js +2 -0
- package/dist/model-profile/behaviors/turn-ramble-detection.d.ts +1 -0
- package/dist/model-profile/behaviors/turn-ramble-detection.js +2 -0
- package/dist/model-profile/defaults.d.ts +1 -0
- package/dist/model-profile/defaults.js +2 -0
- package/dist/model-profile/index.d.ts +9 -0
- package/dist/model-profile/index.js +7 -0
- package/dist/model-profile/registry.d.ts +15 -0
- package/dist/model-profile/registry.js +18 -0
- package/dist/model-profile/runtime.d.ts +48 -0
- package/dist/model-profile/runtime.js +131 -0
- package/dist/model-profile/tool-grammar.d.ts +1 -0
- package/dist/model-profile/tool-grammar.js +2 -0
- package/dist/model-profile/tuning.d.ts +19 -0
- package/dist/model-profile/tuning.js +21 -0
- package/dist/model-profile/types.d.ts +1 -0
- package/dist/model-profile/types.js +2 -0
- package/dist/models/bundle-storage.d.ts +28 -0
- package/dist/models/bundle-storage.js +80 -0
- package/dist/models/catalog-drift.d.ts +48 -0
- package/dist/models/catalog-drift.js +94 -0
- package/dist/models/catalog-payload-identity.d.ts +107 -0
- package/dist/models/catalog-payload-identity.js +254 -0
- package/dist/models/ensure.d.ts +125 -0
- package/dist/models/ensure.js +205 -0
- package/dist/models/gezmodel.d.ts +47 -0
- package/dist/models/gezmodel.js +742 -0
- package/dist/models/install-registry.d.ts +101 -0
- package/dist/models/install-registry.js +216 -0
- package/dist/models/model-id.d.ts +22 -0
- package/dist/models/model-id.js +40 -0
- package/dist/models/storage-roots.d.ts +274 -0
- package/dist/models/storage-roots.js +865 -0
- package/dist/native-release-entry.d.ts +16 -0
- package/dist/native-release-entry.js +16 -0
- package/dist/perf/redact-path.d.ts +2 -0
- package/dist/perf/redact-path.js +27 -0
- package/dist/perf/responsiveness.d.ts +70 -0
- package/dist/perf/responsiveness.js +560 -0
- package/dist/providers/active-install-message.d.ts +42 -0
- package/dist/providers/active-install-message.js +49 -0
- package/dist/providers/apple-foundation-models/binary.d.ts +4 -0
- package/dist/providers/apple-foundation-models/binary.js +18 -0
- package/dist/providers/apple-foundation-models/helper.d.ts +66 -0
- package/dist/providers/apple-foundation-models/helper.js +262 -0
- package/dist/providers/apple-foundation-models/provider.d.ts +82 -0
- package/dist/providers/apple-foundation-models/provider.js +389 -0
- package/dist/providers/apple-foundation-models/status.d.ts +9 -0
- package/dist/providers/apple-foundation-models/status.js +49 -0
- package/dist/providers/audio/kokoro-frontend.d.ts +50 -0
- package/dist/providers/audio/kokoro-frontend.js +113 -0
- package/dist/providers/audio/managed-speech-model.d.ts +9 -0
- package/dist/providers/audio/managed-speech-model.js +86 -0
- package/dist/providers/audio/types.d.ts +202 -0
- package/dist/providers/audio/types.js +17 -0
- package/dist/providers/audio/whisper-cpp.d.ts +99 -0
- package/dist/providers/audio/whisper-cpp.js +420 -0
- package/dist/providers/audio-persister-contract.d.ts +13 -0
- package/dist/providers/audio-persister-contract.js +1 -0
- package/dist/providers/catalog-model-config.d.ts +63 -0
- package/dist/providers/catalog-model-config.js +95 -0
- package/dist/providers/code-block-salvage.d.ts +1 -0
- package/dist/providers/code-block-salvage.js +2 -0
- package/dist/providers/codex-cli/reasoning.d.ts +8 -0
- package/dist/providers/codex-cli/reasoning.js +17 -0
- package/dist/providers/complete-tool-call.d.ts +16 -0
- package/dist/providers/complete-tool-call.js +25 -0
- package/dist/providers/constrained-turn.d.ts +1 -0
- package/dist/providers/constrained-turn.js +2 -0
- package/dist/providers/deliverable-read-pacing.d.ts +1 -0
- package/dist/providers/deliverable-read-pacing.js +2 -0
- package/dist/providers/direct-file-work-prompt.d.ts +1 -0
- package/dist/providers/direct-file-work-prompt.js +2 -0
- package/dist/providers/ds4/build-provider.d.ts +100 -0
- package/dist/providers/ds4/build-provider.js +539 -0
- package/dist/providers/ds4/cache-adapter.d.ts +42 -0
- package/dist/providers/ds4/cache-adapter.js +110 -0
- package/dist/providers/ds4/dspark.d.ts +83 -0
- package/dist/providers/ds4/dspark.js +107 -0
- package/dist/providers/ds4/mtp.d.ts +32 -0
- package/dist/providers/ds4/mtp.js +46 -0
- package/dist/providers/ds4/provider.d.ts +67 -0
- package/dist/providers/ds4/provider.js +104 -0
- package/dist/providers/ds4/residency.d.ts +143 -0
- package/dist/providers/ds4/residency.js +139 -0
- package/dist/providers/ds4/stdout-parser.d.ts +47 -0
- package/dist/providers/ds4/stdout-parser.js +134 -0
- package/dist/providers/duplicate-tool-calls.d.ts +1 -0
- package/dist/providers/duplicate-tool-calls.js +2 -0
- package/dist/providers/file-repair-policy.d.ts +1 -0
- package/dist/providers/file-repair-policy.js +2 -0
- package/dist/providers/gpu-arbiter.d.ts +159 -0
- package/dist/providers/gpu-arbiter.js +301 -0
- package/dist/providers/image-persister-contract.d.ts +15 -0
- package/dist/providers/image-persister-contract.js +1 -0
- package/dist/providers/llama-cpp/build-metadata.d.ts +13 -0
- package/dist/providers/llama-cpp/build-metadata.js +39 -0
- package/dist/providers/llama-cpp/build-provider.d.ts +66 -0
- package/dist/providers/llama-cpp/build-provider.js +1491 -0
- package/dist/providers/llama-cpp/cache-adapter.d.ts +242 -0
- package/dist/providers/llama-cpp/cache-adapter.js +689 -0
- package/dist/providers/llama-cpp/devices.d.ts +130 -0
- package/dist/providers/llama-cpp/devices.js +256 -0
- package/dist/providers/llama-cpp/disk-cache.d.ts +8 -0
- package/dist/providers/llama-cpp/disk-cache.js +112 -0
- package/dist/providers/llama-cpp/engine-flags.d.ts +181 -0
- package/dist/providers/llama-cpp/engine-flags.js +279 -0
- package/dist/providers/llama-cpp/gguf-metadata-async.d.ts +11 -0
- package/dist/providers/llama-cpp/gguf-metadata-async.js +180 -0
- package/dist/providers/llama-cpp/gguf-metadata-worker.d.ts +7 -0
- package/dist/providers/llama-cpp/gguf-metadata-worker.js +27 -0
- package/dist/providers/llama-cpp/gguf-metadata.d.ts +198 -0
- package/dist/providers/llama-cpp/gguf-metadata.js +615 -0
- package/dist/providers/llama-cpp/gguf-quantization-backfill.d.ts +32 -0
- package/dist/providers/llama-cpp/gguf-quantization-backfill.js +75 -0
- package/dist/providers/llama-cpp/index.d.ts +10 -0
- package/dist/providers/llama-cpp/index.js +13 -0
- package/dist/providers/llama-cpp/kv-cache-type.d.ts +118 -0
- package/dist/providers/llama-cpp/kv-cache-type.js +140 -0
- package/dist/providers/llama-cpp/log.d.ts +92 -0
- package/dist/providers/llama-cpp/log.js +280 -0
- package/dist/providers/llama-cpp/models.d.ts +389 -0
- package/dist/providers/llama-cpp/models.js +1011 -0
- package/dist/providers/llama-cpp/offload-planner.d.ts +339 -0
- package/dist/providers/llama-cpp/offload-planner.js +524 -0
- package/dist/providers/llama-cpp/provider.d.ts +493 -0
- package/dist/providers/llama-cpp/provider.js +862 -0
- package/dist/providers/llama-cpp/reasoning-launch.d.ts +7 -0
- package/dist/providers/llama-cpp/reasoning-launch.js +14 -0
- package/dist/providers/llama-cpp/spec-draft.d.ts +44 -0
- package/dist/providers/llama-cpp/spec-draft.js +44 -0
- package/dist/providers/llama-cpp/stdout-parser.d.ts +70 -0
- package/dist/providers/llama-cpp/stdout-parser.js +197 -0
- package/dist/providers/local-tool-call-salvage.d.ts +1 -0
- package/dist/providers/local-tool-call-salvage.js +2 -0
- package/dist/providers/local-turn-policy.d.ts +1 -0
- package/dist/providers/local-turn-policy.js +2 -0
- package/dist/providers/mlx/async-file-handoff.d.ts +11 -0
- package/dist/providers/mlx/async-file-handoff.js +25 -0
- package/dist/providers/mlx/build-provider.d.ts +65 -0
- package/dist/providers/mlx/build-provider.js +717 -0
- package/dist/providers/mlx/cache-adapter.d.ts +161 -0
- package/dist/providers/mlx/cache-adapter.js +445 -0
- package/dist/providers/mlx/chat-protocol.d.ts +48 -0
- package/dist/providers/mlx/chat-protocol.js +8 -0
- package/dist/providers/mlx/config-parser.d.ts +29 -0
- package/dist/providers/mlx/config-parser.js +81 -0
- package/dist/providers/mlx/engine-gate.d.ts +51 -0
- package/dist/providers/mlx/engine-gate.js +207 -0
- package/dist/providers/mlx/engine-hold.d.ts +41 -0
- package/dist/providers/mlx/engine-hold.js +59 -0
- package/dist/providers/mlx/engine-log-router.d.ts +84 -0
- package/dist/providers/mlx/engine-log-router.js +137 -0
- package/dist/providers/mlx/engine-stats-sampler.d.ts +36 -0
- package/dist/providers/mlx/engine-stats-sampler.js +59 -0
- package/dist/providers/mlx/index.d.ts +10 -0
- package/dist/providers/mlx/index.js +10 -0
- package/dist/providers/mlx/log.d.ts +55 -0
- package/dist/providers/mlx/log.js +157 -0
- package/dist/providers/mlx/model-geometry.d.ts +35 -0
- package/dist/providers/mlx/model-geometry.js +118 -0
- package/dist/providers/mlx/models.d.ts +289 -0
- package/dist/providers/mlx/models.js +1079 -0
- package/dist/providers/mlx/provider.d.ts +404 -0
- package/dist/providers/mlx/provider.js +3017 -0
- package/dist/providers/mlx/python/cache_persist.py +348 -0
- package/dist/providers/mlx/python/cache_seed.py +402 -0
- package/dist/providers/mlx/python/gezel_mlx_server.py +4491 -0
- package/dist/providers/mlx/python/lfm2_compat.py +55 -0
- package/dist/providers/mlx/python/qwen3_5_text_compat.py +60 -0
- package/dist/providers/mlx/python/qwen4_ple.py +159 -0
- package/dist/providers/mlx/python/spec_decode.py +775 -0
- package/dist/providers/mlx/python/template_stability.py +133 -0
- package/dist/providers/mlx/python/think_budget.py +113 -0
- package/dist/providers/mlx/python/tool_args_json.py +297 -0
- package/dist/providers/mlx/python/tool_call_stream.py +265 -0
- package/dist/providers/mlx/python/tool_grammar.py +794 -0
- package/dist/providers/mlx/python/vision_inputs.py +64 -0
- package/dist/providers/mlx/python/wave_policy.py +147 -0
- package/dist/providers/mlx/reasoning-stream.d.ts +85 -0
- package/dist/providers/mlx/reasoning-stream.js +196 -0
- package/dist/providers/mlx/request-shape.d.ts +34 -0
- package/dist/providers/mlx/request-shape.js +42 -0
- package/dist/providers/mlx/runtime-diagnostics.d.ts +29 -0
- package/dist/providers/mlx/runtime-diagnostics.js +162 -0
- package/dist/providers/mlx/spec-drafter.d.ts +25 -0
- package/dist/providers/mlx/spec-drafter.js +73 -0
- package/dist/providers/mlx/stdout-parser.d.ts +60 -0
- package/dist/providers/mlx/stdout-parser.js +254 -0
- package/dist/providers/mlx/textual-tool-call-salvage.d.ts +46 -0
- package/dist/providers/mlx/textual-tool-call-salvage.js +396 -0
- package/dist/providers/mlx/tool-call-protocol.d.ts +65 -0
- package/dist/providers/mlx/tool-call-protocol.js +140 -0
- package/dist/providers/mlx/tool-call-stripper.d.ts +68 -0
- package/dist/providers/mlx/tool-call-stripper.js +153 -0
- package/dist/providers/mlx/tool-image-retention.d.ts +23 -0
- package/dist/providers/mlx/tool-image-retention.js +43 -0
- package/dist/providers/mlx/turn-telemetry.d.ts +22 -0
- package/dist/providers/mlx/turn-telemetry.js +45 -0
- package/dist/providers/mlx/venv.d.ts +91 -0
- package/dist/providers/mlx/venv.js +111 -0
- package/dist/providers/mlx/vision-mode.d.ts +92 -0
- package/dist/providers/mlx/vision-mode.js +187 -0
- package/dist/providers/mlx/vision.d.ts +2 -0
- package/dist/providers/mlx/vision.js +12 -0
- package/dist/providers/mlx/wire-transcript.d.ts +14 -0
- package/dist/providers/mlx/wire-transcript.js +43 -0
- package/dist/providers/native/capacity-broker.d.ts +812 -0
- package/dist/providers/native/capacity-broker.js +1058 -0
- package/dist/providers/native/capacity-budget.d.ts +133 -0
- package/dist/providers/native/capacity-budget.js +265 -0
- package/dist/providers/native/device-capacity-ledger.d.ts +31 -0
- package/dist/providers/native/device-capacity-ledger.js +196 -0
- package/dist/providers/native/device-capacity.d.ts +84 -0
- package/dist/providers/native/device-capacity.js +431 -0
- package/dist/providers/native/engine-api-key.d.ts +57 -0
- package/dist/providers/native/engine-api-key.js +72 -0
- package/dist/providers/native/engine-key.d.ts +18 -0
- package/dist/providers/native/engine-key.js +41 -0
- package/dist/providers/native/engine-router.d.ts +145 -0
- package/dist/providers/native/engine-router.js +191 -0
- package/dist/providers/native/gpu-panic-guard.d.ts +54 -0
- package/dist/providers/native/gpu-panic-guard.js +59 -0
- package/dist/providers/native/inference.d.ts +33 -0
- package/dist/providers/native/inference.js +49 -0
- package/dist/providers/native/local-engine-runtime.d.ts +412 -0
- package/dist/providers/native/local-engine-runtime.js +1714 -0
- package/dist/providers/native/measured-budget.d.ts +32 -0
- package/dist/providers/native/measured-budget.js +54 -0
- package/dist/providers/native/port.d.ts +11 -0
- package/dist/providers/native/port.js +29 -0
- package/dist/providers/native/provider-pool.d.ts +474 -0
- package/dist/providers/native/provider-pool.js +1166 -0
- package/dist/providers/native/supervisor.d.ts +503 -0
- package/dist/providers/native/supervisor.js +1466 -0
- package/dist/providers/observation-context.d.ts +16 -0
- package/dist/providers/observation-context.js +1 -0
- package/dist/providers/openai-compatible/sse.d.ts +1 -0
- package/dist/providers/openai-compatible/sse.js +2 -0
- package/dist/providers/patient-fetch.d.ts +36 -0
- package/dist/providers/patient-fetch.js +44 -0
- package/dist/providers/project-macro-loop-bail.d.ts +7 -0
- package/dist/providers/project-macro-loop-bail.js +21 -0
- package/dist/providers/prose-document-salvage.d.ts +1 -0
- package/dist/providers/prose-document-salvage.js +2 -0
- package/dist/providers/provider-disposal.d.ts +1 -0
- package/dist/providers/provider-disposal.js +2 -0
- package/dist/providers/queue.d.ts +15 -0
- package/dist/providers/queue.js +23 -0
- package/dist/providers/ramble-abort-message.d.ts +1 -0
- package/dist/providers/ramble-abort-message.js +2 -0
- package/dist/providers/ramble-detector.d.ts +1 -0
- package/dist/providers/ramble-detector.js +2 -0
- package/dist/providers/reasoning-depth.d.ts +1 -0
- package/dist/providers/reasoning-depth.js +2 -0
- package/dist/providers/required-input-reads.d.ts +1 -0
- package/dist/providers/required-input-reads.js +2 -0
- package/dist/providers/session-defaults.d.ts +13 -0
- package/dist/providers/session-defaults.js +49 -0
- package/dist/providers/session-hooks.d.ts +26 -0
- package/dist/providers/session-hooks.js +1 -0
- package/dist/providers/streaming-session.d.ts +1 -0
- package/dist/providers/streaming-session.js +2 -0
- package/dist/providers/terminal-tool-policy.d.ts +1 -0
- package/dist/providers/terminal-tool-policy.js +2 -0
- package/dist/providers/tool-arg-schema-coercion.d.ts +1 -0
- package/dist/providers/tool-arg-schema-coercion.js +2 -0
- package/dist/providers/tool-executor.d.ts +12 -0
- package/dist/providers/tool-executor.js +20 -0
- package/dist/providers/tool-failure-tracker.d.ts +1 -0
- package/dist/providers/tool-failure-tracker.js +2 -0
- package/dist/providers/tool-repeat-tracker.d.ts +1 -0
- package/dist/providers/tool-repeat-tracker.js +2 -0
- package/dist/providers/turn-timeout.d.ts +1 -0
- package/dist/providers/turn-timeout.js +1 -0
- package/dist/providers/types.d.ts +834 -0
- package/dist/providers/types.js +42 -0
- package/dist/providers/usage-builder.d.ts +1 -0
- package/dist/providers/usage-builder.js +2 -0
- package/dist/providers/vision-capability.d.ts +109 -0
- package/dist/providers/vision-capability.js +137 -0
- package/dist/python/mlx-runtime-status-bus.d.ts +39 -0
- package/dist/python/mlx-runtime-status-bus.js +27 -0
- package/dist/python/uv-runtime.d.ts +176 -0
- package/dist/python/uv-runtime.js +492 -0
- package/dist/relevance/install.d.ts +28 -0
- package/dist/relevance/install.js +114 -0
- package/dist/relevance/manager.d.ts +79 -0
- package/dist/relevance/manager.js +211 -0
- package/dist/relevance/registry.d.ts +11 -0
- package/dist/relevance/registry.js +158 -0
- package/dist/relevance/relevance-core.d.ts +67 -0
- package/dist/relevance/relevance-core.js +189 -0
- package/dist/relevance/relevance-model.d.ts +42 -0
- package/dist/relevance/relevance-model.js +292 -0
- package/dist/relevance/relevance-worker.d.ts +20 -0
- package/dist/relevance/relevance-worker.js +57 -0
- package/dist/relevance/settings.d.ts +30 -0
- package/dist/relevance/settings.js +81 -0
- package/dist/remotes/identity.d.ts +121 -0
- package/dist/remotes/identity.js +348 -0
- package/dist/remotes/pinned-fetch.d.ts +45 -0
- package/dist/remotes/pinned-fetch.js +193 -0
- package/dist/remotes/types.d.ts +54 -0
- package/dist/remotes/types.js +1 -0
- package/dist/runtime-lock.d.ts +29 -0
- package/dist/runtime-lock.js +85 -0
- package/dist/search/relevance-stage.d.ts +81 -0
- package/dist/search/relevance-stage.js +177 -0
- package/dist/secrets/types.d.ts +63 -0
- package/dist/secrets/types.js +64 -0
- package/dist/speech.d.ts +1 -0
- package/dist/speech.js +1 -0
- package/dist/system/darwin-memory.d.ts +26 -0
- package/dist/system/darwin-memory.js +81 -0
- package/dist/system/gezel-process-memory.d.ts +55 -0
- package/dist/system/gezel-process-memory.js +156 -0
- package/dist/system/memory.d.ts +154 -0
- package/dist/system/memory.js +501 -0
- package/dist/transformers-cache.d.ts +112 -0
- package/dist/transformers-cache.js +392 -0
- package/dist/utils/disk-space.d.ts +55 -0
- package/dist/utils/disk-space.js +72 -0
- package/dist/utils/download-common.d.ts +138 -0
- package/dist/utils/download-common.js +196 -0
- package/dist/utils/download-with-retry.d.ts +85 -0
- package/dist/utils/download-with-retry.js +522 -0
- package/dist/utils/extract-zip.d.ts +22 -0
- package/dist/utils/extract-zip.js +103 -0
- package/dist/utils/retire-model-worker.d.ts +15 -0
- package/dist/utils/retire-model-worker.js +24 -0
- package/dist/utils/service-worker-entry.d.ts +59 -0
- package/dist/utils/service-worker-entry.js +69 -0
- package/dist/utils/xet-download.d.ts +40 -0
- package/dist/utils/xet-download.js +526 -0
- package/dist/utils/xet.d.ts +86 -0
- package/dist/utils/xet.js +201 -0
- package/package.json +103 -3
- package/scripts/embedding-packaging.cjs +264 -0
- package/scripts/embedding-packaging.d.cts +16 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { appendFileSync, createWriteStream, mkdirSync } from 'node:fs';
|
|
2
|
+
import { mkdir, readFile, readdir, stat, unlink } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { redactCredentials } from '@bendyline/gezel';
|
|
5
|
+
const LLAMA_PROMPT_PROGRESS = /\bslot print_timing:.*?\btask\s*(\d+)\s*\|.*?\bprompt processing(?:\s+progress)?\b.*?\bn_tokens\s*=\s*(\d+).*?\bprogress\s*=\s*([\d.]+)/;
|
|
6
|
+
/**
|
|
7
|
+
* Suppress a native llama.cpp busy-loop without hiding real progress.
|
|
8
|
+
*
|
|
9
|
+
* Some engine builds can emit the same prompt-progress state tens of
|
|
10
|
+
* thousands of times per second (the uptime prefix changes, but task, token
|
|
11
|
+
* count, and progress do not). Logging every repaint can fill gigabytes in a
|
|
12
|
+
* few minutes. Distinct progress states still pass immediately; a stuck state
|
|
13
|
+
* is sampled periodically and gets an explicit suppression summary.
|
|
14
|
+
*/
|
|
15
|
+
export class LlamaProgressLogThrottle {
|
|
16
|
+
intervalMs;
|
|
17
|
+
now;
|
|
18
|
+
lastSignature = null;
|
|
19
|
+
lastEmittedAt = 0;
|
|
20
|
+
suppressed = 0;
|
|
21
|
+
constructor(intervalMs = 5_000, now = Date.now) {
|
|
22
|
+
this.intervalMs = intervalMs;
|
|
23
|
+
this.now = now;
|
|
24
|
+
}
|
|
25
|
+
accept(line) {
|
|
26
|
+
const match = line.match(LLAMA_PROMPT_PROGRESS);
|
|
27
|
+
if (!match) {
|
|
28
|
+
const summary = this.takeSummary();
|
|
29
|
+
this.lastSignature = null;
|
|
30
|
+
return summary ? [summary, line] : [line];
|
|
31
|
+
}
|
|
32
|
+
const signature = `${match[1]}:${match[2]}:${match[3]}`;
|
|
33
|
+
const now = this.now();
|
|
34
|
+
if (signature !== this.lastSignature) {
|
|
35
|
+
const summary = this.takeSummary();
|
|
36
|
+
this.lastSignature = signature;
|
|
37
|
+
this.lastEmittedAt = now;
|
|
38
|
+
return summary ? [summary, line] : [line];
|
|
39
|
+
}
|
|
40
|
+
if (now - this.lastEmittedAt < this.intervalMs) {
|
|
41
|
+
this.suppressed += 1;
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
const summary = this.takeSummary();
|
|
45
|
+
this.lastEmittedAt = now;
|
|
46
|
+
return summary ? [summary, line] : [line];
|
|
47
|
+
}
|
|
48
|
+
takeSummary() {
|
|
49
|
+
if (this.suppressed === 0)
|
|
50
|
+
return null;
|
|
51
|
+
const count = this.suppressed;
|
|
52
|
+
this.suppressed = 0;
|
|
53
|
+
return `[llama-server] suppressed ${count} duplicate prompt-progress log lines with no token/progress change`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Rolling append-only log for llama-server stdout/stderr. Mirrors the
|
|
58
|
+
* per-day pattern in packages/app/src/supervisor/log-rotator.ts but
|
|
59
|
+
* lives inside the service package so the Electron → service
|
|
60
|
+
* dependency direction stays one-way.
|
|
61
|
+
*
|
|
62
|
+
* Files live at `<dir>/llama-server-YYYY-MM-DD.log`, roll to
|
|
63
|
+
* `-1.log` / `-2.log` when the active file crosses 10 MB, and ones
|
|
64
|
+
* older than 7 days are swept on open.
|
|
65
|
+
*
|
|
66
|
+
* Design note: we duplicate (rather than factor-out) the small
|
|
67
|
+
* rotator because the alternative is a shared package. Two files of
|
|
68
|
+
* trivial rotation logic is cheaper than a new package boundary for
|
|
69
|
+
* the size of this codebase.
|
|
70
|
+
*/
|
|
71
|
+
export class LlamaCppLogFile {
|
|
72
|
+
dir;
|
|
73
|
+
baseName;
|
|
74
|
+
stream = null;
|
|
75
|
+
currentPath = null;
|
|
76
|
+
currentDay = null;
|
|
77
|
+
rollIndex = 0;
|
|
78
|
+
bytesWritten = 0;
|
|
79
|
+
maxBytes = 10 * 1024 * 1024;
|
|
80
|
+
retentionDays = 7;
|
|
81
|
+
readyPromise;
|
|
82
|
+
pendingWrites = Promise.resolve();
|
|
83
|
+
constructor(dir, baseName = 'llama-server') {
|
|
84
|
+
this.dir = dir;
|
|
85
|
+
this.baseName = baseName;
|
|
86
|
+
this.readyPromise = this.init();
|
|
87
|
+
}
|
|
88
|
+
async init() {
|
|
89
|
+
await mkdir(this.dir, { recursive: true });
|
|
90
|
+
await this.sweepOldFiles();
|
|
91
|
+
await this.openForToday();
|
|
92
|
+
}
|
|
93
|
+
today() {
|
|
94
|
+
return new Date().toISOString().slice(0, 10);
|
|
95
|
+
}
|
|
96
|
+
async openForToday() {
|
|
97
|
+
this.currentDay = this.today();
|
|
98
|
+
this.rollIndex = 0;
|
|
99
|
+
const base = join(this.dir, `${this.baseName}-${this.currentDay}.log`);
|
|
100
|
+
let existingSize = 0;
|
|
101
|
+
try {
|
|
102
|
+
const st = await stat(base);
|
|
103
|
+
existingSize = st.size;
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
/* not present yet */
|
|
107
|
+
}
|
|
108
|
+
this.currentPath = base;
|
|
109
|
+
this.bytesWritten = existingSize;
|
|
110
|
+
this.stream = createWriteStream(base, { flags: 'a' });
|
|
111
|
+
}
|
|
112
|
+
async rollIfNeeded() {
|
|
113
|
+
if (this.today() !== this.currentDay) {
|
|
114
|
+
// We are already running inside `pendingWrites`; calling the public
|
|
115
|
+
// close() here would wait for that same promise chain and deadlock.
|
|
116
|
+
await this.closeStream();
|
|
117
|
+
await this.openForToday();
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (this.bytesWritten < this.maxBytes)
|
|
121
|
+
return;
|
|
122
|
+
await this.closeStream();
|
|
123
|
+
this.rollIndex += 1;
|
|
124
|
+
const rolled = join(this.dir, `${this.baseName}-${this.currentDay}-${this.rollIndex}.log`);
|
|
125
|
+
this.currentPath = rolled;
|
|
126
|
+
this.bytesWritten = 0;
|
|
127
|
+
this.stream = createWriteStream(rolled, { flags: 'a' });
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Fire-and-forget append. Serializes writes via an internal promise
|
|
131
|
+
* chain so rotation + ordering stay correct even under bursty
|
|
132
|
+
* stdout. The caller doesn't need to await individual lines; any
|
|
133
|
+
* subsequent `tail()` / `close()` awaits the drain.
|
|
134
|
+
*/
|
|
135
|
+
write(line) {
|
|
136
|
+
// Credential-shape scrub before hitting disk. See core's
|
|
137
|
+
// `redact.ts` for the patterns + rationale. Defense in depth — llama-server
|
|
138
|
+
// doesn't emit secrets by design, but a log file is the kind of
|
|
139
|
+
// thing users share on bug reports, and being wrong-by-omission
|
|
140
|
+
// here costs more than over-redacting.
|
|
141
|
+
const safe = redactCredentials(line);
|
|
142
|
+
const run = async () => {
|
|
143
|
+
await this.readyPromise;
|
|
144
|
+
await this.rollIfNeeded();
|
|
145
|
+
if (!this.stream)
|
|
146
|
+
return;
|
|
147
|
+
const buf = Buffer.from(safe.endsWith('\n') ? safe : `${safe}\n`, 'utf8');
|
|
148
|
+
await new Promise((resolve) => {
|
|
149
|
+
this.stream?.write(buf, () => resolve());
|
|
150
|
+
});
|
|
151
|
+
this.bytesWritten += buf.length;
|
|
152
|
+
};
|
|
153
|
+
this.pendingWrites = this.pendingWrites.then(run, run);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Persist an unexpected native exit before the provider releases the
|
|
157
|
+
* correlated request error. This synchronous, single-line write closes the
|
|
158
|
+
* race where an eval snapshots its isolated home immediately after a crash.
|
|
159
|
+
* The potentially user-derived stdout/stderr tail deliberately stays only in
|
|
160
|
+
* memory; the panic classifier contributes at most one redacted error line.
|
|
161
|
+
*/
|
|
162
|
+
writeIncident(snapshot) {
|
|
163
|
+
const { outputTail: _outputTail, ...incident } = snapshot;
|
|
164
|
+
void _outputTail;
|
|
165
|
+
if (incident.panicLine)
|
|
166
|
+
incident.panicLine = redactCredentials(incident.panicLine);
|
|
167
|
+
mkdirSync(this.dir, { recursive: true });
|
|
168
|
+
appendFileSync(join(this.dir, 'native-incidents.jsonl'), `${JSON.stringify(incident)}\n`, 'utf8');
|
|
169
|
+
}
|
|
170
|
+
/** Wait for all in-flight writes to flush, then return. */
|
|
171
|
+
async flush() {
|
|
172
|
+
// Initialization is intentionally asynchronous so constructing the logger
|
|
173
|
+
// never blocks provider setup. With no queued `write()` call, however,
|
|
174
|
+
// pendingWrites alone does not observe it.
|
|
175
|
+
await this.readyPromise;
|
|
176
|
+
await this.pendingWrites;
|
|
177
|
+
}
|
|
178
|
+
async close() {
|
|
179
|
+
// Incident-only lifecycles may close before any ordinary log line is
|
|
180
|
+
// queued. Wait for init so it cannot open a fresh stream after close has
|
|
181
|
+
// returned and raced the caller's directory cleanup.
|
|
182
|
+
await this.flush();
|
|
183
|
+
await this.closeStream();
|
|
184
|
+
}
|
|
185
|
+
async closeStream() {
|
|
186
|
+
if (!this.stream)
|
|
187
|
+
return;
|
|
188
|
+
const s = this.stream;
|
|
189
|
+
this.stream = null;
|
|
190
|
+
await new Promise((resolve) => s.end(() => resolve()));
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Read the last `bytes` chars of the current file. Used by the
|
|
194
|
+
* Settings → On-device → Engine log disclosure. Returns an empty
|
|
195
|
+
* string if the file doesn't exist yet (first launch, nothing
|
|
196
|
+
* logged).
|
|
197
|
+
*/
|
|
198
|
+
async tail(bytes) {
|
|
199
|
+
await this.readyPromise;
|
|
200
|
+
await this.flush();
|
|
201
|
+
if (!this.currentPath)
|
|
202
|
+
return '';
|
|
203
|
+
try {
|
|
204
|
+
const content = await readFile(this.currentPath, 'utf8');
|
|
205
|
+
return content.length <= bytes ? content : content.slice(content.length - bytes);
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return '';
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/** Absolute path of the current log file (for surfacing in UI). */
|
|
212
|
+
currentFile() {
|
|
213
|
+
return this.currentPath;
|
|
214
|
+
}
|
|
215
|
+
async sweepOldFiles() {
|
|
216
|
+
const horizonMs = Date.now() - this.retentionDays * 24 * 60 * 60 * 1000;
|
|
217
|
+
let entries;
|
|
218
|
+
try {
|
|
219
|
+
entries = await readdir(this.dir);
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
for (const name of entries) {
|
|
225
|
+
if (!name.startsWith(`${this.baseName}-`) || !name.endsWith('.log'))
|
|
226
|
+
continue;
|
|
227
|
+
const p = join(this.dir, name);
|
|
228
|
+
try {
|
|
229
|
+
const st = await stat(p);
|
|
230
|
+
if (st.mtimeMs < horizonMs) {
|
|
231
|
+
await unlink(p);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
/* best-effort */
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Read the newest retained engine log without constructing a writer. This is
|
|
242
|
+
* used by diagnostics after the provider has been evicted or the app was
|
|
243
|
+
* force-quit — exactly when an in-memory provider handle is unavailable but
|
|
244
|
+
* the last native stdout/stderr is most useful.
|
|
245
|
+
*/
|
|
246
|
+
export async function tailLatestEngineLog(dir, baseName, bytes) {
|
|
247
|
+
let names;
|
|
248
|
+
try {
|
|
249
|
+
names = await readdir(dir);
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
return { path: null, tail: '' };
|
|
253
|
+
}
|
|
254
|
+
const candidates = await Promise.all(names
|
|
255
|
+
.filter((name) => name.startsWith(`${baseName}-`) && name.endsWith('.log'))
|
|
256
|
+
.map(async (name) => {
|
|
257
|
+
const path = join(dir, name);
|
|
258
|
+
try {
|
|
259
|
+
return { path, mtimeMs: (await stat(path)).mtimeMs };
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
}));
|
|
265
|
+
const latest = candidates
|
|
266
|
+
.filter((entry) => entry !== null)
|
|
267
|
+
.sort((a, b) => b.mtimeMs - a.mtimeMs)[0];
|
|
268
|
+
if (!latest)
|
|
269
|
+
return { path: null, tail: '' };
|
|
270
|
+
try {
|
|
271
|
+
const content = await readFile(latest.path, 'utf8');
|
|
272
|
+
return {
|
|
273
|
+
path: latest.path,
|
|
274
|
+
tail: content.length <= bytes ? content : content.slice(content.length - bytes),
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
return { path: latest.path, tail: '' };
|
|
279
|
+
}
|
|
280
|
+
}
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local llama.cpp model storage + install pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Storage layout:
|
|
5
|
+
*
|
|
6
|
+
* <home>/engines/llama-cpp/
|
|
7
|
+
* └── models/
|
|
8
|
+
* └── <model-id>/
|
|
9
|
+
* ├── manifest.json (snapshot of catalog metadata + install info)
|
|
10
|
+
* └── <weights>.gguf (the actual weights, original filename preserved)
|
|
11
|
+
*
|
|
12
|
+
* Install flow:
|
|
13
|
+
* 1. Look up the chat-model entry in the catalog.
|
|
14
|
+
* 2. Stream the GGUF from
|
|
15
|
+
* `huggingface.co/<repo>/resolve/<revision>/<filename>` (the pinned
|
|
16
|
+
* commit SHA, or `main` for legacy manifests) to a `.partial`
|
|
17
|
+
* file, hashing as we go.
|
|
18
|
+
* 3. Verify the computed sha256 against the manifest's expected value.
|
|
19
|
+
* 4. Run the GGUF header parser to extract context window + chat-template
|
|
20
|
+
* presence. Surface a non-fatal warning when `tokenizer.chat_template`
|
|
21
|
+
* is missing — llama-server otherwise silently uses the wrong
|
|
22
|
+
* template (the gemma4 footgun the Phase-0 spike caught).
|
|
23
|
+
* 5. Atomically rename `.partial` → final filename and write
|
|
24
|
+
* `manifest.json`.
|
|
25
|
+
*
|
|
26
|
+
* Delete flow:
|
|
27
|
+
* - Remove the per-model directory in one shot.
|
|
28
|
+
*
|
|
29
|
+
* Resolve-current flow:
|
|
30
|
+
* - Pick the first installed model (alphabetical) when ChatManager
|
|
31
|
+
* wants a default model path. Phase 2 keeps "current" implicit; a
|
|
32
|
+
* proper picker lives in the UI.
|
|
33
|
+
*/
|
|
34
|
+
import type { CatalogService } from '@bendyline/gezel-catalog';
|
|
35
|
+
import { type ModelBundleSource } from '../../models/bundle-storage.js';
|
|
36
|
+
import { type ModelUpdateStatus } from '../../models/catalog-drift.js';
|
|
37
|
+
import { type IncompleteModelDownloadInfo, type UnrecognizedModelInfo } from '../../models/storage-roots.js';
|
|
38
|
+
export type { IncompleteModelDownloadInfo } from '../../models/storage-roots.js';
|
|
39
|
+
export interface InstalledLlamaCppModel {
|
|
40
|
+
id: string;
|
|
41
|
+
name: string;
|
|
42
|
+
approxSizeBytes: number;
|
|
43
|
+
installedAt: string;
|
|
44
|
+
/** Absolute path to the weights file the supervisor passes to `llama-server --model`. */
|
|
45
|
+
weightsPath: string;
|
|
46
|
+
/**
|
|
47
|
+
* Absolute path to the multimodal projector file, when the catalog
|
|
48
|
+
* entry shipped an mmproj sidecar. The supervisor appends
|
|
49
|
+
* `--mmproj <path>` when set — that's what enables image / audio /
|
|
50
|
+
* video inputs on llama-server. Absent → text-only model.
|
|
51
|
+
*/
|
|
52
|
+
mmprojPath?: string;
|
|
53
|
+
/**
|
|
54
|
+
* On-disk size of {@link mmprojPath}, read from the file rather than the
|
|
55
|
+
* manifest. `approxSizeBytes` does NOT include the projector — the value
|
|
56
|
+
* recorded at install time is the weights alone whenever the payload was
|
|
57
|
+
* adopted or resumed rather than freshly downloaded — so every memory
|
|
58
|
+
* estimate has to add this explicitly or it under-reserves a vision model
|
|
59
|
+
* by the projector plus its compute buffers (1.7 GB on muse-glimmer).
|
|
60
|
+
*/
|
|
61
|
+
mmprojSizeBytes?: number;
|
|
62
|
+
/**
|
|
63
|
+
* Absolute path to ds4's model-matched vision encoder, when the catalog
|
|
64
|
+
* source declares one. The DwarfStar launcher forwards it as
|
|
65
|
+
* `--vision <path>`; it is intentionally distinct from llama.cpp's mmproj.
|
|
66
|
+
*/
|
|
67
|
+
visionEncoderPath?: string;
|
|
68
|
+
/** On-disk size of {@link visionEncoderPath}, used by launch admission. */
|
|
69
|
+
visionEncoderSizeBytes?: number;
|
|
70
|
+
/**
|
|
71
|
+
* Absolute path to a speculative-decoding companion GGUF, when the
|
|
72
|
+
* catalog ships one. The launcher forwards it as
|
|
73
|
+
* `--spec-draft-model <path>` for the selected draft algorithm.
|
|
74
|
+
*/
|
|
75
|
+
draftModelPath?: string;
|
|
76
|
+
/** From the GGUF metadata — useful for the supervisor's `-c` flag (Phase 3). */
|
|
77
|
+
contextWindow?: number;
|
|
78
|
+
/** Quantization tag (Q4_K_M / Q8_0 / …) lifted from the catalog source block. */
|
|
79
|
+
quantization?: string;
|
|
80
|
+
/**
|
|
81
|
+
* What the GGUF header itself declares (`general.file_type`), when the
|
|
82
|
+
* catalog's tag names no bit depth. The catalog string is hand-authored
|
|
83
|
+
* content and can be anything — `muse-glimmer-30b-q4` shipped
|
|
84
|
+
* `K-Quant-17GB` — so the model table falls back to this rather than
|
|
85
|
+
* printing a filename fragment in a column of `~4` / `~8`.
|
|
86
|
+
*/
|
|
87
|
+
ggufQuantization?: string;
|
|
88
|
+
/** Empty when `tokenizer.chat_template` is missing — surfaced in the UI as a warning. */
|
|
89
|
+
chatTemplatePresent: boolean;
|
|
90
|
+
/** Complete payload hashes used when adopting a read-only machine model. */
|
|
91
|
+
fileSha256?: Record<string, string>;
|
|
92
|
+
/**
|
|
93
|
+
* The architecture string from the GGUF metadata (qwen2 / llama / gemma3 / …).
|
|
94
|
+
* Lets the UI surface a hint when a model claims a family llama.cpp doesn't
|
|
95
|
+
* recognize natively.
|
|
96
|
+
*/
|
|
97
|
+
architecture?: string;
|
|
98
|
+
/**
|
|
99
|
+
* Catalog version this model was DOWNLOADED against (snapshotted into the
|
|
100
|
+
* local install manifest). Compared to the catalog's current version to
|
|
101
|
+
* detect drift — stale weights running under newer catalog settings
|
|
102
|
+
* (tuning/behaviors), the failure mode that shipped garbled gemma4-12b
|
|
103
|
+
* output.
|
|
104
|
+
*/
|
|
105
|
+
catalogVersion?: string;
|
|
106
|
+
/** sha256 of the weights recorded at install (first shard for sharded installs). */
|
|
107
|
+
sha256?: string;
|
|
108
|
+
/**
|
|
109
|
+
* True when this model resolves from a read-only overlay (the machine/shared
|
|
110
|
+
* asset store) rather than this daemon's writable root. `delete` refuses
|
|
111
|
+
* these, so the UI shows them as machine-provided instead of offering a
|
|
112
|
+
* Delete action that can only fail.
|
|
113
|
+
*/
|
|
114
|
+
readOnly?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* True when the catalog now describes a different PAYLOAD than the one on
|
|
117
|
+
* disk — a newer build whose bytes this copy does not have. Lets the model
|
|
118
|
+
* manager offer "Update" (fetch what differs, replace in place) instead of
|
|
119
|
+
* forcing the user to delete and re-fetch. A catalog version bump that
|
|
120
|
+
* leaves the files alone (retuning, sizing hints, wording) deliberately
|
|
121
|
+
* does not set this: the runtime resolves that metadata live, so there is
|
|
122
|
+
* nothing for the user to download. Computed in
|
|
123
|
+
* {@link LlamaCppModelManager.listInstalled} against the live catalog.
|
|
124
|
+
*/
|
|
125
|
+
updateAvailable?: boolean;
|
|
126
|
+
/** The catalog's current version, when it differs from the installed one. */
|
|
127
|
+
availableVersion?: string;
|
|
128
|
+
/** What changed, in one sentence, for the model manager's tooltip. */
|
|
129
|
+
updateReason?: string;
|
|
130
|
+
}
|
|
131
|
+
export type InstallEvent = {
|
|
132
|
+
type: 'progress';
|
|
133
|
+
bytesWritten: number;
|
|
134
|
+
totalBytes: number;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Surfaced when the shared `downloadWithRetry` helper hit a transient
|
|
138
|
+
* network error and is about to try again. The UI renders
|
|
139
|
+
* "Connection dropped — retrying in 4s (attempt 3/5)…" instead of a
|
|
140
|
+
* fatal error banner. `reason` is already a user-friendly sentence.
|
|
141
|
+
*/
|
|
142
|
+
| {
|
|
143
|
+
type: 'retrying';
|
|
144
|
+
attempt: number;
|
|
145
|
+
maxAttempts: number;
|
|
146
|
+
delayMs: number;
|
|
147
|
+
reason: string;
|
|
148
|
+
} | {
|
|
149
|
+
type: 'verifying';
|
|
150
|
+
} | {
|
|
151
|
+
type: 'extracting-metadata';
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* A second model being pulled alongside the requested one — today only the
|
|
155
|
+
* image reader, fetched automatically when the chat model can't see images.
|
|
156
|
+
*
|
|
157
|
+
* Its own event arm rather than folding the bytes into `progress`, because
|
|
158
|
+
* the user is entitled to know a further 3 GB is being downloaded and what
|
|
159
|
+
* for. `done` is withheld until this finishes, so the UI's terminal handler
|
|
160
|
+
* doesn't close the stream halfway through.
|
|
161
|
+
*/
|
|
162
|
+
| {
|
|
163
|
+
type: 'companion';
|
|
164
|
+
kind: 'image-recognition';
|
|
165
|
+
id: string;
|
|
166
|
+
name: string;
|
|
167
|
+
bytesWritten: number;
|
|
168
|
+
totalBytes: number;
|
|
169
|
+
/** Set when the companion pull failed. The primary install still stands. */
|
|
170
|
+
error?: string;
|
|
171
|
+
}
|
|
172
|
+
/** Final success event. `warning` is set when the GGUF lacks a chat_template. */
|
|
173
|
+
| {
|
|
174
|
+
type: 'done';
|
|
175
|
+
id: string;
|
|
176
|
+
warning?: string;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Terminal failure. When the failure is a sha256 mismatch against the
|
|
180
|
+
* catalog's pinned hashes, `mismatch` carries the offending file +
|
|
181
|
+
* expected/actual so the UI can offer a "Hugging Face version changed —
|
|
182
|
+
* download anyway?" prompt instead of a raw error. The user's "anyway"
|
|
183
|
+
* retry passes `?skipSha=1` and bypasses verification for that one
|
|
184
|
+
* install.
|
|
185
|
+
*/
|
|
186
|
+
| {
|
|
187
|
+
type: 'error';
|
|
188
|
+
error: string;
|
|
189
|
+
mismatch?: {
|
|
190
|
+
file: string;
|
|
191
|
+
expected: string;
|
|
192
|
+
actual: string;
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Snapshot of an in-flight install. Two different code paths drive
|
|
197
|
+
* the same `install()` generator — the user clicking "Install" in
|
|
198
|
+
* Settings (consumes events via the SSE route), and the first-run
|
|
199
|
+
* bootstrap that fires the install in the background. The Home
|
|
200
|
+
* banner can see what's happening in the bootstrap path, but the
|
|
201
|
+
* Settings catalog view (where the user looks for download
|
|
202
|
+
* progress) wouldn't, until we exposed a polled "what's currently
|
|
203
|
+
* being installed" snapshot. {@link LlamaCppModelManager.getActiveInstalls}
|
|
204
|
+
* is that snapshot.
|
|
205
|
+
*/
|
|
206
|
+
export interface ActiveInstallSnapshot {
|
|
207
|
+
catalogId: string;
|
|
208
|
+
bytesWritten: number;
|
|
209
|
+
totalBytes: number;
|
|
210
|
+
phase: 'downloading' | 'verifying' | 'extracting-metadata';
|
|
211
|
+
startedAt: string;
|
|
212
|
+
}
|
|
213
|
+
export interface LlamaCppModelManagerOptions {
|
|
214
|
+
/** GEZEL_HOME — used to compute the models root. */
|
|
215
|
+
home: string;
|
|
216
|
+
catalog: CatalogService;
|
|
217
|
+
/** Test seam — defaults to global fetch. */
|
|
218
|
+
fetchImpl?: typeof fetch;
|
|
219
|
+
/**
|
|
220
|
+
* Which engine's GGUFs this manager installs. ds4 (DwarfStar) GGUFs are
|
|
221
|
+
* structurally identical to llama.cpp's (HF repo + revision + filename/shards
|
|
222
|
+
* + sha256), so ds4 reuses this exact downloader — only the on-disk dir
|
|
223
|
+
* (`engines/<engine>/models`) and the catalog source block read (`ds4` vs
|
|
224
|
+
* `llamaCpp`) differ. Defaults to `'llama-cpp'`.
|
|
225
|
+
*/
|
|
226
|
+
engine?: 'llama-cpp' | 'ds4';
|
|
227
|
+
/**
|
|
228
|
+
* Fired once per successful install, just before the `done` event
|
|
229
|
+
* yields. Every install flow (Settings SSE route, first-run
|
|
230
|
+
* bootstrap, /v1 ensure, limbo recovery) funnels through `install()`,
|
|
231
|
+
* so this is the single post-install chokepoint — the fitness
|
|
232
|
+
* manager hangs its automatic probe here. Fire-and-forget: a
|
|
233
|
+
* throwing callback never breaks the install.
|
|
234
|
+
*/
|
|
235
|
+
onInstalled?: (info: {
|
|
236
|
+
engine: 'llama-cpp' | 'ds4';
|
|
237
|
+
id: string;
|
|
238
|
+
}) => void;
|
|
239
|
+
}
|
|
240
|
+
export declare class LlamaCppModelManager {
|
|
241
|
+
private readonly modelsRoot;
|
|
242
|
+
private readonly storageRoots;
|
|
243
|
+
private readonly catalog;
|
|
244
|
+
private readonly fetchImpl;
|
|
245
|
+
private readonly engine;
|
|
246
|
+
private readonly onInstalled?;
|
|
247
|
+
/**
|
|
248
|
+
* In-flight installs. `install()` registers an entry on first yield
|
|
249
|
+
* and clears it in the iterator's `finally` block, so consumers
|
|
250
|
+
* (HTTP `/active-installs`, polling React UI) always see the live
|
|
251
|
+
* subset regardless of which code path drove the install.
|
|
252
|
+
*/
|
|
253
|
+
private readonly activeInstalls;
|
|
254
|
+
/**
|
|
255
|
+
* Model directories we've already warned about skipping. `listInstalled`
|
|
256
|
+
* runs on every picker/settings poll; a broken directory should be loud
|
|
257
|
+
* exactly once per process, not once per poll.
|
|
258
|
+
*/
|
|
259
|
+
private readonly skipWarned;
|
|
260
|
+
constructor(opts: LlamaCppModelManagerOptions);
|
|
261
|
+
/**
|
|
262
|
+
* The catalog source block this manager downloads from — `ds4` for the
|
|
263
|
+
* DwarfStar engine, `llamaCpp` otherwise. Cast to the llama.cpp source
|
|
264
|
+
* shape. The common downloader accepts the union directly so engine-specific
|
|
265
|
+
* sidecars (`mmproj` versus `visionEncoder`) keep their honest catalog names.
|
|
266
|
+
*/
|
|
267
|
+
private srcBlock;
|
|
268
|
+
/**
|
|
269
|
+
* Snapshot of installs currently running. Used by the Settings UI to
|
|
270
|
+
* mirror background bootstrap installs into its progress view — the
|
|
271
|
+
* first-run download fires server-side via direct method call (not
|
|
272
|
+
* the HTTP install route), so the React component has no live SSE
|
|
273
|
+
* stream to consume; polling this surface fills the gap.
|
|
274
|
+
*/
|
|
275
|
+
getActiveInstalls(): ActiveInstallSnapshot[];
|
|
276
|
+
/**
|
|
277
|
+
* List installed models in alphabetical order. Tolerates malformed or
|
|
278
|
+
* partial directories — they're skipped, not surfaced as errors.
|
|
279
|
+
*/
|
|
280
|
+
listInstalled(): Promise<InstalledLlamaCppModel[]>;
|
|
281
|
+
/**
|
|
282
|
+
* List incomplete downloads for this engine — interrupted or unverified
|
|
283
|
+
* downloads that hold bytes on disk but have no `manifest.json`, so they
|
|
284
|
+
* never appear in {@link listInstalled}. Each is tagged `resumable` when
|
|
285
|
+
* its id still resolves to a catalog entry this engine can source, so the
|
|
286
|
+
* UI can offer resume (re-install picks up from the `.partial`) vs
|
|
287
|
+
* delete-only for stale ids. In-flight installs are excluded.
|
|
288
|
+
*/
|
|
289
|
+
listIncomplete(): Promise<IncompleteModelDownloadInfo[]>;
|
|
290
|
+
/**
|
|
291
|
+
* Model directories that do have a manifest, but whose metadata cannot be
|
|
292
|
+
* loaded by this build. These used to disappear from every inventory
|
|
293
|
+
* surface: `listInstalled()` correctly refused to run them, while the
|
|
294
|
+
* incomplete-download scan correctly ignored anything with a manifest.
|
|
295
|
+
* Keep that safety boundary, but return a management-only row so Settings
|
|
296
|
+
* can update a known catalog id or explicitly remove the held bytes.
|
|
297
|
+
*/
|
|
298
|
+
listUnrecognized(): Promise<UnrecognizedModelInfo[]>;
|
|
299
|
+
/**
|
|
300
|
+
* Path of the first installed model, or null when none exist. Phase 2
|
|
301
|
+
* uses this to pick a default `--model` arg for the supervised
|
|
302
|
+
* llama-server when the user hasn't explicitly chosen one. A "default
|
|
303
|
+
* model" UI lives in Phase 3.
|
|
304
|
+
*/
|
|
305
|
+
resolveDefaultModelPath(): Promise<string | null>;
|
|
306
|
+
/**
|
|
307
|
+
* Summary of the first installed model (or null). Same fall-through
|
|
308
|
+
* rule as {@link resolveDefaultModelPath}; returns the full summary
|
|
309
|
+
* so callers like `buildLlamaCppProvider` can pick up the manifest's
|
|
310
|
+
* `contextWindow` along with the path.
|
|
311
|
+
*/
|
|
312
|
+
resolveDefaultModel(): Promise<InstalledLlamaCppModel | null>;
|
|
313
|
+
/**
|
|
314
|
+
* Path of a specific installed model, or null when not installed.
|
|
315
|
+
* Used by ChatManager when the user has picked a model explicitly.
|
|
316
|
+
*/
|
|
317
|
+
resolveModelPath(id: string): Promise<string | null>;
|
|
318
|
+
/**
|
|
319
|
+
* Full summary for a specific installed model, or null when not
|
|
320
|
+
* installed. Used when the user has pinned a default model via
|
|
321
|
+
* `config.defaultModel['llama-cpp']` — `buildLlamaCppProvider`
|
|
322
|
+
* needs the `contextWindow` to set `--ctx-size` correctly.
|
|
323
|
+
*/
|
|
324
|
+
resolveModel(id: string): Promise<InstalledLlamaCppModel | null>;
|
|
325
|
+
/**
|
|
326
|
+
* Whether a genuinely newer build of one installed model exists. Null when
|
|
327
|
+
* the id isn't installed for this engine. Shared with the chat manager's
|
|
328
|
+
* per-session staleness notice so a user is never told to re-download for a
|
|
329
|
+
* change that only touched metadata.
|
|
330
|
+
*/
|
|
331
|
+
getUpdateStatus(id: string): Promise<ModelUpdateStatus | null>;
|
|
332
|
+
/**
|
|
333
|
+
* Compare one installed copy against the live catalog. The catalog lookup
|
|
334
|
+
* runs for every model on every inventory poll; the manifest re-read only
|
|
335
|
+
* happens for the few whose version actually moved.
|
|
336
|
+
*/
|
|
337
|
+
private evaluateDrift;
|
|
338
|
+
delete(id: string): Promise<void>;
|
|
339
|
+
/** Provider-owned snapshot used by the streaming `.gezmodel` exporter. */
|
|
340
|
+
getModelBundleSource(id: string): Promise<ModelBundleSource>;
|
|
341
|
+
/**
|
|
342
|
+
* Validate provider-specific invariants, write the local install manifest,
|
|
343
|
+
* and atomically publish a security-scanned staged bundle.
|
|
344
|
+
*/
|
|
345
|
+
importModelBundle(opts: {
|
|
346
|
+
id: string;
|
|
347
|
+
stagedModelDir: string;
|
|
348
|
+
installedManifest: Record<string, unknown>;
|
|
349
|
+
replace: boolean;
|
|
350
|
+
}): Promise<void>;
|
|
351
|
+
/**
|
|
352
|
+
* Install a model from the catalog. Yields progress / verifying /
|
|
353
|
+
* extracting-metadata / done events. Yields exactly one terminal
|
|
354
|
+
* event (`done` or `error`) and is safe to consume to completion.
|
|
355
|
+
*
|
|
356
|
+
* Existing weights at the target id are atomically replaced — the
|
|
357
|
+
* download writes to a `.partial` sibling and renames into place
|
|
358
|
+
* only after sha256 verification passes. Failed installs leave the
|
|
359
|
+
* previous weights untouched.
|
|
360
|
+
*/
|
|
361
|
+
install(catalogId: string, options?: {
|
|
362
|
+
skipSha?: boolean;
|
|
363
|
+
includeMmproj?: boolean;
|
|
364
|
+
}): AsyncIterable<InstallEvent>;
|
|
365
|
+
/**
|
|
366
|
+
* Inner install loop. Splitting it out lets {@link install} wrap the
|
|
367
|
+
* generator in a `try/finally` that clears the active-install
|
|
368
|
+
* registration on every exit path, including caller break/throw —
|
|
369
|
+
* the equivalent inline construction would require interleaving the
|
|
370
|
+
* cleanup with each early `return` and silently rot.
|
|
371
|
+
*/
|
|
372
|
+
private runInstall;
|
|
373
|
+
/**
|
|
374
|
+
* Files the plan asks for that are already on disk as exactly the bytes the
|
|
375
|
+
* catalog pins, keyed by filename with the digest to carry forward.
|
|
376
|
+
*
|
|
377
|
+
* An update usually rotates one thing — a quant, one shard, an added draft
|
|
378
|
+
* companion — and re-fetching the rest is pure waste. The install manifest
|
|
379
|
+
* records a sha256 for every file it published, each verified against the
|
|
380
|
+
* catalog when it landed; where that digest equals the pin we are about to
|
|
381
|
+
* download and the file is still its full length, the bytes on disk ARE the
|
|
382
|
+
* bytes we would fetch. Same trust model as the shared-store adoption cache:
|
|
383
|
+
* a recorded digest plus an unchanged stat is identity.
|
|
384
|
+
*/
|
|
385
|
+
private planReusableFiles;
|
|
386
|
+
/** Warn once per model directory per process, then stay quiet. */
|
|
387
|
+
private warnSkip;
|
|
388
|
+
private loadInstalled;
|
|
389
|
+
}
|