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.
Files changed (251) hide show
  1. package/README.md +32 -6
  2. package/cordis.patch.yml +7 -0
  3. package/docs/zh/README.md +24 -4
  4. package/dsh/client.js +4200 -4049
  5. package/package.json +33 -11
  6. package/packages/core/lib/adapter.d.ts +177 -11
  7. package/packages/core/lib/adapter.js +74 -1
  8. package/packages/core/lib/config.d.ts +1 -1
  9. package/packages/core/lib/config.js +1 -1
  10. package/packages/core/lib/debug.d.ts +1 -1
  11. package/packages/core/lib/debug.js +1 -1
  12. package/packages/core/lib/defaults.d.ts +1 -1
  13. package/packages/core/lib/defaults.js +1 -1
  14. package/packages/core/lib/deps.d.ts +48 -20
  15. package/packages/core/lib/deps.js +24 -8
  16. package/packages/core/lib/estimator.d.ts +1 -1
  17. package/packages/core/lib/estimator.js +1 -1
  18. package/packages/core/lib/guideline.d.ts +1 -1
  19. package/packages/core/lib/guideline.js +1 -1
  20. package/packages/core/lib/hardware.d.ts +1 -1
  21. package/packages/core/lib/hardware.js +1 -1
  22. package/packages/core/lib/hf-cache.d.ts +70 -0
  23. package/packages/core/lib/hf-cache.js +83 -0
  24. package/packages/core/lib/index.d.ts +16 -9
  25. package/packages/core/lib/index.js +10 -6
  26. package/packages/core/lib/infer-cache.d.ts +39 -0
  27. package/packages/core/lib/infer-cache.js +53 -0
  28. package/packages/core/lib/launch-command.d.ts +8 -4
  29. package/packages/core/lib/launch-command.js +13 -6
  30. package/packages/core/lib/launch-record.d.ts +1 -1
  31. package/packages/core/lib/launch-record.js +1 -1
  32. package/packages/core/lib/logs.d.ts +8 -1
  33. package/packages/core/lib/logs.js +12 -4
  34. package/packages/core/lib/models.d.ts +120 -14
  35. package/packages/core/lib/models.js +209 -17
  36. package/packages/core/lib/parameter.d.ts +31 -3
  37. package/packages/core/lib/parameter.js +1 -1
  38. package/packages/core/lib/progress.d.ts +54 -0
  39. package/packages/core/lib/progress.js +120 -0
  40. package/packages/core/lib/registrar.d.ts +25 -14
  41. package/packages/core/lib/registrar.js +30 -10
  42. package/packages/core/lib/reserve.d.ts +11 -3
  43. package/packages/core/lib/reserve.js +6 -4
  44. package/packages/core/lib/status.d.ts +12 -6
  45. package/packages/core/lib/status.js +21 -10
  46. package/packages/core/lib/sudo.d.ts +80 -0
  47. package/packages/core/lib/sudo.js +78 -0
  48. package/packages/core/package.json +1 -1
  49. package/packages/orchestrator/lib/config.d.ts +63 -0
  50. package/packages/orchestrator/lib/config.js +111 -0
  51. package/packages/orchestrator/lib/index.d.ts +51 -0
  52. package/packages/orchestrator/lib/index.js +73 -0
  53. package/packages/orchestrator/lib/route.d.ts +60 -0
  54. package/packages/orchestrator/lib/route.js +159 -0
  55. package/packages/orchestrator/locale/en.json +6 -0
  56. package/packages/orchestrator/package.json +39 -0
  57. package/packages/orchestrator/prompt.md +87 -0
  58. package/packages/providers/lib/acquire.d.ts +95 -15
  59. package/packages/providers/lib/acquire.js +239 -40
  60. package/packages/providers/lib/adapters.d.ts +155 -221
  61. package/packages/providers/lib/adapters.js +589 -935
  62. package/packages/providers/lib/debug.d.ts +1 -1
  63. package/packages/providers/lib/debug.js +1 -1
  64. package/packages/providers/lib/deps.d.ts +31 -212
  65. package/packages/providers/lib/deps.js +71 -205
  66. package/packages/providers/lib/engines/basalt/basalt.d.ts +130 -0
  67. package/packages/providers/lib/engines/basalt/basalt.js +304 -0
  68. package/packages/providers/lib/engines/basalt/basaltAdapter.d.ts +85 -0
  69. package/packages/providers/lib/engines/basalt/basaltAdapter.js +439 -0
  70. package/packages/providers/lib/engines/basalt/basaltLinux.d.ts +23 -0
  71. package/packages/providers/lib/engines/basalt/basaltLinux.js +47 -0
  72. package/packages/providers/lib/engines/basalt/basaltMacOS.d.ts +17 -0
  73. package/packages/providers/lib/engines/basalt/basaltMacOS.js +19 -0
  74. package/packages/providers/lib/engines/basalt/basaltWindows.d.ts +24 -0
  75. package/packages/providers/lib/engines/basalt/basaltWindows.js +49 -0
  76. package/packages/providers/lib/engines/engineOs.d.ts +24 -0
  77. package/packages/providers/lib/engines/engineOs.js +17 -0
  78. package/packages/providers/lib/{hyperqwen.d.ts → engines/hyperqwen/hyperqwen.d.ts} +2 -2
  79. package/packages/providers/lib/{hyperqwen.js → engines/hyperqwen/hyperqwen.js} +14 -2
  80. package/packages/providers/lib/engines/hyperqwen/hyperqwenAdapter.d.ts +38 -0
  81. package/packages/providers/lib/engines/hyperqwen/hyperqwenAdapter.js +115 -0
  82. package/packages/providers/lib/engines/hyperqwen/hyperqwenArch.d.ts +9 -0
  83. package/packages/providers/lib/engines/hyperqwen/hyperqwenArch.js +9 -0
  84. package/packages/providers/lib/engines/hyperqwen/hyperqwenDebian.d.ts +9 -0
  85. package/packages/providers/lib/engines/hyperqwen/hyperqwenDebian.js +9 -0
  86. package/packages/providers/lib/engines/hyperqwen/hyperqwenFedora.d.ts +9 -0
  87. package/packages/providers/lib/engines/hyperqwen/hyperqwenFedora.js +9 -0
  88. package/packages/providers/lib/engines/hyperqwen/hyperqwenLinux.d.ts +10 -0
  89. package/packages/providers/lib/engines/hyperqwen/hyperqwenLinux.js +14 -0
  90. package/packages/providers/lib/engines/hyperqwen/hyperqwenMacOS.d.ts +9 -0
  91. package/packages/providers/lib/engines/hyperqwen/hyperqwenMacOS.js +9 -0
  92. package/packages/providers/lib/engines/hyperqwen/hyperqwenWindows.d.ts +9 -0
  93. package/packages/providers/lib/engines/hyperqwen/hyperqwenWindows.js +9 -0
  94. package/packages/providers/lib/{infernix.d.ts → engines/infernix/infernix.d.ts} +7 -4
  95. package/packages/providers/lib/{infernix.js → engines/infernix/infernix.js} +53 -8
  96. package/packages/providers/lib/engines/infernix/infernixAdapter.d.ts +52 -0
  97. package/packages/providers/lib/engines/infernix/infernixAdapter.js +235 -0
  98. package/packages/providers/lib/engines/infernix/infernixArch.d.ts +9 -0
  99. package/packages/providers/lib/engines/infernix/infernixArch.js +9 -0
  100. package/packages/providers/lib/engines/infernix/infernixDebian.d.ts +9 -0
  101. package/packages/providers/lib/engines/infernix/infernixDebian.js +9 -0
  102. package/packages/providers/lib/engines/infernix/infernixFedora.d.ts +9 -0
  103. package/packages/providers/lib/engines/infernix/infernixFedora.js +9 -0
  104. package/packages/providers/lib/engines/infernix/infernixLinux.d.ts +17 -0
  105. package/packages/providers/lib/engines/infernix/infernixLinux.js +35 -0
  106. package/packages/providers/lib/engines/infernix/infernixMacOS.d.ts +16 -0
  107. package/packages/providers/lib/engines/infernix/infernixMacOS.js +18 -0
  108. package/packages/providers/lib/engines/infernix/infernixWindows.d.ts +16 -0
  109. package/packages/providers/lib/engines/infernix/infernixWindows.js +34 -0
  110. package/packages/providers/lib/{llamacpp.d.ts → engines/llamacpp/llamacpp.d.ts} +2 -2
  111. package/packages/providers/lib/{llamacpp.js → engines/llamacpp/llamacpp.js} +12 -2
  112. package/packages/providers/lib/engines/llamacpp/llamacppAdapter.d.ts +50 -0
  113. package/packages/providers/lib/engines/llamacpp/llamacppAdapter.js +274 -0
  114. package/packages/providers/lib/engines/llamacpp/llamacppArch.d.ts +9 -0
  115. package/packages/providers/lib/engines/llamacpp/llamacppArch.js +9 -0
  116. package/packages/providers/lib/engines/llamacpp/llamacppDebian.d.ts +9 -0
  117. package/packages/providers/lib/engines/llamacpp/llamacppDebian.js +9 -0
  118. package/packages/providers/lib/engines/llamacpp/llamacppFedora.d.ts +9 -0
  119. package/packages/providers/lib/engines/llamacpp/llamacppFedora.js +9 -0
  120. package/packages/providers/lib/engines/llamacpp/llamacppLinux.d.ts +17 -0
  121. package/packages/providers/lib/engines/llamacpp/llamacppLinux.js +28 -0
  122. package/packages/providers/lib/engines/llamacpp/llamacppMacOS.d.ts +15 -0
  123. package/packages/providers/lib/engines/llamacpp/llamacppMacOS.js +17 -0
  124. package/packages/providers/lib/engines/llamacpp/llamacppWindows.d.ts +15 -0
  125. package/packages/providers/lib/engines/llamacpp/llamacppWindows.js +26 -0
  126. package/packages/providers/lib/{ninfer.d.ts → engines/ninfer/ninfer.d.ts} +2 -2
  127. package/packages/providers/lib/{ninfer.js → engines/ninfer/ninfer.js} +25 -3
  128. package/packages/providers/lib/engines/ninfer/ninferAdapter.d.ts +81 -0
  129. package/packages/providers/lib/engines/ninfer/ninferAdapter.js +392 -0
  130. package/packages/providers/lib/engines/ninfer/ninferArch.d.ts +9 -0
  131. package/packages/providers/lib/engines/ninfer/ninferArch.js +9 -0
  132. package/packages/providers/lib/engines/ninfer/ninferDebian.d.ts +9 -0
  133. package/packages/providers/lib/engines/ninfer/ninferDebian.js +9 -0
  134. package/packages/providers/lib/engines/ninfer/ninferFedora.d.ts +9 -0
  135. package/packages/providers/lib/engines/ninfer/ninferFedora.js +9 -0
  136. package/packages/providers/lib/engines/ninfer/ninferLinux.d.ts +17 -0
  137. package/packages/providers/lib/engines/ninfer/ninferLinux.js +37 -0
  138. package/packages/providers/lib/engines/ninfer/ninferMacOS.d.ts +15 -0
  139. package/packages/providers/lib/engines/ninfer/ninferMacOS.js +17 -0
  140. package/packages/providers/lib/engines/ninfer/ninferWindows.d.ts +29 -0
  141. package/packages/providers/lib/engines/ninfer/ninferWindows.js +59 -0
  142. package/packages/providers/lib/engines/strata/strata.d.ts +1 -0
  143. package/packages/providers/lib/engines/strata/strata.js +264 -0
  144. package/packages/providers/lib/engines/strata/strataAdapter.d.ts +97 -0
  145. package/packages/providers/lib/engines/strata/strataAdapter.js +463 -0
  146. package/packages/providers/lib/engines/strata/strataArch.d.ts +9 -0
  147. package/packages/providers/lib/engines/strata/strataArch.js +9 -0
  148. package/packages/providers/lib/engines/strata/strataDebian.d.ts +9 -0
  149. package/packages/providers/lib/engines/strata/strataDebian.js +9 -0
  150. package/packages/providers/lib/engines/strata/strataFedora.d.ts +9 -0
  151. package/packages/providers/lib/engines/strata/strataFedora.js +9 -0
  152. package/packages/providers/lib/engines/strata/strataLinux.d.ts +21 -0
  153. package/packages/providers/lib/engines/strata/strataLinux.js +30 -0
  154. package/packages/providers/lib/engines/strata/strataMacOS.d.ts +16 -0
  155. package/packages/providers/lib/engines/strata/strataMacOS.js +17 -0
  156. package/packages/providers/lib/engines/strata/strataWindows.d.ts +27 -0
  157. package/packages/providers/lib/engines/strata/strataWindows.js +37 -0
  158. package/packages/providers/lib/engines.d.ts +8 -5
  159. package/packages/providers/lib/engines.js +22 -11
  160. package/packages/providers/lib/guidelines.d.ts +5 -4
  161. package/packages/providers/lib/guidelines.js +18 -5
  162. package/packages/providers/lib/index.d.ts +33 -24
  163. package/packages/providers/lib/index.js +46 -24
  164. package/packages/providers/lib/model-defaults.d.ts +10 -5
  165. package/packages/providers/lib/model-defaults.js +47 -5
  166. package/packages/providers/lib/platform.d.ts +8 -5
  167. package/packages/providers/lib/platform.js +27 -7
  168. package/packages/providers/lib/presets.d.ts +6 -4
  169. package/packages/providers/lib/presets.js +53 -5
  170. package/packages/providers/lib/systemDeps.d.ts +313 -0
  171. package/packages/providers/lib/systemDeps.js +284 -0
  172. package/packages/providers/lib/vram.d.ts +34 -8
  173. package/packages/providers/lib/vram.js +81 -8
  174. package/packages/providers/package.json +2 -2
  175. package/packages/service/lib/index.d.ts +187 -23
  176. package/packages/service/lib/index.js +667 -90
  177. package/packages/service/lib/launch-target.d.ts +19 -0
  178. package/packages/service/lib/launch-target.js +28 -0
  179. package/packages/service/lib/run-logs.d.ts +72 -0
  180. package/packages/service/lib/run-logs.js +125 -0
  181. package/packages/service/lib/types.d.ts +166 -8
  182. package/packages/service/lib/types.js +1 -1
  183. package/packages/service/package.json +2 -2
  184. package/packages/tool/lib/index.d.ts +1 -1
  185. package/packages/tool/lib/index.js +1 -1
  186. package/packages/tool/package.json +2 -2
  187. package/packages/ui/lib/config.d.ts +89 -0
  188. package/packages/ui/lib/config.js +251 -0
  189. package/packages/ui/lib/deps.d.ts +4 -4
  190. package/packages/ui/lib/deps.js +1 -1
  191. package/packages/ui/lib/form.d.ts +1 -1
  192. package/packages/ui/lib/form.js +1 -1
  193. package/packages/ui/lib/index.d.ts +7 -1
  194. package/packages/ui/lib/index.js +12 -2
  195. package/packages/ui/lib/meter.d.ts +1 -1
  196. package/packages/ui/lib/meter.js +1 -1
  197. package/packages/ui/lib/ops/engine.d.ts +216 -0
  198. package/packages/ui/lib/ops/engine.js +697 -0
  199. package/packages/ui/lib/ops/get-steps.d.ts +98 -0
  200. package/packages/ui/lib/ops/get-steps.js +359 -0
  201. package/packages/ui/lib/ops/hf.d.ts +42 -0
  202. package/packages/ui/lib/ops/hf.js +150 -0
  203. package/packages/ui/lib/ops/logs.d.ts +78 -0
  204. package/packages/ui/lib/ops/logs.js +119 -0
  205. package/packages/ui/lib/ops/model.d.ts +71 -0
  206. package/packages/ui/lib/ops/model.js +123 -0
  207. package/packages/ui/lib/request.d.ts +106 -0
  208. package/packages/ui/lib/request.js +80 -0
  209. package/packages/ui/lib/route.d.ts +106 -422
  210. package/packages/ui/lib/route.js +136 -1845
  211. package/packages/ui/lib/routes/chat-template.d.ts +1 -0
  212. package/packages/ui/lib/routes/chat-template.js +1 -0
  213. package/packages/ui/lib/routes/deps.d.ts +1 -0
  214. package/packages/ui/lib/routes/deps.js +1 -0
  215. package/packages/ui/lib/routes/download.d.ts +1 -0
  216. package/packages/ui/lib/routes/download.js +1 -0
  217. package/packages/ui/lib/routes/get.d.ts +1 -0
  218. package/packages/ui/lib/routes/get.js +106 -0
  219. package/packages/ui/lib/routes/install.d.ts +16 -0
  220. package/packages/ui/lib/routes/install.js +36 -0
  221. package/packages/ui/lib/routes/launch.d.ts +24 -0
  222. package/packages/ui/lib/routes/launch.js +74 -0
  223. package/packages/ui/lib/routes/logs.d.ts +57 -0
  224. package/packages/ui/lib/routes/logs.js +117 -0
  225. package/packages/ui/lib/routes/provider-delete.d.ts +15 -0
  226. package/packages/ui/lib/routes/provider-delete.js +37 -0
  227. package/packages/ui/lib/routes/register.d.ts +16 -0
  228. package/packages/ui/lib/routes/register.js +28 -0
  229. package/packages/ui/lib/routes/save.d.ts +18 -0
  230. package/packages/ui/lib/routes/save.js +159 -0
  231. package/packages/ui/lib/routes/stop.d.ts +19 -0
  232. package/packages/ui/lib/routes/stop.js +32 -0
  233. package/packages/ui/lib/routes/stream.d.ts +40 -0
  234. package/packages/ui/lib/routes/stream.js +68 -0
  235. package/packages/ui/lib/routes/summary.d.ts +15 -0
  236. package/packages/ui/lib/routes/summary.js +26 -0
  237. package/packages/ui/lib/routes/unregister.d.ts +14 -0
  238. package/packages/ui/lib/routes/unregister.js +26 -0
  239. package/packages/ui/lib/viewmodels/deps.d.ts +1 -0
  240. package/packages/ui/lib/viewmodels/deps.js +1 -0
  241. package/packages/ui/lib/viewmodels/depsHelpers.d.ts +1 -0
  242. package/packages/ui/lib/viewmodels/depsHelpers.js +94 -0
  243. package/packages/ui/lib/viewmodels/summary.d.ts +145 -0
  244. package/packages/ui/lib/viewmodels/summary.js +245 -0
  245. package/packages/ui/lib/viewmodels/summaryHelpers.d.ts +30 -0
  246. package/packages/ui/lib/viewmodels/summaryHelpers.js +42 -0
  247. package/packages/ui/lib/warnings.d.ts +1 -1
  248. package/packages/ui/lib/warnings.js +1 -1
  249. package/packages/ui/package.json +4 -4
  250. package/packages/providers/lib/strata.d.ts +0 -15
  251. package/packages/providers/lib/strata.js +0 -14
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The Strata Windows build profile. The Windows source route is the engine's
3
+ * own START-HERE.bat wrapper (docs/SOURCE_INSTALL.md, From source: Windows),
4
+ * not the Linux setup.sh. `--yes` accepts the recommended answer to every
5
+ * question, so the step runs unattended. The wrapper acquires a ready-made
6
+ * engine when one fits the PC, and compiles one when it does not: the
7
+ * compile needs the Visual Studio 2022 Build Tools with the C++ workload
8
+ * (the sources are C++20, so VS2019 is too old). When setup cannot find the
9
+ * toolchain, point STRATA_VCVARS at vcvars64.bat before running. The build
10
+ * keeps its dependencies and products in the source install and writes the
11
+ * launch scripts (run-<model>.bat) and run configs (strata-<model>.json)
12
+ * into the checkout, so the profile carries no build directory. Updates run
13
+ * through UPDATE.bat.
14
+ * @module dsh-plugin-local-infer/providers/engines/strata/strataWindows
15
+ */
16
+ import { strataSourceLaunchArgs } from "./strata.js";
17
+ import { SYSTEM_DEPS } from "../../systemDeps.js";
18
+ export const STRATA_WINDOWS = {
19
+ buildSteps: ['cd {dir} && .\\START-HERE.bat --yes'],
20
+ // The engine command is the strata Terminal on every platform (a
21
+ // PowerShell command on Windows), so the name stays plain.
22
+ binary: 'strata',
23
+ // The Windows source route is the engine's own START-HERE.bat wrapper; the
24
+ // host deps are the same git-plus-curl list as the Linux route.
25
+ deps: [SYSTEM_DEPS.git, SYSTEM_DEPS.curl],
26
+ };
27
+ /**
28
+ * strataWindowsSourceLaunch renders the source-build launch argv for the
29
+ * Windows route: the engine's own START-HERE.bat wrapper with --yes
30
+ * (unattended) and the resolved model, family, vision, context, and port. The
31
+ * wrapper acquires a ready-made engine when one fits the PC, and compiles one
32
+ * (the Visual Studio 2022 C++ toolchain) when it does not.
33
+ */
34
+ export function strataWindowsSourceLaunch(args) {
35
+ return strataSourceLaunchArgs('START-HERE.bat', args);
36
+ }
37
+ //# sourceMappingURL=strataWindows.js.map
@@ -14,15 +14,18 @@ export interface EngineInfo {
14
14
  supports: {
15
15
  docker: boolean;
16
16
  local: boolean;
17
+ binary?: boolean;
17
18
  };
18
19
  parameters: readonly ParameterSpec[];
19
20
  }
