dsh-plugin-local-infer 0.1.2 → 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 +32 -6
- package/cordis.patch.yml +7 -0
- package/docs/zh/README.md +24 -4
- package/dsh/client.js +4200 -4049
- package/package.json +33 -11
- package/packages/core/lib/adapter.d.ts +177 -11
- 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 +48 -20
- 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 +25 -14
- package/packages/core/lib/registrar.js +30 -10
- 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 +95 -15
- package/packages/providers/lib/acquire.js +239 -40
- package/packages/providers/lib/adapters.d.ts +155 -221
- package/packages/providers/lib/adapters.js +589 -935
- package/packages/providers/lib/debug.d.ts +1 -1
- package/packages/providers/lib/debug.js +1 -1
- package/packages/providers/lib/deps.d.ts +31 -212
- package/packages/providers/lib/deps.js +71 -205
- 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/{hyperqwen.d.ts → engines/hyperqwen/hyperqwen.d.ts} +2 -2
- package/packages/providers/lib/{hyperqwen.js → engines/hyperqwen/hyperqwen.js} +14 -2
- package/packages/providers/lib/engines/hyperqwen/hyperqwenAdapter.d.ts +38 -0
- package/packages/providers/lib/engines/hyperqwen/hyperqwenAdapter.js +115 -0
- 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/{infernix.d.ts → engines/infernix/infernix.d.ts} +7 -4
- package/packages/providers/lib/{infernix.js → engines/infernix/infernix.js} +53 -8
- package/packages/providers/lib/engines/infernix/infernixAdapter.d.ts +52 -0
- package/packages/providers/lib/engines/infernix/infernixAdapter.js +235 -0
- 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/{llamacpp.d.ts → engines/llamacpp/llamacpp.d.ts} +2 -2
- package/packages/providers/lib/{llamacpp.js → engines/llamacpp/llamacpp.js} +12 -2
- package/packages/providers/lib/engines/llamacpp/llamacppAdapter.d.ts +50 -0
- package/packages/providers/lib/engines/llamacpp/llamacppAdapter.js +274 -0
- 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/{ninfer.d.ts → engines/ninfer/ninfer.d.ts} +2 -2
- package/packages/providers/lib/{ninfer.js → engines/ninfer/ninfer.js} +25 -3
- package/packages/providers/lib/engines/ninfer/ninferAdapter.d.ts +81 -0
- package/packages/providers/lib/engines/ninfer/ninferAdapter.js +392 -0
- 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/strata.js +264 -0
- package/packages/providers/lib/engines/strata/strataAdapter.d.ts +97 -0
- package/packages/providers/lib/engines/strata/strataAdapter.js +463 -0
- 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 +8 -5
- package/packages/providers/lib/engines.js +22 -11
- 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 -24
- package/packages/providers/lib/index.js +46 -24
- package/packages/providers/lib/model-defaults.d.ts +10 -5
- package/packages/providers/lib/model-defaults.js +47 -5
- package/packages/providers/lib/platform.d.ts +8 -5
- package/packages/providers/lib/platform.js +27 -7
- 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 +187 -23
- package/packages/service/lib/index.js +667 -90
- 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 +166 -8
- 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 +89 -0
- package/packages/ui/lib/config.js +251 -0
- package/packages/ui/lib/deps.d.ts +4 -4
- 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 +216 -0
- package/packages/ui/lib/ops/engine.js +697 -0
- 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 +42 -0
- package/packages/ui/lib/ops/hf.js +150 -0
- package/packages/ui/lib/ops/logs.d.ts +78 -0
- package/packages/ui/lib/ops/logs.js +119 -0
- package/packages/ui/lib/ops/model.d.ts +71 -0
- package/packages/ui/lib/ops/model.js +123 -0
- package/packages/ui/lib/request.d.ts +106 -0
- package/packages/ui/lib/request.js +80 -0
- package/packages/ui/lib/route.d.ts +106 -422
- package/packages/ui/lib/route.js +136 -1845
- package/packages/ui/lib/routes/chat-template.d.ts +1 -0
- package/packages/ui/lib/routes/chat-template.js +1 -0
- package/packages/ui/lib/routes/deps.d.ts +1 -0
- package/packages/ui/lib/routes/deps.js +1 -0
- package/packages/ui/lib/routes/download.d.ts +1 -0
- package/packages/ui/lib/routes/download.js +1 -0
- package/packages/ui/lib/routes/get.d.ts +1 -0
- package/packages/ui/lib/routes/get.js +106 -0
- package/packages/ui/lib/routes/install.d.ts +16 -0
- package/packages/ui/lib/routes/install.js +36 -0
- package/packages/ui/lib/routes/launch.d.ts +24 -0
- package/packages/ui/lib/routes/launch.js +74 -0
- 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 +15 -0
- package/packages/ui/lib/routes/provider-delete.js +37 -0
- package/packages/ui/lib/routes/register.d.ts +16 -0
- package/packages/ui/lib/routes/register.js +28 -0
- package/packages/ui/lib/routes/save.d.ts +18 -0
- package/packages/ui/lib/routes/save.js +159 -0
- package/packages/ui/lib/routes/stop.d.ts +19 -0
- package/packages/ui/lib/routes/stop.js +32 -0
- 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 +15 -0
- package/packages/ui/lib/routes/summary.js +26 -0
- package/packages/ui/lib/routes/unregister.d.ts +14 -0
- package/packages/ui/lib/routes/unregister.js +26 -0
- package/packages/ui/lib/viewmodels/deps.d.ts +1 -0
- package/packages/ui/lib/viewmodels/deps.js +1 -0
- package/packages/ui/lib/viewmodels/depsHelpers.d.ts +1 -0
- package/packages/ui/lib/viewmodels/depsHelpers.js +94 -0
- package/packages/ui/lib/viewmodels/summary.d.ts +145 -0
- package/packages/ui/lib/viewmodels/summary.js +245 -0
- package/packages/ui/lib/viewmodels/summaryHelpers.d.ts +30 -0
- package/packages/ui/lib/viewmodels/summaryHelpers.js +42 -0
- 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/strata.d.ts +0 -15
- package/packages/providers/lib/strata.js +0 -14
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* artifacts NInfer serves, ported
|
|
4
|
-
* NInfer fork: every byte figure is
|
|
5
|
-
* CUDA 12.8) against the engine's own
|
|
6
|
-
* parameter counts. The provenance note on
|
|
7
|
-
* artifact the figures apply to, because the
|
|
8
|
-
* weight profiles with different resident sizes.
|
|
2
|
+
* VramModel data for the engines the card prices. The NInfer models are the
|
|
3
|
+
* measured memory constants for the two Qwen artifacts NInfer serves, ported
|
|
4
|
+
* from `docs/config-calculator.html` in the NInfer fork: every byte figure is
|
|
5
|
+
* measured on an RTX 3090 (24 GiB, sm_86, CUDA 12.8) against the engine's own
|
|
6
|
+
* capacity report, not estimated from parameter counts. The provenance note on
|
|
7
|
+
* each model names the exact weight artifact the figures apply to, because the
|
|
8
|
+
* runtime also recognizes other weight profiles with different resident sizes.
|
|
9
|
+
* The Basalt models are the estimated sets for the engine's `.basalt`
|
|
10
|
+
* artifacts: the measured figures are not yet available, so their terms are
|
|
11
|
+
* estimated from the model size and flagged `source: 'estimated'`.
|
|
9
12
|
* @module dsh-plugin-local-infer/providers/vram
|
|
10
13
|
*/
|
|
11
14
|
import type { VramModel } from 'dsh-plugin-local-infer/core';
|
|
@@ -21,4 +24,27 @@ export declare const NINFER_VRAM_MODELS: readonly VramModel[];
|
|
|
21
24
|
* Resolves one NInfer VramModel by its registry id, e.g. `qwen3-27b`.
|
|
22
25
|
*/
|
|
23
26
|
export declare function ninferVramModel(modelId: string): VramModel | undefined;
|
|
24
|
-
|
|
27
|
+
/**
|
|
28
|
+
* The Basalt estimated VramModels, one per `.basalt` artifact the engine
|
|
29
|
+
* serves.
|
|
30
|
+
*
|
|
31
|
+
* The first is the Qwen3.8-Flash-Next NVFP4 artifact
|
|
32
|
+
* (`Qwen3.8-FN-NVFP4-DQ6_K.basalt`). The measured figures are not yet
|
|
33
|
+
* available, so every term is estimated from the model size, not measured
|
|
34
|
+
* against the engine: the weights price a ~48B-total-parameter MoE in NVFP4
|
|
35
|
+
* (0.5 bytes per parameter, ~24 GiB), and the KV per-token terms price a
|
|
36
|
+
* 48-layer, 8-KV-head, 128-head-dim GQA layout across the four KV formats
|
|
37
|
+
* Basalt serves (fp16, int8, q4_0, k8v4). The `source: 'estimated'` flag is
|
|
38
|
+
* what keeps the meter from reading these as authoritative.
|
|
39
|
+
*
|
|
40
|
+
* Basalt's `spec` setting is a token-window count (a number), not a named
|
|
41
|
+
* speculation backend, so neither model carries a `speculation` table or a
|
|
42
|
+
* `specKey`: the estimator prices them from the base terms.
|
|
43
|
+
*/
|
|
44
|
+
export declare const BASALT_VRAM_MODELS: readonly VramModel[];
|
|
45
|
+
/**
|
|
46
|
+
* Resolves a Basalt VramModel by its registry id, `qwen38-flash-next` or
|
|
47
|
+
* `deepseek-v41-flash`.
|
|
48
|
+
*/
|
|
49
|
+
export declare function basaltVramModel(modelId: string): VramModel | undefined;
|
|
50
|
+
//# sourceMappingURL=vram.d.ts.map
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* artifacts NInfer serves, ported
|
|
4
|
-
* NInfer fork: every byte figure is
|
|
5
|
-
* CUDA 12.8) against the engine's own
|
|
6
|
-
* parameter counts. The provenance note on
|
|
7
|
-
* artifact the figures apply to, because the
|
|
8
|
-
* weight profiles with different resident sizes.
|
|
2
|
+
* VramModel data for the engines the card prices. The NInfer models are the
|
|
3
|
+
* measured memory constants for the two Qwen artifacts NInfer serves, ported
|
|
4
|
+
* from `docs/config-calculator.html` in the NInfer fork: every byte figure is
|
|
5
|
+
* measured on an RTX 3090 (24 GiB, sm_86, CUDA 12.8) against the engine's own
|
|
6
|
+
* capacity report, not estimated from parameter counts. The provenance note on
|
|
7
|
+
* each model names the exact weight artifact the figures apply to, because the
|
|
8
|
+
* runtime also recognizes other weight profiles with different resident sizes.
|
|
9
|
+
* The Basalt models are the estimated sets for the engine's `.basalt`
|
|
10
|
+
* artifacts: the measured figures are not yet available, so their terms are
|
|
11
|
+
* estimated from the model size and flagged `source: 'estimated'`.
|
|
9
12
|
* @module dsh-plugin-local-infer/providers/vram
|
|
10
13
|
*/
|
|
14
|
+
import { BASALT_DEEPSEEK_MODEL_ID, BASALT_DEFAULT_MODEL_ID, } from "./engines/basalt/basalt.js";
|
|
11
15
|
/**
|
|
12
16
|
* DFlash2's CUDA-graph allowance is a step in context, measured at 8,192 /
|
|
13
17
|
* 16,384 / 32,768: 288 MiB up to 8,192 tokens and 384 MiB beyond. Only three
|
|
@@ -247,4 +251,73 @@ export const NINFER_VRAM_MODELS = [
|
|
|
247
251
|
export function ninferVramModel(modelId) {
|
|
248
252
|
return NINFER_VRAM_MODELS.find(model => model.id === modelId);
|
|
249
253
|
}
|
|
250
|
-
|
|
254
|
+
/**
|
|
255
|
+
* The Basalt estimated VramModels, one per `.basalt` artifact the engine
|
|
256
|
+
* serves.
|
|
257
|
+
*
|
|
258
|
+
* The first is the Qwen3.8-Flash-Next NVFP4 artifact
|
|
259
|
+
* (`Qwen3.8-FN-NVFP4-DQ6_K.basalt`). The measured figures are not yet
|
|
260
|
+
* available, so every term is estimated from the model size, not measured
|
|
261
|
+
* against the engine: the weights price a ~48B-total-parameter MoE in NVFP4
|
|
262
|
+
* (0.5 bytes per parameter, ~24 GiB), and the KV per-token terms price a
|
|
263
|
+
* 48-layer, 8-KV-head, 128-head-dim GQA layout across the four KV formats
|
|
264
|
+
* Basalt serves (fp16, int8, q4_0, k8v4). The `source: 'estimated'` flag is
|
|
265
|
+
* what keeps the meter from reading these as authoritative.
|
|
266
|
+
*
|
|
267
|
+
* Basalt's `spec` setting is a token-window count (a number), not a named
|
|
268
|
+
* speculation backend, so neither model carries a `speculation` table or a
|
|
269
|
+
* `specKey`: the estimator prices them from the base terms.
|
|
270
|
+
*/
|
|
271
|
+
export const BASALT_VRAM_MODELS = [
|
|
272
|
+
{
|
|
273
|
+
id: BASALT_DEFAULT_MODEL_ID,
|
|
274
|
+
source: 'estimated',
|
|
275
|
+
weightsBytes: 24000000000,
|
|
276
|
+
workspaceBytes: 536870912,
|
|
277
|
+
nativeMaxContext: 262144,
|
|
278
|
+
seqFixedBytes: 10485760,
|
|
279
|
+
seqPerToken: 0.0625,
|
|
280
|
+
kvBytesPerToken: {
|
|
281
|
+
fp16: 196608,
|
|
282
|
+
int8: 98304,
|
|
283
|
+
q4_0: 49152,
|
|
284
|
+
k8v4: 73728,
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
// The DeepSeek-V4.1-Flash UD-IQ1_M pack
|
|
288
|
+
// (`DeepSeek-V4.1-Flash-1017-UD-IQ1_M.basalt`). Every term is estimated
|
|
289
|
+
// from the public pack facts, like the Qwen row. The weights: the native
|
|
290
|
+
// checkpoint is ~510 GB of BF16 dense plus MXFP4 expert weights, a
|
|
291
|
+
// ~6.8 bits-per-weight average, which prices ~600B weights; the pack
|
|
292
|
+
// requantizes them to UD-IQ1_M's ~1.7 bits per weight, ~1.3e11 bytes
|
|
293
|
+
// (~121 GiB) resident. The checkpoint's other ~393 GB of engram lookup
|
|
294
|
+
// tables stream from RAM and file, so they add no resident weights and no
|
|
295
|
+
// term prices them. The KV: the pack has no KV-format choice, so the
|
|
296
|
+
// engine's single format is priced under the `fp16` key the kv surface
|
|
297
|
+
// defaults to; a DeepSeek latent-KV (MLA-family) layout carries ~576
|
|
298
|
+
// fp16 elements per layer (~1152 bytes), and ~46080 bytes per token is
|
|
299
|
+
// that order at ~40 attention layers, the compact pool that makes the
|
|
300
|
+
// pack's 1,048,576-token cap a ~48 GB KV pool at all. The workspace,
|
|
301
|
+
// fixed-session, and per-token activation terms ride at the Blackwell
|
|
302
|
+
// order for a model this size, a few times the Qwen estimates.
|
|
303
|
+
{
|
|
304
|
+
id: BASALT_DEEPSEEK_MODEL_ID,
|
|
305
|
+
source: 'estimated',
|
|
306
|
+
weightsBytes: 130000000000,
|
|
307
|
+
workspaceBytes: 1073741824,
|
|
308
|
+
nativeMaxContext: 1048576,
|
|
309
|
+
seqFixedBytes: 33554432,
|
|
310
|
+
seqPerToken: 0.125,
|
|
311
|
+
kvBytesPerToken: {
|
|
312
|
+
fp16: 46080,
|
|
313
|
+
},
|
|
314
|
+
},
|
|
315
|
+
];
|
|
316
|
+
/**
|
|
317
|
+
* Resolves a Basalt VramModel by its registry id, `qwen38-flash-next` or
|
|
318
|
+
* `deepseek-v41-flash`.
|
|
319
|
+
*/
|
|
320
|
+
export function basaltVramModel(modelId) {
|
|
321
|
+
return BASALT_VRAM_MODELS.find(model => model.id === modelId);
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=vram.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-plugin-local-infer-providers",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Concrete providers for the dsh local-inference plugin: the ninfer, hyperqwen, llamacpp, and strata engine adapters, the NInfer VramModel, the built-in presets, the built-in guidelines, and the per-OS SystemDep install command data. Each registers itself with ctx.localInfer.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh",
|
|
@@ -38,6 +38,6 @@
|
|
|
38
38
|
"@deepseek-ai/cordis": ">=4.0.1"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
41
|
+
"@deepseek-ai/cordis": "^4.0.6-alpha.2"
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -18,9 +18,12 @@
|
|
|
18
18
|
* @module dsh-plugin-local-infer/service
|
|
19
19
|
*/
|
|
20
20
|
import { Context, Service } from '@deepseek-ai/cordis';
|
|
21
|
-
import type { Config, DefaultModel, ModelDirectoryEntry, EngineAdapter, EngineDepPlan, EnginePlatformConfig, GpuUsageProbe, Guideline, GuidelineResult, HardwareProfile, HardwareProbes, InstallResult, LaunchPlan, ModelRow, Preset, PresetSource, ProcessLine, ProviderLaunchRecord, ProviderRef, ProviderStatus, ReLinkOutcome, RegisterResult, ReserveResolution, ResolvedDefaults, SystemDep, VramModel } from 'dsh-plugin-local-infer/core';
|
|
22
|
-
import type { DetectOsReserveOptions, DownloadModelOptions, DownloadResult, EngineDeathEvent, EstimateResult, FetchPresetOptions, FetchPresetResult, HfCliOptions, LaunchOptions, LaunchResult, LocalInferService, ProviderStatusOptions, RegisterModelOptions } from './types.ts';
|
|
23
|
-
|
|
21
|
+
import type { BuildMode, CommandLogger, CommandOutcome, CommandRunner, Config, DefaultModel, ModelCacheEntry, ModelDirectoryEntry, EngineAdapter, EngineDepPlan, EnginePlatformConfig, GpuUsageProbe, Guideline, GuidelineResult, HardwareProfile, HardwareProbes, InstallResult, LaunchPlan, ModelRow, Preset, PresetSource, ProcessLine, ProviderLaunchRecord, ProviderRef, ProviderStatus, ReLinkOutcome, RegisterResult, ReserveResolution, ResolvedDefaults, SudoGuard, SystemDep, VramModel } from 'dsh-plugin-local-infer/core';
|
|
22
|
+
import type { DetectOsReserveOptions, DownloadModelOptions, DownloadResult, EngineDeathEvent, EstimateResult, FetchPresetOptions, FetchPresetResult, HfCliOptions, LaunchOptions, LaunchResult, LocalInferService, ProviderStatusOptions, RegisterModelOptions, RunInstallOptions, RunLogListener, RunLogSnapshot } from './types.ts';
|
|
23
|
+
import { RunLogStore, runLogKey } from './run-logs.ts';
|
|
24
|
+
import { findLaunchTarget } from './launch-target.ts';
|
|
25
|
+
export { RunLogStore, runLogKey, findLaunchTarget };
|
|
26
|
+
export type { DetectOsReserveOptions, DownloadModelOptions, DownloadResult, EngineDeathEvent, EstimateResult, FetchPresetOptions, FetchPresetResult, HfCliOptions, LaunchOptions, LaunchResult, LaunchTargetEntry, LocalInferService, ProviderStatusOptions, RegisterModelOptions, RunInstallOptions, RunLogAppendEvent, RunLogEndEvent, RunLogEvent, RunLogListener, RunLogResetEvent, RunLogSnapshot, SettingsDescribeResult, SettingsForms, SettingsNamespaceDescriptor, } from './types.ts';
|
|
24
27
|
declare module '@deepseek-ai/cordis' {
|
|
25
28
|
interface Context {
|
|
26
29
|
localInfer: LocalInferService;
|
|
@@ -53,7 +56,11 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
53
56
|
private readonly launchedPorts;
|
|
54
57
|
private readonly engineWatchers;
|
|
55
58
|
private readonly handledPids;
|
|
59
|
+
private readonly launchingEngines;
|
|
60
|
+
private readonly stoppingEngines;
|
|
56
61
|
private deathObserver;
|
|
62
|
+
private readonly sudoObservers;
|
|
63
|
+
private readonly runLogs;
|
|
57
64
|
constructor(ctx: Context);
|
|
58
65
|
registerEngine(adapter: EngineAdapter): () => void;
|
|
59
66
|
registerPreset(preset: Preset): () => void;
|
|
@@ -139,14 +146,16 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
139
146
|
*/
|
|
140
147
|
providerStatuses(providers: readonly ProviderRef[], options?: ProviderStatusOptions): Promise<Record<string, ProviderStatus>>;
|
|
141
148
|
/**
|
|
142
|
-
* unsureBannerKillCommands returns the
|
|
149
|
+
* unsureBannerKillCommands returns the stop commands for the engine
|
|
143
150
|
* processes the detector saw holding VRAM, for the "unsure" banner the card
|
|
144
151
|
* shows when no provider is confirmed running but at least one reads as
|
|
145
152
|
* unsure. A process is included when its command line carries an engine
|
|
146
153
|
* binary marker and the card's VRAM usage is above 30% of the total (the
|
|
147
154
|
* threshold below which a foreign engine is not considered to be holding
|
|
148
|
-
* the card). The
|
|
149
|
-
*
|
|
155
|
+
* the card). The command form switches on the host OS: one
|
|
156
|
+
* `Stop-Process -Id <pid>` per matching process on Windows (the PowerShell
|
|
157
|
+
* cmdlet the banner's text area runs), one `kill <pid>` on Linux and macOS,
|
|
158
|
+
* in pid order. An empty list means no matching process was seen, so the
|
|
150
159
|
* banner's text area renders empty.
|
|
151
160
|
*/
|
|
152
161
|
unsureBannerKillCommands(options?: {
|
|
@@ -166,21 +175,32 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
166
175
|
* deps resolves the host deps an engine's deploy step needs for a build
|
|
167
176
|
* mode. A registered adapter that declares systemDeps wins; the provider-
|
|
168
177
|
* registered plan for the engine id is the fallback, and an engine with
|
|
169
|
-
* neither plans an empty list (nothing to install, the gate passes).
|
|
178
|
+
* neither plans an empty list (nothing to install, the gate passes). The
|
|
179
|
+
* local list is per-OS: a Windows host reads the plan's windows entry (the
|
|
180
|
+
* winget toolchain the providers sourced from the Windows profile), every
|
|
181
|
+
* other host reads the linux entry, so the System dependencies section
|
|
182
|
+
* shows the right toolchain for the host.
|
|
170
183
|
*/
|
|
171
|
-
deps(engineId: string, buildMode:
|
|
184
|
+
deps(engineId: string, buildMode: BuildMode, hw: HardwareProfile): Promise<readonly SystemDep[]>;
|
|
172
185
|
/**
|
|
173
186
|
* installString renders the copy/paste block for the resolved dep plan,
|
|
174
187
|
* keyed to the detected package manager, with the by-hand note for a dep
|
|
175
188
|
* the manager has no commands for.
|
|
176
189
|
*/
|
|
177
|
-
installString(engineId: string, buildMode:
|
|
190
|
+
installString(engineId: string, buildMode: BuildMode, hw: HardwareProfile): Promise<string>;
|
|
178
191
|
/**
|
|
179
192
|
* runInstall is the Play/Run path: it runs the resolved dep plan's commands
|
|
180
|
-
* through the shell runner and re-probes each dep. The runner
|
|
181
|
-
* per-command exit, so a failure names the command that broke
|
|
182
|
-
|
|
183
|
-
|
|
193
|
+
* through the guarded shell runner and re-probes each dep. The runner
|
|
194
|
+
* captures the per-command exit, so a failure names the command that broke,
|
|
195
|
+
* and a declared-sudo command whose probe finds no cached credentials
|
|
196
|
+
* announces the CLI prompt through the sudo observer and fails at the
|
|
197
|
+
* sudo deadline. options.onLog is the install run's log sink: the command
|
|
198
|
+
* line reaches it as a `$ <command>` line before the guarded runner spawns
|
|
199
|
+
* the child (and before the sudo guard's probe announces), so the run text
|
|
200
|
+
* carries the command ahead of the per-dep results. options.runner injects
|
|
201
|
+
* the command runner so a test reads the command lines without a real shell.
|
|
202
|
+
*/
|
|
203
|
+
runInstall(engineId: string, buildMode: BuildMode, hw: HardwareProfile, options?: RunInstallOptions): Promise<InstallResult>;
|
|
184
204
|
/**
|
|
185
205
|
* launch is the lifecycle entry point: it resolves the adapter that rendered
|
|
186
206
|
* the plan (by the plan's engineId), runs the adapter's deploy step (build
|
|
@@ -221,6 +241,60 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
221
241
|
* clears it, which the route's effect does on dispose.
|
|
222
242
|
*/
|
|
223
243
|
setEngineDeathObserver(observer: ((event: EngineDeathEvent) => void) | undefined): void;
|
|
244
|
+
/**
|
|
245
|
+
* registerSudoObserver reserves `key`'s slot (the runLogKey rule every run
|
|
246
|
+
* path shares) for one run's hook for commands the sudo guard found
|
|
247
|
+
* waiting for a password on the launching CLI: the observer lands core's
|
|
248
|
+
* SUDO_CLI_NOTE line while the command waits. Registering a key that is
|
|
249
|
+
* taken replaces the old hook (a re-launch under the same key owns the
|
|
250
|
+
* note), and the disposer removes only its own hook, so a stale run's
|
|
251
|
+
* settle never clears a live one's routing. The run calls the disposer in
|
|
252
|
+
* a finally.
|
|
253
|
+
*/
|
|
254
|
+
registerSudoObserver(key: string, observer: (command: string) => void): () => void;
|
|
255
|
+
/**
|
|
256
|
+
* notifySudoNeeded announces one guarded command to every registered sudo
|
|
257
|
+
* observer (the shared CLI password wait can block any run, and the
|
|
258
|
+
* announce seam does not name the run that triggered it). A throwing
|
|
259
|
+
* observer is isolated per announce: the note is a log courtesy, and a
|
|
260
|
+
* broken route must not fail the install that is already racing the sudo
|
|
261
|
+
* deadline. Published on the service surface so a command runner outside
|
|
262
|
+
* this package (the providers' lifecycle host) reports through the same
|
|
263
|
+
* seam.
|
|
264
|
+
*/
|
|
265
|
+
notifySudoNeeded(command: string): void;
|
|
266
|
+
/**
|
|
267
|
+
* beginRun starts one provider process's live run-log run under the key
|
|
268
|
+
* runLogKey names: the buffer resets to the seed separator line, the
|
|
269
|
+
* running flag goes true, the seq restarts, and subscribers get the reset
|
|
270
|
+
* notice a mid-run attached reader needs to replace its display.
|
|
271
|
+
*/
|
|
272
|
+
beginRun(key: string, seed: string): void;
|
|
273
|
+
/**
|
|
274
|
+
* appendRunLog appends one chunk to the key's live log (tail-capped to
|
|
275
|
+
* LOG_TAIL_BYTES) and notifies subscribers. Appending with no open run
|
|
276
|
+
* opens one lazily without a seed, so a late note (an engine-death line)
|
|
277
|
+
* still lands.
|
|
278
|
+
*/
|
|
279
|
+
appendRunLog(key: string, text: string): void;
|
|
280
|
+
/**
|
|
281
|
+
* readRunLog answers the key's catch-up snapshot: the seq reached, the
|
|
282
|
+
* bounded tail text, and the running flag, the data a mid-run page
|
|
283
|
+
* refresh or a late-opened Logs pane renders from.
|
|
284
|
+
*/
|
|
285
|
+
readRunLog(key: string): RunLogSnapshot;
|
|
286
|
+
/**
|
|
287
|
+
* subscribeRunLog registers a listener for the key's run-log events and
|
|
288
|
+
* returns the disposer (the route calls it when its stream closes).
|
|
289
|
+
* Listeners are independent per connection; none can block a writer.
|
|
290
|
+
*/
|
|
291
|
+
subscribeRunLog(key: string, listener: RunLogListener): () => void;
|
|
292
|
+
/**
|
|
293
|
+
* endRun settles the key's run: the running flag clears and subscribers
|
|
294
|
+
* get the end event. The text stays readable until the next beginRun, so
|
|
295
|
+
* a late Logs pane still shows the finished run.
|
|
296
|
+
*/
|
|
297
|
+
endRun(key: string): void;
|
|
224
298
|
/**
|
|
225
299
|
* watchLaunchedHandle ties a launched child's one-shot exit to the live
|
|
226
300
|
* state: the host's close/error event (a crash, a pkill, or the stop kill)
|
|
@@ -238,6 +312,13 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
238
312
|
* record dead.
|
|
239
313
|
*/
|
|
240
314
|
private watchAdoptedEngine;
|
|
315
|
+
/**
|
|
316
|
+
* engineKey is the in-flight state machine's key for one engine: the engine
|
|
317
|
+
* id plus its port when the plan names one, so two configs of one engine on
|
|
318
|
+
* different ports are distinct engines. A plan with no port keys on the
|
|
319
|
+
* engine id alone.
|
|
320
|
+
*/
|
|
321
|
+
private engineKey;
|
|
241
322
|
/**
|
|
242
323
|
* stopEngineWatcher cancels one port's adopted-process poll, if it has one.
|
|
243
324
|
*/
|
|
@@ -256,9 +337,12 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
256
337
|
/**
|
|
257
338
|
* stop signals the engine a launch started: it resolves the adapter by the
|
|
258
339
|
* plan's engineId and runs the adapter's stop step (kill the tracked process,
|
|
259
|
-
* stop the named container, or compose down).
|
|
340
|
+
* stop the named container, or compose down). The optional `log` is the
|
|
341
|
+
* stop run's log sink: the adapter writes the `$ <command>` line of every
|
|
342
|
+
* command it runs (compose down, docker stop, a pid signal) through it
|
|
343
|
+
* before the child runs, so the stop's live run reads the command first.
|
|
260
344
|
*/
|
|
261
|
-
stop(plan: LaunchPlan): Promise<void>;
|
|
345
|
+
stop(plan: LaunchPlan, log?: CommandLogger): Promise<void>;
|
|
262
346
|
/**
|
|
263
347
|
* registerModel publishes a confirmed-working engine as a DSH model. It
|
|
264
348
|
* builds the entry from the plan (the provider id, the base URL, and the
|
|
@@ -299,12 +383,21 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
299
383
|
*/
|
|
300
384
|
fetchPreset(source: PresetSource, options?: FetchPresetOptions): Promise<FetchPresetResult>;
|
|
301
385
|
/**
|
|
302
|
-
* defaultModelDirectory is the plugin's model download directory:
|
|
303
|
-
*
|
|
304
|
-
*
|
|
305
|
-
*
|
|
386
|
+
* defaultModelDirectory is the plugin's model download directory: the
|
|
387
|
+
* Hugging Face hub cache the hf CLI and huggingface_hub share (HF_HUB_CACHE
|
|
388
|
+
* when set, then $HF_HOME/hub, then ~/.cache/huggingface/hub), so a model
|
|
389
|
+
* the plugin pulls lands where every other HF tooling looks. The directory
|
|
390
|
+
* is created when absent, so the field's default is always a real path the
|
|
391
|
+
* deploy step can target.
|
|
306
392
|
*/
|
|
307
393
|
defaultModelDirectory(): string;
|
|
394
|
+
/**
|
|
395
|
+
* defaultDatasetDirectory is the plugin's dataset download directory: the
|
|
396
|
+
* Hugging Face datasets cache (HF_DATASETS_CACHE when set, then
|
|
397
|
+
* $HF_HOME/datasets, then ~/.cache/huggingface/datasets). Created when
|
|
398
|
+
* absent, for the same reason the model directory is.
|
|
399
|
+
*/
|
|
400
|
+
defaultDatasetDirectory(): string;
|
|
308
401
|
/**
|
|
309
402
|
* hfCliAvailable probes for the hf CLI the model download runs: an
|
|
310
403
|
* injected cliPath wins, then the `hf` binary on PATH. None found reads as
|
|
@@ -315,7 +408,10 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
315
408
|
* downloadModel runs the hf CLI download for one default model into the
|
|
316
409
|
* model directory: it creates the target directory when absent (the
|
|
317
410
|
* recursive flag covers the parents too), renders the command through the
|
|
318
|
-
* core builder (the single source the card shows),
|
|
411
|
+
* core builder (the single source the card shows), logs the rendered
|
|
412
|
+
* command's `$ <command>` line through options.onLog before the runner
|
|
413
|
+
* spawns the child (so every caller's run reads command first, output
|
|
414
|
+
* after, and the line is written once, here), and runs it through the
|
|
319
415
|
* injected runner when one is given, so a test captures the command without
|
|
320
416
|
* a live hf. A failure keeps the runner's detail, so the card names the
|
|
321
417
|
* broken step.
|
|
@@ -325,8 +421,9 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
325
421
|
* downloadChatTemplate pulls the chat template file for one HF repo
|
|
326
422
|
* reference into the model directory, so a selected template (the Froggeric
|
|
327
423
|
* set, a custom repo) works out of the box. It shares the model download's
|
|
328
|
-
* recursive directory creation, runner,
|
|
329
|
-
* small file, but the hf CLI's cold start and auth
|
|
424
|
+
* recursive directory creation, runner, log line before the spawn, and long
|
|
425
|
+
* timeout: a template is a small file, but the hf CLI's cold start and auth
|
|
426
|
+
* are the same cost.
|
|
330
427
|
*/
|
|
331
428
|
downloadChatTemplate(repo: string, directory: string, options?: DownloadModelOptions): Promise<DownloadResult>;
|
|
332
429
|
/**
|
|
@@ -347,6 +444,22 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
347
444
|
* route renders as "no local models".
|
|
348
445
|
*/
|
|
349
446
|
listModelDirectory(directory: string): ModelDirectoryEntry[];
|
|
447
|
+
/**
|
|
448
|
+
* listModelCache lists the hub cache's `models--*` directories, the data the
|
|
449
|
+
* per-engine model dropdown's cache scan draws from when the model directory
|
|
450
|
+
* is the plugin default (the hub cache). Each entry carries the repo id the
|
|
451
|
+
* directory names (the `{namespace}/{name}` decoded from the
|
|
452
|
+
* `models--{ns}--{name}` form) and the artifact file names its snapshots
|
|
453
|
+
* hold (the union across every commit). A missing or unreadable cache reads
|
|
454
|
+
* as an empty list, which the route renders as "no cached models".
|
|
455
|
+
*/
|
|
456
|
+
listModelCache(): ModelCacheEntry[];
|
|
457
|
+
/**
|
|
458
|
+
* snapshotFiles unions the file names across every commit directory under a
|
|
459
|
+
* `models--*` dir's `snapshots/`, the artifact set the per-engine cache scan
|
|
460
|
+
* filters. A missing snapshots folder reads as an empty set.
|
|
461
|
+
*/
|
|
462
|
+
private snapshotFiles;
|
|
350
463
|
/**
|
|
351
464
|
* specsForEngine reads the parameter surface of the registered adapter for
|
|
352
465
|
* an engine id, so the defaults resolver floors the result on that engine's
|
|
@@ -436,6 +549,57 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
436
549
|
*/
|
|
437
550
|
private collectSpecs;
|
|
438
551
|
}
|
|
552
|
+
/**
|
|
553
|
+
* sudoProbe answers whether sudo already holds cached (or NOPASSWD)
|
|
554
|
+
* credentials: it runs SUDO_PROBE_COMMAND non-interactively through the
|
|
555
|
+
* probe timeout and reads a clean exit as "no prompt is coming". A refused
|
|
556
|
+
* -n, a missing sudo, and a hung probe all read as "a prompt is coming",
|
|
557
|
+
* the safe side: the run announces and caps instead of dead-locking on a
|
|
558
|
+
* TTY the card user cannot see.
|
|
559
|
+
*/
|
|
560
|
+
export declare function sudoProbe(): Promise<boolean>;
|
|
561
|
+
/**
|
|
562
|
+
* sudoGuardFor is the service-side binding of core's guardSudoCommand: it
|
|
563
|
+
* supplies sudoProbe, so this package's install runner and the providers'
|
|
564
|
+
* lifecycle host drive one probe and one rule from one function. Calling
|
|
565
|
+
* it is itself the sudo declaration (needsSudo is true); callers gate on
|
|
566
|
+
* their own needsSudo fact first and never run a plain command through it.
|
|
567
|
+
*/
|
|
568
|
+
export declare function sudoGuardFor(command: string, notify: (command: string) => void, kill: () => void, timeoutMs?: number): Promise<SudoGuard>;
|
|
569
|
+
/**
|
|
570
|
+
* guardedShellRunner builds the Play/Run runner: it runs one command line
|
|
571
|
+
* through the system shell and reports the exit. stdin stays closed. When
|
|
572
|
+
* core hands the command the dep's sudo declaration and sudoProbe finds no
|
|
573
|
+
* cached credentials, core's guard announces the CLI prompt through notify
|
|
574
|
+
* and arms the password deadline; its fire signals the child through the
|
|
575
|
+
* shared signalChild rule (SIGINT, then SIGTERM; the group signal reaches a
|
|
576
|
+
* sudo survivor of a compound line) and the run settles with
|
|
577
|
+
* sudoFailureDetail instead of the shell's bare signal exit. The guard adds
|
|
578
|
+
* only probe, notify, and deadline to the existing spawn; the copy/paste
|
|
579
|
+
* path stays the fallback for a passwordless host.
|
|
580
|
+
*/
|
|
581
|
+
export declare function guardedShellRunner(notify: (command: string) => void): CommandRunner;
|
|
582
|
+
/**
|
|
583
|
+
* downloadRunner is the model-download runner: it spawns the rendered hf CLI
|
|
584
|
+
* command through the system shell and reports the exit. The spawned child's
|
|
585
|
+
* stdout and stderr chunks stream to onChunk as they land (the hf CLI's tqdm
|
|
586
|
+
* progress), while the output tail keeps the last kilobyte, the same rule the
|
|
587
|
+
* install runner uses, so a failure names the broken line. An abort on the
|
|
588
|
+
* optional signal interrupts the in-flight child (SIGINT, then SIGTERM), so a
|
|
589
|
+
* canceled download stops instead of running to the timeout. The optional
|
|
590
|
+
* graceMs overrides the 5 s SIGTERM escalation window for the abort path.
|
|
591
|
+
*/
|
|
592
|
+
export declare const downloadRunner: (command: string, signal?: AbortSignal, onChunk?: (chunk: string) => void, graceMs?: number) => Promise<CommandOutcome>;
|
|
593
|
+
/**
|
|
594
|
+
* parseWindowsProcessTable reads the `pid<TAB>commandLine` rows PowerShell's
|
|
595
|
+
* Win32_Process probe emits into process lines the launch-signature matcher
|
|
596
|
+
* consumes. Each row is split on its first tab: the pid is the left field, the
|
|
597
|
+
* command line the right. A row with no tab (a system process with an empty
|
|
598
|
+
* command line, trimmed to its pid alone) is skipped, and a non-numeric pid is
|
|
599
|
+
* dropped. The env element stays undefined: Windows has no /proc environ to
|
|
600
|
+
* read, and the matcher reads a missing env as neutral.
|
|
601
|
+
*/
|
|
602
|
+
export declare function parseWindowsProcessTable(stdout: string): ProcessLine[];
|
|
439
603
|
/**
|
|
440
604
|
* runHardwareProbes collects the raw probe results the detector consumes: the
|
|
441
605
|
* OS, CPU thread count, host RAM, the GPU reading, docker availability,
|
|
@@ -445,4 +609,4 @@ export declare class LocalInfer extends Service implements LocalInferService {
|
|
|
445
609
|
*/
|
|
446
610
|
export declare function runHardwareProbes(): Promise<HardwareProbes>;
|
|
447
611
|
export default LocalInfer;
|
|
448
|
-
//# sourceMappingURL=index.d.ts.map
|
|
612
|
+
//# sourceMappingURL=index.d.ts.map
|