@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,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal event contract shared by every chat-model installer
|
|
3
|
+
* (`LlamaCppModelManager.install`, `MlxModelManager.install`): a stream of
|
|
4
|
+
* typed events where `done` / `error` are terminal. The registry treats
|
|
5
|
+
* everything else as opaque progress it can replay to late subscribers.
|
|
6
|
+
*/
|
|
7
|
+
export interface ChatInstallEventBase {
|
|
8
|
+
type: string;
|
|
9
|
+
error?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ChatInstallSnapshot {
|
|
12
|
+
id: string;
|
|
13
|
+
startedAt: string;
|
|
14
|
+
/** Set once a terminal event has been observed (done, error, or cancel). */
|
|
15
|
+
finished: boolean;
|
|
16
|
+
/** Set when the install errored or was cancelled. */
|
|
17
|
+
error?: string;
|
|
18
|
+
}
|
|
19
|
+
type Listener<E> = (event: E) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Owns the lifecycle of in-flight chat-model installs for one engine.
|
|
22
|
+
*
|
|
23
|
+
* Installs used to be tied 1:1 to the HTTP request that started them — when
|
|
24
|
+
* the client disconnected (closed the window, navigated away mid-download),
|
|
25
|
+
* the SSE loop exited, the async install generator closed, and the download
|
|
26
|
+
* was abandoned with `.partial` files on disk and no record it ever ran.
|
|
27
|
+
* This is the chat-model twin of the image path's `ImageModelPullRegistry`,
|
|
28
|
+
* which fixed the identical failure mode for image pulls.
|
|
29
|
+
*
|
|
30
|
+
* The registry decouples the two: the install runs in a detached background
|
|
31
|
+
* task owned by this object, and HTTP requests are just consumers that
|
|
32
|
+
* subscribe to the live event fan-out. Disconnect detaches the consumer; the
|
|
33
|
+
* install keeps going. Cancel is an explicit `DELETE /models/:id/install`.
|
|
34
|
+
*
|
|
35
|
+
* Cancellation unwinds the install generator via `iterator.return()` rather
|
|
36
|
+
* than an AbortSignal — the generator only runs between yields, and the
|
|
37
|
+
* downloaders yield progress a few times a second, so the unwind lands
|
|
38
|
+
* within one progress interval and the `.partial` files stay resumable.
|
|
39
|
+
*/
|
|
40
|
+
export declare class ChatModelInstallRegistry<E extends ChatInstallEventBase, O> {
|
|
41
|
+
private readonly entries;
|
|
42
|
+
private readonly engine;
|
|
43
|
+
private readonly run;
|
|
44
|
+
private readonly onDone;
|
|
45
|
+
private readonly finishedTtlMs;
|
|
46
|
+
constructor(opts: {
|
|
47
|
+
/** Label used in log lines only. */
|
|
48
|
+
engine: string;
|
|
49
|
+
/** Start the actual install — typically `(id, o) => manager.install(id, o)`. */
|
|
50
|
+
run: (id: string, opts: O) => AsyncIterable<E>;
|
|
51
|
+
/** Fired when an install reaches `done`, before the event is broadcast —
|
|
52
|
+
* the place to bust caches so subscribers observing `done` re-fetch
|
|
53
|
+
* fresh state. */
|
|
54
|
+
onDone?: (id: string) => void;
|
|
55
|
+
/** How long a finished entry stays observable (default {@link FINISHED_TTL_MS}). */
|
|
56
|
+
finishedTtlMs?: number;
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* Start an install for `id`, or attach to the one already in flight.
|
|
60
|
+
* Idempotent — a second `start` for a running id does not launch a second
|
|
61
|
+
* download and does not change the original's options. The install runs in
|
|
62
|
+
* a detached `void` task; the entry is claimed synchronously so callers
|
|
63
|
+
* can subscribe without racing the first event.
|
|
64
|
+
*/
|
|
65
|
+
start(id: string, opts: O): {
|
|
66
|
+
alreadyRunning: boolean;
|
|
67
|
+
};
|
|
68
|
+
get(id: string): ChatInstallSnapshot | null;
|
|
69
|
+
/** The snapshot plus the events a late subscriber would be replayed. */
|
|
70
|
+
describe(id: string): (ChatInstallSnapshot & {
|
|
71
|
+
lastEvent: E | null;
|
|
72
|
+
terminalEvent: E | null;
|
|
73
|
+
}) | null;
|
|
74
|
+
/** Every install still running, with its latest progress — the polled twin of subscribe(). */
|
|
75
|
+
active(): Array<{
|
|
76
|
+
id: string;
|
|
77
|
+
startedAt: string;
|
|
78
|
+
lastEvent: E | null;
|
|
79
|
+
}>;
|
|
80
|
+
/**
|
|
81
|
+
* Subscribe to live events for an in-flight install. On subscribe, the
|
|
82
|
+
* registry replays the last known progress event (and the terminal event,
|
|
83
|
+
* when one has landed) so a late subscriber renders immediately. Returns
|
|
84
|
+
* `null` when no entry exists for `id`; otherwise an unsubscribe function.
|
|
85
|
+
* Unsubscribing does NOT cancel the install — disconnect ≠ cancel.
|
|
86
|
+
*/
|
|
87
|
+
subscribe(id: string, listener: Listener<E>): (() => void) | null;
|
|
88
|
+
/**
|
|
89
|
+
* Cancel an in-flight install. The generator unwinds at its next yield,
|
|
90
|
+
* running the manager's cleanup (active-install deregistration) and
|
|
91
|
+
* leaving `.partial` files in place for resume. Subscribers receive a
|
|
92
|
+
* terminal `error` event stating the install was cancelled. Returns true
|
|
93
|
+
* when a live entry was cancelled.
|
|
94
|
+
*/
|
|
95
|
+
cancel(id: string): boolean;
|
|
96
|
+
/** Shutdown/test hook: unwind every live install and drop all state. */
|
|
97
|
+
clear(): void;
|
|
98
|
+
private consume;
|
|
99
|
+
private broadcast;
|
|
100
|
+
}
|
|
101
|
+
export {};
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { createLogger } from '@bendyline/gezel';
|
|
2
|
+
const log = createLogger('models');
|
|
3
|
+
/**
|
|
4
|
+
* How long a finished install (done OR error) stays in the registry after
|
|
5
|
+
* the terminal event — long enough for a reconnecting client to observe the
|
|
6
|
+
* terminal state, short enough that the installed-models list takes over.
|
|
7
|
+
*/
|
|
8
|
+
const FINISHED_TTL_MS = 8_000;
|
|
9
|
+
/**
|
|
10
|
+
* Owns the lifecycle of in-flight chat-model installs for one engine.
|
|
11
|
+
*
|
|
12
|
+
* Installs used to be tied 1:1 to the HTTP request that started them — when
|
|
13
|
+
* the client disconnected (closed the window, navigated away mid-download),
|
|
14
|
+
* the SSE loop exited, the async install generator closed, and the download
|
|
15
|
+
* was abandoned with `.partial` files on disk and no record it ever ran.
|
|
16
|
+
* This is the chat-model twin of the image path's `ImageModelPullRegistry`,
|
|
17
|
+
* which fixed the identical failure mode for image pulls.
|
|
18
|
+
*
|
|
19
|
+
* The registry decouples the two: the install runs in a detached background
|
|
20
|
+
* task owned by this object, and HTTP requests are just consumers that
|
|
21
|
+
* subscribe to the live event fan-out. Disconnect detaches the consumer; the
|
|
22
|
+
* install keeps going. Cancel is an explicit `DELETE /models/:id/install`.
|
|
23
|
+
*
|
|
24
|
+
* Cancellation unwinds the install generator via `iterator.return()` rather
|
|
25
|
+
* than an AbortSignal — the generator only runs between yields, and the
|
|
26
|
+
* downloaders yield progress a few times a second, so the unwind lands
|
|
27
|
+
* within one progress interval and the `.partial` files stay resumable.
|
|
28
|
+
*/
|
|
29
|
+
export class ChatModelInstallRegistry {
|
|
30
|
+
entries = new Map();
|
|
31
|
+
engine;
|
|
32
|
+
run;
|
|
33
|
+
onDone;
|
|
34
|
+
finishedTtlMs;
|
|
35
|
+
constructor(opts) {
|
|
36
|
+
this.engine = opts.engine;
|
|
37
|
+
this.run = opts.run;
|
|
38
|
+
this.onDone = opts.onDone;
|
|
39
|
+
this.finishedTtlMs = opts.finishedTtlMs ?? FINISHED_TTL_MS;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Start an install for `id`, or attach to the one already in flight.
|
|
43
|
+
* Idempotent — a second `start` for a running id does not launch a second
|
|
44
|
+
* download and does not change the original's options. The install runs in
|
|
45
|
+
* a detached `void` task; the entry is claimed synchronously so callers
|
|
46
|
+
* can subscribe without racing the first event.
|
|
47
|
+
*/
|
|
48
|
+
start(id, opts) {
|
|
49
|
+
const existing = this.entries.get(id);
|
|
50
|
+
if (existing && !existing.snapshot.finished) {
|
|
51
|
+
return { alreadyRunning: true };
|
|
52
|
+
}
|
|
53
|
+
const entry = {
|
|
54
|
+
snapshot: { id, startedAt: new Date().toISOString(), finished: false },
|
|
55
|
+
lastEvent: null,
|
|
56
|
+
terminalEvent: null,
|
|
57
|
+
listeners: new Set(),
|
|
58
|
+
iterator: null,
|
|
59
|
+
cancelled: false,
|
|
60
|
+
};
|
|
61
|
+
this.entries.set(id, entry);
|
|
62
|
+
void this.consume(id, entry, opts);
|
|
63
|
+
return { alreadyRunning: false };
|
|
64
|
+
}
|
|
65
|
+
get(id) {
|
|
66
|
+
const entry = this.entries.get(id);
|
|
67
|
+
return entry ? { ...entry.snapshot } : null;
|
|
68
|
+
}
|
|
69
|
+
/** The snapshot plus the events a late subscriber would be replayed. */
|
|
70
|
+
describe(id) {
|
|
71
|
+
const entry = this.entries.get(id);
|
|
72
|
+
if (!entry)
|
|
73
|
+
return null;
|
|
74
|
+
return { ...entry.snapshot, lastEvent: entry.lastEvent, terminalEvent: entry.terminalEvent };
|
|
75
|
+
}
|
|
76
|
+
/** Every install still running, with its latest progress — the polled twin of subscribe(). */
|
|
77
|
+
active() {
|
|
78
|
+
const out = [];
|
|
79
|
+
for (const entry of this.entries.values()) {
|
|
80
|
+
if (entry.snapshot.finished)
|
|
81
|
+
continue;
|
|
82
|
+
out.push({
|
|
83
|
+
id: entry.snapshot.id,
|
|
84
|
+
startedAt: entry.snapshot.startedAt,
|
|
85
|
+
lastEvent: entry.lastEvent,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Subscribe to live events for an in-flight install. On subscribe, the
|
|
92
|
+
* registry replays the last known progress event (and the terminal event,
|
|
93
|
+
* when one has landed) so a late subscriber renders immediately. Returns
|
|
94
|
+
* `null` when no entry exists for `id`; otherwise an unsubscribe function.
|
|
95
|
+
* Unsubscribing does NOT cancel the install — disconnect ≠ cancel.
|
|
96
|
+
*/
|
|
97
|
+
subscribe(id, listener) {
|
|
98
|
+
const entry = this.entries.get(id);
|
|
99
|
+
if (!entry)
|
|
100
|
+
return null;
|
|
101
|
+
entry.listeners.add(listener);
|
|
102
|
+
if (entry.lastEvent)
|
|
103
|
+
listener(entry.lastEvent);
|
|
104
|
+
if (entry.terminalEvent)
|
|
105
|
+
listener(entry.terminalEvent);
|
|
106
|
+
return () => {
|
|
107
|
+
entry.listeners.delete(listener);
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Cancel an in-flight install. The generator unwinds at its next yield,
|
|
112
|
+
* running the manager's cleanup (active-install deregistration) and
|
|
113
|
+
* leaving `.partial` files in place for resume. Subscribers receive a
|
|
114
|
+
* terminal `error` event stating the install was cancelled. Returns true
|
|
115
|
+
* when a live entry was cancelled.
|
|
116
|
+
*/
|
|
117
|
+
cancel(id) {
|
|
118
|
+
const entry = this.entries.get(id);
|
|
119
|
+
if (!entry || entry.snapshot.finished || entry.cancelled)
|
|
120
|
+
return false;
|
|
121
|
+
entry.cancelled = true;
|
|
122
|
+
void entry.iterator?.return?.(undefined);
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
/** Shutdown/test hook: unwind every live install and drop all state. */
|
|
126
|
+
clear() {
|
|
127
|
+
for (const entry of this.entries.values()) {
|
|
128
|
+
if (!entry.snapshot.finished) {
|
|
129
|
+
entry.cancelled = true;
|
|
130
|
+
void entry.iterator?.return?.(undefined);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
this.entries.clear();
|
|
134
|
+
}
|
|
135
|
+
async consume(id, entry, opts) {
|
|
136
|
+
let iterator = null;
|
|
137
|
+
try {
|
|
138
|
+
iterator = this.run(id, opts)[Symbol.asyncIterator]();
|
|
139
|
+
entry.iterator = iterator;
|
|
140
|
+
while (true) {
|
|
141
|
+
const { value, done } = await iterator.next();
|
|
142
|
+
if (done)
|
|
143
|
+
break;
|
|
144
|
+
const event = value;
|
|
145
|
+
const terminal = event.type === 'done' || event.type === 'error';
|
|
146
|
+
if (terminal) {
|
|
147
|
+
entry.terminalEvent = event;
|
|
148
|
+
if (event.type === 'error') {
|
|
149
|
+
entry.snapshot.error = event.error ?? 'install failed';
|
|
150
|
+
log.warn(`[${this.engine}] install "${id}" failed: ${entry.snapshot.error}`);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
this.onDone?.(id);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
entry.lastEvent = event;
|
|
158
|
+
}
|
|
159
|
+
this.broadcast(entry, event);
|
|
160
|
+
if (terminal)
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
166
|
+
log.warn(`[${this.engine}] install "${id}" crashed: ${message}`);
|
|
167
|
+
const errorEvent = { type: 'error', error: message };
|
|
168
|
+
entry.terminalEvent = errorEvent;
|
|
169
|
+
entry.snapshot.error = message;
|
|
170
|
+
this.broadcast(entry, errorEvent);
|
|
171
|
+
}
|
|
172
|
+
finally {
|
|
173
|
+
entry.iterator = null;
|
|
174
|
+
// Breaking on a terminal event leaves the generator suspended at its
|
|
175
|
+
// final yield — unlike a `for await` loop, a manual next() loop does
|
|
176
|
+
// not auto-return. Unwind it explicitly so the manager's own finally
|
|
177
|
+
// (active-install deregistration) always runs.
|
|
178
|
+
try {
|
|
179
|
+
await iterator?.return?.(undefined);
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
// The generator's unwind path failing must not mask the install result.
|
|
183
|
+
}
|
|
184
|
+
if (!entry.terminalEvent) {
|
|
185
|
+
// The generator unwound without a terminal event — a cancel(), or
|
|
186
|
+
// an installer bug. Either way subscribers must not hang waiting
|
|
187
|
+
// for a `done` that will never come.
|
|
188
|
+
const message = entry.cancelled ? 'install cancelled' : 'install ended unexpectedly';
|
|
189
|
+
if (entry.cancelled)
|
|
190
|
+
log.info(`[${this.engine}] install "${id}" cancelled`);
|
|
191
|
+
else
|
|
192
|
+
log.warn(`[${this.engine}] install "${id}" ended without a terminal event`);
|
|
193
|
+
const errorEvent = { type: 'error', error: message };
|
|
194
|
+
entry.terminalEvent = errorEvent;
|
|
195
|
+
entry.snapshot.error = message;
|
|
196
|
+
this.broadcast(entry, errorEvent);
|
|
197
|
+
}
|
|
198
|
+
entry.snapshot.finished = true;
|
|
199
|
+
const timer = setTimeout(() => {
|
|
200
|
+
if (this.entries.get(id) === entry)
|
|
201
|
+
this.entries.delete(id);
|
|
202
|
+
}, this.finishedTtlMs);
|
|
203
|
+
timer.unref?.();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
broadcast(entry, event) {
|
|
207
|
+
for (const listener of entry.listeners) {
|
|
208
|
+
try {
|
|
209
|
+
listener(event);
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
log.warn(`[${this.engine}] install listener threw: ${err instanceof Error ? err.message : err}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const INVALID_MODEL_ID_CODE = "invalid-model-id";
|
|
2
|
+
export declare const INVALID_MODEL_ID_MESSAGE = "model id must be a portable single-segment id (letters, numbers, @, ., _, or -)";
|
|
3
|
+
/**
|
|
4
|
+
* Model ids are storage keys, never paths.
|
|
5
|
+
*
|
|
6
|
+
* Keep this model-specific alias instead of scattering entity-id checks
|
|
7
|
+
* through providers and routes. It gives every model lifecycle surface one
|
|
8
|
+
* invariant while retaining the stricter cross-platform rules from core.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isSafeModelId(value: unknown): value is string;
|
|
11
|
+
export declare class InvalidModelIdError extends TypeError {
|
|
12
|
+
readonly code = "invalid-model-id";
|
|
13
|
+
constructor();
|
|
14
|
+
}
|
|
15
|
+
export declare function assertSafeModelId(value: unknown): asserts value is string;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve a writable model directory only after proving that the caller
|
|
18
|
+
* supplied an id rather than a path. The second containment check is
|
|
19
|
+
* deliberate defense in depth for destructive provider methods that can be
|
|
20
|
+
* called without going through an HTTP route.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveModelDirectory(modelsRoot: string, id: unknown): string;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { isSafeEntityId } from '@bendyline/gezel';
|
|
2
|
+
import { safeJoin } from '../fs/safe-paths.js';
|
|
3
|
+
export const INVALID_MODEL_ID_CODE = 'invalid-model-id';
|
|
4
|
+
export const INVALID_MODEL_ID_MESSAGE = 'model id must be a portable single-segment id (letters, numbers, @, ., _, or -)';
|
|
5
|
+
/**
|
|
6
|
+
* Model ids are storage keys, never paths.
|
|
7
|
+
*
|
|
8
|
+
* Keep this model-specific alias instead of scattering entity-id checks
|
|
9
|
+
* through providers and routes. It gives every model lifecycle surface one
|
|
10
|
+
* invariant while retaining the stricter cross-platform rules from core.
|
|
11
|
+
*/
|
|
12
|
+
export function isSafeModelId(value) {
|
|
13
|
+
return isSafeEntityId(value);
|
|
14
|
+
}
|
|
15
|
+
export class InvalidModelIdError extends TypeError {
|
|
16
|
+
code = INVALID_MODEL_ID_CODE;
|
|
17
|
+
constructor() {
|
|
18
|
+
super(INVALID_MODEL_ID_MESSAGE);
|
|
19
|
+
this.name = 'InvalidModelIdError';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function assertSafeModelId(value) {
|
|
23
|
+
if (!isSafeModelId(value)) {
|
|
24
|
+
throw new InvalidModelIdError();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolve a writable model directory only after proving that the caller
|
|
29
|
+
* supplied an id rather than a path. The second containment check is
|
|
30
|
+
* deliberate defense in depth for destructive provider methods that can be
|
|
31
|
+
* called without going through an HTTP route.
|
|
32
|
+
*/
|
|
33
|
+
export function resolveModelDirectory(modelsRoot, id) {
|
|
34
|
+
assertSafeModelId(id);
|
|
35
|
+
const target = safeJoin(modelsRoot, id);
|
|
36
|
+
if (!target) {
|
|
37
|
+
throw new InvalidModelIdError();
|
|
38
|
+
}
|
|
39
|
+
return target;
|
|
40
|
+
}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public machine assets are intentionally separate from the machine
|
|
3
|
+
* service's private GEZEL_HOME state. The installer/service host supplies
|
|
4
|
+
* this variable; standalone CLI launches supply the same canonical path as a
|
|
5
|
+
* read-only overlay.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SHARED_ASSETS_ENV = "GEZEL_SHARED_ASSETS_DIR";
|
|
8
|
+
/**
|
|
9
|
+
* Additional gezel HOMES whose installed models this process may read but
|
|
10
|
+
* never write. Delimiter-separated absolute paths, lowest priority in the
|
|
11
|
+
* overlay.
|
|
12
|
+
*
|
|
13
|
+
* This exists for a daemon hosted by a third-party app through
|
|
14
|
+
* `@bendyline/gezel-app-sdk/host`: it owns a private home under
|
|
15
|
+
* `~/.gezel/apps/<appId>/`, so without this it would re-download weights the
|
|
16
|
+
* user's own Gezel install already has. Unlike {@link SHARED_ASSETS_ENV},
|
|
17
|
+
* which names a purpose-built public asset store, the entries here are
|
|
18
|
+
* ordinary homes, so the per-engine `engines/<engine>/models` suffix is
|
|
19
|
+
* applied for them. Read-only payloads still have to carry
|
|
20
|
+
* `manifest.fileSha256` to be adopted, so a home whose installs predate
|
|
21
|
+
* that field is simply skipped rather than trusted.
|
|
22
|
+
*/
|
|
23
|
+
export declare const READONLY_MODEL_HOMES_ENV = "GEZEL_READONLY_MODEL_HOMES";
|
|
24
|
+
export interface ModelStorageRoots {
|
|
25
|
+
/** The only root this process may create, replace, or delete models in. */
|
|
26
|
+
writableRoot: string;
|
|
27
|
+
/**
|
|
28
|
+
* Lower-priority, read-only roots, highest priority first. A standalone CLI
|
|
29
|
+
* uses the machine asset store here; a machine service has none because that
|
|
30
|
+
* store is its writer. An app-hosted daemon may additionally list other
|
|
31
|
+
* gezel homes through {@link READONLY_MODEL_HOMES_ENV}.
|
|
32
|
+
*/
|
|
33
|
+
readOnlyRoots: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface ModelStorageRootOptions {
|
|
36
|
+
home: string;
|
|
37
|
+
engine: string;
|
|
38
|
+
env?: NodeJS.ProcessEnv;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve a model store without ever treating the machine service's private
|
|
42
|
+
* home as a fallback. Local assets shadow machine assets with the same id.
|
|
43
|
+
*/
|
|
44
|
+
export declare function modelStorageRoots(opts: ModelStorageRootOptions): ModelStorageRoots;
|
|
45
|
+
/**
|
|
46
|
+
* Parse {@link READONLY_MODEL_HOMES_ENV}. Relative entries are dropped rather
|
|
47
|
+
* than resolved against the daemon's cwd — a model root is a machine-level
|
|
48
|
+
* location, and guessing one from whichever directory happened to launch the
|
|
49
|
+
* process is how a host ends up reading someone else's files.
|
|
50
|
+
*/
|
|
51
|
+
export declare function readOnlyModelHomes(env?: NodeJS.ProcessEnv): string[];
|
|
52
|
+
/**
|
|
53
|
+
* Fail closed when an existing model-store component resolves through a
|
|
54
|
+
* symlink/junction or outside the configured root. On Windows, Node reports
|
|
55
|
+
* directory junctions as symbolic links and `realpath` resolves the final
|
|
56
|
+
* filesystem target, so this protects both recursive ACL work and ordinary
|
|
57
|
+
* publish/delete operations from descendant reparse redirection.
|
|
58
|
+
*
|
|
59
|
+
* Missing trailing components are allowed so callers can validate a publish
|
|
60
|
+
* target before creating it. Every existing ancestor, including `root`, is
|
|
61
|
+
* still checked.
|
|
62
|
+
*/
|
|
63
|
+
export declare function assertModelStorePathSafe(root: string, target: string): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* One-shot upgrade bridge for machine services that downloaded models into
|
|
66
|
+
* the formerly-private `<home>/engines/<engine>/models` tree. Both locations are on
|
|
67
|
+
* the same machine volume in supported installers, so directory renames are
|
|
68
|
+
* atomic and avoid copying multi-gigabyte weights.
|
|
69
|
+
*/
|
|
70
|
+
export declare function migrateLegacySystemModels(home: string, env?: NodeJS.ProcessEnv): Promise<number>;
|
|
71
|
+
/** Search order: user-owned/writable first, then machine-owned/read-only. */
|
|
72
|
+
export declare function modelSearchRoots(roots: ModelStorageRoots): string[];
|
|
73
|
+
/**
|
|
74
|
+
* List ids across an overlay, de-duplicating in search order so a user-owned
|
|
75
|
+
* model intentionally shadows a machine model with the same catalog id.
|
|
76
|
+
*/
|
|
77
|
+
export declare function listOverlayModelIds(roots: ModelStorageRoots): Promise<string[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Return the first overlay root containing a readable model manifest.
|
|
80
|
+
* Presence of an incomplete directory in a higher-priority root does not
|
|
81
|
+
* hide a complete machine model.
|
|
82
|
+
*/
|
|
83
|
+
export declare function findModelRoot(roots: ModelStorageRoots, id: string): Promise<string | null>;
|
|
84
|
+
/**
|
|
85
|
+
* Resolve an id that a quant-suffix migration renamed away, by finding the
|
|
86
|
+
* install that records it as its {@link InstalledModelRenameRecord.renamedFrom}.
|
|
87
|
+
*
|
|
88
|
+
* Config pins, gezel frontmatter, eval caches, and session records all hold
|
|
89
|
+
* whatever id was current when they were written, and there is no way to
|
|
90
|
+
* find and rewrite every one of them. Keeping the former id resolvable is
|
|
91
|
+
* what makes the rename cosmetic rather than a breaking change.
|
|
92
|
+
*
|
|
93
|
+
* Only ever called on a miss, and only over directories whose name the
|
|
94
|
+
* former id prefixes — every rename target is the former id plus a suffix,
|
|
95
|
+
* so no other directory can be the answer.
|
|
96
|
+
*/
|
|
97
|
+
export declare function findRenamedModelId(roots: ModelStorageRoots, formerId: string): Promise<string | null>;
|
|
98
|
+
export declare function modelExistsOnlyReadOnly(roots: ModelStorageRoots, id: string): Promise<boolean>;
|
|
99
|
+
export declare const READ_ONLY_MODEL_CODE = "read-only-model";
|
|
100
|
+
/**
|
|
101
|
+
* Refusal to mutate a model that only exists in a read-only overlay root.
|
|
102
|
+
* Typed so HTTP routes can map it to a 4xx with the actionable message
|
|
103
|
+
* instead of letting it escape as an opaque 500.
|
|
104
|
+
*/
|
|
105
|
+
export declare class ReadOnlyModelError extends Error {
|
|
106
|
+
readonly code = "read-only-model";
|
|
107
|
+
constructor(id: string);
|
|
108
|
+
}
|
|
109
|
+
export declare function readOnlyModelError(id: string): Error;
|
|
110
|
+
/**
|
|
111
|
+
* Remove a model directory, tolerating the file locks that make a naive
|
|
112
|
+
* `rm` flaky on Windows. Antivirus / Search-Indexer transient holds clear in
|
|
113
|
+
* a few hundred ms, so we retry with backoff. A *persistent* lock (a running
|
|
114
|
+
* llama-server has the GGUF open) never clears on its own — we surface an
|
|
115
|
+
* actionable message rather than the raw `EBUSY`/`EPERM` so the UI can tell
|
|
116
|
+
* the user to switch models first, instead of the delete looking like a no-op.
|
|
117
|
+
*/
|
|
118
|
+
export declare function removeModelDir(itemDir: string, writableRoot?: string): Promise<void>;
|
|
119
|
+
/**
|
|
120
|
+
* Hash every published payload file except the self-describing manifest.
|
|
121
|
+
*
|
|
122
|
+
* `precomputed` lets a caller that has *already* streamed a file through
|
|
123
|
+
* SHA-256 (the install path verifies every shard against the catalog hash
|
|
124
|
+
* before this runs) hand those digests in, keyed by the same '/'-joined
|
|
125
|
+
* relative path this returns. Matching files are taken from the cache
|
|
126
|
+
* instead of re-read — a multi-GB install would otherwise hash the whole
|
|
127
|
+
* payload from disk twice. Files on disk but absent from the cache (stale
|
|
128
|
+
* shards from a prior install, a dropped mmproj) are still enumerated and
|
|
129
|
+
* hashed, so the returned map always describes the real on-disk payload.
|
|
130
|
+
*/
|
|
131
|
+
export declare function hashModelPayloadFiles(modelDir: string, precomputed?: Record<string, string>): Promise<Record<string, string>>;
|
|
132
|
+
/**
|
|
133
|
+
* Delete payload files in a model directory that the freshly-written install no
|
|
134
|
+
* longer references. When a model updates in place to a different quant/filename
|
|
135
|
+
* (e.g. gemma4-12b-q4 moving from `…-Q4_K_M.gguf` to `…-qat-UD-Q4_K_XL.gguf`),
|
|
136
|
+
* the rename publishes the new weights but the old file lingers — tens of GB of
|
|
137
|
+
* orphaned weights for one slot. `keep` is the set of '/'-joined relative paths
|
|
138
|
+
* the new manifest references (weights + shards + mmproj + draft). manifest.json
|
|
139
|
+
* and in-flight `.partial` files are never candidates (listModelPayloadFiles
|
|
140
|
+
* already excludes them). Returns the relative paths removed. Best-effort per
|
|
141
|
+
* file — a file we can't remove is left rather than aborting the install.
|
|
142
|
+
*/
|
|
143
|
+
export declare function pruneModelPayloadFiles(modelDir: string, keep: ReadonlySet<string>): Promise<string[]>;
|
|
144
|
+
/**
|
|
145
|
+
* Revalidate a read-only machine model on first adoption. The user-owned
|
|
146
|
+
* cache records file identity + size + mtime; any change forces full SHA-256
|
|
147
|
+
* verification again. The cache itself never lives beside shared models.
|
|
148
|
+
*/
|
|
149
|
+
export declare function verifyReadOnlyModelPayload(roots: ModelStorageRoots, modelRoot: string, id: string, expected: Record<string, string> | undefined, onReject?: (reason: string) => void): Promise<boolean>;
|
|
150
|
+
/**
|
|
151
|
+
* Machine daemons use a restrictive umask for private state. After a model
|
|
152
|
+
* has been fully downloaded and hash-verified, make only that published
|
|
153
|
+
* bundle traversable/readable by ordinary users.
|
|
154
|
+
*
|
|
155
|
+
* Windows needs an explicit inheritance reset. A model imported through the
|
|
156
|
+
* private transaction area, or moved from the legacy private model store,
|
|
157
|
+
* keeps its old DACL when it is renamed within the ProgramData volume. Merely
|
|
158
|
+
* placing that directory below the public `assets` container therefore does
|
|
159
|
+
* not make it readable. Resetting the published tree makes it inherit the
|
|
160
|
+
* installer's read-only BUILTIN\Users ACE without granting users write access.
|
|
161
|
+
*/
|
|
162
|
+
export declare function makeSharedModelReadable(modelDir: string, env?: NodeJS.ProcessEnv): Promise<void>;
|
|
163
|
+
export interface ReclaimedDownload {
|
|
164
|
+
id: string;
|
|
165
|
+
bytes: number;
|
|
166
|
+
}
|
|
167
|
+
/** Grace period before an abandoned download is reclaimed. Within it the
|
|
168
|
+
* `.partial` files still serve as resume credit for a retried install. */
|
|
169
|
+
export declare const ABANDONED_DOWNLOAD_TTL_MS: number;
|
|
170
|
+
/**
|
|
171
|
+
* Delete abandoned model downloads from the writable root.
|
|
172
|
+
*
|
|
173
|
+
* A directory qualifies only when ALL of these hold — the gates are meant to
|
|
174
|
+
* make "we delete something the user wanted" impossible:
|
|
175
|
+
* - no `manifest.json` (never completed an install, invisible to every
|
|
176
|
+
* listing surface),
|
|
177
|
+
* - contains at least one `.partial` file (the downloader's signature —
|
|
178
|
+
* a hand-placed model directory without one is never touched),
|
|
179
|
+
* - nothing in it was written for `ttlMs` (default 7 days — within that
|
|
180
|
+
* window the `.partial` files are resume credit for a retried install),
|
|
181
|
+
* - not currently being installed (`activeIds`).
|
|
182
|
+
*
|
|
183
|
+
* Only the writable root is swept — read-only machine roots belong to the
|
|
184
|
+
* machine service, which runs its own sweep. Callers run this once at boot;
|
|
185
|
+
* errors are contained per-directory so one unreadable entry can't stop the
|
|
186
|
+
* sweep.
|
|
187
|
+
*/
|
|
188
|
+
export declare function reclaimAbandonedModelDownloads(opts: {
|
|
189
|
+
writableRoot: string;
|
|
190
|
+
activeIds?: ReadonlySet<string>;
|
|
191
|
+
ttlMs?: number;
|
|
192
|
+
now?: number;
|
|
193
|
+
}): Promise<ReclaimedDownload[]>;
|
|
194
|
+
export interface IncompleteModelDownload {
|
|
195
|
+
id: string;
|
|
196
|
+
/** Total bytes on disk across the directory (payload + `.partial`). */
|
|
197
|
+
bytes: number;
|
|
198
|
+
/** ISO timestamp of the newest write in the directory. */
|
|
199
|
+
updatedAt: string;
|
|
200
|
+
/** Whether a `.partial` is present (a resumable in-flight download vs
|
|
201
|
+
* stray files left without one). */
|
|
202
|
+
hasPartial: boolean;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Cheap metadata-only profile of one model directory. Unlike
|
|
206
|
+
* {@link hashModelPayloadFiles}, this never reads payload contents — it only
|
|
207
|
+
* walks regular files and sums their stat sizes. Inventory surfaces use it to
|
|
208
|
+
* keep malformed/legacy installs visible without hashing a hundred-gigabyte
|
|
209
|
+
* model merely to say that the files exist.
|
|
210
|
+
*/
|
|
211
|
+
export interface ModelDirectoryProfile {
|
|
212
|
+
/** Total bytes on disk across payload, metadata, and partial files. */
|
|
213
|
+
bytes: number;
|
|
214
|
+
/** ISO timestamp of the newest directory/file write. */
|
|
215
|
+
updatedAt: string;
|
|
216
|
+
/** Whether any resumable download fragment is present. */
|
|
217
|
+
hasPartial: boolean;
|
|
218
|
+
/** Whether the directory tree contains model metadata. */
|
|
219
|
+
hasManifest: boolean;
|
|
220
|
+
}
|
|
221
|
+
/** Inventory row for a model directory whose manifest exists but is not
|
|
222
|
+
* loadable by the current engine manager. */
|
|
223
|
+
export interface UnrecognizedModelInfo {
|
|
224
|
+
id: string;
|
|
225
|
+
name?: string;
|
|
226
|
+
bytes: number;
|
|
227
|
+
updatedAt: string;
|
|
228
|
+
reason: string;
|
|
229
|
+
canUpdate: boolean;
|
|
230
|
+
readOnly?: boolean;
|
|
231
|
+
}
|
|
232
|
+
export declare function inspectModelDirectory(dir: string): Promise<ModelDirectoryProfile | null>;
|
|
233
|
+
/**
|
|
234
|
+
* An incomplete download enriched with per-engine catalog context. Managers
|
|
235
|
+
* return this from `listIncomplete()`; the route serializes it as-is.
|
|
236
|
+
*/
|
|
237
|
+
export interface IncompleteModelDownloadInfo extends IncompleteModelDownload {
|
|
238
|
+
/**
|
|
239
|
+
* True when this id still resolves to a catalog entry the owning engine can
|
|
240
|
+
* source — a re-install resumes from the on-disk `.partial` files rather
|
|
241
|
+
* than starting over. False for stale/removed ids, where delete is the only
|
|
242
|
+
* sensible action.
|
|
243
|
+
*/
|
|
244
|
+
resumable: boolean;
|
|
245
|
+
/** Display name from the catalog, when the id still resolves. */
|
|
246
|
+
name?: string;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* List incomplete model downloads in the writable root — directories with no
|
|
250
|
+
* `manifest.json` (so they're invisible to `listInstalled` and every other
|
|
251
|
+
* listing surface) that nonetheless hold bytes. These are interrupted or
|
|
252
|
+
* unverified downloads: they can hold tens of GB yet the user has no way to
|
|
253
|
+
* see or manage them until the 7-day {@link reclaimAbandonedModelDownloads}
|
|
254
|
+
* sweep silently removes them. Surfacing them lets the UI offer resume/delete
|
|
255
|
+
* immediately. Currently-installing ids are excluded (they show as live
|
|
256
|
+
* progress elsewhere). Sorted largest-first — the most disk to reclaim.
|
|
257
|
+
*/
|
|
258
|
+
export declare function listIncompleteModelDownloads(opts: {
|
|
259
|
+
writableRoot: string;
|
|
260
|
+
activeIds?: ReadonlySet<string>;
|
|
261
|
+
}): Promise<IncompleteModelDownload[]>;
|
|
262
|
+
/**
|
|
263
|
+
* Read buffer for hashing multi-GB model files off disk. The default
|
|
264
|
+
* `createReadStream` highWaterMark is 64 KB, which for a 7 GB file means
|
|
265
|
+
* ~110k `'data'` events — one event-loop turn each. Inside the daemon's busy
|
|
266
|
+
* event loop (chat, scheduler, index scans) those turns queue behind other
|
|
267
|
+
* work and the hash starves: a file that hashes in ~9s idle took 15+ minutes
|
|
268
|
+
* in the running service. A 16 MB buffer cuts it to ~400 turns, so a
|
|
269
|
+
* congested loop barely affects wall time (measured: a 6.3 GB file that
|
|
270
|
+
* hashed in ~9s idle did not finish in 2 min at 64 KB under a busy loop, but
|
|
271
|
+
* stayed ~10s at 16 MB). Hash correctness with this buffer is covered by the
|
|
272
|
+
* hashModelPayloadFiles tests in storage-roots.test.ts.
|
|
273
|
+
*/
|
|
274
|
+
export declare const MODEL_HASH_READ_BUFFER_BYTES: number;
|