@bendyline/gezel-inference 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +13 -2
- package/dist/cache/adapter.d.ts +115 -0
- package/dist/cache/adapter.js +23 -0
- package/dist/cache/budget.d.ts +15 -0
- package/dist/cache/budget.js +31 -0
- package/dist/cache/controller.d.ts +205 -0
- package/dist/cache/controller.js +377 -0
- package/dist/catalog/LICENSE +21 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/manifest.json +146 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-35b-q4/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/manifest.json +146 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/bt/btl4-compact-iq2/versions/1.0.2/manifest.json +15 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/manifest.json +166 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/versions/1.1.0/manifest.json +62 -0
- package/dist/catalog/chat-models/de/deepseek-r1-8b-q4/versions/1.1.1/manifest.json +61 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-mxfp4/manifest.json +125 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-mxfp4/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/manifest.json +125 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2/versions/1.1.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2q4/manifest.json +126 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q2q4/versions/1.0.0/manifest.json +27 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/manifest.json +318 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/versions/1.0.0/manifest.json +225 -0
- package/dist/catalog/chat-models/de/deepseek-v4-flash-284b-q4/versions/1.1.0/manifest.json +225 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/manifest.json +249 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.0.0/manifest.json +70 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.2/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.1.3/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q4/versions/1.2.0/manifest.json +98 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/manifest.json +228 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.2/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.0.3/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-12b-q8/versions/1.1.0/manifest.json +78 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/manifest.json +220 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.1.0/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.0/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.1/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.2.2/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-26b-q4/versions/1.3.0/manifest.json +81 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/manifest.json +226 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.1.0/manifest.json +80 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.1.1/manifest.json +82 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.0/manifest.json +82 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.1/manifest.json +95 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.2.2/manifest.json +95 -0
- package/dist/catalog/chat-models/ge/gemma4-31b-q4/versions/1.3.0/manifest.json +86 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/manifest.json +213 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.1.0/manifest.json +67 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.1.2/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.2.0/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.2.1/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e2b-q4/versions/1.3.0/manifest.json +71 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/manifest.json +205 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.1.2/manifest.json +75 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.2.0/manifest.json +76 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.2.1/manifest.json +76 -0
- package/dist/catalog/chat-models/ge/gemma4-e4b-q4/versions/1.3.0/manifest.json +76 -0
- package/dist/catalog/chat-models/gl/glm-5.2-754b-q2/manifest.json +127 -0
- package/dist/catalog/chat-models/gl/glm-5.2-754b-q2/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/manifest.json +140 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.0/manifest.json +23 -0
- package/dist/catalog/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.1/manifest.json +26 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/manifest.json +247 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/versions/1.0.0/manifest.json +137 -0
- package/dist/catalog/chat-models/gp/gpt-oss-120b-q4/versions/1.1.0/manifest.json +135 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/manifest.json +195 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/versions/1.1.0/manifest.json +72 -0
- package/dist/catalog/chat-models/gp/gpt-oss-20b-q4/versions/1.1.1/manifest.json +71 -0
- package/dist/catalog/chat-models/gr/granite4.2-30b-q4/manifest.json +200 -0
- package/dist/catalog/chat-models/gr/granite4.2-30b-q4/versions/1.0.0/manifest.json +72 -0
- package/dist/catalog/chat-models/gr/granite4.2-3b-q4/manifest.json +196 -0
- package/dist/catalog/chat-models/gr/granite4.2-3b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/gr/granite4.2-8b-q4/manifest.json +189 -0
- package/dist/catalog/chat-models/gr/granite4.2-8b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/index.json +1 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/manifest.json +235 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.0/manifest.json +124 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.1/manifest.json +124 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.2/manifest.json +123 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/manifest.json +257 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/versions/1.0.0/manifest.json +145 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q6/versions/1.0.1/manifest.json +145 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/manifest.json +285 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.0/manifest.json +174 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.1/manifest.json +174 -0
- package/dist/catalog/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.2/manifest.json +173 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/manifest.json +162 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/versions/1.0.0/manifest.json +59 -0
- package/dist/catalog/chat-models/lf/lfm2.5-2.6b-q4/versions/1.0.1/manifest.json +58 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/manifest.json +134 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/versions/1.1.0/manifest.json +57 -0
- package/dist/catalog/chat-models/ll/llama3.2-3b-q4/versions/1.1.1/manifest.json +56 -0
- package/dist/catalog/chat-models/mi/minicpm5-1b-q4/manifest.json +156 -0
- package/dist/catalog/chat-models/mi/minicpm5-1b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/mi/minicpm5-2b-q4/manifest.json +161 -0
- package/dist/catalog/chat-models/mi/minicpm5-2b-q4/versions/1.0.0/manifest.json +57 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/manifest.json +159 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/versions/1.1.0/manifest.json +62 -0
- package/dist/catalog/chat-models/mi/mistral-7b-q4/versions/1.1.1/manifest.json +61 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +275 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/versions/1.0.0/manifest.json +154 -0
- package/dist/catalog/chat-models/mi/mistral-medium-3.5-128b-q4/versions/1.0.1/manifest.json +153 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/manifest.json +135 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.1/manifest.json +20 -0
- package/dist/catalog/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.2/manifest.json +20 -0
- package/dist/catalog/chat-models/na/nanbeige4.2-3b-q4/manifest.json +138 -0
- package/dist/catalog/chat-models/na/nanbeige4.2-3b-q4/versions/1.0.0/manifest.json +14 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/manifest.json +212 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.0/manifest.json +94 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.1/manifest.json +94 -0
- package/dist/catalog/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.2/manifest.json +93 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/manifest.json +135 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/versions/1.0.0/manifest.json +30 -0
- package/dist/catalog/chat-models/ne/nemotron3-super-120b-q4/versions/1.0.1/manifest.json +30 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/manifest.json +192 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/versions/1.0.0/manifest.json +74 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q4/versions/1.0.1/manifest.json +73 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/manifest.json +207 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/versions/1.0.0/manifest.json +89 -0
- package/dist/catalog/chat-models/ne/nemotron3.5-lightning-30b-q8/versions/1.0.1/manifest.json +88 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/manifest.json +224 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/versions/1.0.0/manifest.json +94 -0
- package/dist/catalog/chat-models/or/ornith-35b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/manifest.json +244 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/versions/1.0.0/manifest.json +114 -0
- package/dist/catalog/chat-models/or/ornith-35b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/manifest.json +215 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/versions/1.0.0/manifest.json +84 -0
- package/dist/catalog/chat-models/or/ornith-9b-q4/versions/1.0.1/manifest.json +83 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q4/manifest.json +208 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q4/versions/1.0.0/manifest.json +74 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q8/manifest.json +223 -0
- package/dist/catalog/chat-models/or/ornith1.5-35b-a3b-q8/versions/1.0.0/manifest.json +89 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/manifest.json +187 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/versions/1.0.0/manifest.json +53 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q4/versions/1.0.1/manifest.json +77 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/manifest.json +192 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/versions/1.0.0/manifest.json +58 -0
- package/dist/catalog/chat-models/or/ornith1.5-9b-q8/versions/1.0.1/manifest.json +82 -0
- package/dist/catalog/chat-models/qw/qwen3.5-0.8b-q4/manifest.json +192 -0
- package/dist/catalog/chat-models/qw/qwen3.5-0.8b-q4/versions/1.0.0/manifest.json +75 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/manifest.json +315 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.0/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.1/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.2/manifest.json +164 -0
- package/dist/catalog/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.3/manifest.json +163 -0
- package/dist/catalog/chat-models/qw/qwen3.5-27b-q4/manifest.json +217 -0
- package/dist/catalog/chat-models/qw/qwen3.5-27b-q4/versions/1.0.0/manifest.json +90 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.0/manifest.json +77 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.2/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-2b-q4/versions/1.1.3/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/manifest.json +188 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.0/manifest.json +77 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.2/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-4b-q4/versions/1.1.3/manifest.json +76 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/manifest.json +205 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.0/manifest.json +82 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.2/manifest.json +81 -0
- package/dist/catalog/chat-models/qw/qwen3.5-9b-q4/versions/1.1.3/manifest.json +81 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/manifest.json +230 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.0/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.4/manifest.json +91 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.5/manifest.json +91 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q4/versions/1.1.6/manifest.json +115 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/manifest.json +240 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.0/manifest.json +102 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.2/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.3/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.6-27b-q8/versions/1.0.4/manifest.json +127 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/manifest.json +233 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.0/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.2/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.3/manifest.json +117 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/manifest.json +252 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.0/manifest.json +112 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.2/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.3/manifest.json +137 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-iq1-s/manifest.json +195 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-iq1-s/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q2/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q2/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/manifest.json +194 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/versions/1.0.0/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q3/versions/1.0.1/manifest.json +19 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/manifest.json +291 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.1/manifest.json +93 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.2/manifest.json +92 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.3/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.4/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q4/versions/1.0.5/manifest.json +116 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/manifest.json +278 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.0/manifest.json +20 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.1/manifest.json +104 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.2/manifest.json +103 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q6/versions/1.0.3/manifest.json +127 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/manifest.json +278 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.0/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.1/manifest.json +113 -0
- package/dist/catalog/chat-models/qw/qwen3.8-27b-q8/versions/1.0.2/manifest.json +137 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq3/manifest.json +221 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq3/versions/1.0.0/manifest.json +36 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/manifest.json +429 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.0.0/manifest.json +36 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.1.0/manifest.json +205 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.1.1/manifest.json +244 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/manifest.json +203 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.0/manifest.json +21 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.1/manifest.json +31 -0
- package/dist/catalog/chat-models/qw/qwen3.8-flash-next-q2/versions/1.0.2/manifest.json +30 -0
- package/dist/catalog/chat-models/raw-index.json +1 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/manifest.json +79 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/versions/1.0.0/manifest.json +15 -0
- package/dist/catalog/chat-models/ta/talkie-1930-13b-q4/versions/1.0.1/manifest.json +15 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/manifest.json +204 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/versions/1.0.0/manifest.json +70 -0
- package/dist/catalog/chat-models/te/ternary-bonsai-27b-q2/versions/1.0.1/manifest.json +70 -0
- package/dist/catalog/chat-models/un/underdog-saluki-27b-iq2-mix/manifest.json +164 -0
- package/dist/catalog/chat-models/un/underdog-saluki-27b-iq2-mix/versions/1.0.0/manifest.json +14 -0
- package/dist/catalog/knowledge-catalogs/be/bendyline-how-to-books/manifest.json +26 -0
- package/dist/catalog/knowledge-catalogs/be/bendyline-how-to-books/versions/2026.10.8/manifest.json +8950 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-alaska-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-alaska-part-0001/versions/2026.10.1/manifest.json +658 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-nevada-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-nevada-part-0001/versions/2026.10.1/manifest.json +666 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-300-399-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-300-399-part-0001/versions/2026.10.2/manifest.json +182 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-347-349/manifest.json +25 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-us-347-349/versions/2026.10.5/manifest.json +38 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0001/versions/2026.10.1/manifest.json +558 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0002/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-utah-part-0002/versions/2026.10.1/manifest.json +258 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0001/versions/2026.10.1/manifest.json +318 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0002/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0002/versions/2026.10.1/manifest.json +266 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0003/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0003/versions/2026.10.1/manifest.json +186 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0004/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0004/versions/2026.10.1/manifest.json +138 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0005/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-washington-part-0005/versions/2026.10.1/manifest.json +138 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-wyoming-part-0001/manifest.json +24 -0
- package/dist/catalog/knowledge-catalogs/ca/caselaw-wyoming-part-0001/versions/2026.10.3/manifest.json +626 -0
- package/dist/catalog/knowledge-catalogs/index.json +1 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/versions/2026.10.16/manifest.json +18270 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/versions/2026.10.16/manifest.json +1098 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/versions/2026.10.16/manifest.json +722 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/versions/2026.10.16/manifest.json +530 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/versions/2026.10.16/manifest.json +602 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/manifest.json +23 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/versions/2026.10.16/manifest.json +250 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-dotnet-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-dotnet-en/versions/2026.10.16/manifest.json +16794 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/versions/2026.10.16/manifest.json +1106 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/versions/2026.10.16/manifest.json +234 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-powershell-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-powershell-en/versions/2026.10.16/manifest.json +522 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-sql-server-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-sql-server-en/versions/2026.10.16/manifest.json +1850 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/versions/2026.10.16/manifest.json +1734 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-server-en/manifest.json +22 -0
- package/dist/catalog/knowledge-catalogs/mi/microsoftdocs-windows-server-en/versions/2026.10.16/manifest.json +774 -0
- package/dist/catalog/knowledge-catalogs/raw-index.json +1 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-american-south/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-andes-amazon/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-australia-nz/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-brazil/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-britain-ireland/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-california-southwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-canada-alaska/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-central-eastern-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-east-southern-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mediterranean/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-mexico-central-america/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-middle-east/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-midwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-north-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northeast/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-eurasia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-northern-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-islands/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-pacific-northwest/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-rockies-plains/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-south-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southeast-asia/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-southern-cone/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-west-central-africa/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/manifest.json +48 -0
- package/dist/catalog/knowledge-catalogs/re/regional-western-europe/versions/2026.10.3/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/manifest.json +28 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.2/manifest.json +53 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.3/manifest.json +885 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-arts/versions/2026.4.5/manifest.json +157 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/manifest.json +32 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.2/manifest.json +69 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.3/manifest.json +741 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-astronomy/versions/2026.4.5/manifest.json +173 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/manifest.json +69 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/versions/2026.4.4/manifest.json +217 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-biology/versions/2026.4.5/manifest.json +217 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/versions/2026.4.4/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-business/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-film-tv/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.3/manifest.json +925 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-food-drink/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/manifest.json +28 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.2/manifest.json +53 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.3/manifest.json +1665 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-games/versions/2026.4.5/manifest.json +133 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.3/manifest.json +1233 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-language/versions/2026.4.5/manifest.json +141 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.3/manifest.json +493 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-law/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/manifest.json +63 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/versions/2026.4.4/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-literature/versions/2026.4.5/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/manifest.json +30 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.2/manifest.json +61 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.3/manifest.json +665 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-mathematics/versions/2026.4.5/manifest.json +177 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.3/manifest.json +745 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-medicine/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/manifest.json +62 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/versions/2026.4.4/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-military/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-music/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/manifest.json +64 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/versions/2026.4.4/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-politics/versions/2026.4.5/manifest.json +197 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/manifest.json +30 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.2/manifest.json +61 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.3/manifest.json +1253 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-religion-philosophy/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/manifest.json +29 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.2/manifest.json +57 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.3/manifest.json +1957 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-science/versions/2026.4.5/manifest.json +185 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/manifest.json +63 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-sports/versions/2026.4.5/manifest.json +193 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/art.json +11 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/manifest.json +45 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/versions/2026.4.4/manifest.json +121 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-technology/versions/2026.4.5/manifest.json +173 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/art.json +12 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/logo.webp +0 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/manifest.json +62 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/versions/2026.4.4/manifest.json +189 -0
- package/dist/catalog/knowledge-catalogs/wi/wikipedia-transportation/versions/2026.4.5/manifest.json +189 -0
- package/dist/catalog/provenance.json +8 -0
- package/dist/chat/catalog-model-lookup.d.ts +21 -0
- package/dist/chat/catalog-model-lookup.js +48 -0
- package/dist/chat/local-model-tier.d.ts +1 -0
- package/dist/chat/local-model-tier.js +2 -0
- package/dist/chat/vision-capability.d.ts +1 -0
- package/dist/chat/vision-capability.js +3 -0
- package/dist/engine-components.d.ts +30 -0
- package/dist/engine-components.js +144 -0
- package/dist/engines/electron-native-reuse.d.ts +65 -0
- package/dist/engines/electron-native-reuse.js +305 -0
- package/dist/engines/native-file-manifest.json +1320 -0
- package/dist/engines/native-manifest.d.ts +70 -0
- package/dist/engines/native-manifest.js +98 -0
- package/dist/engines/registry.d.ts +88 -0
- package/dist/engines/registry.js +217 -0
- package/dist/engines/resolver.d.ts +121 -0
- package/dist/engines/resolver.js +894 -0
- package/dist/engines/signature.d.ts +85 -0
- package/dist/engines/signature.js +231 -0
- package/dist/fs/atomic.d.ts +53 -0
- package/dist/fs/atomic.js +202 -0
- package/dist/fs/config-store.d.ts +14 -0
- package/dist/fs/config-store.js +101 -0
- package/dist/fs/home-permissions.d.ts +18 -0
- package/dist/fs/home-permissions.js +27 -0
- package/dist/fs/safe-paths.d.ts +107 -0
- package/dist/fs/safe-paths.js +264 -0
- package/dist/fs/security-json.d.ts +13 -0
- package/dist/fs/security-json.js +67 -0
- package/dist/http/auth-context.d.ts +23 -0
- package/dist/http/auth-context.js +1 -0
- package/dist/http/engine-runtime-context.d.ts +30 -0
- package/dist/http/engine-runtime-context.js +1 -0
- package/dist/http/external-conversation-contract.d.ts +49 -0
- package/dist/http/external-conversation-contract.js +1 -0
- package/dist/http/external-conversation-headers.d.ts +11 -0
- package/dist/http/external-conversation-headers.js +11 -0
- package/dist/http/inference-context.d.ts +36 -0
- package/dist/http/inference-context.js +1 -0
- package/dist/http/model-inventory-cache.d.ts +8 -0
- package/dist/http/model-inventory-cache.js +8 -0
- package/dist/http/openai-compat/action-ledger.d.ts +15 -0
- package/dist/http/openai-compat/action-ledger.js +119 -0
- package/dist/http/openai-compat/apple-model.d.ts +3 -0
- package/dist/http/openai-compat/apple-model.js +44 -0
- package/dist/http/openai-compat/caller-owned-profile.d.ts +7 -0
- package/dist/http/openai-compat/caller-owned-profile.js +18 -0
- package/dist/http/openai-compat/chat-progress.d.ts +9 -0
- package/dist/http/openai-compat/chat-progress.js +69 -0
- package/dist/http/openai-compat/chat-target.d.ts +76 -0
- package/dist/http/openai-compat/chat-target.js +97 -0
- package/dist/http/openai-compat/embeddings.d.ts +37 -0
- package/dist/http/openai-compat/embeddings.js +86 -0
- package/dist/http/openai-compat/request-tuning.d.ts +35 -0
- package/dist/http/openai-compat/request-tuning.js +87 -0
- package/dist/http/openai-compat/responses-streaming.d.ts +351 -0
- package/dist/http/openai-compat/responses-streaming.js +717 -0
- package/dist/http/openai-compat/responses-translate.d.ts +215 -0
- package/dist/http/openai-compat/responses-translate.js +377 -0
- package/dist/http/openai-compat/streaming-telemetry.d.ts +30 -0
- package/dist/http/openai-compat/streaming-telemetry.js +88 -0
- package/dist/http/openai-compat/streaming.d.ts +141 -0
- package/dist/http/openai-compat/streaming.js +687 -0
- package/dist/http/openai-compat/tool-call-stream-filter.d.ts +33 -0
- package/dist/http/openai-compat/tool-call-stream-filter.js +110 -0
- package/dist/http/openai-compat/translate.d.ts +254 -0
- package/dist/http/openai-compat/translate.js +485 -0
- package/dist/http/routes/engines.d.ts +13 -0
- package/dist/http/routes/engines.js +366 -0
- package/dist/http/routes/machine-engine-proxy.d.ts +26 -0
- package/dist/http/routes/machine-engine-proxy.js +43 -0
- package/dist/http/routes/model-bundles.d.ts +4 -0
- package/dist/http/routes/model-bundles.js +190 -0
- package/dist/http/routes/v1-chat.d.ts +72 -0
- package/dist/http/routes/v1-chat.js +645 -0
- package/dist/http/routes/v1-embeddings.d.ts +3 -0
- package/dist/http/routes/v1-embeddings.js +82 -0
- package/dist/http/routes/v1-knowledge.d.ts +4 -0
- package/dist/http/routes/v1-knowledge.js +304 -0
- package/dist/http/routes/v1-models-ensure.d.ts +32 -0
- package/dist/http/routes/v1-models-ensure.js +122 -0
- package/dist/http/routes/v1-models.d.ts +8 -0
- package/dist/http/routes/v1-models.js +189 -0
- package/dist/http/routes/v1-responses.d.ts +20 -0
- package/dist/http/routes/v1-responses.js +327 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/inference-service.d.ts +28 -0
- package/dist/inference-service.js +275 -0
- package/dist/knowledge/admission.d.ts +3 -0
- package/dist/knowledge/admission.js +22 -0
- package/dist/knowledge/bundled-catalog.d.ts +2 -0
- package/dist/knowledge/bundled-catalog.js +2 -0
- package/dist/knowledge/catalog-host.d.ts +103 -0
- package/dist/knowledge/catalog-host.js +180 -0
- package/dist/knowledge/catalog-source.d.ts +22 -0
- package/dist/knowledge/catalog-source.js +35 -0
- package/dist/knowledge/install.d.ts +55 -0
- package/dist/knowledge/install.js +274 -0
- package/dist/knowledge/manager.d.ts +287 -0
- package/dist/knowledge/manager.js +1540 -0
- package/dist/knowledge/registry.d.ts +35 -0
- package/dist/knowledge/registry.js +123 -0
- package/dist/knowledge/search-worker.d.ts +17 -0
- package/dist/knowledge/search-worker.js +36 -0
- package/dist/knowledge/shared-install-contract.d.ts +19 -0
- package/dist/knowledge/shared-install-contract.js +1 -0
- package/dist/knowledge/spatial-query.d.ts +11 -0
- package/dist/knowledge/spatial-query.js +33 -0
- package/dist/knowledge/trust-anchors.d.ts +11 -0
- package/dist/knowledge/trust-anchors.js +51 -0
- package/dist/knowledge/vector-floors.d.ts +44 -0
- package/dist/knowledge/vector-floors.js +92 -0
- package/dist/knowledge/worker-host.d.ts +9 -0
- package/dist/knowledge/worker-host.js +179 -0
- package/dist/kokoro-lexicon/LICENSE +202 -0
- package/dist/kokoro-lexicon/lexicon-gb-en.txt.gz +0 -0
- package/dist/kokoro-lexicon/lexicon-us-en.txt.gz +0 -0
- package/dist/kokoro-lexicon/manifest.json +23 -0
- package/dist/machine-engine/inspect-runtime.d.ts +3 -0
- package/dist/machine-engine/inspect-runtime.js +48 -0
- package/dist/machine-engine/knowledge-assets.d.ts +79 -0
- package/dist/machine-engine/knowledge-assets.js +505 -0
- package/dist/memory/embed-core.d.ts +131 -0
- package/dist/memory/embed-core.js +398 -0
- package/dist/memory/embed-worker.d.ts +23 -0
- package/dist/memory/embed-worker.js +49 -0
- package/dist/memory/embeddings.d.ts +105 -0
- package/dist/memory/embeddings.js +467 -0
- package/dist/model-profile/behaviors/tools-mlx-template-fix.d.ts +1 -0
- package/dist/model-profile/behaviors/tools-mlx-template-fix.js +2 -0
- package/dist/model-profile/behaviors/turn-ramble-detection.d.ts +1 -0
- package/dist/model-profile/behaviors/turn-ramble-detection.js +2 -0
- package/dist/model-profile/defaults.d.ts +1 -0
- package/dist/model-profile/defaults.js +2 -0
- package/dist/model-profile/index.d.ts +9 -0
- package/dist/model-profile/index.js +7 -0
- package/dist/model-profile/registry.d.ts +15 -0
- package/dist/model-profile/registry.js +18 -0
- package/dist/model-profile/runtime.d.ts +48 -0
- package/dist/model-profile/runtime.js +131 -0
- package/dist/model-profile/tool-grammar.d.ts +1 -0
- package/dist/model-profile/tool-grammar.js +2 -0
- package/dist/model-profile/tuning.d.ts +19 -0
- package/dist/model-profile/tuning.js +21 -0
- package/dist/model-profile/types.d.ts +1 -0
- package/dist/model-profile/types.js +2 -0
- package/dist/models/bundle-storage.d.ts +28 -0
- package/dist/models/bundle-storage.js +80 -0
- package/dist/models/catalog-drift.d.ts +48 -0
- package/dist/models/catalog-drift.js +94 -0
- package/dist/models/catalog-payload-identity.d.ts +107 -0
- package/dist/models/catalog-payload-identity.js +254 -0
- package/dist/models/ensure.d.ts +125 -0
- package/dist/models/ensure.js +205 -0
- package/dist/models/gezmodel.d.ts +47 -0
- package/dist/models/gezmodel.js +742 -0
- package/dist/models/install-registry.d.ts +101 -0
- package/dist/models/install-registry.js +216 -0
- package/dist/models/model-id.d.ts +22 -0
- package/dist/models/model-id.js +40 -0
- package/dist/models/storage-roots.d.ts +274 -0
- package/dist/models/storage-roots.js +865 -0
- package/dist/native-release-entry.d.ts +16 -0
- package/dist/native-release-entry.js +16 -0
- package/dist/perf/redact-path.d.ts +2 -0
- package/dist/perf/redact-path.js +27 -0
- package/dist/perf/responsiveness.d.ts +70 -0
- package/dist/perf/responsiveness.js +560 -0
- package/dist/providers/active-install-message.d.ts +42 -0
- package/dist/providers/active-install-message.js +49 -0
- package/dist/providers/apple-foundation-models/binary.d.ts +4 -0
- package/dist/providers/apple-foundation-models/binary.js +18 -0
- package/dist/providers/apple-foundation-models/helper.d.ts +66 -0
- package/dist/providers/apple-foundation-models/helper.js +262 -0
- package/dist/providers/apple-foundation-models/provider.d.ts +82 -0
- package/dist/providers/apple-foundation-models/provider.js +389 -0
- package/dist/providers/apple-foundation-models/status.d.ts +9 -0
- package/dist/providers/apple-foundation-models/status.js +49 -0
- package/dist/providers/audio/kokoro-frontend.d.ts +50 -0
- package/dist/providers/audio/kokoro-frontend.js +113 -0
- package/dist/providers/audio/managed-speech-model.d.ts +9 -0
- package/dist/providers/audio/managed-speech-model.js +86 -0
- package/dist/providers/audio/types.d.ts +202 -0
- package/dist/providers/audio/types.js +17 -0
- package/dist/providers/audio/whisper-cpp.d.ts +99 -0
- package/dist/providers/audio/whisper-cpp.js +420 -0
- package/dist/providers/audio-persister-contract.d.ts +13 -0
- package/dist/providers/audio-persister-contract.js +1 -0
- package/dist/providers/catalog-model-config.d.ts +63 -0
- package/dist/providers/catalog-model-config.js +95 -0
- package/dist/providers/code-block-salvage.d.ts +1 -0
- package/dist/providers/code-block-salvage.js +2 -0
- package/dist/providers/codex-cli/reasoning.d.ts +8 -0
- package/dist/providers/codex-cli/reasoning.js +17 -0
- package/dist/providers/complete-tool-call.d.ts +16 -0
- package/dist/providers/complete-tool-call.js +25 -0
- package/dist/providers/constrained-turn.d.ts +1 -0
- package/dist/providers/constrained-turn.js +2 -0
- package/dist/providers/deliverable-read-pacing.d.ts +1 -0
- package/dist/providers/deliverable-read-pacing.js +2 -0
- package/dist/providers/direct-file-work-prompt.d.ts +1 -0
- package/dist/providers/direct-file-work-prompt.js +2 -0
- package/dist/providers/ds4/build-provider.d.ts +100 -0
- package/dist/providers/ds4/build-provider.js +539 -0
- package/dist/providers/ds4/cache-adapter.d.ts +42 -0
- package/dist/providers/ds4/cache-adapter.js +110 -0
- package/dist/providers/ds4/dspark.d.ts +83 -0
- package/dist/providers/ds4/dspark.js +107 -0
- package/dist/providers/ds4/mtp.d.ts +32 -0
- package/dist/providers/ds4/mtp.js +46 -0
- package/dist/providers/ds4/provider.d.ts +67 -0
- package/dist/providers/ds4/provider.js +104 -0
- package/dist/providers/ds4/residency.d.ts +143 -0
- package/dist/providers/ds4/residency.js +139 -0
- package/dist/providers/ds4/stdout-parser.d.ts +47 -0
- package/dist/providers/ds4/stdout-parser.js +134 -0
- package/dist/providers/duplicate-tool-calls.d.ts +1 -0
- package/dist/providers/duplicate-tool-calls.js +2 -0
- package/dist/providers/file-repair-policy.d.ts +1 -0
- package/dist/providers/file-repair-policy.js +2 -0
- package/dist/providers/gpu-arbiter.d.ts +159 -0
- package/dist/providers/gpu-arbiter.js +301 -0
- package/dist/providers/image-persister-contract.d.ts +15 -0
- package/dist/providers/image-persister-contract.js +1 -0
- package/dist/providers/llama-cpp/build-metadata.d.ts +13 -0
- package/dist/providers/llama-cpp/build-metadata.js +39 -0
- package/dist/providers/llama-cpp/build-provider.d.ts +66 -0
- package/dist/providers/llama-cpp/build-provider.js +1491 -0
- package/dist/providers/llama-cpp/cache-adapter.d.ts +242 -0
- package/dist/providers/llama-cpp/cache-adapter.js +689 -0
- package/dist/providers/llama-cpp/devices.d.ts +130 -0
- package/dist/providers/llama-cpp/devices.js +256 -0
- package/dist/providers/llama-cpp/disk-cache.d.ts +8 -0
- package/dist/providers/llama-cpp/disk-cache.js +112 -0
- package/dist/providers/llama-cpp/engine-flags.d.ts +181 -0
- package/dist/providers/llama-cpp/engine-flags.js +279 -0
- package/dist/providers/llama-cpp/gguf-metadata-async.d.ts +11 -0
- package/dist/providers/llama-cpp/gguf-metadata-async.js +180 -0
- package/dist/providers/llama-cpp/gguf-metadata-worker.d.ts +7 -0
- package/dist/providers/llama-cpp/gguf-metadata-worker.js +27 -0
- package/dist/providers/llama-cpp/gguf-metadata.d.ts +198 -0
- package/dist/providers/llama-cpp/gguf-metadata.js +615 -0
- package/dist/providers/llama-cpp/gguf-quantization-backfill.d.ts +32 -0
- package/dist/providers/llama-cpp/gguf-quantization-backfill.js +75 -0
- package/dist/providers/llama-cpp/index.d.ts +10 -0
- package/dist/providers/llama-cpp/index.js +13 -0
- package/dist/providers/llama-cpp/kv-cache-type.d.ts +118 -0
- package/dist/providers/llama-cpp/kv-cache-type.js +140 -0
- package/dist/providers/llama-cpp/log.d.ts +92 -0
- package/dist/providers/llama-cpp/log.js +280 -0
- package/dist/providers/llama-cpp/models.d.ts +389 -0
- package/dist/providers/llama-cpp/models.js +1011 -0
- package/dist/providers/llama-cpp/offload-planner.d.ts +339 -0
- package/dist/providers/llama-cpp/offload-planner.js +524 -0
- package/dist/providers/llama-cpp/provider.d.ts +493 -0
- package/dist/providers/llama-cpp/provider.js +862 -0
- package/dist/providers/llama-cpp/reasoning-launch.d.ts +7 -0
- package/dist/providers/llama-cpp/reasoning-launch.js +14 -0
- package/dist/providers/llama-cpp/spec-draft.d.ts +44 -0
- package/dist/providers/llama-cpp/spec-draft.js +44 -0
- package/dist/providers/llama-cpp/stdout-parser.d.ts +70 -0
- package/dist/providers/llama-cpp/stdout-parser.js +197 -0
- package/dist/providers/local-tool-call-salvage.d.ts +1 -0
- package/dist/providers/local-tool-call-salvage.js +2 -0
- package/dist/providers/local-turn-policy.d.ts +1 -0
- package/dist/providers/local-turn-policy.js +2 -0
- package/dist/providers/mlx/async-file-handoff.d.ts +11 -0
- package/dist/providers/mlx/async-file-handoff.js +25 -0
- package/dist/providers/mlx/build-provider.d.ts +65 -0
- package/dist/providers/mlx/build-provider.js +717 -0
- package/dist/providers/mlx/cache-adapter.d.ts +161 -0
- package/dist/providers/mlx/cache-adapter.js +445 -0
- package/dist/providers/mlx/chat-protocol.d.ts +48 -0
- package/dist/providers/mlx/chat-protocol.js +8 -0
- package/dist/providers/mlx/config-parser.d.ts +29 -0
- package/dist/providers/mlx/config-parser.js +81 -0
- package/dist/providers/mlx/engine-gate.d.ts +51 -0
- package/dist/providers/mlx/engine-gate.js +207 -0
- package/dist/providers/mlx/engine-hold.d.ts +41 -0
- package/dist/providers/mlx/engine-hold.js +59 -0
- package/dist/providers/mlx/engine-log-router.d.ts +84 -0
- package/dist/providers/mlx/engine-log-router.js +137 -0
- package/dist/providers/mlx/engine-stats-sampler.d.ts +36 -0
- package/dist/providers/mlx/engine-stats-sampler.js +59 -0
- package/dist/providers/mlx/index.d.ts +10 -0
- package/dist/providers/mlx/index.js +10 -0
- package/dist/providers/mlx/log.d.ts +55 -0
- package/dist/providers/mlx/log.js +157 -0
- package/dist/providers/mlx/model-geometry.d.ts +35 -0
- package/dist/providers/mlx/model-geometry.js +118 -0
- package/dist/providers/mlx/models.d.ts +289 -0
- package/dist/providers/mlx/models.js +1079 -0
- package/dist/providers/mlx/provider.d.ts +404 -0
- package/dist/providers/mlx/provider.js +3017 -0
- package/dist/providers/mlx/python/cache_persist.py +348 -0
- package/dist/providers/mlx/python/cache_seed.py +402 -0
- package/dist/providers/mlx/python/gezel_mlx_server.py +4491 -0
- package/dist/providers/mlx/python/lfm2_compat.py +55 -0
- package/dist/providers/mlx/python/qwen3_5_text_compat.py +60 -0
- package/dist/providers/mlx/python/qwen4_ple.py +159 -0
- package/dist/providers/mlx/python/spec_decode.py +775 -0
- package/dist/providers/mlx/python/template_stability.py +133 -0
- package/dist/providers/mlx/python/think_budget.py +113 -0
- package/dist/providers/mlx/python/tool_args_json.py +297 -0
- package/dist/providers/mlx/python/tool_call_stream.py +265 -0
- package/dist/providers/mlx/python/tool_grammar.py +794 -0
- package/dist/providers/mlx/python/vision_inputs.py +64 -0
- package/dist/providers/mlx/python/wave_policy.py +147 -0
- package/dist/providers/mlx/reasoning-stream.d.ts +85 -0
- package/dist/providers/mlx/reasoning-stream.js +196 -0
- package/dist/providers/mlx/request-shape.d.ts +34 -0
- package/dist/providers/mlx/request-shape.js +42 -0
- package/dist/providers/mlx/runtime-diagnostics.d.ts +29 -0
- package/dist/providers/mlx/runtime-diagnostics.js +162 -0
- package/dist/providers/mlx/spec-drafter.d.ts +25 -0
- package/dist/providers/mlx/spec-drafter.js +73 -0
- package/dist/providers/mlx/stdout-parser.d.ts +60 -0
- package/dist/providers/mlx/stdout-parser.js +254 -0
- package/dist/providers/mlx/textual-tool-call-salvage.d.ts +46 -0
- package/dist/providers/mlx/textual-tool-call-salvage.js +396 -0
- package/dist/providers/mlx/tool-call-protocol.d.ts +65 -0
- package/dist/providers/mlx/tool-call-protocol.js +140 -0
- package/dist/providers/mlx/tool-call-stripper.d.ts +68 -0
- package/dist/providers/mlx/tool-call-stripper.js +153 -0
- package/dist/providers/mlx/tool-image-retention.d.ts +23 -0
- package/dist/providers/mlx/tool-image-retention.js +43 -0
- package/dist/providers/mlx/turn-telemetry.d.ts +22 -0
- package/dist/providers/mlx/turn-telemetry.js +45 -0
- package/dist/providers/mlx/venv.d.ts +91 -0
- package/dist/providers/mlx/venv.js +111 -0
- package/dist/providers/mlx/vision-mode.d.ts +92 -0
- package/dist/providers/mlx/vision-mode.js +187 -0
- package/dist/providers/mlx/vision.d.ts +2 -0
- package/dist/providers/mlx/vision.js +12 -0
- package/dist/providers/mlx/wire-transcript.d.ts +14 -0
- package/dist/providers/mlx/wire-transcript.js +43 -0
- package/dist/providers/native/capacity-broker.d.ts +812 -0
- package/dist/providers/native/capacity-broker.js +1058 -0
- package/dist/providers/native/capacity-budget.d.ts +133 -0
- package/dist/providers/native/capacity-budget.js +265 -0
- package/dist/providers/native/device-capacity-ledger.d.ts +31 -0
- package/dist/providers/native/device-capacity-ledger.js +196 -0
- package/dist/providers/native/device-capacity.d.ts +84 -0
- package/dist/providers/native/device-capacity.js +431 -0
- package/dist/providers/native/engine-api-key.d.ts +57 -0
- package/dist/providers/native/engine-api-key.js +72 -0
- package/dist/providers/native/engine-key.d.ts +18 -0
- package/dist/providers/native/engine-key.js +41 -0
- package/dist/providers/native/engine-router.d.ts +145 -0
- package/dist/providers/native/engine-router.js +191 -0
- package/dist/providers/native/gpu-panic-guard.d.ts +54 -0
- package/dist/providers/native/gpu-panic-guard.js +59 -0
- package/dist/providers/native/inference.d.ts +33 -0
- package/dist/providers/native/inference.js +49 -0
- package/dist/providers/native/local-engine-runtime.d.ts +412 -0
- package/dist/providers/native/local-engine-runtime.js +1714 -0
- package/dist/providers/native/measured-budget.d.ts +32 -0
- package/dist/providers/native/measured-budget.js +54 -0
- package/dist/providers/native/port.d.ts +11 -0
- package/dist/providers/native/port.js +29 -0
- package/dist/providers/native/provider-pool.d.ts +474 -0
- package/dist/providers/native/provider-pool.js +1166 -0
- package/dist/providers/native/supervisor.d.ts +503 -0
- package/dist/providers/native/supervisor.js +1466 -0
- package/dist/providers/observation-context.d.ts +16 -0
- package/dist/providers/observation-context.js +1 -0
- package/dist/providers/openai-compatible/sse.d.ts +1 -0
- package/dist/providers/openai-compatible/sse.js +2 -0
- package/dist/providers/patient-fetch.d.ts +36 -0
- package/dist/providers/patient-fetch.js +44 -0
- package/dist/providers/project-macro-loop-bail.d.ts +7 -0
- package/dist/providers/project-macro-loop-bail.js +21 -0
- package/dist/providers/prose-document-salvage.d.ts +1 -0
- package/dist/providers/prose-document-salvage.js +2 -0
- package/dist/providers/provider-disposal.d.ts +1 -0
- package/dist/providers/provider-disposal.js +2 -0
- package/dist/providers/queue.d.ts +15 -0
- package/dist/providers/queue.js +23 -0
- package/dist/providers/ramble-abort-message.d.ts +1 -0
- package/dist/providers/ramble-abort-message.js +2 -0
- package/dist/providers/ramble-detector.d.ts +1 -0
- package/dist/providers/ramble-detector.js +2 -0
- package/dist/providers/reasoning-depth.d.ts +1 -0
- package/dist/providers/reasoning-depth.js +2 -0
- package/dist/providers/required-input-reads.d.ts +1 -0
- package/dist/providers/required-input-reads.js +2 -0
- package/dist/providers/session-defaults.d.ts +13 -0
- package/dist/providers/session-defaults.js +49 -0
- package/dist/providers/session-hooks.d.ts +26 -0
- package/dist/providers/session-hooks.js +1 -0
- package/dist/providers/streaming-session.d.ts +1 -0
- package/dist/providers/streaming-session.js +2 -0
- package/dist/providers/terminal-tool-policy.d.ts +1 -0
- package/dist/providers/terminal-tool-policy.js +2 -0
- package/dist/providers/tool-arg-schema-coercion.d.ts +1 -0
- package/dist/providers/tool-arg-schema-coercion.js +2 -0
- package/dist/providers/tool-executor.d.ts +12 -0
- package/dist/providers/tool-executor.js +20 -0
- package/dist/providers/tool-failure-tracker.d.ts +1 -0
- package/dist/providers/tool-failure-tracker.js +2 -0
- package/dist/providers/tool-repeat-tracker.d.ts +1 -0
- package/dist/providers/tool-repeat-tracker.js +2 -0
- package/dist/providers/turn-timeout.d.ts +1 -0
- package/dist/providers/turn-timeout.js +1 -0
- package/dist/providers/types.d.ts +834 -0
- package/dist/providers/types.js +42 -0
- package/dist/providers/usage-builder.d.ts +1 -0
- package/dist/providers/usage-builder.js +2 -0
- package/dist/providers/vision-capability.d.ts +109 -0
- package/dist/providers/vision-capability.js +137 -0
- package/dist/python/mlx-runtime-status-bus.d.ts +39 -0
- package/dist/python/mlx-runtime-status-bus.js +27 -0
- package/dist/python/uv-runtime.d.ts +176 -0
- package/dist/python/uv-runtime.js +492 -0
- package/dist/relevance/install.d.ts +28 -0
- package/dist/relevance/install.js +114 -0
- package/dist/relevance/manager.d.ts +79 -0
- package/dist/relevance/manager.js +211 -0
- package/dist/relevance/registry.d.ts +11 -0
- package/dist/relevance/registry.js +158 -0
- package/dist/relevance/relevance-core.d.ts +67 -0
- package/dist/relevance/relevance-core.js +189 -0
- package/dist/relevance/relevance-model.d.ts +42 -0
- package/dist/relevance/relevance-model.js +292 -0
- package/dist/relevance/relevance-worker.d.ts +20 -0
- package/dist/relevance/relevance-worker.js +57 -0
- package/dist/relevance/settings.d.ts +30 -0
- package/dist/relevance/settings.js +81 -0
- package/dist/remotes/identity.d.ts +121 -0
- package/dist/remotes/identity.js +348 -0
- package/dist/remotes/pinned-fetch.d.ts +45 -0
- package/dist/remotes/pinned-fetch.js +193 -0
- package/dist/remotes/types.d.ts +54 -0
- package/dist/remotes/types.js +1 -0
- package/dist/runtime-lock.d.ts +29 -0
- package/dist/runtime-lock.js +85 -0
- package/dist/search/relevance-stage.d.ts +81 -0
- package/dist/search/relevance-stage.js +177 -0
- package/dist/secrets/types.d.ts +63 -0
- package/dist/secrets/types.js +64 -0
- package/dist/speech.d.ts +1 -0
- package/dist/speech.js +1 -0
- package/dist/system/darwin-memory.d.ts +26 -0
- package/dist/system/darwin-memory.js +81 -0
- package/dist/system/gezel-process-memory.d.ts +55 -0
- package/dist/system/gezel-process-memory.js +156 -0
- package/dist/system/memory.d.ts +154 -0
- package/dist/system/memory.js +501 -0
- package/dist/transformers-cache.d.ts +112 -0
- package/dist/transformers-cache.js +392 -0
- package/dist/utils/disk-space.d.ts +55 -0
- package/dist/utils/disk-space.js +72 -0
- package/dist/utils/download-common.d.ts +138 -0
- package/dist/utils/download-common.js +196 -0
- package/dist/utils/download-with-retry.d.ts +85 -0
- package/dist/utils/download-with-retry.js +522 -0
- package/dist/utils/extract-zip.d.ts +22 -0
- package/dist/utils/extract-zip.js +103 -0
- package/dist/utils/retire-model-worker.d.ts +15 -0
- package/dist/utils/retire-model-worker.js +24 -0
- package/dist/utils/service-worker-entry.d.ts +59 -0
- package/dist/utils/service-worker-entry.js +69 -0
- package/dist/utils/xet-download.d.ts +40 -0
- package/dist/utils/xet-download.js +526 -0
- package/dist/utils/xet.d.ts +86 -0
- package/dist/utils/xet.js +201 -0
- package/package.json +103 -3
- package/scripts/embedding-packaging.cjs +264 -0
- package/scripts/embedding-packaging.d.cts +16 -0
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { freemem, platform as osPlatform, totalmem } from 'node:os';
|
|
3
|
+
import { promisify } from 'node:util';
|
|
4
|
+
import { windowsHeadlessSpawnOptions, } from '@bendyline/gezel/native';
|
|
5
|
+
import { detectLlamaGpuVram, } from '../providers/llama-cpp/devices.js';
|
|
6
|
+
import { autoDetectBudgetBytes, computeCapacityBudget, setDetectedGpuVramBytes, } from '../providers/native/capacity-budget.js';
|
|
7
|
+
const exec = promisify(execFile);
|
|
8
|
+
let cachedMemoryProfile = null;
|
|
9
|
+
let pendingMemoryProfile = null;
|
|
10
|
+
/**
|
|
11
|
+
* Detect the memory available for local LLM inference. Platform-aware:
|
|
12
|
+
*
|
|
13
|
+
* • macOS: unified memory — GPU and CPU share one pool. Use the same
|
|
14
|
+
* capacity budget enforced by the native-engine broker: 60% on
|
|
15
|
+
* ordinary machines, 80% on 96 GB+ machines, capped at 96 GiB.
|
|
16
|
+
*
|
|
17
|
+
* • Linux / Windows: probe `nvidia-smi` for VRAM. If present, that's
|
|
18
|
+
* the primary budget (dedicated GPU inference). If absent, probe the
|
|
19
|
+
* bundled `llama-server --list-devices` for a non-NVIDIA GPU (AMD /
|
|
20
|
+
* Intel / any Vulkan device) and use ITS VRAM as the budget. Only when
|
|
21
|
+
* neither reports a GPU do we fall back to ~50% of system RAM (CPU
|
|
22
|
+
* inference — works, but slower, with headroom left for the OS).
|
|
23
|
+
*/
|
|
24
|
+
export async function detectMemoryProfile() {
|
|
25
|
+
const plat = osPlatform();
|
|
26
|
+
const totalRam = totalmem();
|
|
27
|
+
if (plat === 'darwin') {
|
|
28
|
+
setDetectedGpuVramBytes(null);
|
|
29
|
+
return {
|
|
30
|
+
platform: 'darwin',
|
|
31
|
+
totalRamBytes: totalRam,
|
|
32
|
+
gpuVramBytes: null,
|
|
33
|
+
gpuMemoryKind: 'unified',
|
|
34
|
+
source: 'darwin-unified',
|
|
35
|
+
usableBytes: autoDetectBudgetBytes(totalRam),
|
|
36
|
+
budgetBytes: autoDetectBudgetBytes(totalRam),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Don't dock a dedicated card — the whole VRAM pool is available in
|
|
40
|
+
// practice. A small 5% safety margin covers the display framebuffer and
|
|
41
|
+
// driver overhead. Same budget rule for NVIDIA and non-NVIDIA cards.
|
|
42
|
+
// `computeCapacityBudget` owns the same 5%, so read both from it rather
|
|
43
|
+
// than keeping a second copy of the constant here.
|
|
44
|
+
const gpuBudget = (vram, unifiedMemory) => {
|
|
45
|
+
const budget = computeCapacityBudget({
|
|
46
|
+
systemRamBytes: totalRam,
|
|
47
|
+
gpuVramBytes: vram,
|
|
48
|
+
unifiedMemory,
|
|
49
|
+
});
|
|
50
|
+
return { usableBytes: budget.fastBytes, budgetBytes: budget.budgetBytes };
|
|
51
|
+
};
|
|
52
|
+
const nvidia = await probeNvidiaMemory();
|
|
53
|
+
if (nvidia !== null) {
|
|
54
|
+
const unified = nvidia.memoryKind === 'unified';
|
|
55
|
+
setDetectedGpuVramBytes(nvidia.vramBytes, unified);
|
|
56
|
+
return {
|
|
57
|
+
platform: plat,
|
|
58
|
+
totalRamBytes: totalRam,
|
|
59
|
+
gpuVramBytes: nvidia.vramBytes,
|
|
60
|
+
// GB10 / DGX Spark reports nearly the whole unified pool through CUDA.
|
|
61
|
+
// It is shared memory, but it remains a high-performance accelerator and
|
|
62
|
+
// must not be routed to the consumer-iGPU small-model policy.
|
|
63
|
+
gpuMemoryKind: nvidia.memoryKind,
|
|
64
|
+
source: 'gpu-nvidia',
|
|
65
|
+
...gpuBudget(nvidia.vramBytes, unified),
|
|
66
|
+
gpuVendor: 'nvidia',
|
|
67
|
+
gpuLargestDeviceBytes: nvidia.largestDeviceBytes,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// Non-NVIDIA GPU (AMD Radeon, Intel Arc, any Vulkan device). nvidia-smi
|
|
71
|
+
// is blind to these, but the bundled llama-server reports their VRAM via
|
|
72
|
+
// `--list-devices` — the same number the MoE offload planner uses. Use it
|
|
73
|
+
// so a Radeon box gets a real GPU budget (and the "runs on CPU" copy stops
|
|
74
|
+
// lying) instead of the 50%-of-RAM CPU fallback below.
|
|
75
|
+
const gpu = await detectLlamaGpuVram();
|
|
76
|
+
if (gpu !== null) {
|
|
77
|
+
const profile = memoryProfileForLlamaGpu(plat, totalRam, gpu);
|
|
78
|
+
// The ambient capacity broker accepts only a VRAM byte count. Publishing
|
|
79
|
+
// an integrated adapter's shared allocation there would add it to RAM a
|
|
80
|
+
// second time, so publish null for that host class.
|
|
81
|
+
setDetectedGpuVramBytes(profile.gpuMemoryKind === 'integrated' ? null : gpu.vramBytes, profile.gpuMemoryKind === 'integrated' || profile.gpuMemoryKind === 'unified');
|
|
82
|
+
// Vendor comes from the device name in the SAME probe (e.g. "AMD Radeon
|
|
83
|
+
// …" / "Intel Arc …"), so the label always matches the card we sized —
|
|
84
|
+
// never "AMD" for an Intel GPU. Undefined for unrecognized names → the
|
|
85
|
+
// UI shows a generic "GPU".
|
|
86
|
+
return profile;
|
|
87
|
+
}
|
|
88
|
+
setDetectedGpuVramBytes(null);
|
|
89
|
+
return {
|
|
90
|
+
platform: plat,
|
|
91
|
+
totalRamBytes: totalRam,
|
|
92
|
+
gpuVramBytes: null,
|
|
93
|
+
gpuMemoryKind: 'none',
|
|
94
|
+
source: 'system-ram-fallback',
|
|
95
|
+
// CPU inference needs the OS + your apps + inference buffers. Be
|
|
96
|
+
// conservative — 50% of system RAM is a safer ceiling than 60%.
|
|
97
|
+
usableBytes: Math.floor(totalRam * 0.5),
|
|
98
|
+
// The broker will still admit up to its 60% share; a model between the
|
|
99
|
+
// two runs, just without comfortable headroom ("may run slowly").
|
|
100
|
+
budgetBytes: autoDetectBudgetBytes(totalRam, { gpuVramBytes: null }),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Convert a llama.cpp Vulkan device into the service memory profile without
|
|
105
|
+
* double-counting an integrated adapter's shared allocation. Exported as the
|
|
106
|
+
* pure policy seam for regression tests and diagnostics tooling.
|
|
107
|
+
*/
|
|
108
|
+
export function memoryProfileForLlamaGpu(platform, totalRamBytes, gpu) {
|
|
109
|
+
const ratioLooksUnified = gpu.vramBytes >= totalRamBytes * 0.75;
|
|
110
|
+
const gpuMemoryKind = gpu.memoryKind === 'integrated'
|
|
111
|
+
? 'integrated'
|
|
112
|
+
: gpu.memoryKind === 'discrete'
|
|
113
|
+
? 'discrete'
|
|
114
|
+
: ratioLooksUnified
|
|
115
|
+
? 'unified'
|
|
116
|
+
: 'unknown';
|
|
117
|
+
const shared = gpuMemoryKind === 'integrated' || gpuMemoryKind === 'unified';
|
|
118
|
+
const budget = computeCapacityBudget({
|
|
119
|
+
systemRamBytes: totalRamBytes,
|
|
120
|
+
gpuVramBytes: gpu.vramBytes,
|
|
121
|
+
unifiedMemory: shared,
|
|
122
|
+
});
|
|
123
|
+
return {
|
|
124
|
+
platform,
|
|
125
|
+
totalRamBytes,
|
|
126
|
+
gpuVramBytes: gpu.vramBytes,
|
|
127
|
+
gpuMemoryKind,
|
|
128
|
+
source: gpuMemoryKind === 'integrated' ? 'gpu-integrated' : 'gpu-vulkan',
|
|
129
|
+
// A consumer iGPU is effectively system-memory-paced. Keep the same
|
|
130
|
+
// conservative fast-fit ceiling as CPU fallback while the broker may
|
|
131
|
+
// admit up to its single-pool unified ceiling.
|
|
132
|
+
usableBytes: gpuMemoryKind === 'integrated' ? Math.floor(totalRamBytes * 0.5) : budget.fastBytes,
|
|
133
|
+
budgetBytes: budget.budgetBytes,
|
|
134
|
+
...(gpu.vendor ? { gpuVendor: gpu.vendor } : {}),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Capacity changes only on GPU hot-plug / VM reconfiguration, while the live
|
|
139
|
+
* strip may poll once a second. Keep the expensive nvidia-smi / llama device
|
|
140
|
+
* discovery out of that hot path and refresh the profile occasionally.
|
|
141
|
+
*/
|
|
142
|
+
export async function detectMemoryProfileCached(maxAgeMs = 60_000) {
|
|
143
|
+
const now = Date.now();
|
|
144
|
+
if (cachedMemoryProfile && now - cachedMemoryProfile.at <= maxAgeMs) {
|
|
145
|
+
return cachedMemoryProfile.value;
|
|
146
|
+
}
|
|
147
|
+
if (pendingMemoryProfile)
|
|
148
|
+
return pendingMemoryProfile;
|
|
149
|
+
pendingMemoryProfile = detectMemoryProfile()
|
|
150
|
+
.then((value) => {
|
|
151
|
+
cachedMemoryProfile = { at: Date.now(), value };
|
|
152
|
+
return value;
|
|
153
|
+
})
|
|
154
|
+
.finally(() => {
|
|
155
|
+
pendingMemoryProfile = null;
|
|
156
|
+
});
|
|
157
|
+
return pendingMemoryProfile;
|
|
158
|
+
}
|
|
159
|
+
const WINDOWS_PROCESS_LOCAL_MEMORY_SOURCE = 'windows-gpu-process-local-memory';
|
|
160
|
+
const NVML_PROCESS_MEMORY_SOURCE = 'nvml-process-memory';
|
|
161
|
+
const PROCESS_BREAKDOWN_MIN_BYTES = 16 * 1024 ** 2;
|
|
162
|
+
const PROCESS_RECONCILIATION_ABSOLUTE_TOLERANCE_BYTES = 256 * 1024 ** 2;
|
|
163
|
+
const PROCESS_RECONCILIATION_RELATIVE_TOLERANCE = 0.15;
|
|
164
|
+
function isWindowsDesktopProcess(process) {
|
|
165
|
+
return ((process.name ?? '')
|
|
166
|
+
.trim()
|
|
167
|
+
.replace(/\.exe$/i, '')
|
|
168
|
+
.toLowerCase() === 'dwm');
|
|
169
|
+
}
|
|
170
|
+
function scaleGpuProcesses(processes, scale) {
|
|
171
|
+
return processes.map((process) => ({
|
|
172
|
+
...process,
|
|
173
|
+
dedicatedBytes: process.dedicatedBytes * scale,
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Windows' resident-local process samples can still overlap where display
|
|
178
|
+
* surfaces are shared with DWM. Attribute application residency first, then
|
|
179
|
+
* make Windows Desktop the remainder of the measured non-Gezel pool. This
|
|
180
|
+
* keeps every displayed estimate inside the adapter-wide physical total.
|
|
181
|
+
*/
|
|
182
|
+
function reconcileWindowsGpuProcesses(processes, usedBytes) {
|
|
183
|
+
const engineProcesses = processes.filter((process) => process.owner !== 'external');
|
|
184
|
+
const rawGezelBytes = engineProcesses.reduce((sum, process) => sum + process.dedicatedBytes, 0);
|
|
185
|
+
const engineScale = rawGezelBytes > usedBytes && rawGezelBytes > 0 ? usedBytes / rawGezelBytes : 1;
|
|
186
|
+
const reconciledEngines = scaleGpuProcesses(engineProcesses, engineScale);
|
|
187
|
+
const observedGezelBytes = Math.min(rawGezelBytes, usedBytes);
|
|
188
|
+
const otherBytes = Math.max(0, usedBytes - observedGezelBytes);
|
|
189
|
+
const desktopProcesses = processes.filter((process) => process.owner === 'external' && isWindowsDesktopProcess(process));
|
|
190
|
+
const otherAppProcesses = processes.filter((process) => process.owner === 'external' && !isWindowsDesktopProcess(process));
|
|
191
|
+
const rawOtherAppBytes = otherAppProcesses.reduce((sum, process) => sum + process.dedicatedBytes, 0);
|
|
192
|
+
const allowedOverage = Math.max(PROCESS_RECONCILIATION_ABSOLUTE_TOLERANCE_BYTES, otherBytes * PROCESS_RECONCILIATION_RELATIVE_TOLERANCE);
|
|
193
|
+
// A badly inconsistent sample is not rescued through aggressive scaling.
|
|
194
|
+
// Keep the Gezel attribution, but leave the remainder to the bar's Other
|
|
195
|
+
// bucket instead of inventing a plausible-looking application breakdown.
|
|
196
|
+
if (rawOtherAppBytes > otherBytes + allowedOverage) {
|
|
197
|
+
return {
|
|
198
|
+
processes: reconciledEngines.sort((a, b) => b.dedicatedBytes - a.dedicatedBytes),
|
|
199
|
+
observedGezelBytes,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
const appScale = rawOtherAppBytes > otherBytes && rawOtherAppBytes > 0 ? otherBytes / rawOtherAppBytes : 1;
|
|
203
|
+
const reconciledApps = scaleGpuProcesses(otherAppProcesses, appScale);
|
|
204
|
+
const reconciledAppBytes = reconciledApps.reduce((sum, process) => sum + process.dedicatedBytes, 0);
|
|
205
|
+
const desktopBytes = Math.max(0, otherBytes - reconciledAppBytes);
|
|
206
|
+
const desktopSource = desktopProcesses[0];
|
|
207
|
+
const desktop = desktopSource && desktopBytes >= PROCESS_BREAKDOWN_MIN_BYTES
|
|
208
|
+
? [
|
|
209
|
+
{
|
|
210
|
+
pid: desktopSource.pid,
|
|
211
|
+
name: 'Windows Desktop',
|
|
212
|
+
dedicatedBytes: desktopBytes,
|
|
213
|
+
owner: 'external',
|
|
214
|
+
...(desktopProcesses.length === 1 && desktopSource.adapterLuid
|
|
215
|
+
? { adapterLuid: desktopSource.adapterLuid }
|
|
216
|
+
: {}),
|
|
217
|
+
},
|
|
218
|
+
]
|
|
219
|
+
: [];
|
|
220
|
+
return {
|
|
221
|
+
processes: [...reconciledEngines, ...reconciledApps, ...desktop].sort((a, b) => b.dedicatedBytes - a.dedicatedBytes),
|
|
222
|
+
observedGezelBytes,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Combine stable capacity detection, cached accelerator health, and cheap OS
|
|
227
|
+
* RAM counters into the live memory strip's portable wire shape.
|
|
228
|
+
*
|
|
229
|
+
* Driver telemetry reliably gives aggregate GPU use. On Windows, the bundled
|
|
230
|
+
* helper also reads process memory (the OS GPU Process Memory counter on
|
|
231
|
+
* Windows, NVML on NVIDIA Linux) and classifies Gezel's supervised engine
|
|
232
|
+
* processes; on macOS, physical-footprint sampling observes gezeld and
|
|
233
|
+
* same-home engines, including Metal allocations. Other hosts fall back to
|
|
234
|
+
* the broker reservation + daemon RSS.
|
|
235
|
+
*
|
|
236
|
+
* A discrete card uses process accounting when available and otherwise keeps
|
|
237
|
+
* the older reservation estimate clearly approximate. The reservation itself
|
|
238
|
+
* still travels separately as `engineReservedBytes`: it spans VRAM and a
|
|
239
|
+
* system-RAM share and must never be presented as measured placement.
|
|
240
|
+
*/
|
|
241
|
+
export function sampleMachineMemoryUsage(opts) {
|
|
242
|
+
const profile = opts.profile;
|
|
243
|
+
const totalRamBytes = profile.totalRamBytes;
|
|
244
|
+
const unified = profile.source === 'darwin-unified' ||
|
|
245
|
+
profile.source === 'gpu-integrated' ||
|
|
246
|
+
profile.gpuMemoryKind === 'unified';
|
|
247
|
+
const mainMemory = opts.forceMainMemory === true || profile.source === 'system-ram-fallback' || unified;
|
|
248
|
+
const engineBytes = finiteNonNegative(opts.engineCommittedBytes);
|
|
249
|
+
const engineModelWeightsBytes = finiteNonNegative(opts.engineModelWeightsBytes);
|
|
250
|
+
const engineBudgetBytes = typeof opts.engineBudgetBytes === 'number' && Number.isFinite(opts.engineBudgetBytes)
|
|
251
|
+
? Math.max(0, opts.engineBudgetBytes)
|
|
252
|
+
: null;
|
|
253
|
+
const residentModels = opts.residentModels ?? [];
|
|
254
|
+
const sampledAt = opts.sampledAt ?? new Date().toISOString();
|
|
255
|
+
if (mainMemory) {
|
|
256
|
+
const freeRamBytes = clamp(finiteNonNegative(opts.darwinSystemMemory?.freeBytes ?? opts.freeRamBytes ?? freemem()), 0, totalRamBytes);
|
|
257
|
+
const cachedBytes = opts.darwinSystemMemory
|
|
258
|
+
? clamp(finiteNonNegative(opts.darwinSystemMemory.cachedBytes), 0, totalRamBytes - freeRamBytes)
|
|
259
|
+
: null;
|
|
260
|
+
const usedBytes = Math.max(0, totalRamBytes - freeRamBytes - (cachedBytes ?? 0));
|
|
261
|
+
const serviceRssBytes = finiteNonNegative(opts.serviceRssBytes ?? process.memoryUsage().rss);
|
|
262
|
+
const observedBytes = opts.gezelProcessMemory &&
|
|
263
|
+
Number.isFinite(opts.gezelProcessMemory.bytes) &&
|
|
264
|
+
opts.gezelProcessMemory.bytes >= 0
|
|
265
|
+
? clamp(opts.gezelProcessMemory.bytes, 0, usedBytes)
|
|
266
|
+
: null;
|
|
267
|
+
const gezelBytesEstimated = clamp(engineBytes + serviceRssBytes, 0, usedBytes);
|
|
268
|
+
const gezelBytesAttributed = observedBytes ?? gezelBytesEstimated;
|
|
269
|
+
const breakdown = splitGezelMemory({
|
|
270
|
+
attributedBytes: gezelBytesAttributed,
|
|
271
|
+
engineReservedBytes: engineBytes,
|
|
272
|
+
modelWeightsBytes: engineModelWeightsBytes,
|
|
273
|
+
coreFloorBytes: serviceRssBytes,
|
|
274
|
+
});
|
|
275
|
+
return {
|
|
276
|
+
kind: opts.forceMainMemory === true && !unified ? 'ram' : 'unified',
|
|
277
|
+
totalBytes: totalRamBytes,
|
|
278
|
+
usedBytes,
|
|
279
|
+
gezelBytesEstimated,
|
|
280
|
+
gezelBytesObserved: observedBytes,
|
|
281
|
+
...breakdown,
|
|
282
|
+
engineReservedBytes: engineBytes,
|
|
283
|
+
engineBudgetBytes,
|
|
284
|
+
residentModels,
|
|
285
|
+
...(opts.engineLifecycles ? { engineLifecycles: opts.engineLifecycles } : {}),
|
|
286
|
+
gezelEngineProcessCount: opts.gezelProcessMemory?.engineProcessCount ?? 0,
|
|
287
|
+
orphanedGezelEngineProcessCount: opts.gezelProcessMemory?.orphanedEngineProcessCount ?? 0,
|
|
288
|
+
otherBytes: Math.max(0, usedBytes - gezelBytesAttributed),
|
|
289
|
+
cachedBytes,
|
|
290
|
+
freeBytes: freeRamBytes,
|
|
291
|
+
sampledAt,
|
|
292
|
+
source: 'system-memory',
|
|
293
|
+
deviceNames: [],
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
const memoryReadings = (opts.deviceHealth?.readings ?? []).filter((reading) => typeof reading.memoryTotalMb === 'number' &&
|
|
297
|
+
Number.isFinite(reading.memoryTotalMb) &&
|
|
298
|
+
reading.memoryTotalMb > 0);
|
|
299
|
+
const measuredTotalBytes = memoryReadings.length > 0
|
|
300
|
+
? memoryReadings.reduce((sum, reading) => sum + (reading.memoryTotalMb ?? 0), 0) * 1024 ** 2
|
|
301
|
+
: null;
|
|
302
|
+
const totalBytes = measuredTotalBytes ?? profile.gpuVramBytes ?? 0;
|
|
303
|
+
const hasCompleteUsedReading = memoryReadings.length > 0 &&
|
|
304
|
+
memoryReadings.every((reading) => typeof reading.memoryUsedMb === 'number' &&
|
|
305
|
+
Number.isFinite(reading.memoryUsedMb) &&
|
|
306
|
+
reading.memoryUsedMb >= 0);
|
|
307
|
+
const usedBytes = hasCompleteUsedReading
|
|
308
|
+
? clamp(memoryReadings.reduce((sum, reading) => sum + (reading.memoryUsedMb ?? 0), 0) * 1024 ** 2, 0, totalBytes)
|
|
309
|
+
: null;
|
|
310
|
+
// Only a measured pool figure can bound what we attribute to Gezel here.
|
|
311
|
+
// Without one there is nothing to clamp against but the card's own
|
|
312
|
+
// capacity, and the reservation exceeds that as soon as a second model
|
|
313
|
+
// loads — which drew a full bar and a "Gezel ~31.9 GiB" legend on a card
|
|
314
|
+
// holding a single 5.5 GiB model. Report nothing rather than the total.
|
|
315
|
+
// A broker reservation spans VRAM and a system-RAM share, so it is not a
|
|
316
|
+
// fallback measurement of this card. Without OS process accounting, leave
|
|
317
|
+
// attribution unknown (zero here, with the reservation shown separately).
|
|
318
|
+
const gezelBytesEstimated = 0;
|
|
319
|
+
const supervisedEnginePids = new Set((opts.engineLifecycles ?? [])
|
|
320
|
+
.filter((lifecycle) => lifecycle.running &&
|
|
321
|
+
typeof lifecycle.pid === 'number' &&
|
|
322
|
+
Number.isInteger(lifecycle.pid) &&
|
|
323
|
+
lifecycle.pid > 0)
|
|
324
|
+
.map((lifecycle) => lifecycle.pid));
|
|
325
|
+
const rawGpuProcesses = (opts.deviceHealth?.processes ?? [])
|
|
326
|
+
.filter((process) => Number.isInteger(process.pid) &&
|
|
327
|
+
process.pid > 0 &&
|
|
328
|
+
Number.isFinite(process.dedicatedBytes) &&
|
|
329
|
+
process.dedicatedBytes >= 0)
|
|
330
|
+
.map((process) => process.owner === 'external' && supervisedEnginePids.has(process.pid)
|
|
331
|
+
? { ...process, owner: 'gezel-engine' }
|
|
332
|
+
: { ...process });
|
|
333
|
+
const sources = opts.deviceHealth?.sources ?? [];
|
|
334
|
+
const hasWindowsProcessAccounting = sources.includes(WINDOWS_PROCESS_LOCAL_MEMORY_SOURCE);
|
|
335
|
+
const hasMeasuredProcessAccounting = sources.includes(NVML_PROCESS_MEMORY_SOURCE);
|
|
336
|
+
const processAccountingAvailable = rawGpuProcesses.length > 0 && (hasWindowsProcessAccounting || hasMeasuredProcessAccounting);
|
|
337
|
+
const windowsAttribution = usedBytes !== null && processAccountingAvailable && hasWindowsProcessAccounting
|
|
338
|
+
? reconcileWindowsGpuProcesses(rawGpuProcesses, usedBytes)
|
|
339
|
+
: null;
|
|
340
|
+
const gpuProcesses = windowsAttribution
|
|
341
|
+
? windowsAttribution.processes
|
|
342
|
+
: hasMeasuredProcessAccounting
|
|
343
|
+
? rawGpuProcesses
|
|
344
|
+
: [];
|
|
345
|
+
const observedGezelBytes = windowsAttribution
|
|
346
|
+
? windowsAttribution.observedGezelBytes
|
|
347
|
+
: usedBytes !== null && processAccountingAvailable
|
|
348
|
+
? clamp(gpuProcesses
|
|
349
|
+
.filter((process) => process.owner !== 'external')
|
|
350
|
+
.reduce((sum, process) => sum + process.dedicatedBytes, 0), 0, usedBytes)
|
|
351
|
+
: null;
|
|
352
|
+
const gezelBytesAttributed = observedGezelBytes ?? gezelBytesEstimated;
|
|
353
|
+
const breakdown = splitGezelMemory({
|
|
354
|
+
attributedBytes: gezelBytesAttributed,
|
|
355
|
+
engineReservedBytes: engineBytes,
|
|
356
|
+
modelWeightsBytes: engineModelWeightsBytes,
|
|
357
|
+
coreFloorBytes: 0,
|
|
358
|
+
});
|
|
359
|
+
const deviceNames = [
|
|
360
|
+
...new Set(memoryReadings
|
|
361
|
+
.map((reading) => reading.name?.trim())
|
|
362
|
+
.filter((name) => !!name)),
|
|
363
|
+
];
|
|
364
|
+
return {
|
|
365
|
+
kind: 'vram',
|
|
366
|
+
totalBytes,
|
|
367
|
+
usedBytes,
|
|
368
|
+
gezelBytesEstimated,
|
|
369
|
+
gezelBytesObserved: observedGezelBytes,
|
|
370
|
+
...(processAccountingAvailable
|
|
371
|
+
? {
|
|
372
|
+
processAttributionKind: hasWindowsProcessAccounting
|
|
373
|
+
? 'estimated'
|
|
374
|
+
: 'measured',
|
|
375
|
+
}
|
|
376
|
+
: {}),
|
|
377
|
+
...breakdown,
|
|
378
|
+
engineReservedBytes: engineBytes,
|
|
379
|
+
engineBudgetBytes,
|
|
380
|
+
residentModels,
|
|
381
|
+
...(opts.engineLifecycles ? { engineLifecycles: opts.engineLifecycles } : {}),
|
|
382
|
+
...(gpuProcesses.length > 0 ? { gpuProcesses } : {}),
|
|
383
|
+
gezelEngineProcessCount: new Set(gpuProcesses.filter((process) => process.owner !== 'external').map((process) => process.pid)).size,
|
|
384
|
+
orphanedGezelEngineProcessCount: 0,
|
|
385
|
+
otherBytes: usedBytes === null ? null : Math.max(0, usedBytes - gezelBytesAttributed),
|
|
386
|
+
cachedBytes: null,
|
|
387
|
+
freeBytes: usedBytes === null ? null : Math.max(0, totalBytes - usedBytes),
|
|
388
|
+
sampledAt,
|
|
389
|
+
source: memoryReadings.length > 0 ? 'device-health' : 'capacity-only',
|
|
390
|
+
deviceNames,
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Collapse the engine pool's per-replica entries into one row per model,
|
|
395
|
+
* heaviest first. Clones of the same model share a row because a reader
|
|
396
|
+
* looking for "what is holding my memory" wants the model named once with
|
|
397
|
+
* its whole reservation, not N lines that differ only by replica index.
|
|
398
|
+
*/
|
|
399
|
+
export function summarizeResidentModels(entries) {
|
|
400
|
+
const byModel = new Map();
|
|
401
|
+
for (const entry of entries) {
|
|
402
|
+
const key = `${entry.provider}:${entry.modelId}`;
|
|
403
|
+
const existing = byModel.get(key);
|
|
404
|
+
const bytes = finiteNonNegative(entry.residentBytes);
|
|
405
|
+
if (existing) {
|
|
406
|
+
existing.reservedBytes += bytes;
|
|
407
|
+
existing.replicaCount += 1;
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
byModel.set(key, {
|
|
411
|
+
provider: entry.provider,
|
|
412
|
+
modelId: entry.modelId,
|
|
413
|
+
reservedBytes: bytes,
|
|
414
|
+
replicaCount: 1,
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
return [...byModel.values()].sort((a, b) => b.reservedBytes - a.reservedBytes || a.modelId.localeCompare(b.modelId));
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Split the Gezel-attributed total without claiming unavailable precision.
|
|
421
|
+
* Installed payload size is our weights estimate; the capacity reservation's
|
|
422
|
+
* remainder covers KV + compute buffers. On UMA/RAM, daemon RSS is protected
|
|
423
|
+
* first and any observed footprint beyond the reservation remains core/runtime
|
|
424
|
+
* overhead. Every output is clamped so the three pieces always sum to the
|
|
425
|
+
* attributed total, even when an observed sample is below the reservation.
|
|
426
|
+
*/
|
|
427
|
+
function splitGezelMemory(opts) {
|
|
428
|
+
const attributedBytes = finiteNonNegative(opts.attributedBytes);
|
|
429
|
+
const coreFloorBytes = clamp(finiteNonNegative(opts.coreFloorBytes), 0, attributedBytes);
|
|
430
|
+
const modelBudget = Math.max(0, attributedBytes - coreFloorBytes);
|
|
431
|
+
const engineBytes = clamp(finiteNonNegative(opts.engineReservedBytes), 0, modelBudget);
|
|
432
|
+
// If installed metadata is unavailable, count the reservation as weights.
|
|
433
|
+
// This avoids inventing a cache split and still keeps the total truthful.
|
|
434
|
+
const weightEstimate = opts.modelWeightsBytes > 0 ? finiteNonNegative(opts.modelWeightsBytes) : engineBytes;
|
|
435
|
+
const gezelModelWeightsBytes = clamp(weightEstimate, 0, engineBytes);
|
|
436
|
+
const gezelModelCacheBytes = Math.max(0, engineBytes - gezelModelWeightsBytes);
|
|
437
|
+
const gezelInfraBytes = Math.max(0, attributedBytes - gezelModelWeightsBytes - gezelModelCacheBytes);
|
|
438
|
+
return { gezelInfraBytes, gezelModelWeightsBytes, gezelModelCacheBytes };
|
|
439
|
+
}
|
|
440
|
+
function finiteNonNegative(value) {
|
|
441
|
+
return typeof value === 'number' && Number.isFinite(value) ? Math.max(0, value) : 0;
|
|
442
|
+
}
|
|
443
|
+
function clamp(value, min, max) {
|
|
444
|
+
return Math.min(max, Math.max(min, value));
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Parse the stable `name,memory.total` CSV emitted by nvidia-smi.
|
|
448
|
+
*
|
|
449
|
+
* A unified-memory device has no framebuffer of its own, and the GB10 / DGX
|
|
450
|
+
* Spark reports its memory as `[N/A]`. Its pool IS system RAM, so
|
|
451
|
+
* `systemRamBytes` stands in for it. Rejecting that line used to drop the
|
|
452
|
+
* Spark through to the Vulkan probe, which calls it discrete: the capacity
|
|
453
|
+
* budget then counted the same 128 GB twice (RAM share + "VRAM", 211 GiB) and
|
|
454
|
+
* held back only ~3 GiB for the OS, so a 95 GB chat model and a 10 GB image
|
|
455
|
+
* model were co-admitted and the image engine died with a CUDA OOM at init.
|
|
456
|
+
*/
|
|
457
|
+
export function parseNvidiaMemoryProbe(stdout, systemRamBytes = totalmem()) {
|
|
458
|
+
const devices = [];
|
|
459
|
+
for (const rawLine of stdout.split(/\r?\n/)) {
|
|
460
|
+
// GPU names can theoretically contain commas. Split on the final field,
|
|
461
|
+
// whose nounits form is an integer MiB value or a bracketed placeholder.
|
|
462
|
+
const match = /^(.*),\s*(\d+|\[[^\]]*\])\s*$/.exec(rawLine.trim());
|
|
463
|
+
if (!match)
|
|
464
|
+
continue;
|
|
465
|
+
const name = match[1]?.trim() ?? '';
|
|
466
|
+
if (!name)
|
|
467
|
+
continue;
|
|
468
|
+
const memoryMiB = Number.parseInt(match[2] ?? '', 10);
|
|
469
|
+
if (Number.isFinite(memoryMiB) && memoryMiB > 0) {
|
|
470
|
+
devices.push({ name, bytes: memoryMiB * 1024 * 1024 });
|
|
471
|
+
}
|
|
472
|
+
else if (isKnownUnifiedNvidiaDevice(name) && systemRamBytes > 0) {
|
|
473
|
+
devices.push({ name, bytes: systemRamBytes });
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
if (devices.length === 0)
|
|
477
|
+
return null;
|
|
478
|
+
const unified = devices.every((device) => isKnownUnifiedNvidiaDevice(device.name));
|
|
479
|
+
return {
|
|
480
|
+
vramBytes: devices.reduce((sum, device) => sum + device.bytes, 0),
|
|
481
|
+
largestDeviceBytes: Math.max(...devices.map((device) => device.bytes)),
|
|
482
|
+
memoryKind: unified ? 'unified' : 'discrete',
|
|
483
|
+
deviceNames: devices.map((device) => device.name),
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
function isKnownUnifiedNvidiaDevice(name) {
|
|
487
|
+
const normalized = name.toLowerCase();
|
|
488
|
+
return /\bgb10\b/.test(normalized) || normalized.includes('dgx spark');
|
|
489
|
+
}
|
|
490
|
+
async function probeNvidiaMemory() {
|
|
491
|
+
try {
|
|
492
|
+
const { stdout } = await exec('nvidia-smi', ['--query-gpu=name,memory.total', '--format=csv,noheader,nounits'],
|
|
493
|
+
// Keep this short-lived console probe invisible without detaching it
|
|
494
|
+
// from the daemon that owns and awaits it.
|
|
495
|
+
{ timeout: 2000, ...windowsHeadlessSpawnOptions() });
|
|
496
|
+
return parseNvidiaMemoryProbe(stdout);
|
|
497
|
+
}
|
|
498
|
+
catch {
|
|
499
|
+
return null;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared cache-dir pinning for every `@huggingface/transformers` consumer
|
|
3
|
+
* in the service (kokoro TTS + memory embeddings).
|
|
4
|
+
*
|
|
5
|
+
* transformers.js v3 derives its model cache dir from the transformers
|
|
6
|
+
* module's OWN on-disk location (`<module>/../.cache/`) and has NO env-var
|
|
7
|
+
* override — it ignores `TRANSFORMERS_CACHE`. In a packaged/bundled runtime
|
|
8
|
+
* that directory isn't writable, so a downloaded model never lands as a
|
|
9
|
+
* cached file and the Node ONNX path-resolver throws "Unable to get model
|
|
10
|
+
* file path or buffer". Pinning `env.cacheDir` to a writable, gezel-managed
|
|
11
|
+
* dir before the first `from_pretrained` / `pipeline` call fixes it.
|
|
12
|
+
*
|
|
13
|
+
* Both consumers import the same ESM-node transformers build
|
|
14
|
+
* (`transformers.node.mjs`), so the `env` object we mutate here is the one
|
|
15
|
+
* the model loader reads `cacheDir` from at download time.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Env var carrying the resolved cache dir to processes that don't otherwise
|
|
19
|
+
* know the gezel home — notably the embed worker thread, which inherits
|
|
20
|
+
* `process.env` at spawn. Set once at service boot.
|
|
21
|
+
*/
|
|
22
|
+
export declare const HF_CACHE_DIR_ENV = "GEZEL_HF_CACHE_DIR";
|
|
23
|
+
/** Shared writable HF/transformers cache root for on-device model files. */
|
|
24
|
+
export declare function transformersCacheDir(home: string): string;
|
|
25
|
+
/** The optional peer both TTS and memory embeddings load lazily. */
|
|
26
|
+
export declare const TRANSFORMERS_MODULE = "@huggingface/transformers";
|
|
27
|
+
export interface TransformersModelCacheLockOptions {
|
|
28
|
+
timeoutMs?: number;
|
|
29
|
+
staleMs?: number;
|
|
30
|
+
pollMs?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Serialize first-use model downloads across service/Vitest processes sharing
|
|
34
|
+
* one transformers cache. `pipelinePromise` prevents duplicate loads inside a
|
|
35
|
+
* process; this directory lock closes the remaining cross-process race where
|
|
36
|
+
* two fetches could replace the same ONNX file and leave one worker parsing a
|
|
37
|
+
* partial protobuf.
|
|
38
|
+
*/
|
|
39
|
+
export declare function withTransformersModelCacheLock<T>(cacheDir: string, modelId: string, run: () => Promise<T>, options?: TransformersModelCacheLockOptions): Promise<T>;
|
|
40
|
+
/** Remove only the named repository directory after a proven cache parse failure. */
|
|
41
|
+
export declare function removeTransformersModelCache(cacheDir: string, modelId: string): Promise<void>;
|
|
42
|
+
/** Failures that mean retrying against the same cached bytes cannot succeed. */
|
|
43
|
+
export declare function isCorruptTransformersCacheFailure(error: unknown): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Load a model under its cross-process lock, replacing only its repository
|
|
46
|
+
* cache and retrying once when the first load proves those bytes corrupt.
|
|
47
|
+
*/
|
|
48
|
+
export declare function loadTransformersModelWithCacheRecovery<T>(cacheDir: string, modelId: string, load: () => Promise<T>, onCorrupt?: () => void | Promise<void>): Promise<T>;
|
|
49
|
+
/**
|
|
50
|
+
* A model file gezel downloaded itself did not arrive whole or did not match
|
|
51
|
+
* its pin. Nothing was written to the cache path, so a later attempt starts
|
|
52
|
+
* clean.
|
|
53
|
+
*/
|
|
54
|
+
export declare class ModelFileDownloadError extends Error {
|
|
55
|
+
constructor(message: string);
|
|
56
|
+
}
|
|
57
|
+
/** One repository file whose exact bytes are pinned. */
|
|
58
|
+
export interface PinnedModelFile {
|
|
59
|
+
/** Repo-relative path, e.g. `onnx/model.onnx`. */
|
|
60
|
+
file: string;
|
|
61
|
+
/** `sha256:<hex>` the bytes must hash to. */
|
|
62
|
+
digest: string;
|
|
63
|
+
/** Revision the bytes are fetched from. The cache path is `main`'s, as transformers reads it. */
|
|
64
|
+
revision: string;
|
|
65
|
+
}
|
|
66
|
+
/** Where transformers.js would download from (`env.remoteHost` / `env.remotePathTemplate`). */
|
|
67
|
+
export interface ModelFileSource {
|
|
68
|
+
remoteHost: string;
|
|
69
|
+
remotePathTemplate: string;
|
|
70
|
+
fetchImpl?: typeof fetch;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Make sure a pinned model file sits in the transformers cache whole.
|
|
74
|
+
*
|
|
75
|
+
* transformers.js streams a download straight into its final cache path and
|
|
76
|
+
* hands that path to onnxruntime, so a reader that arrives mid-write parses
|
|
77
|
+
* part of a protobuf. The failure was wild-caught on first-run installs over
|
|
78
|
+
* slower connections: two "Protobuf parsing failed" loads, then vector memory
|
|
79
|
+
* off for the whole session, while the file finished correctly moments later.
|
|
80
|
+
* Here the bytes land in a sibling temp file, are checked against the pin,
|
|
81
|
+
* and appear at the cache path only by an atomic rename, so transformers
|
|
82
|
+
* finds a complete file and never downloads it. Call it under
|
|
83
|
+
* {@link withTransformersModelCacheLock}.
|
|
84
|
+
*/
|
|
85
|
+
export declare function ensureVerifiedModelFile(cacheDir: string, modelId: string, pinned: PinnedModelFile, source: ModelFileSource): Promise<'cached' | 'downloaded'>;
|
|
86
|
+
/**
|
|
87
|
+
* True when Node is reporting that `specifier` itself is not installed, rather
|
|
88
|
+
* than the package being present and failing to load.
|
|
89
|
+
*
|
|
90
|
+
* `@huggingface/transformers` and `kokoro-js` are optional peers that an
|
|
91
|
+
* ordinary npm install omits, so absence is a supported configuration and must
|
|
92
|
+
* be distinguishable from breakage before anything picks a log level. Matched
|
|
93
|
+
* on the resolver's error code plus the specifier it names, not on a substring
|
|
94
|
+
* of the message: a genuine failure *inside* transformers also mentions the
|
|
95
|
+
* package, and used to be misreported as "not installed".
|
|
96
|
+
*/
|
|
97
|
+
export declare function isMissingModule(err: unknown, specifier: string): boolean;
|
|
98
|
+
/** The mutable subset of transformers' `env` we touch. */
|
|
99
|
+
export interface TransformersEnv {
|
|
100
|
+
cacheDir: string;
|
|
101
|
+
useFSCache: boolean;
|
|
102
|
+
allowRemoteModels: boolean;
|
|
103
|
+
}
|
|
104
|
+
export type LoadTransformersEnv = () => Promise<TransformersEnv>;
|
|
105
|
+
/**
|
|
106
|
+
* Point transformers.js at `cacheDir` (and repair the fetch/Response global
|
|
107
|
+
* mismatch that otherwise defeats its cache). Idempotent per dir, and
|
|
108
|
+
* best-effort: on failure we log and let the caller proceed on the upstream
|
|
109
|
+
* default rather than hard-failing (worst case the original bug resurfaces,
|
|
110
|
+
* which is no worse than not calling this).
|
|
111
|
+
*/
|
|
112
|
+
export declare function pinTransformersCacheDir(cacheDir: string, loadEnv?: LoadTransformersEnv): Promise<void>;
|