20
21
  /**
21
22
  * The engines the Web card offers, in the order the card lists them. NInfer,
22
- * Hyper-Qwen, Infernix, and llama.cpp carry parameter surfaces (llama.cpp's
23
- * is the specified set the plan names, verified when the binary lands);
24
- * Strata is the placeholder engine, its surface empty until the engine's
25
- * flag set lands.
23
+ * Hyper-Qwen, Infernix, llama.cpp, Strata, and Basalt all carry parameter
24
+ * surfaces (llama.cpp's is the specified set the plan names, verified when the
25
+ * binary lands); Strata's surface is the `strata launch` flags and it supports
26
+ * all three build modes (docker, source build, and the binary install);
27
+ * Basalt's surface is the `basalt_config.json` settings and it is local-build
28
+ * only (the C++/CUDA engine ships no container image).
26
29
  */
27
30
  export declare const ENGINES: readonly EngineInfo[];
28
- //# sourceMappingURL=engines.d.ts.map
31
+ //# sourceMappingURL=engines.d.ts.map
@@ -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 { HYPERQWEN_PARAMETERS } from "./hyperqwen.js";
11
- import { INFERNIX_PARAMETERS } from "./infernix.js";
12
- import { LLAMACPP_PARAMETERS } from "./llamacpp.js";
13
- import { NINFER_PARAMETERS } from "./ninfer.js";
14
- import { STRATA_PARAMETERS } from "./strata.js";
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, and llama.cpp carry parameter surfaces (llama.cpp's
18
- * is the specified set the plan names, verified when the binary lands);
19
- * Strata is the placeholder engine, its surface empty until the engine's
20
- * flag set lands.
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
  {
@@ -47,8 +50,16 @@ export const ENGINES = [
47
50
  {
48
51
  id: 'strata',
49
52
  label: 'Strata',
50
- supports: { docker: true, local: false },
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, and the WSL2 pin-memory boot abort. Each is
5
- * registered with `ctx.localInfer` by the provider `apply`, so a per-engine
6
- * override or an extra rule composes on top without touching these.
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, and the WSL2 pin-memory boot abort. Each is
5
- * registered with `ctx.localInfer` by the provider `apply`, so a per-engine
6
- * override or an extra rule composes on top without touching these.
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 "./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,36 +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 './hyperqwen.ts';
22
- export { CHAT_TEMPLATE_OPTIONS, DEVICE_PROFILE_OPTIONS, KV_DTYPE_OPTIONS, NINFER_PARAMETERS, SPEC_OPTIONS as NINFER_SPEC_OPTIONS, } from './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 { HyperQwenAdapter, LLAMACPP_DOCKER_IMAGE, NINFER_DOCKER_IMAGE, NINFER_MODEL_ARTIFACTS, NInferAdapter, STRATA_DOCKER_IMAGE, StrataAdapter, LlamaCppAdapter, customArgEnv, customArgFlags, envFromSpecs, flagsFromSpecs, nodeLifecycleHost, pollHealth, } from './adapters.ts';
35
- export type { NInferModelArtifact } from './adapters.ts';
36
- export { KV_CACHE_TYPE_OPTIONS, LLAMACPP_MODEL_ARTIFACTS, LLAMACPP_PARAMETERS, llamaCppModelKey, } from './llamacpp.ts';
37
- export type { LlamaCppModelArtifact } from './llamacpp.ts';
38
- 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 './infernix.ts';
39
- export type { InfernixDFlash2Model, InfernixModelArtifact, InfernixNgramVolume, } from './infernix.ts';
40
- export { STRATA_PARAMETERS } from './strata.ts';
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';
41
49
  /**
42
- * Mount the providers. The NInfer measured VramModels register here so the
43
- * service's estimate prices a named model; the built-in hardware guidelines
44
- * register so the guideline engine warns on docker, host RAM, and WSL2
45
- * before the engine boots; the per-engine dep plans register so the deps,
46
- * installString, and runInstall entry points resolve a plan for every engine
47
- * the card offers; the built-in presets register so the defaults resolver
48
- * resolves a sane starting config for the detected hardware class; and the
49
- * engine adapters register so the launch, stop, and register entry points
50
- * route a plan to the adapter that rendered it.
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.
51
60
  */
52
61
  export declare function apply(ctx: Context): void;
53
62
  declare const plugin: {
@@ -56,4 +65,4 @@ declare const plugin: {
56
65
  apply: typeof apply;
57
66
  };
58
67
  export default plugin;
59
- //# 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
  *
@@ -10,12 +10,18 @@
10
10
  * that the defaults resolver resolves against.
11
11
  * @module dsh-plugin-local-infer/providers
12
12
  */
13
- import { createNodeLifecycleHost, HyperQwenAdapter, InfernixAdapter, LlamaCppAdapter, NInferAdapter, StrataAdapter, } from "./adapters.js";
13
+ import { createNodeLifecycleHost } from "./adapters.js";
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";
14
20
  import { createDshDebugLogger } from "./debug.js";
15
21
  import { ENGINE_DEP_PLANS } from "./deps.js";
16
22
  import { BUILTIN_GUIDELINES } from "./guidelines.js";
17
23
  import { BUILTIN_PRESETS } from "./presets.js";
18
- import { NINFER_VRAM_MODELS } from "./vram.js";
24
+ import { BASALT_VRAM_MODELS, NINFER_VRAM_MODELS } from "./vram.js";
19
25
  export const name = 'local-infer-providers';
20
26
  export const inject = ['localInfer'];
21
27
  /**
@@ -23,36 +29,47 @@ export const inject = ['localInfer'];
23
29
  * Phase 5 adapters. NInfer's surface is CLI flags (`toArgv`); Hyper-Qwen's is
24
30
  * `.env` keys (`toEnv`).
25
31
  */
26
- export { CTX_OPTIONS, HYPERQWEN_PARAMETERS, KV_OPTIONS, SPEC_OPTIONS as HYPERQWEN_SPEC_OPTIONS, } from "./hyperqwen.js";
27
- export { CHAT_TEMPLATE_OPTIONS, DEVICE_PROFILE_OPTIONS, KV_DTYPE_OPTIONS, NINFER_PARAMETERS, SPEC_OPTIONS as NINFER_SPEC_OPTIONS, } from "./ninfer.js";
28
- 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";
29
35
  export { BUILTIN_GUIDELINES, HOST_STATE_IMAGE_BYTES } from "./guidelines.js";
30
36
  export { ENGINES } from "./engines.js";
31
- export { ENGINE_SOURCES, FORK_REMOTE, buildEngineRepo, engineBuildSteps, engineSource, syncAndRebuildEngine, syncEngineRepo, } from "./acquire.js";
32
- 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";
33
39
  export { ENGINE_PLATFORM_DEFAULTS, enginePlatformDefaults } from "./platform.js";
34
40
  export { BUILTIN_PRESETS, PRESET_SOURCES, extractJsonBlock } from "./presets.js";
35
41
  export { DEFAULT_MODELS, defaultModelFor, defaultModelsForEngine } from "./model-defaults.js";
36
- export { HyperQwenAdapter, LLAMACPP_DOCKER_IMAGE, NINFER_DOCKER_IMAGE, NINFER_MODEL_ARTIFACTS, NInferAdapter, STRATA_DOCKER_IMAGE, StrataAdapter, LlamaCppAdapter, customArgEnv, customArgFlags, envFromSpecs, flagsFromSpecs, nodeLifecycleHost, pollHealth, } from "./adapters.js";
37
- export { KV_CACHE_TYPE_OPTIONS, LLAMACPP_MODEL_ARTIFACTS, LLAMACPP_PARAMETERS, llamaCppModelKey, } from "./llamacpp.js";
38
- 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 "./infernix.js";
39
- export { STRATA_PARAMETERS } from "./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";
40
53
  /**
41
- * Mount the providers. The NInfer measured VramModels register here so the
42
- * service's estimate prices a named model; the built-in hardware guidelines
43
- * register so the guideline engine warns on docker, host RAM, and WSL2
44
- * before the engine boots; the per-engine dep plans register so the deps,
45
- * installString, and runInstall entry points resolve a plan for every engine
46
- * the card offers; the built-in presets register so the defaults resolver
47
- * resolves a sane starting config for the detected hardware class; and the
48
- * engine adapters register so the launch, stop, and register entry points
49
- * route a plan to the adapter that rendered it.
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.
50
64
  */
51
65
  export function apply(ctx) {
52
66
  const localInfer = ctx.localInfer;
53
67
  for (const model of NINFER_VRAM_MODELS) {
54
68
  localInfer.registerVramModel(model);
55
69
  }
70
+ for (const model of BASALT_VRAM_MODELS) {
71
+ localInfer.registerVramModel(model);
72
+ }
56
73
  for (const guideline of BUILTIN_GUIDELINES) {
57
74
  localInfer.registerGuideline(guideline);
58
75
  }
@@ -66,14 +83,19 @@ export function apply(ctx) {
66
83
  // (the HARNESS_LOG_LEVEL env var or the DSH logger level config), the host
67
84
  // logs every command it issues to an engine, from build to launch, through
68
85
  // the cordis logger's debug method. A normal run wires the no-debug host, so
69
- // the command path stays quiet.
70
- const host = createNodeLifecycleHost(createDshDebugLogger(ctx));
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
+ });
71
92
  localInfer.registerEngine(new NInferAdapter(host));
72
93
  localInfer.registerEngine(new HyperQwenAdapter(host));
73
94
  localInfer.registerEngine(new LlamaCppAdapter(host));
74
95
  localInfer.registerEngine(new InfernixAdapter(host));
75
96
  localInfer.registerEngine(new StrataAdapter(host));
97
+ localInfer.registerEngine(new BasaltAdapter(host));
76
98
  }
77
99
  const plugin = { name, inject, apply };
78
100
  export default plugin;
79
- //# sourceMappingURL=index.js.map
101
+ //# sourceMappingURL=index.js.map
@@ -4,8 +4,13 @@
4
4
  * Hyper-Qwen W4A16 27B and AWQ 35B-A3B artifacts, the llama.cpp GGUF 27B and
5
5
  * 35B-A3B artifacts, and the Infernix 27B NVIDIA NVFP4 and the Qwen3.8-
6
6
  * Flash-Next Dense8 conversion (whose whole-repo download carries the FP8
7
- * n-gram volume the `--ngram-volume` flag reads). Strata does not focus on
8
- * the dense Qwen models, so it carries no entry.
7
+ * n-gram volume the `--ngram-volume` flag reads). Strata carries the two
8
+ * models the README's Models section links (Gyro and DeepSeek V4.1-Flash),
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).
9
14
  *
10
15
  * The list is the single source the card's Model dropdown, the model
11
16
  * presence check, and the hf CLI download route read. Adding a model is a
@@ -22,8 +27,8 @@ import type { DefaultModel } from 'dsh-plugin-local-infer/core';
22
27
  export declare const DEFAULT_MODELS: readonly DefaultModel[];
23
28
  /**
24
29
  * defaultModelsForEngine reads the default list for one engine id, in list
25
- * order. An engine with no entry (Strata) reads as an empty list, which the
26
- * card renders as no Model row.
30
+ * order. An engine with no entry reads as an empty list, which the card
31
+ * renders as no Model row.
27
32
  */
28
33
  export declare function defaultModelsForEngine(engineId: string): readonly DefaultModel[];
29
34
  /**
@@ -32,4 +37,4 @@ export declare function defaultModelsForEngine(engineId: string): readonly Defau
32
37
  * undefined entry with a 404, so a model no default names never downloads.
33
38
  */
34
39
  export declare function defaultModelFor(engineId: string, modelId: string): DefaultModel | undefined;
35
- //# sourceMappingURL=model-defaults.d.ts.map
40
+ //# sourceMappingURL=model-defaults.d.ts.map
@@ -4,14 +4,20 @@
4
4
  * Hyper-Qwen W4A16 27B and AWQ 35B-A3B artifacts, the llama.cpp GGUF 27B and
5
5
  * 35B-A3B artifacts, and the Infernix 27B NVIDIA NVFP4 and the Qwen3.8-
6
6
  * Flash-Next Dense8 conversion (whose whole-repo download carries the FP8
7
- * n-gram volume the `--ngram-volume` flag reads). Strata does not focus on
8
- * the dense Qwen models, so it carries no entry.
7
+ * n-gram volume the `--ngram-volume` flag reads). Strata carries the two
8
+ * models the README's Models section links (Gyro and DeepSeek V4.1-Flash),
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).
9
14
  *
