dsh-plugin-local-infer 0.1.3 → 0.1.4
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/README.md +22 -4
- package/cordis.patch.yml +7 -0
- package/docs/zh/README.md +14 -2
- package/dsh/client.js +4195 -4522
- package/package.json +28 -11
- package/packages/core/lib/adapter.d.ts +133 -9
- package/packages/core/lib/adapter.js +74 -1
- package/packages/core/lib/config.d.ts +1 -1
- package/packages/core/lib/config.js +1 -1
- package/packages/core/lib/debug.d.ts +1 -1
- package/packages/core/lib/debug.js +1 -1
- package/packages/core/lib/defaults.d.ts +1 -1
- package/packages/core/lib/defaults.js +1 -1
- package/packages/core/lib/deps.d.ts +44 -17
- package/packages/core/lib/deps.js +24 -8
- package/packages/core/lib/estimator.d.ts +1 -1
- package/packages/core/lib/estimator.js +1 -1
- package/packages/core/lib/guideline.d.ts +1 -1
- package/packages/core/lib/guideline.js +1 -1
- package/packages/core/lib/hardware.d.ts +1 -1
- package/packages/core/lib/hardware.js +1 -1
- package/packages/core/lib/hf-cache.d.ts +70 -0
- package/packages/core/lib/hf-cache.js +83 -0
- package/packages/core/lib/index.d.ts +16 -9
- package/packages/core/lib/index.js +10 -6
- package/packages/core/lib/infer-cache.d.ts +39 -0
- package/packages/core/lib/infer-cache.js +53 -0
- package/packages/core/lib/launch-command.d.ts +8 -4
- package/packages/core/lib/launch-command.js +13 -6
- package/packages/core/lib/launch-record.d.ts +1 -1
- package/packages/core/lib/launch-record.js +1 -1
- package/packages/core/lib/logs.d.ts +8 -1
- package/packages/core/lib/logs.js +12 -4
- package/packages/core/lib/models.d.ts +120 -14
- package/packages/core/lib/models.js +209 -17
- package/packages/core/lib/parameter.d.ts +31 -3
- package/packages/core/lib/parameter.js +1 -1
- package/packages/core/lib/progress.d.ts +54 -0
- package/packages/core/lib/progress.js +120 -0
- package/packages/core/lib/registrar.d.ts +20 -9
- package/packages/core/lib/registrar.js +27 -7
- package/packages/core/lib/reserve.d.ts +11 -3
- package/packages/core/lib/reserve.js +6 -4
- package/packages/core/lib/status.d.ts +12 -6
- package/packages/core/lib/status.js +21 -10
- package/packages/core/lib/sudo.d.ts +80 -0
- package/packages/core/lib/sudo.js +78 -0
- package/packages/core/package.json +1 -1
- package/packages/orchestrator/lib/config.d.ts +63 -0
- package/packages/orchestrator/lib/config.js +111 -0
- package/packages/orchestrator/lib/index.d.ts +51 -0
- package/packages/orchestrator/lib/index.js +73 -0
- package/packages/orchestrator/lib/route.d.ts +60 -0
- package/packages/orchestrator/lib/route.js +159 -0
- package/packages/orchestrator/locale/en.json +6 -0
- package/packages/orchestrator/package.json +39 -0
- package/packages/orchestrator/prompt.md +87 -0
- package/packages/providers/lib/acquire.d.ts +92 -14
- package/packages/providers/lib/acquire.js +215 -37
- package/packages/providers/lib/adapters.d.ts +136 -12
- package/packages/providers/lib/adapters.js +597 -70
- package/packages/providers/lib/debug.d.ts +1 -1
- package/packages/providers/lib/debug.js +1 -1
- package/packages/providers/lib/deps.d.ts +27 -230
- package/packages/providers/lib/deps.js +61 -214
- package/packages/providers/lib/engines/basalt/basalt.d.ts +130 -0
- package/packages/providers/lib/engines/basalt/basalt.js +304 -0
- package/packages/providers/lib/engines/basalt/basaltAdapter.d.ts +85 -0
- package/packages/providers/lib/engines/basalt/basaltAdapter.js +439 -0
- package/packages/providers/lib/engines/basalt/basaltLinux.d.ts +23 -0
- package/packages/providers/lib/engines/basalt/basaltLinux.js +47 -0
- package/packages/providers/lib/engines/basalt/basaltMacOS.d.ts +17 -0
- package/packages/providers/lib/engines/basalt/basaltMacOS.js +19 -0
- package/packages/providers/lib/engines/basalt/basaltWindows.d.ts +24 -0
- package/packages/providers/lib/engines/basalt/basaltWindows.js +49 -0
- package/packages/providers/lib/engines/engineOs.d.ts +24 -0
- package/packages/providers/lib/engines/engineOs.js +17 -0
- package/packages/providers/lib/engines/{hyperqwen.d.ts → hyperqwen/hyperqwen.d.ts} +2 -2
- package/packages/providers/lib/engines/{hyperqwen.js → hyperqwen/hyperqwen.js} +14 -2
- package/packages/providers/lib/engines/{hyperqwenAdapter.d.ts → hyperqwen/hyperqwenAdapter.d.ts} +6 -6
- package/packages/providers/lib/engines/{hyperqwenAdapter.js → hyperqwen/hyperqwenAdapter.js} +24 -14
- package/packages/providers/lib/engines/hyperqwen/hyperqwenArch.d.ts +9 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenArch.js +9 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenDebian.d.ts +9 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenDebian.js +9 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenFedora.d.ts +9 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenFedora.js +9 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenLinux.d.ts +10 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenLinux.js +14 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenMacOS.d.ts +9 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenMacOS.js +9 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenWindows.d.ts +9 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenWindows.js +9 -0
- package/packages/providers/lib/engines/{infernix.d.ts → infernix/infernix.d.ts} +7 -4
- package/packages/providers/lib/engines/{infernix.js → infernix/infernix.js} +52 -7
- package/packages/providers/lib/engines/{infernixAdapter.d.ts → infernix/infernixAdapter.d.ts} +5 -6
- package/packages/providers/lib/engines/{infernixAdapter.js → infernix/infernixAdapter.js} +75 -42
- package/packages/providers/lib/engines/infernix/infernixArch.d.ts +9 -0
- package/packages/providers/lib/engines/infernix/infernixArch.js +9 -0
- package/packages/providers/lib/engines/infernix/infernixDebian.d.ts +9 -0
- package/packages/providers/lib/engines/infernix/infernixDebian.js +9 -0
- package/packages/providers/lib/engines/infernix/infernixFedora.d.ts +9 -0
- package/packages/providers/lib/engines/infernix/infernixFedora.js +9 -0
- package/packages/providers/lib/engines/infernix/infernixLinux.d.ts +17 -0
- package/packages/providers/lib/engines/infernix/infernixLinux.js +35 -0
- package/packages/providers/lib/engines/infernix/infernixMacOS.d.ts +16 -0
- package/packages/providers/lib/engines/infernix/infernixMacOS.js +18 -0
- package/packages/providers/lib/engines/infernix/infernixWindows.d.ts +16 -0
- package/packages/providers/lib/engines/infernix/infernixWindows.js +34 -0
- package/packages/providers/lib/engines/{llamacpp.d.ts → llamacpp/llamacpp.d.ts} +2 -2
- package/packages/providers/lib/engines/{llamacpp.js → llamacpp/llamacpp.js} +12 -2
- package/packages/providers/lib/engines/{llamacppAdapter.d.ts → llamacpp/llamacppAdapter.d.ts} +5 -6
- package/packages/providers/lib/engines/{llamacppAdapter.js → llamacpp/llamacppAdapter.js} +87 -45
- package/packages/providers/lib/engines/llamacpp/llamacppArch.d.ts +9 -0
- package/packages/providers/lib/engines/llamacpp/llamacppArch.js +9 -0
- package/packages/providers/lib/engines/llamacpp/llamacppDebian.d.ts +9 -0
- package/packages/providers/lib/engines/llamacpp/llamacppDebian.js +9 -0
- package/packages/providers/lib/engines/llamacpp/llamacppFedora.d.ts +9 -0
- package/packages/providers/lib/engines/llamacpp/llamacppFedora.js +9 -0
- package/packages/providers/lib/engines/llamacpp/llamacppLinux.d.ts +17 -0
- package/packages/providers/lib/engines/llamacpp/llamacppLinux.js +28 -0
- package/packages/providers/lib/engines/llamacpp/llamacppMacOS.d.ts +15 -0
- package/packages/providers/lib/engines/llamacpp/llamacppMacOS.js +17 -0
- package/packages/providers/lib/engines/llamacpp/llamacppWindows.d.ts +15 -0
- package/packages/providers/lib/engines/llamacpp/llamacppWindows.js +26 -0
- package/packages/providers/lib/engines/{ninfer.d.ts → ninfer/ninfer.d.ts} +2 -2
- package/packages/providers/lib/engines/{ninfer.js → ninfer/ninfer.js} +24 -2
- package/packages/providers/lib/engines/{ninferAdapter.d.ts → ninfer/ninferAdapter.d.ts} +5 -6
- package/packages/providers/lib/engines/{ninferAdapter.js → ninfer/ninferAdapter.js} +123 -55
- package/packages/providers/lib/engines/ninfer/ninferArch.d.ts +9 -0
- package/packages/providers/lib/engines/ninfer/ninferArch.js +9 -0
- package/packages/providers/lib/engines/ninfer/ninferDebian.d.ts +9 -0
- package/packages/providers/lib/engines/ninfer/ninferDebian.js +9 -0
- package/packages/providers/lib/engines/ninfer/ninferFedora.d.ts +9 -0
- package/packages/providers/lib/engines/ninfer/ninferFedora.js +9 -0
- package/packages/providers/lib/engines/ninfer/ninferLinux.d.ts +17 -0
- package/packages/providers/lib/engines/ninfer/ninferLinux.js +37 -0
- package/packages/providers/lib/engines/ninfer/ninferMacOS.d.ts +15 -0
- package/packages/providers/lib/engines/ninfer/ninferMacOS.js +17 -0
- package/packages/providers/lib/engines/ninfer/ninferWindows.d.ts +29 -0
- package/packages/providers/lib/engines/ninfer/ninferWindows.js +59 -0
- package/packages/providers/lib/engines/strata/strata.d.ts +1 -0
- package/packages/providers/lib/engines/{strata.js → strata/strata.js} +70 -3
- package/packages/providers/lib/engines/{strataAdapter.d.ts → strata/strataAdapter.d.ts} +5 -6
- package/packages/providers/lib/engines/{strataAdapter.js → strata/strataAdapter.js} +147 -111
- package/packages/providers/lib/engines/strata/strataArch.d.ts +9 -0
- package/packages/providers/lib/engines/strata/strataArch.js +9 -0
- package/packages/providers/lib/engines/strata/strataDebian.d.ts +9 -0
- package/packages/providers/lib/engines/strata/strataDebian.js +9 -0
- package/packages/providers/lib/engines/strata/strataFedora.d.ts +9 -0
- package/packages/providers/lib/engines/strata/strataFedora.js +9 -0
- package/packages/providers/lib/engines/strata/strataLinux.d.ts +21 -0
- package/packages/providers/lib/engines/strata/strataLinux.js +30 -0
- package/packages/providers/lib/engines/strata/strataMacOS.d.ts +16 -0
- package/packages/providers/lib/engines/strata/strataMacOS.js +17 -0
- package/packages/providers/lib/engines/strata/strataWindows.d.ts +27 -0
- package/packages/providers/lib/engines/strata/strataWindows.js +37 -0
- package/packages/providers/lib/engines.d.ts +7 -5
- package/packages/providers/lib/engines.js +21 -10
- package/packages/providers/lib/guidelines.d.ts +5 -4
- package/packages/providers/lib/guidelines.js +18 -5
- package/packages/providers/lib/index.d.ts +33 -29
- package/packages/providers/lib/index.js +45 -33
- package/packages/providers/lib/model-defaults.d.ts +5 -1
- package/packages/providers/lib/model-defaults.js +25 -1
- package/packages/providers/lib/platform.d.ts +8 -5
- package/packages/providers/lib/platform.js +23 -9
- package/packages/providers/lib/presets.d.ts +6 -4
- package/packages/providers/lib/presets.js +53 -5
- package/packages/providers/lib/systemDeps.d.ts +313 -0
- package/packages/providers/lib/systemDeps.js +284 -0
- package/packages/providers/lib/vram.d.ts +34 -8
- package/packages/providers/lib/vram.js +81 -8
- package/packages/providers/package.json +2 -2
- package/packages/service/lib/index.d.ts +176 -21
- package/packages/service/lib/index.js +589 -86
- package/packages/service/lib/launch-target.d.ts +19 -0
- package/packages/service/lib/launch-target.js +28 -0
- package/packages/service/lib/run-logs.d.ts +72 -0
- package/packages/service/lib/run-logs.js +125 -0
- package/packages/service/lib/types.d.ts +163 -6
- package/packages/service/lib/types.js +1 -1
- package/packages/service/package.json +2 -2
- package/packages/tool/lib/index.d.ts +1 -1
- package/packages/tool/lib/index.js +1 -1
- package/packages/tool/package.json +2 -2
- package/packages/ui/lib/config.d.ts +12 -2
- package/packages/ui/lib/config.js +18 -2
- package/packages/ui/lib/deps.d.ts +1 -1
- package/packages/ui/lib/deps.js +1 -1
- package/packages/ui/lib/form.d.ts +1 -1
- package/packages/ui/lib/form.js +1 -1
- package/packages/ui/lib/index.d.ts +7 -1
- package/packages/ui/lib/index.js +12 -2
- package/packages/ui/lib/meter.d.ts +1 -1
- package/packages/ui/lib/meter.js +1 -1
- package/packages/ui/lib/ops/engine.d.ts +142 -34
- package/packages/ui/lib/ops/engine.js +469 -265
- package/packages/ui/lib/ops/get-steps.d.ts +98 -0
- package/packages/ui/lib/ops/get-steps.js +359 -0
- package/packages/ui/lib/ops/hf.d.ts +26 -11
- package/packages/ui/lib/ops/hf.js +115 -25
- package/packages/ui/lib/ops/logs.d.ts +70 -15
- package/packages/ui/lib/ops/logs.js +96 -35
- package/packages/ui/lib/ops/model.d.ts +2 -10
- package/packages/ui/lib/ops/model.js +9 -16
- package/packages/ui/lib/request.d.ts +1 -1
- package/packages/ui/lib/request.js +1 -1
- package/packages/ui/lib/route.d.ts +22 -6
- package/packages/ui/lib/route.js +32 -9
- package/packages/ui/lib/routes/chat-template.d.ts +1 -14
- package/packages/ui/lib/routes/chat-template.js +1 -37
- package/packages/ui/lib/routes/deps.d.ts +1 -16
- package/packages/ui/lib/routes/deps.js +1 -27
- package/packages/ui/lib/routes/download.d.ts +1 -16
- package/packages/ui/lib/routes/download.js +1 -48
- package/packages/ui/lib/routes/get.d.ts +1 -18
- package/packages/ui/lib/routes/get.js +66 -17
- package/packages/ui/lib/routes/install.d.ts +1 -1
- package/packages/ui/lib/routes/install.js +1 -1
- package/packages/ui/lib/routes/launch.d.ts +13 -7
- package/packages/ui/lib/routes/launch.js +33 -9
- package/packages/ui/lib/routes/logs.d.ts +57 -0
- package/packages/ui/lib/routes/logs.js +117 -0
- package/packages/ui/lib/routes/provider-delete.d.ts +1 -1
- package/packages/ui/lib/routes/provider-delete.js +1 -1
- package/packages/ui/lib/routes/register.d.ts +1 -1
- package/packages/ui/lib/routes/register.js +1 -1
- package/packages/ui/lib/routes/save.d.ts +1 -1
- package/packages/ui/lib/routes/save.js +22 -2
- package/packages/ui/lib/routes/stop.d.ts +7 -4
- package/packages/ui/lib/routes/stop.js +7 -4
- package/packages/ui/lib/routes/stream.d.ts +40 -0
- package/packages/ui/lib/routes/stream.js +68 -0
- package/packages/ui/lib/routes/summary.d.ts +1 -1
- package/packages/ui/lib/routes/summary.js +1 -1
- package/packages/ui/lib/routes/unregister.d.ts +1 -1
- package/packages/ui/lib/routes/unregister.js +1 -1
- package/packages/ui/lib/viewmodels/deps.d.ts +1 -31
- package/packages/ui/lib/viewmodels/deps.js +1 -89
- package/packages/ui/lib/viewmodels/depsHelpers.d.ts +1 -28
- package/packages/ui/lib/viewmodels/depsHelpers.js +72 -11
- package/packages/ui/lib/viewmodels/summary.d.ts +7 -2
- package/packages/ui/lib/viewmodels/summary.js +55 -35
- package/packages/ui/lib/viewmodels/summaryHelpers.d.ts +1 -1
- package/packages/ui/lib/viewmodels/summaryHelpers.js +1 -1
- package/packages/ui/lib/warnings.d.ts +1 -1
- package/packages/ui/lib/warnings.js +1 -1
- package/packages/ui/package.json +4 -4
- package/packages/providers/lib/engines/strata.d.ts +0 -53
|
@@ -7,17 +7,20 @@
|
|
|
7
7
|
* here, never a rewire of the card.
|
|
8
8
|
* @module dsh-plugin-local-infer/providers/engines
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
10
|
+
import { BASALT_PARAMETERS } from "./engines/basalt/basalt.js";
|
|
11
|
+
import { HYPERQWEN_PARAMETERS } from "./engines/hyperqwen/hyperqwen.js";
|
|
12
|
+
import { INFERNIX_PARAMETERS } from "./engines/infernix/infernix.js";
|
|
13
|
+
import { LLAMACPP_PARAMETERS } from "./engines/llamacpp/llamacpp.js";
|
|
14
|
+
import { NINFER_PARAMETERS } from "./engines/ninfer/ninfer.js";
|
|
15
|
+
import { STRATA_PARAMETERS } from "./engines/strata/strata.js";
|
|
15
16
|
/**
|
|
16
17
|
* The engines the Web card offers, in the order the card lists them. NInfer,
|
|
17
|
-
* Hyper-Qwen, Infernix, llama.cpp, and
|
|
18
|
-
* (llama.cpp's is the specified set the plan names, verified when the
|
|
19
|
-
* lands); Strata's surface is the `strata launch` flags and it supports
|
|
20
|
-
* three build modes (docker, source build, and the binary install)
|
|
18
|
+
* Hyper-Qwen, Infernix, llama.cpp, Strata, and Basalt all carry parameter
|
|
19
|
+
* surfaces (llama.cpp's is the specified set the plan names, verified when the
|
|
20
|
+
* binary lands); Strata's surface is the `strata launch` flags and it supports
|
|
21
|
+
* all three build modes (docker, source build, and the binary install);
|
|
22
|
+
* Basalt's surface is the `basalt_config.json` settings and it is local-build
|
|
23
|
+
* only (the C++/CUDA engine ships no container image).
|
|
21
24
|
*/
|
|
22
25
|
export const ENGINES = [
|
|
23
26
|
{
|
|
@@ -50,5 +53,13 @@ export const ENGINES = [
|
|
|
50
53
|
supports: { docker: true, local: true, binary: true },
|
|
51
54
|
parameters: STRATA_PARAMETERS,
|
|
52
55
|
},
|
|
56
|
+
{
|
|
57
|
+
// Basalt is the C++/CUDA engine for the Qwen3.8-Flash-Next MoE model,
|
|
58
|
+
// Blackwell-only: a local source build, no container image.
|
|
59
|
+
id: 'basalt',
|
|
60
|
+
label: 'Basalt',
|
|
61
|
+
supports: { docker: false, local: true },
|
|
62
|
+
parameters: BASALT_PARAMETERS,
|
|
63
|
+
},
|
|
53
64
|
];
|
|
54
|
-
//# sourceMappingURL=engines.js.map
|
|
65
|
+
//# sourceMappingURL=engines.js.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Built-in hardware guidelines. The rules that every engine shares, expressed
|
|
3
3
|
* as `Guideline` data over (config, hardware): the docker-availability gate,
|
|
4
|
-
* the host RAM tier ceiling,
|
|
5
|
-
* registered with `ctx.localInfer` by the
|
|
6
|
-
* override or an extra rule composes on top
|
|
4
|
+
* the host RAM tier ceiling, the WSL2 pin-memory boot abort, and the Basalt
|
|
5
|
+
* Blackwell (sm_120) gate. Each is registered with `ctx.localInfer` by the
|
|
6
|
+
* provider `apply`, so a per-engine override or an extra rule composes on top
|
|
7
|
+
* without touching these.
|
|
7
8
|
*
|
|
8
9
|
* The rules that need the registered VramModel (the estimator-backed
|
|
9
10
|
* "exceeds usable VRAM" and "spec needs draft weights" rules) live in the
|
|
@@ -26,4 +27,4 @@ export declare const HOST_STATE_IMAGE_BYTES = 195897344;
|
|
|
26
27
|
* degrades before it breaks.
|
|
27
28
|
*/
|
|
28
29
|
export declare const BUILTIN_GUIDELINES: readonly Guideline[];
|
|
29
|
-
//# sourceMappingURL=guidelines.d.ts.map
|
|
30
|
+
//# sourceMappingURL=guidelines.d.ts.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Built-in hardware guidelines. The rules that every engine shares, expressed
|
|
3
3
|
* as `Guideline` data over (config, hardware): the docker-availability gate,
|
|
4
|
-
* the host RAM tier ceiling,
|
|
5
|
-
* registered with `ctx.localInfer` by the
|
|
6
|
-
* override or an extra rule composes on top
|
|
4
|
+
* the host RAM tier ceiling, the WSL2 pin-memory boot abort, and the Basalt
|
|
5
|
+
* Blackwell (sm_120) gate. Each is registered with `ctx.localInfer` by the
|
|
6
|
+
* provider `apply`, so a per-engine override or an extra rule composes on top
|
|
7
|
+
* without touching these.
|
|
7
8
|
*
|
|
8
9
|
* The rules that need the registered VramModel (the estimator-backed
|
|
9
10
|
* "exceeds usable VRAM" and "spec needs draft weights" rules) live in the
|
|
@@ -11,7 +12,7 @@
|
|
|
11
12
|
* a model, not against the hardware alone.
|
|
12
13
|
* @module dsh-plugin-local-infer/providers/guidelines
|
|
13
14
|
*/
|
|
14
|
-
import { infernixDraftModelPath } from "./engines/infernix.js";
|
|
15
|
+
import { infernixDraftModelPath } from "./engines/infernix/infernix.js";
|
|
15
16
|
/**
|
|
16
17
|
* One pinned Host StateImage, in bytes. The NInfer measured figure for the
|
|
17
18
|
* 27B artifact (195,897,344 B, the README's Host StateImage size), used as
|
|
@@ -73,5 +74,17 @@ export const BUILTIN_GUIDELINES = [
|
|
|
73
74
|
'draftModelPreset' in config &&
|
|
74
75
|
infernixDraftModelPath(config) === null,
|
|
75
76
|
},
|
|
77
|
+
{
|
|
78
|
+
// Basalt is Blackwell-only: the engine is compiled for sm_120 and its
|
|
79
|
+
// NVFP4 expert kernels need it. A basalt config on a card that reports a
|
|
80
|
+
// different SM number (or no card at all) cannot boot, so the rule names
|
|
81
|
+
// the fix before the engine starts. It is basalt-specific: only basalt
|
|
82
|
+
// configs carry the engine key, so every other engine stays silent.
|
|
83
|
+
id: 'basalt-needs-blackwell',
|
|
84
|
+
level: 'error',
|
|
85
|
+
message: 'Basalt needs an NVIDIA Blackwell GPU (SM 120). This machine reports a different SM number, or no GPU at all.',
|
|
86
|
+
anchors: ['gpu'],
|
|
87
|
+
when: (config, hw) => config.engine === 'basalt' && hw.gpu?.sm !== 120,
|
|
88
|
+
},
|
|
76
89
|
];
|
|
77
|
-
//# sourceMappingURL=guidelines.js.map
|
|
90
|
+
//# sourceMappingURL=guidelines.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The concrete providers for the local-inference capability: the engine
|
|
3
|
-
* adapters (ninfer, hyperqwen, llamacpp, infernix, strata), the NInfer
|
|
3
|
+
* adapters (ninfer, hyperqwen, llamacpp, infernix, strata, basalt), the NInfer
|
|
4
4
|
* VramModel, the built-in presets, the built-in guidelines, and the per-OS
|
|
5
5
|
* SystemDep install command data. Each registers itself with `ctx.localInfer`.
|
|
6
6
|
*
|
|
@@ -18,41 +18,45 @@ export declare const inject: string[];
|
|
|
18
18
|
* Phase 5 adapters. NInfer's surface is CLI flags (`toArgv`); Hyper-Qwen's is
|
|
19
19
|
* `.env` keys (`toEnv`).
|
|
20
20
|
*/
|
|
21
|
-
export { CTX_OPTIONS, HYPERQWEN_PARAMETERS, KV_OPTIONS, SPEC_OPTIONS as HYPERQWEN_SPEC_OPTIONS, } from './engines/hyperqwen.ts';
|
|
22
|
-
export { CHAT_TEMPLATE_OPTIONS, DEVICE_PROFILE_OPTIONS, KV_DTYPE_OPTIONS, NINFER_PARAMETERS, SPEC_OPTIONS as NINFER_SPEC_OPTIONS, } from './engines/ninfer.ts';
|
|
23
|
-
export { NINFER_VRAM_MODELS, ninferVramModel } from './vram.ts';
|
|
21
|
+
export { CTX_OPTIONS, HYPERQWEN_PARAMETERS, KV_OPTIONS, SPEC_OPTIONS as HYPERQWEN_SPEC_OPTIONS, } from './engines/hyperqwen/hyperqwen.ts';
|
|
22
|
+
export { CHAT_TEMPLATE_OPTIONS, DEVICE_PROFILE_OPTIONS, KV_DTYPE_OPTIONS, NINFER_PARAMETERS, SPEC_OPTIONS as NINFER_SPEC_OPTIONS, } from './engines/ninfer/ninfer.ts';
|
|
23
|
+
export { BASALT_VRAM_MODELS, NINFER_VRAM_MODELS, basaltVramModel, ninferVramModel, } from './vram.ts';
|
|
24
24
|
export { BUILTIN_GUIDELINES, HOST_STATE_IMAGE_BYTES } from './guidelines.ts';
|
|
25
25
|
export { ENGINES } from './engines.ts';
|
|
26
26
|
export type { EngineInfo } from './engines.ts';
|
|
27
|
-
export { ENGINE_SOURCES, FORK_REMOTE, buildEngineRepo, engineBuildSteps, engineSource, syncAndRebuildEngine, syncEngineRepo, } from './acquire.ts';
|
|
28
|
-
export type { AcquireLog, EngineSource, EngineStepResult, SyncRebuildRequest, SyncRebuildResult, } from './acquire.ts';
|
|
29
|
-
export { ENGINE_DEP_PLANS, SYSTEM_DEPS } from './deps.ts';
|
|
27
|
+
export { ENGINE_SOURCES, FORK_REMOTE, buildEngineRepo, engineBuildSteps, engineSource, syncAndRebuildEngine, syncEngineForDeploy, syncEngineRepo, } from './acquire.ts';
|
|
28
|
+
export type { AcquireLog, EngineDeploySync, EngineSource, EngineStepResult, SyncRebuildRequest, SyncRebuildResult, SyncStepResult, } from './acquire.ts';
|
|
29
|
+
export { ENGINE_DEP_PLANS, SYSTEM_DEPS, engineLocalDeps } from './deps.ts';
|
|
30
30
|
export { ENGINE_PLATFORM_DEFAULTS, enginePlatformDefaults } from './platform.ts';
|
|
31
31
|
export type { EnginePlatformDefaults } from './platform.ts';
|
|
32
32
|
export { BUILTIN_PRESETS, PRESET_SOURCES, extractJsonBlock } from './presets.ts';
|
|
33
33
|
export { DEFAULT_MODELS, defaultModelFor, defaultModelsForEngine } from './model-defaults.ts';
|
|
34
|
-
export { customArgEnv, customArgFlags, envFromSpecs, flagsFromSpecs, nodeLifecycleHost, pollHealth, } from './adapters.ts';
|
|
35
|
-
export {
|
|
36
|
-
export {
|
|
37
|
-
export {
|
|
38
|
-
export {
|
|
39
|
-
export {
|
|
40
|
-
export
|
|
41
|
-
export {
|
|
42
|
-
export
|
|
43
|
-
export {
|
|
44
|
-
export
|
|
45
|
-
export {
|
|
34
|
+
export { createNodeLifecycleHost, customArgEnv, customArgFlags, envFromSpecs, flagsFromSpecs, nodeLifecycleHost, pollHealth, resolveLaunchArgv, } from './adapters.ts';
|
|
35
|
+
export type { SudoHook } from './adapters.ts';
|
|
36
|
+
export { HyperQwenAdapter } from './engines/hyperqwen/hyperqwenAdapter.ts';
|
|
37
|
+
export { InfernixAdapter } from './engines/infernix/infernixAdapter.ts';
|
|
38
|
+
export { LLAMACPP_DOCKER_IMAGE, LlamaCppAdapter } from './engines/llamacpp/llamacppAdapter.ts';
|
|
39
|
+
export { NINFER_DOCKER_IMAGE, NINFER_MODEL_ARTIFACTS, NInferAdapter } from './engines/ninfer/ninferAdapter.ts';
|
|
40
|
+
export { STRATA_DOCKER_IMAGE, StrataAdapter } from './engines/strata/strataAdapter.ts';
|
|
41
|
+
export type { NInferModelArtifact } from './engines/ninfer/ninferAdapter.ts';
|
|
42
|
+
export { KV_CACHE_TYPE_OPTIONS, LLAMACPP_MODEL_ARTIFACTS, LLAMACPP_PARAMETERS, llamaCppModelKey, } from './engines/llamacpp/llamacpp.ts';
|
|
43
|
+
export type { LlamaCppModelArtifact } from './engines/llamacpp/llamacpp.ts';
|
|
44
|
+
export { DFLASH2_CUSTOM_VALUE, DFLASH2_GATE_MESSAGE, INFERNIX_DFLASH2_MODELS, INFERNIX_KV_DTYPE_OPTIONS, INFERNIX_MODEL_ARTIFACTS, INFERNIX_NGRAM_RESIDENCY_OPTIONS, INFERNIX_NGRAM_VOLUMES, INFERNIX_PARAMETERS, INFERNIX_REASONING_LOOP_OPTIONS, INFERNIX_SPEC_OPTIONS, SPEC_GATE_MESSAGE as INFERNIX_SPEC_GATE_MESSAGE, dflash2PresetOptions, infernixArtifactFor, infernixDraftModelPath, infernixGetDownloads, infernixModelKey, } from './engines/infernix/infernix.ts';
|
|
45
|
+
export type { InfernixDFlash2Model, InfernixModelArtifact, InfernixNgramVolume, } from './engines/infernix/infernix.ts';
|
|
46
|
+
export { STRATA_PARAMETERS } from './engines/strata/strata.ts';
|
|
47
|
+
export { BASALT_PARAMETERS } from './engines/basalt/basalt.ts';
|
|
48
|
+
export { BasaltAdapter } from './engines/basalt/basaltAdapter.ts';
|
|
46
49
|
/**
|
|
47
|
-
* Mount the providers. The NInfer measured VramModels
|
|
48
|
-
* service's estimate prices a named
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
50
|
+
* Mount the providers. The NInfer measured VramModels and the Basalt
|
|
51
|
+
* estimated VramModel register here so the service's estimate prices a named
|
|
52
|
+
* model; the built-in hardware guidelines register so the guideline engine
|
|
53
|
+
* warns on docker, host RAM, WSL2, and the Basalt Blackwell gate before the
|
|
54
|
+
* engine boots; the per-engine dep plans register so the deps, installString,
|
|
55
|
+
* and runInstall entry points resolve a plan for every engine the card
|
|
56
|
+
* offers; the built-in presets register so the defaults resolver resolves a
|
|
57
|
+
* sane starting config for the detected hardware class; and the engine
|
|
58
|
+
* adapters register so the launch, stop, and register entry points route a
|
|
59
|
+
* plan to the adapter that rendered it.
|
|
56
60
|
*/
|
|
57
61
|
export declare function apply(ctx: Context): void;
|
|
58
62
|
declare const plugin: {
|
|
@@ -61,4 +65,4 @@ declare const plugin: {
|
|
|
61
65
|
apply: typeof apply;
|
|
62
66
|
};
|
|
63
67
|
export default plugin;
|
|
64
|
-
//# sourceMappingURL=index.d.ts.map
|
|
68
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The concrete providers for the local-inference capability: the engine
|
|
3
|
-
* adapters (ninfer, hyperqwen, llamacpp, infernix, strata), the NInfer
|
|
3
|
+
* adapters (ninfer, hyperqwen, llamacpp, infernix, strata, basalt), the NInfer
|
|
4
4
|
* VramModel, the built-in presets, the built-in guidelines, and the per-OS
|
|
5
5
|
* SystemDep install command data. Each registers itself with `ctx.localInfer`.
|
|
6
6
|
*
|
|
@@ -11,16 +11,17 @@
|
|
|
11
11
|
* @module dsh-plugin-local-infer/providers
|
|
12
12
|
*/
|
|
13
13
|
import { createNodeLifecycleHost } from "./adapters.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
14
|
+
import { BasaltAdapter } from "./engines/basalt/basaltAdapter.js";
|
|
15
|
+
import { HyperQwenAdapter } from "./engines/hyperqwen/hyperqwenAdapter.js";
|
|
16
|
+
import { InfernixAdapter } from "./engines/infernix/infernixAdapter.js";
|
|
17
|
+
import { LlamaCppAdapter } from "./engines/llamacpp/llamacppAdapter.js";
|
|
18
|
+
import { NInferAdapter } from "./engines/ninfer/ninferAdapter.js";
|
|
19
|
+
import { StrataAdapter } from "./engines/strata/strataAdapter.js";
|
|
19
20
|
import { createDshDebugLogger } from "./debug.js";
|
|
20
21
|
import { ENGINE_DEP_PLANS } from "./deps.js";
|
|
21
22
|
import { BUILTIN_GUIDELINES } from "./guidelines.js";
|
|
22
23
|
import { BUILTIN_PRESETS } from "./presets.js";
|
|
23
|
-
import { NINFER_VRAM_MODELS } from "./vram.js";
|
|
24
|
+
import { BASALT_VRAM_MODELS, NINFER_VRAM_MODELS } from "./vram.js";
|
|
24
25
|
export const name = 'local-infer-providers';
|
|
25
26
|
export const inject = ['localInfer'];
|
|
26
27
|
/**
|
|
@@ -28,41 +29,47 @@ export const inject = ['localInfer'];
|
|
|
28
29
|
* Phase 5 adapters. NInfer's surface is CLI flags (`toArgv`); Hyper-Qwen's is
|
|
29
30
|
* `.env` keys (`toEnv`).
|
|
30
31
|
*/
|
|
31
|
-
export { CTX_OPTIONS, HYPERQWEN_PARAMETERS, KV_OPTIONS, SPEC_OPTIONS as HYPERQWEN_SPEC_OPTIONS, } from "./engines/hyperqwen.js";
|
|
32
|
-
export { CHAT_TEMPLATE_OPTIONS, DEVICE_PROFILE_OPTIONS, KV_DTYPE_OPTIONS, NINFER_PARAMETERS, SPEC_OPTIONS as NINFER_SPEC_OPTIONS, } from "./engines/ninfer.js";
|
|
33
|
-
export { NINFER_VRAM_MODELS, ninferVramModel } from "./vram.js";
|
|
32
|
+
export { CTX_OPTIONS, HYPERQWEN_PARAMETERS, KV_OPTIONS, SPEC_OPTIONS as HYPERQWEN_SPEC_OPTIONS, } from "./engines/hyperqwen/hyperqwen.js";
|
|
33
|
+
export { CHAT_TEMPLATE_OPTIONS, DEVICE_PROFILE_OPTIONS, KV_DTYPE_OPTIONS, NINFER_PARAMETERS, SPEC_OPTIONS as NINFER_SPEC_OPTIONS, } from "./engines/ninfer/ninfer.js";
|
|
34
|
+
export { BASALT_VRAM_MODELS, NINFER_VRAM_MODELS, basaltVramModel, ninferVramModel, } from "./vram.js";
|
|
34
35
|
export { BUILTIN_GUIDELINES, HOST_STATE_IMAGE_BYTES } from "./guidelines.js";
|
|
35
36
|
export { ENGINES } from "./engines.js";
|
|
36
|
-
export { ENGINE_SOURCES, FORK_REMOTE, buildEngineRepo, engineBuildSteps, engineSource, syncAndRebuildEngine, syncEngineRepo, } from "./acquire.js";
|
|
37
|
-
export { ENGINE_DEP_PLANS, SYSTEM_DEPS } from "./deps.js";
|
|
37
|
+
export { ENGINE_SOURCES, FORK_REMOTE, buildEngineRepo, engineBuildSteps, engineSource, syncAndRebuildEngine, syncEngineForDeploy, syncEngineRepo, } from "./acquire.js";
|
|
38
|
+
export { ENGINE_DEP_PLANS, SYSTEM_DEPS, engineLocalDeps } from "./deps.js";
|
|
38
39
|
export { ENGINE_PLATFORM_DEFAULTS, enginePlatformDefaults } from "./platform.js";
|
|
39
40
|
export { BUILTIN_PRESETS, PRESET_SOURCES, extractJsonBlock } from "./presets.js";
|
|
40
41
|
export { DEFAULT_MODELS, defaultModelFor, defaultModelsForEngine } from "./model-defaults.js";
|
|
41
|
-
export { customArgEnv, customArgFlags, envFromSpecs, flagsFromSpecs, nodeLifecycleHost, pollHealth, } from "./adapters.js";
|
|
42
|
-
export { HyperQwenAdapter } from "./engines/hyperqwenAdapter.js";
|
|
43
|
-
export { InfernixAdapter } from "./engines/infernixAdapter.js";
|
|
44
|
-
export { LLAMACPP_DOCKER_IMAGE, LlamaCppAdapter } from "./engines/llamacppAdapter.js";
|
|
45
|
-
export { NINFER_DOCKER_IMAGE, NINFER_MODEL_ARTIFACTS, NInferAdapter } from "./engines/ninferAdapter.js";
|
|
46
|
-
export { STRATA_DOCKER_IMAGE, StrataAdapter } from "./engines/strataAdapter.js";
|
|
47
|
-
export { KV_CACHE_TYPE_OPTIONS, LLAMACPP_MODEL_ARTIFACTS, LLAMACPP_PARAMETERS, llamaCppModelKey, } from "./engines/llamacpp.js";
|
|
48
|
-
export { DFLASH2_CUSTOM_VALUE, DFLASH2_GATE_MESSAGE, INFERNIX_DFLASH2_MODELS, INFERNIX_KV_DTYPE_OPTIONS, INFERNIX_MODEL_ARTIFACTS, INFERNIX_NGRAM_RESIDENCY_OPTIONS, INFERNIX_NGRAM_VOLUMES, INFERNIX_PARAMETERS, INFERNIX_REASONING_LOOP_OPTIONS, INFERNIX_SPEC_OPTIONS, SPEC_GATE_MESSAGE as INFERNIX_SPEC_GATE_MESSAGE, dflash2PresetOptions, infernixArtifactFor, infernixDraftModelPath, infernixGetDownloads, infernixModelKey, } from "./engines/infernix.js";
|
|
49
|
-
export { STRATA_PARAMETERS } from "./engines/strata.js";
|
|
42
|
+
export { createNodeLifecycleHost, customArgEnv, customArgFlags, envFromSpecs, flagsFromSpecs, nodeLifecycleHost, pollHealth, resolveLaunchArgv, } from "./adapters.js";
|
|
43
|
+
export { HyperQwenAdapter } from "./engines/hyperqwen/hyperqwenAdapter.js";
|
|
44
|
+
export { InfernixAdapter } from "./engines/infernix/infernixAdapter.js";
|
|
45
|
+
export { LLAMACPP_DOCKER_IMAGE, LlamaCppAdapter } from "./engines/llamacpp/llamacppAdapter.js";
|
|
46
|
+
export { NINFER_DOCKER_IMAGE, NINFER_MODEL_ARTIFACTS, NInferAdapter } from "./engines/ninfer/ninferAdapter.js";
|
|
47
|
+
export { STRATA_DOCKER_IMAGE, StrataAdapter } from "./engines/strata/strataAdapter.js";
|
|
48
|
+
export { KV_CACHE_TYPE_OPTIONS, LLAMACPP_MODEL_ARTIFACTS, LLAMACPP_PARAMETERS, llamaCppModelKey, } from "./engines/llamacpp/llamacpp.js";
|
|
49
|
+
export { DFLASH2_CUSTOM_VALUE, DFLASH2_GATE_MESSAGE, INFERNIX_DFLASH2_MODELS, INFERNIX_KV_DTYPE_OPTIONS, INFERNIX_MODEL_ARTIFACTS, INFERNIX_NGRAM_RESIDENCY_OPTIONS, INFERNIX_NGRAM_VOLUMES, INFERNIX_PARAMETERS, INFERNIX_REASONING_LOOP_OPTIONS, INFERNIX_SPEC_OPTIONS, SPEC_GATE_MESSAGE as INFERNIX_SPEC_GATE_MESSAGE, dflash2PresetOptions, infernixArtifactFor, infernixDraftModelPath, infernixGetDownloads, infernixModelKey, } from "./engines/infernix/infernix.js";
|
|
50
|
+
export { STRATA_PARAMETERS } from "./engines/strata/strata.js";
|
|
51
|
+
export { BASALT_PARAMETERS } from "./engines/basalt/basalt.js";
|
|
52
|
+
export { BasaltAdapter } from "./engines/basalt/basaltAdapter.js";
|
|
50
53
|
/**
|
|
51
|
-
* Mount the providers. The NInfer measured VramModels
|
|
52
|
-
* service's estimate prices a named
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
54
|
+
* Mount the providers. The NInfer measured VramModels and the Basalt
|
|
55
|
+
* estimated VramModel register here so the service's estimate prices a named
|
|
56
|
+
* model; the built-in hardware guidelines register so the guideline engine
|
|
57
|
+
* warns on docker, host RAM, WSL2, and the Basalt Blackwell gate before the
|
|
58
|
+
* engine boots; the per-engine dep plans register so the deps, installString,
|
|
59
|
+
* and runInstall entry points resolve a plan for every engine the card
|
|
60
|
+
* offers; the built-in presets register so the defaults resolver resolves a
|
|
61
|
+
* sane starting config for the detected hardware class; and the engine
|
|
62
|
+
* adapters register so the launch, stop, and register entry points route a
|
|
63
|
+
* plan to the adapter that rendered it.
|
|
60
64
|
*/
|
|
61
65
|
export function apply(ctx) {
|
|
62
66
|
const localInfer = ctx.localInfer;
|
|
63
67
|
for (const model of NINFER_VRAM_MODELS) {
|
|
64
68
|
localInfer.registerVramModel(model);
|
|
65
69
|
}
|
|
70
|
+
for (const model of BASALT_VRAM_MODELS) {
|
|
71
|
+
localInfer.registerVramModel(model);
|
|
72
|
+
}
|
|
66
73
|
for (const guideline of BUILTIN_GUIDELINES) {
|
|
67
74
|
localInfer.registerGuideline(guideline);
|
|
68
75
|
}
|
|
@@ -76,14 +83,19 @@ export function apply(ctx) {
|
|
|
76
83
|
// (the HARNESS_LOG_LEVEL env var or the DSH logger level config), the host
|
|
77
84
|
// logs every command it issues to an engine, from build to launch, through
|
|
78
85
|
// the cordis logger's debug method. A normal run wires the no-debug host, so
|
|
79
|
-
// the command path stays quiet.
|
|
80
|
-
|
|
86
|
+
// the command path stays quiet. The sudo hook reports a waiting
|
|
87
|
+
// `sudo ln -sf ...` deploy link through the service's notifySudoNeeded, so
|
|
88
|
+
// the route-registered observer can show the CLI note while the card waits.
|
|
89
|
+
const host = createNodeLifecycleHost(createDshDebugLogger(ctx), {
|
|
90
|
+
notify: (command) => localInfer.notifySudoNeeded(command),
|
|
91
|
+
});
|
|
81
92
|
localInfer.registerEngine(new NInferAdapter(host));
|
|
82
93
|
localInfer.registerEngine(new HyperQwenAdapter(host));
|
|
83
94
|
localInfer.registerEngine(new LlamaCppAdapter(host));
|
|
84
95
|
localInfer.registerEngine(new InfernixAdapter(host));
|
|
85
96
|
localInfer.registerEngine(new StrataAdapter(host));
|
|
97
|
+
localInfer.registerEngine(new BasaltAdapter(host));
|
|
86
98
|
}
|
|
87
99
|
const plugin = { name, inject, apply };
|
|
88
100
|
export default plugin;
|
|
89
|
-
//# sourceMappingURL=index.js.map
|
|
101
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
* n-gram volume the `--ngram-volume` flag reads). Strata carries the two
|
|
8
8
|
* models the README's Models section links (Gyro and DeepSeek V4.1-Flash),
|
|
9
9
|
* each named by the model the engine accepts and the repo it downloads.
|
|
10
|
+
* Basalt carries the two `.basalt` artifacts the engine serves (the
|
|
11
|
+
* Qwen3.8-Flash-Next NVFP4 conversion and the DeepSeek-V4.1-Flash UD-IQ1_M
|
|
12
|
+
* pack, each named by the repo and file the adapter's deploy step
|
|
13
|
+
* downloads).
|
|
10
14
|
*
|
|
11
15
|
* The list is the single source the card's Model dropdown, the model
|
|
12
16
|
* presence check, and the hf CLI download route read. Adding a model is a
|
|
@@ -33,4 +37,4 @@ export declare function defaultModelsForEngine(engineId: string): readonly Defau
|
|
|
33
37
|
* undefined entry with a 404, so a model no default names never downloads.
|
|
34
38
|
*/
|
|
35
39
|
export declare function defaultModelFor(engineId: string, modelId: string): DefaultModel | undefined;
|
|
36
|
-
//# sourceMappingURL=model-defaults.d.ts.map
|
|
40
|
+
//# sourceMappingURL=model-defaults.d.ts.map
|
|
@@ -7,12 +7,17 @@
|
|
|
7
7
|
* n-gram volume the `--ngram-volume` flag reads). Strata carries the two
|
|
8
8
|
* models the README's Models section links (Gyro and DeepSeek V4.1-Flash),
|
|
9
9
|
* each named by the model the engine accepts and the repo it downloads.
|
|
10
|
+
* Basalt carries the two `.basalt` artifacts the engine serves (the
|
|
11
|
+
* Qwen3.8-Flash-Next NVFP4 conversion and the DeepSeek-V4.1-Flash UD-IQ1_M
|
|
12
|
+
* pack, each named by the repo and file the adapter's deploy step
|
|
13
|
+
* downloads).
|
|
10
14
|
*
|
|
11
15
|
* The list is the single source the card's Model dropdown, the model
|
|
12
16
|
* presence check, and the hf CLI download route read. Adding a model is a
|
|
13
17
|
* data edit here, never a route or card rewire.
|
|
14
18
|
* @module dsh-plugin-local-infer/providers/model-defaults
|
|
15
19
|
*/
|
|
20
|
+
import { BASALT_DEFAULT_MODEL_ID, BASALT_MODEL_FILE, BASALT_MODEL_REPO, BASALT_DEEPSEEK_MODEL_FILE, BASALT_DEEPSEEK_MODEL_ID, BASALT_DEEPSEEK_MODEL_REPO, } from "./engines/basalt/basalt.js";
|
|
16
21
|
/**
|
|
17
22
|
* DEFAULT_MODELS is the default model list, in the order the card lists them.
|
|
18
23
|
* The 27B keys reuse the VramModel registry ids; the 35B-A3B entries use the
|
|
@@ -106,6 +111,25 @@ export const DEFAULT_MODELS = [
|
|
|
106
111
|
label: 'Strata DeepSeek V4.1-Flash (2.00 bpw)',
|
|
107
112
|
url: 'https://huggingface.co/ISTA-DASLab/DeepSeek-V4.1-Flash-1017-GSQ-RCO-GGUF',
|
|
108
113
|
},
|
|
114
|
+
// The two `.basalt` artifacts the engine serves: for each, the weights,
|
|
115
|
+
// tokenizer, chat template, drafter, vision projector, and default
|
|
116
|
+
// sampling all come from the one file. The repos and files ride the
|
|
117
|
+
// adapter constants, so the download route and the deploy step share one
|
|
118
|
+
// source.
|
|
119
|
+
{
|
|
120
|
+
engineId: 'basalt',
|
|
121
|
+
modelId: BASALT_DEFAULT_MODEL_ID,
|
|
122
|
+
label: 'Basalt Qwen3.8-Flash-Next (NVFP4 DQ6_K)',
|
|
123
|
+
url: `https://huggingface.co/${BASALT_MODEL_REPO}`,
|
|
124
|
+
file: BASALT_MODEL_FILE,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
engineId: 'basalt',
|
|
128
|
+
modelId: BASALT_DEEPSEEK_MODEL_ID,
|
|
129
|
+
label: 'Basalt DeepSeek-V4.1-Flash (UD-IQ1_M)',
|
|
130
|
+
url: `https://huggingface.co/${BASALT_DEEPSEEK_MODEL_REPO}`,
|
|
131
|
+
file: BASALT_DEEPSEEK_MODEL_FILE,
|
|
132
|
+
},
|
|
109
133
|
];
|
|
110
134
|
/**
|
|
111
135
|
* defaultModelsForEngine reads the default list for one engine id, in list
|
|
@@ -123,4 +147,4 @@ export function defaultModelsForEngine(engineId) {
|
|
|
123
147
|
export function defaultModelFor(engineId, modelId) {
|
|
124
148
|
return DEFAULT_MODELS.find((entry) => entry.engineId === engineId && entry.modelId === modelId);
|
|
125
149
|
}
|
|
126
|
-
//# sourceMappingURL=model-defaults.js.map
|
|
150
|
+
//# sourceMappingURL=model-defaults.js.map
|
|
@@ -19,13 +19,16 @@ export interface EnginePlatformDefaults {
|
|
|
19
19
|
* The per-engine platform defaults, keyed by engine id. The build command is
|
|
20
20
|
* the engine's first acquisition build step; the docker tag is the upstream
|
|
21
21
|
* image the adapter pulls. Hyper-Qwen is compose-driven, so its docker tag is
|
|
22
|
-
* the vLLM OpenAI server image; Infernix
|
|
23
|
-
* a build command only.
|
|
22
|
+
* the vLLM OpenAI server image; Infernix and Basalt ship no docker image, so
|
|
23
|
+
* they carry a build command only.
|
|
24
24
|
*/
|
|
25
25
|
export declare const ENGINE_PLATFORM_DEFAULTS: Record<string, EnginePlatformDefaults>;
|
|
26
26
|
/**
|
|
27
27
|
* enginePlatformDefaults reads the registered platform defaults for an engine
|
|
28
|
-
* id, or an empty object when none is registered.
|
|
28
|
+
* id on an OS, or an empty object when none is registered. The build command
|
|
29
|
+
* is the engine's first build step for the OS (the Windows vcpkg route on a
|
|
30
|
+
* Windows host), so the card's placeholder seeds the OS-appropriate default.
|
|
31
|
+
* The docker tag is OS-independent and rides the registered entry.
|
|
29
32
|
*/
|
|
30
|
-
export declare function enginePlatformDefaults(engineId: string): EnginePlatformDefaults;
|
|
31
|
-
//# sourceMappingURL=platform.d.ts.map
|
|
33
|
+
export declare function enginePlatformDefaults(engineId: string, os?: 'linux' | 'windows' | 'macos'): EnginePlatformDefaults;
|
|
34
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* defaults are a data edit here, never a card rewire.
|
|
6
6
|
* @module dsh-plugin-local-infer/providers/platform
|
|
7
7
|
*/
|
|
8
|
-
import { LLAMACPP_DOCKER_IMAGE } from "./engines/llamacppAdapter.js";
|
|
9
|
-
import { NINFER_DOCKER_IMAGE } from "./engines/ninferAdapter.js";
|
|
10
|
-
import { STRATA_DOCKER_IMAGE } from "./engines/strataAdapter.js";
|
|
8
|
+
import { LLAMACPP_DOCKER_IMAGE } from "./engines/llamacpp/llamacppAdapter.js";
|
|
9
|
+
import { NINFER_DOCKER_IMAGE } from "./engines/ninfer/ninferAdapter.js";
|
|
10
|
+
import { STRATA_DOCKER_IMAGE } from "./engines/strata/strataAdapter.js";
|
|
11
11
|
import { engineBuildSteps } from "./acquire.js";
|
|
12
12
|
// The local build command is the engine's first acquisition build step (the
|
|
13
13
|
// cmake build the deploy step runs in the checkout), read through
|
|
@@ -18,12 +18,13 @@ const NINFER_BUILD_COMMAND = engineBuildSteps('ninfer')[0];
|
|
|
18
18
|
const LLAMACPP_BUILD_COMMAND = engineBuildSteps('llamacpp')[0];
|
|
19
19
|
const INFERNIX_BUILD_COMMAND = engineBuildSteps('infernix')[0];
|
|
20
20
|
const STRATA_BUILD_COMMAND = engineBuildSteps('strata')[0];
|
|
21
|
+
const BASALT_BUILD_COMMAND = engineBuildSteps('basalt')[0];
|
|
21
22
|
/**
|
|
22
23
|
* The per-engine platform defaults, keyed by engine id. The build command is
|
|
23
24
|
* the engine's first acquisition build step; the docker tag is the upstream
|
|
24
25
|
* image the adapter pulls. Hyper-Qwen is compose-driven, so its docker tag is
|
|
25
|
-
* the vLLM OpenAI server image; Infernix
|
|
26
|
-
* a build command only.
|
|
26
|
+
* the vLLM OpenAI server image; Infernix and Basalt ship no docker image, so
|
|
27
|
+
* they carry a build command only.
|
|
27
28
|
*/
|
|
28
29
|
export const ENGINE_PLATFORM_DEFAULTS = {
|
|
29
30
|
ninfer: {
|
|
@@ -53,12 +54,25 @@ export const ENGINE_PLATFORM_DEFAULTS = {
|
|
|
53
54
|
: {}),
|
|
54
55
|
defaultDockerTag: STRATA_DOCKER_IMAGE,
|
|
55
56
|
},
|
|
57
|
+
basalt: {
|
|
58
|
+
// The CMake build command the deploy step runs in the checkout; the
|
|
59
|
+
// engine ships no container image, so no docker tag.
|
|
60
|
+
...(BASALT_BUILD_COMMAND !== undefined ? { defaultBuildCommand: BASALT_BUILD_COMMAND } : {}),
|
|
61
|
+
},
|
|
56
62
|
};
|
|
57
63
|
/**
|
|
58
64
|
* enginePlatformDefaults reads the registered platform defaults for an engine
|
|
59
|
-
* id, or an empty object when none is registered.
|
|
65
|
+
* id on an OS, or an empty object when none is registered. The build command
|
|
66
|
+
* is the engine's first build step for the OS (the Windows vcpkg route on a
|
|
67
|
+
* Windows host), so the card's placeholder seeds the OS-appropriate default.
|
|
68
|
+
* The docker tag is OS-independent and rides the registered entry.
|
|
60
69
|
*/
|
|
61
|
-
export function enginePlatformDefaults(engineId) {
|
|
62
|
-
|
|
70
|
+
export function enginePlatformDefaults(engineId, os = 'linux') {
|
|
71
|
+
const base = ENGINE_PLATFORM_DEFAULTS[engineId] ?? {};
|
|
72
|
+
const buildCommand = engineBuildSteps(engineId, os)[0];
|
|
73
|
+
return {
|
|
74
|
+
...base,
|
|
75
|
+
...(buildCommand !== undefined ? { defaultBuildCommand: buildCommand } : {}),
|
|
76
|
+
};
|
|
63
77
|
}
|
|
64
|
-
//# sourceMappingURL=platform.js.map
|
|
78
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* Built-in preset data for the local-inference defaults layer. The presets are
|
|
3
3
|
* the offline floor the DefaultsResolver resolves against: the NInfer
|
|
4
4
|
* measured configs (the `config-calculator.html` figures and the
|
|
5
|
-
* `qwen-ninfer` launcher, on a 24 GiB sm86 card)
|
|
5
|
+
* `qwen-ninfer` launcher, on a 24 GiB sm86 card), the Hyper-Qwen `.env`
|
|
6
6
|
* profiles (the single-user speed, long-context, and huge-context tiers from
|
|
7
|
-
* `.env.example`)
|
|
8
|
-
*
|
|
7
|
+
* `.env.example`), and the Basalt Blackwell long-context starting config
|
|
8
|
+
* (keyed to the wildcard class, since Basalt runs on any Blackwell card).
|
|
9
|
+
* Each preset is keyed by its exact (engine, model, hardware class) triple, so
|
|
10
|
+
* it is only trusted for the hardware it was sourced for.
|
|
9
11
|
*
|
|
10
12
|
* The `PRESET_SOURCES` list names the mod-search fetch path: the URL the
|
|
11
13
|
* bridge pulls and the pure extractor that turns the fetched page into a
|
|
@@ -32,4 +34,4 @@ export declare function extractJsonBlock(content: string): Config;
|
|
|
32
34
|
* block the docs embed, so a page without one degrades to an empty config.
|
|
33
35
|
*/
|
|
34
36
|
export declare const PRESET_SOURCES: readonly PresetSource[];
|
|
35
|
-
//# sourceMappingURL=presets.d.ts.map
|
|
37
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* Built-in preset data for the local-inference defaults layer. The presets are
|
|
3
3
|
* the offline floor the DefaultsResolver resolves against: the NInfer
|
|
4
4
|
* measured configs (the `config-calculator.html` figures and the
|
|
5
|
-
* `qwen-ninfer` launcher, on a 24 GiB sm86 card)
|
|
5
|
+
* `qwen-ninfer` launcher, on a 24 GiB sm86 card), the Hyper-Qwen `.env`
|
|
6
6
|
* profiles (the single-user speed, long-context, and huge-context tiers from
|
|
7
|
-
* `.env.example`)
|
|
8
|
-
*
|
|
7
|
+
* `.env.example`), and the Basalt Blackwell long-context starting config
|
|
8
|
+
* (keyed to the wildcard class, since Basalt runs on any Blackwell card).
|
|
9
|
+
* Each preset is keyed by its exact (engine, model, hardware class) triple, so
|
|
10
|
+
* it is only trusted for the hardware it was sourced for.
|
|
9
11
|
*
|
|
10
12
|
* The `PRESET_SOURCES` list names the mod-search fetch path: the URL the
|
|
11
13
|
* bridge pulls and the pure extractor that turns the fetched page into a
|
|
@@ -13,6 +15,8 @@
|
|
|
13
15
|
* fetch date.
|
|
14
16
|
* @module dsh-plugin-local-infer/providers/presets
|
|
15
17
|
*/
|
|
18
|
+
import { WILDCARD_HARDWARE_CLASS } from '../../core/lib/index.js';
|
|
19
|
+
import { BASALT_DEEPSEEK_MODEL_ID, BASALT_DEFAULT_MODEL_ID, } from "./engines/basalt/basalt.js";
|
|
16
20
|
/**
|
|
17
21
|
* The hardware class every built-in preset is sourced for: a 24 GiB Ampere
|
|
18
22
|
* (sm86) card, the card the NInfer constants were measured on and the card the
|
|
@@ -118,11 +122,55 @@ const HYPERQWEN_PRESETS = [
|
|
|
118
122
|
label: 'huge-context',
|
|
119
123
|
},
|
|
120
124
|
];
|
|
125
|
+
/**
|
|
126
|
+
* The Basalt built-in presets, keyed to the wildcard hardware class. Basalt
|
|
127
|
+
* is Blackwell-only, so each row is the sane long-context starting config
|
|
128
|
+
* the resolver offers for one artifact on any detected Blackwell card, and
|
|
129
|
+
* each model's own row is its default (the resolver keys presets by the
|
|
130
|
+
* exact engine/model/class triple). The Qwen3.8-Flash-Next NVFP4 row sets
|
|
131
|
+
* int8 KV (half the bytes of the fp16 default) and a 32k context; the
|
|
132
|
+
* DeepSeek-V4.1-Flash UD-IQ1_M row sets only the 32k context, because the
|
|
133
|
+
* pack has no KV-format choice. The engine's own spec defaults (the
|
|
134
|
+
* drafter window, the expert cache, the resident experts) stay at their
|
|
135
|
+
* surface defaults.
|
|
136
|
+
*/
|
|
137
|
+
const BASALT_PRESETS = [
|
|
138
|
+
{
|
|
139
|
+
engineId: 'basalt',
|
|
140
|
+
modelId: BASALT_DEFAULT_MODEL_ID,
|
|
141
|
+
hardwareClass: WILDCARD_HARDWARE_CLASS,
|
|
142
|
+
values: {
|
|
143
|
+
kv: 'int8',
|
|
144
|
+
maxContext: 32768,
|
|
145
|
+
},
|
|
146
|
+
source: 'Basalt built-in (Blackwell long-context starting config)',
|
|
147
|
+
label: 'long-context',
|
|
148
|
+
isDefault: true,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
engineId: 'basalt',
|
|
152
|
+
modelId: BASALT_DEEPSEEK_MODEL_ID,
|
|
153
|
+
hardwareClass: WILDCARD_HARDWARE_CLASS,
|
|
154
|
+
// No kv: the DeepSeek pack has no KV-format choice, and a flag the
|
|
155
|
+
// model lacks stops the start from a model entry (the surface keeps kv
|
|
156
|
+
// in the shared engine block, where it is skipped for this model).
|
|
157
|
+
values: {
|
|
158
|
+
maxContext: 32768,
|
|
159
|
+
},
|
|
160
|
+
source: 'Basalt built-in (Blackwell long-context starting config)',
|
|
161
|
+
label: 'long-context',
|
|
162
|
+
isDefault: true,
|
|
163
|
+
},
|
|
164
|
+
];
|
|
121
165
|
/**
|
|
122
166
|
* BUILTIN_PRESETS is the combined preset list the providers register with the
|
|
123
167
|
* seam. Adding a preset is a data edit here, never a resolver change.
|
|
124
168
|
*/
|
|
125
|
-
export const BUILTIN_PRESETS = [
|
|
169
|
+
export const BUILTIN_PRESETS = [
|
|
170
|
+
...NINFER_PRESETS,
|
|
171
|
+
...HYPERQWEN_PRESETS,
|
|
172
|
+
...BASALT_PRESETS,
|
|
173
|
+
];
|
|
126
174
|
/**
|
|
127
175
|
* extractJsonBlock reads the first fenced ```json block out of a fetched page
|
|
128
176
|
* and parses it as the preset values. A page with no json block (or a broken
|
|
@@ -158,4 +206,4 @@ export const PRESET_SOURCES = [
|
|
|
158
206
|
extract: extractJsonBlock,
|
|
159
207
|
},
|
|
160
208
|
];
|
|
161
|
-
//# sourceMappingURL=presets.js.map
|
|
209
|
+
//# sourceMappingURL=presets.js.map
|