10
15
  * The list is the single source the card's Model dropdown, the model
11
16
  * presence check, and the hf CLI download route read. Adding a model is a
12
17
  * data edit here, never a route or card rewire.
13
18
  * @module dsh-plugin-local-infer/providers/model-defaults
14
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";
15
21
  /**
16
22
  * DEFAULT_MODELS is the default model list, in the order the card lists them.
17
23
  * The 27B keys reuse the VramModel registry ids; the 35B-A3B entries use the
@@ -88,11 +94,47 @@ export const DEFAULT_MODELS = [
88
94
  url: 'https://huggingface.co/neroued/Qwen3.6-35B-A3B-NInfer',
89
95
  file: 'qwen3_6_35b_a3b.ninfer',
90
96
  },
97
+ // The two models the Strata README's Models section links: Gyro (the
98
+ // smallest way to run Qwen3.8-Flash-Next) and DeepSeek V4.1-Flash (the
99
+ // bigger model that runs on one 12 GB card). No single file: the engine
100
+ // downloads the model itself (into the container volume or its data dir),
101
+ // so the entry names the repo only.
102
+ {
103
+ engineId: 'strata',
104
+ modelId: 'gyro-s',
105
+ label: 'Strata Gyro-S (Qwen3.8-Flash-Next)',
106
+ url: 'https://huggingface.co/agentionai/Qwen3.8-Flash-Next-Gyro-GGUF',
107
+ },
108
+ {
109
+ engineId: 'strata',
110
+ modelId: 'ist-das-2.00bpw',
111
+ label: 'Strata DeepSeek V4.1-Flash (2.00 bpw)',
112
+ url: 'https://huggingface.co/ISTA-DASLab/DeepSeek-V4.1-Flash-1017-GSQ-RCO-GGUF',
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
+ },
91
133
  ];
92
134
  /**
93
135
  * defaultModelsForEngine reads the default list for one engine id, in list
94
- * order. An engine with no entry (Strata) reads as an empty list, which the
95
- * card renders as no Model row.
136
+ * order. An engine with no entry reads as an empty list, which the card
137
+ * renders as no Model row.
96
138
  */
97
139
  export function defaultModelsForEngine(engineId) {
98
140
  return DEFAULT_MODELS.filter((entry) => entry.engineId === engineId);
@@ -105,4 +147,4 @@ export function defaultModelsForEngine(engineId) {
105
147
  export function defaultModelFor(engineId, modelId) {
106
148
  return DEFAULT_MODELS.find((entry) => entry.engineId === engineId && entry.modelId === modelId);
107
149
  }
108
- //# 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 ships no docker image, so it carries
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,7 +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, NINFER_DOCKER_IMAGE, STRATA_DOCKER_IMAGE, } from "./adapters.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";
9
11
  import { engineBuildSteps } from "./acquire.js";
10
12
  // The local build command is the engine's first acquisition build step (the
11
13
  // cmake build the deploy step runs in the checkout), read through
@@ -15,12 +17,14 @@ import { engineBuildSteps } from "./acquire.js";
15
17
  const NINFER_BUILD_COMMAND = engineBuildSteps('ninfer')[0];
16
18
  const LLAMACPP_BUILD_COMMAND = engineBuildSteps('llamacpp')[0];
17
19
  const INFERNIX_BUILD_COMMAND = engineBuildSteps('infernix')[0];
20
+ const STRATA_BUILD_COMMAND = engineBuildSteps('strata')[0];
21
+ const BASALT_BUILD_COMMAND = engineBuildSteps('basalt')[0];
18
22
  /**
19
23
  * The per-engine platform defaults, keyed by engine id. The build command is
20
24
  * the engine's first acquisition build step; the docker tag is the upstream
21
25
  * image the adapter pulls. Hyper-Qwen is compose-driven, so its docker tag is
22
- * the vLLM OpenAI server image; Infernix ships no docker image, so it carries
23
- * 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.
24
28
  */
25
29
  export const ENGINE_PLATFORM_DEFAULTS = {
26
30
  ninfer: {
@@ -45,14 +49,30 @@ export const ENGINE_PLATFORM_DEFAULTS = {
45
49
  : {}),
46
50
  },
47
51
  strata: {
52
+ ...(STRATA_BUILD_COMMAND !== undefined
53
+ ? { defaultBuildCommand: STRATA_BUILD_COMMAND }
54
+ : {}),
48
55
  defaultDockerTag: STRATA_DOCKER_IMAGE,
49
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
+ },
50
62
  };
51
63
  /**
52
64
  * enginePlatformDefaults reads the registered platform defaults for an engine
53
- * 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.
54
69
  */
55
- export function enginePlatformDefaults(engineId) {
56
- return ENGINE_PLATFORM_DEFAULTS[engineId] ?? {};
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
+ };
57
77
  }
58
- //# 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) and the Hyper-Qwen `.env`
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`). Each preset is keyed by its exact (engine, model, hardware
8
- * class) triple, so it is only trusted for the hardware it was sourced for.
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