@atomic-chat/core 0.13.6 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/README.md +1 -1
  2. package/dist/backend/advisor/advisor.d.ts +8 -7
  3. package/dist/backend/advisor/advisor.js +17 -25
  4. package/dist/backend/advisor/advisor.js.map +1 -1
  5. package/dist/backend/catalog/index.d.ts +4 -2
  6. package/dist/backend/catalog/index.js +4 -2
  7. package/dist/backend/catalog/index.js.map +1 -1
  8. package/dist/backend/catalog/manifest.d.ts +5 -51
  9. package/dist/backend/catalog/manifest.js +5 -93
  10. package/dist/backend/catalog/manifest.js.map +1 -1
  11. package/dist/backend/catalog/upstream-releases-baseline.d.ts +2 -0
  12. package/dist/backend/catalog/upstream-releases-baseline.js +12 -0
  13. package/dist/backend/catalog/upstream-releases-baseline.js.map +1 -0
  14. package/dist/backend/catalog/upstream-releases-baseline.json +101 -0
  15. package/dist/backend/catalog/upstream-releases-catalog.d.ts +54 -0
  16. package/dist/backend/catalog/upstream-releases-catalog.js +148 -0
  17. package/dist/backend/catalog/upstream-releases-catalog.js.map +1 -0
  18. package/dist/backend/catalog/upstream-releases.d.ts +75 -0
  19. package/dist/backend/catalog/upstream-releases.js +155 -0
  20. package/dist/backend/catalog/upstream-releases.js.map +1 -0
  21. package/dist/backend/install/service.d.ts +7 -4
  22. package/dist/backend/install/service.js +4 -4
  23. package/dist/backend/install/service.js.map +1 -1
  24. package/dist/cli/commands/serve.js +10 -28
  25. package/dist/cli/commands/serve.js.map +1 -1
  26. package/dist/cli/main.d.ts +1 -1
  27. package/dist/cli/main.js +0 -1
  28. package/dist/cli/main.js.map +1 -1
  29. package/dist/client/control-client.d.ts +7 -19
  30. package/dist/client/control-client.js +9 -29
  31. package/dist/client/control-client.js.map +1 -1
  32. package/dist/cloud/registry.d.ts +14 -1
  33. package/dist/cloud/registry.js +73 -2
  34. package/dist/cloud/registry.js.map +1 -1
  35. package/dist/config/paths.d.ts +4 -3
  36. package/dist/config/paths.js +15 -14
  37. package/dist/config/paths.js.map +1 -1
  38. package/dist/contracts/diffusion.d.ts +45 -18
  39. package/dist/contracts/diffusion.js +1 -1
  40. package/dist/contracts/diffusion.js.map +1 -1
  41. package/dist/contracts/engines.d.ts +1 -1
  42. package/dist/contracts/engines.js +2 -0
  43. package/dist/contracts/engines.js.map +1 -1
  44. package/dist/contracts/errors.d.ts +1 -3
  45. package/dist/contracts/errors.js +16 -0
  46. package/dist/contracts/errors.js.map +1 -1
  47. package/dist/contracts/events.d.ts +11 -6
  48. package/dist/contracts/index.d.ts +1 -1
  49. package/dist/contracts/index.js +1 -1
  50. package/dist/contracts/index.js.map +1 -1
  51. package/dist/contracts/media.d.ts +186 -0
  52. package/dist/contracts/media.js +55 -0
  53. package/dist/contracts/media.js.map +1 -0
  54. package/dist/contracts/session.d.ts +10 -1
  55. package/dist/contracts/session.js +10 -0
  56. package/dist/contracts/session.js.map +1 -1
  57. package/dist/contracts/settings.d.ts +36 -1
  58. package/dist/contracts/settings.js.map +1 -1
  59. package/dist/core/atomic-core.d.ts +5 -5
  60. package/dist/core/atomic-core.js.map +1 -1
  61. package/dist/core/create.js +43 -59
  62. package/dist/core/create.js.map +1 -1
  63. package/dist/core/managed-engines.js +2 -0
  64. package/dist/core/managed-engines.js.map +1 -1
  65. package/dist/core/prism.d.ts +21 -6
  66. package/dist/core/prism.js +44 -0
  67. package/dist/core/prism.js.map +1 -1
  68. package/dist/core/types.d.ts +0 -5
  69. package/dist/core/types.js.map +1 -1
  70. package/dist/diffusion/gallery.d.ts +24 -3
  71. package/dist/diffusion/gallery.js +151 -21
  72. package/dist/diffusion/gallery.js.map +1 -1
  73. package/dist/diffusion/index.d.ts +3 -0
  74. package/dist/diffusion/index.js +3 -0
  75. package/dist/diffusion/index.js.map +1 -1
  76. package/dist/diffusion/jobs.d.ts +6 -1
  77. package/dist/diffusion/jobs.js +6 -1
  78. package/dist/diffusion/jobs.js.map +1 -1
  79. package/dist/diffusion/media-header.d.ts +22 -0
  80. package/dist/diffusion/media-header.js +149 -0
  81. package/dist/diffusion/media-header.js.map +1 -0
  82. package/dist/diffusion/parse.d.ts +3 -1
  83. package/dist/diffusion/parse.js +36 -0
  84. package/dist/diffusion/parse.js.map +1 -1
  85. package/dist/diffusion/recipe.d.ts +10 -1
  86. package/dist/diffusion/recipe.js +85 -21
  87. package/dist/diffusion/recipe.js.map +1 -1
  88. package/dist/diffusion/remote-job.d.ts +76 -0
  89. package/dist/diffusion/remote-job.js +643 -0
  90. package/dist/diffusion/remote-job.js.map +1 -0
  91. package/dist/diffusion/remote-store.d.ts +38 -0
  92. package/dist/diffusion/remote-store.js +91 -0
  93. package/dist/diffusion/remote-store.js.map +1 -0
  94. package/dist/diffusion/service.d.ts +9 -1
  95. package/dist/diffusion/service.js +49 -9
  96. package/dist/diffusion/service.js.map +1 -1
  97. package/dist/diffusion/state.d.ts +13 -1
  98. package/dist/diffusion/state.js +8 -0
  99. package/dist/diffusion/state.js.map +1 -1
  100. package/dist/diffusion/video-gallery.d.ts +11 -4
  101. package/dist/diffusion/video-gallery.js +62 -25
  102. package/dist/diffusion/video-gallery.js.map +1 -1
  103. package/dist/diffusion/video-history.js +4 -1
  104. package/dist/diffusion/video-history.js.map +1 -1
  105. package/dist/diffusion/video-recipe.js +58 -25
  106. package/dist/diffusion/video-recipe.js.map +1 -1
  107. package/dist/diffusion/wiring.d.ts +3 -0
  108. package/dist/diffusion/wiring.js +1 -0
  109. package/dist/diffusion/wiring.js.map +1 -1
  110. package/dist/downloads/downloader.d.ts +1 -18
  111. package/dist/downloads/downloader.js +1 -45
  112. package/dist/downloads/downloader.js.map +1 -1
  113. package/dist/media/adapters/a1111.d.ts +32 -0
  114. package/dist/media/adapters/a1111.js +207 -0
  115. package/dist/media/adapters/a1111.js.map +1 -0
  116. package/dist/media/adapters/aimlapi-videos.d.ts +34 -0
  117. package/dist/media/adapters/aimlapi-videos.js +172 -0
  118. package/dist/media/adapters/aimlapi-videos.js.map +1 -0
  119. package/dist/media/adapters/dashscope-image.d.ts +26 -0
  120. package/dist/media/adapters/dashscope-image.js +160 -0
  121. package/dist/media/adapters/dashscope-image.js.map +1 -0
  122. package/dist/media/adapters/dashscope-video.d.ts +47 -0
  123. package/dist/media/adapters/dashscope-video.js +251 -0
  124. package/dist/media/adapters/dashscope-video.js.map +1 -0
  125. package/dist/media/adapters/gemini-image.d.ts +27 -0
  126. package/dist/media/adapters/gemini-image.js +181 -0
  127. package/dist/media/adapters/gemini-image.js.map +1 -0
  128. package/dist/media/adapters/gemini-veo.d.ts +39 -0
  129. package/dist/media/adapters/gemini-veo.js +196 -0
  130. package/dist/media/adapters/gemini-veo.js.map +1 -0
  131. package/dist/media/adapters/hf-images.d.ts +85 -0
  132. package/dist/media/adapters/hf-images.js +439 -0
  133. package/dist/media/adapters/hf-images.js.map +1 -0
  134. package/dist/media/adapters/hf-videos.d.ts +44 -0
  135. package/dist/media/adapters/hf-videos.js +265 -0
  136. package/dist/media/adapters/hf-videos.js.map +1 -0
  137. package/dist/media/adapters/minimax-image.d.ts +26 -0
  138. package/dist/media/adapters/minimax-image.js +111 -0
  139. package/dist/media/adapters/minimax-image.js.map +1 -0
  140. package/dist/media/adapters/minimax-video-v2.d.ts +34 -0
  141. package/dist/media/adapters/minimax-video-v2.js +191 -0
  142. package/dist/media/adapters/minimax-video-v2.js.map +1 -0
  143. package/dist/media/adapters/minimax-video.d.ts +28 -0
  144. package/dist/media/adapters/minimax-video.js +155 -0
  145. package/dist/media/adapters/minimax-video.js.map +1 -0
  146. package/dist/media/adapters/mistral-agent-image.d.ts +33 -0
  147. package/dist/media/adapters/mistral-agent-image.js +108 -0
  148. package/dist/media/adapters/mistral-agent-image.js.map +1 -0
  149. package/dist/media/adapters/nvidia-genai.d.ts +28 -0
  150. package/dist/media/adapters/nvidia-genai.js +182 -0
  151. package/dist/media/adapters/nvidia-genai.js.map +1 -0
  152. package/dist/media/adapters/openai-images.d.ts +23 -0
  153. package/dist/media/adapters/openai-images.js +164 -0
  154. package/dist/media/adapters/openai-images.js.map +1 -0
  155. package/dist/media/adapters/openai-videos.d.ts +34 -0
  156. package/dist/media/adapters/openai-videos.js +175 -0
  157. package/dist/media/adapters/openai-videos.js.map +1 -0
  158. package/dist/media/adapters/openrouter-images.d.ts +25 -0
  159. package/dist/media/adapters/openrouter-images.js +161 -0
  160. package/dist/media/adapters/openrouter-images.js.map +1 -0
  161. package/dist/media/adapters/openrouter-videos.d.ts +43 -0
  162. package/dist/media/adapters/openrouter-videos.js +208 -0
  163. package/dist/media/adapters/openrouter-videos.js.map +1 -0
  164. package/dist/media/adapters/registry.d.ts +7 -0
  165. package/dist/media/adapters/registry.js +45 -0
  166. package/dist/media/adapters/registry.js.map +1 -0
  167. package/dist/media/adapters/types.d.ts +133 -0
  168. package/dist/media/adapters/types.js +15 -0
  169. package/dist/media/adapters/types.js.map +1 -0
  170. package/dist/media/adapters/xai-images.d.ts +19 -0
  171. package/dist/media/adapters/xai-images.js +83 -0
  172. package/dist/media/adapters/xai-images.js.map +1 -0
  173. package/dist/media/adapters/xai-videos.d.ts +29 -0
  174. package/dist/media/adapters/xai-videos.js +148 -0
  175. package/dist/media/adapters/xai-videos.js.map +1 -0
  176. package/dist/media/catalog-baseline.d.ts +2 -0
  177. package/dist/media/catalog-baseline.js +10 -0
  178. package/dist/media/catalog-baseline.js.map +1 -0
  179. package/dist/media/catalog-baseline.json +1819 -0
  180. package/dist/media/catalog-service.d.ts +42 -0
  181. package/dist/media/catalog-service.js +111 -0
  182. package/dist/media/catalog-service.js.map +1 -0
  183. package/dist/media/catalog.d.ts +50 -0
  184. package/dist/media/catalog.js +315 -0
  185. package/dist/media/catalog.js.map +1 -0
  186. package/dist/media/http.d.ts +125 -0
  187. package/dist/media/http.js +308 -0
  188. package/dist/media/http.js.map +1 -0
  189. package/dist/media/index.d.ts +14 -0
  190. package/dist/media/index.js +15 -0
  191. package/dist/media/index.js.map +1 -0
  192. package/dist/media/mask.d.ts +12 -0
  193. package/dist/media/mask.js +57 -0
  194. package/dist/media/mask.js.map +1 -0
  195. package/dist/media/service.d.ts +42 -0
  196. package/dist/media/service.js +144 -0
  197. package/dist/media/service.js.map +1 -0
  198. package/dist/models/hf.d.ts +3 -16
  199. package/dist/models/hf.js +4 -42
  200. package/dist/models/hf.js.map +1 -1
  201. package/dist/router/resolve.d.ts +15 -4
  202. package/dist/router/resolve.js +25 -3
  203. package/dist/router/resolve.js.map +1 -1
  204. package/dist/runtime/environment/linux-provisioner.js +7 -67
  205. package/dist/runtime/environment/linux-provisioner.js.map +1 -1
  206. package/dist/runtime/environment/runtime-removal-plan.d.ts +19 -0
  207. package/dist/runtime/environment/runtime-removal-plan.js +74 -0
  208. package/dist/runtime/environment/runtime-removal-plan.js.map +1 -0
  209. package/dist/runtime/environment/windows-provisioner.js +20 -4
  210. package/dist/runtime/environment/windows-provisioner.js.map +1 -1
  211. package/dist/runtime/managed-engines/spec.d.ts +2 -2
  212. package/dist/runtime/managed-engines/spec.js +6 -0
  213. package/dist/runtime/managed-engines/spec.js.map +1 -1
  214. package/dist/runtime/managed-models/compatibility.d.ts +10 -0
  215. package/dist/runtime/managed-models/compatibility.js +18 -0
  216. package/dist/runtime/managed-models/compatibility.js.map +1 -1
  217. package/dist/runtime/managed-text/request-rules.d.ts +9 -7
  218. package/dist/runtime/managed-text/request-rules.js +58 -2
  219. package/dist/runtime/managed-text/request-rules.js.map +1 -1
  220. package/dist/runtime/managed-text/setting-values.d.ts +9 -0
  221. package/dist/runtime/managed-text/setting-values.js +44 -0
  222. package/dist/runtime/managed-text/setting-values.js.map +1 -0
  223. package/dist/runtime/sglang/adapter.d.ts +50 -0
  224. package/dist/runtime/sglang/adapter.js +393 -0
  225. package/dist/runtime/sglang/adapter.js.map +1 -0
  226. package/dist/runtime/sglang/engine.d.ts +16 -0
  227. package/dist/runtime/sglang/engine.js +38 -0
  228. package/dist/runtime/sglang/engine.js.map +1 -0
  229. package/dist/runtime/sglang/index.d.ts +11 -0
  230. package/dist/runtime/sglang/index.js +12 -0
  231. package/dist/runtime/sglang/index.js.map +1 -0
  232. package/dist/runtime/sglang/memory.d.ts +64 -0
  233. package/dist/runtime/sglang/memory.js +90 -0
  234. package/dist/runtime/sglang/memory.js.map +1 -0
  235. package/dist/runtime/sglang/settings.d.ts +49 -0
  236. package/dist/runtime/sglang/settings.js +118 -0
  237. package/dist/runtime/sglang/settings.js.map +1 -0
  238. package/dist/runtime/shared/external-sessions.js +1 -0
  239. package/dist/runtime/shared/external-sessions.js.map +1 -1
  240. package/dist/runtime/vllm/adapter.js +2 -47
  241. package/dist/runtime/vllm/adapter.js.map +1 -1
  242. package/dist/runtime/vllm/memory.js +3 -16
  243. package/dist/runtime/vllm/memory.js.map +1 -1
  244. package/dist/runtime/vllm/settings.d.ts +7 -0
  245. package/dist/runtime/vllm/settings.js +2 -30
  246. package/dist/runtime/vllm/settings.js.map +1 -1
  247. package/dist/server/control/router.js +4 -3
  248. package/dist/server/control/router.js.map +1 -1
  249. package/dist/server/control/routes/media.d.ts +9 -0
  250. package/dist/server/control/routes/media.js +24 -0
  251. package/dist/server/control/routes/media.js.map +1 -0
  252. package/dist/server/control/routes/model-compatibility.d.ts +9 -0
  253. package/dist/server/control/routes/model-compatibility.js +31 -0
  254. package/dist/server/control/routes/model-compatibility.js.map +1 -0
  255. package/dist/server/control/types.d.ts +14 -20
  256. package/dist/server/control/types.js.map +1 -1
  257. package/dist/server/http.js +15 -2
  258. package/dist/server/http.js.map +1 -1
  259. package/dist/server/public/images-params.js +18 -1
  260. package/dist/server/public/images-params.js.map +1 -1
  261. package/dist/server/public/images.d.ts +11 -2
  262. package/dist/server/public/images.js +73 -9
  263. package/dist/server/public/images.js.map +1 -1
  264. package/dist/server/public/index.js +7 -1
  265. package/dist/server/public/index.js.map +1 -1
  266. package/dist/server/public/listing.js +1 -0
  267. package/dist/server/public/listing.js.map +1 -1
  268. package/dist/server/public/remote-media.d.ts +51 -0
  269. package/dist/server/public/remote-media.js +225 -0
  270. package/dist/server/public/remote-media.js.map +1 -0
  271. package/dist/server/public/responses.js +4 -2
  272. package/dist/server/public/responses.js.map +1 -1
  273. package/dist/server/public/static-assets.generated.js +1 -1
  274. package/dist/server/public/static-assets.generated.js.map +1 -1
  275. package/dist/server/public/trace.js +2 -0
  276. package/dist/server/public/trace.js.map +1 -1
  277. package/dist/server/public/types.d.ts +5 -1
  278. package/dist/server/public/videos-params.js +13 -3
  279. package/dist/server/public/videos-params.js.map +1 -1
  280. package/dist/server/public/videos.d.ts +1 -0
  281. package/dist/server/public/videos.js +21 -3
  282. package/dist/server/public/videos.js.map +1 -1
  283. package/dist/settings/schema/llamacpp-upstream.json +9 -0
  284. package/dist/settings/schema/sglang.json +251 -0
  285. package/dist/settings/schema.js +27 -1
  286. package/dist/settings/schema.js.map +1 -1
  287. package/dist/version.d.ts +1 -1
  288. package/dist/version.js +1 -1
  289. package/package.json +1 -5
  290. package/src/settings/schema/llamacpp-upstream.json +9 -0
  291. package/src/settings/schema/sglang.json +251 -0
  292. package/dist/backend/catalog/bundled-manifest-baseline.d.ts +0 -2
  293. package/dist/backend/catalog/bundled-manifest-baseline.js +0 -65
  294. package/dist/backend/catalog/bundled-manifest-baseline.js.map +0 -1
  295. package/dist/contracts/model-setup.d.ts +0 -115
  296. package/dist/contracts/model-setup.js +0 -33
  297. package/dist/contracts/model-setup.js.map +0 -1
  298. package/dist/core/model-setup/index.d.ts +0 -4
  299. package/dist/core/model-setup/index.js +0 -5
  300. package/dist/core/model-setup/index.js.map +0 -1
  301. package/dist/core/model-setup/plan.d.ts +0 -56
  302. package/dist/core/model-setup/plan.js +0 -158
  303. package/dist/core/model-setup/plan.js.map +0 -1
  304. package/dist/core/model-setup/service.d.ts +0 -92
  305. package/dist/core/model-setup/service.js +0 -329
  306. package/dist/core/model-setup/service.js.map +0 -1
  307. package/dist/core/model-setup/store.d.ts +0 -29
  308. package/dist/core/model-setup/store.js +0 -116
  309. package/dist/core/model-setup/store.js.map +0 -1
  310. package/dist/core/model-setup/wiring.d.ts +0 -59
  311. package/dist/core/model-setup/wiring.js +0 -132
  312. package/dist/core/model-setup/wiring.js.map +0 -1
  313. package/dist/core/tensorrt-llm.d.ts +0 -169
  314. package/dist/core/tensorrt-llm.js +0 -428
  315. package/dist/core/tensorrt-llm.js.map +0 -1
  316. package/dist/downloads/segmented.d.ts +0 -40
  317. package/dist/downloads/segmented.js +0 -170
  318. package/dist/downloads/segmented.js.map +0 -1
  319. package/dist/runtime/tensorrt-llm/delete.d.ts +0 -15
  320. package/dist/runtime/tensorrt-llm/delete.js +0 -60
  321. package/dist/runtime/tensorrt-llm/delete.js.map +0 -1
  322. package/dist/runtime/tensorrt-llm/guest-files.d.ts +0 -8
  323. package/dist/runtime/tensorrt-llm/guest-files.js +0 -49
  324. package/dist/runtime/tensorrt-llm/guest-files.js.map +0 -1
  325. package/dist/runtime/tensorrt-llm/location.d.ts +0 -20
  326. package/dist/runtime/tensorrt-llm/location.js +0 -48
  327. package/dist/runtime/tensorrt-llm/location.js.map +0 -1
  328. package/dist/runtime/tensorrt-llm/model-dir.d.ts +0 -38
  329. package/dist/runtime/tensorrt-llm/model-dir.js +0 -137
  330. package/dist/runtime/tensorrt-llm/model-dir.js.map +0 -1
  331. package/dist/runtime/tensorrt-llm/quant-format.d.ts +0 -65
  332. package/dist/runtime/tensorrt-llm/quant-format.js +0 -189
  333. package/dist/runtime/tensorrt-llm/quant-format.js.map +0 -1
  334. package/dist/runtime/tensorrt-llm/registry.d.ts +0 -26
  335. package/dist/runtime/tensorrt-llm/registry.js +0 -68
  336. package/dist/runtime/tensorrt-llm/registry.js.map +0 -1
  337. package/dist/runtime/tensorrt-llm/runtime.d.ts +0 -130
  338. package/dist/runtime/tensorrt-llm/runtime.js +0 -395
  339. package/dist/runtime/tensorrt-llm/runtime.js.map +0 -1
  340. package/dist/server/control/routes/model-setups.d.ts +0 -11
  341. package/dist/server/control/routes/model-setups.js +0 -55
  342. package/dist/server/control/routes/model-setups.js.map +0 -1
@@ -1,116 +0,0 @@
1
- /**
2
- * `<data>/atomic-core/prism-setups/<setup id>.json`: one record per model setup. One core owns a
3
- * data folder at a time (the instance lock), so the store serialises writers in memory rather than
4
- * with a lock file. A write never overwrites the only good copy: the previous record is kept as
5
- * `.bak` and read back when the newest is torn. `commit` applies only against the revision it was
6
- * computed from, so a late writer cannot step on a newer state.
7
- */
8
- import { mkdir, readFile, readdir, rename, rm, writeFile } from 'node:fs/promises';
9
- import { join } from 'node:path';
10
- import { AtomicCoreError, MODEL_SETUP_STAGES } from '../../contracts/index.js';
11
- const SAFE_ID = /^[A-Za-z0-9_-]{1,128}$/;
12
- /** Enough of a shape check to tell a record from a truncated write or a foreign file. */
13
- export function parseModelSetupRecord(text) {
14
- try {
15
- const raw = JSON.parse(text);
16
- if (typeof raw?.setup_id !== 'string' || !SAFE_ID.test(raw.setup_id))
17
- return null;
18
- if (typeof raw.request_id !== 'string')
19
- return null;
20
- if (!Number.isSafeInteger(raw.revision) || raw.revision < 0)
21
- return null;
22
- if (!MODEL_SETUP_STAGES.includes(raw.stage))
23
- return null;
24
- if (typeof raw.plan?.digest !== 'string' || typeof raw.plan.model_id !== 'string')
25
- return null;
26
- return raw;
27
- }
28
- catch {
29
- return null;
30
- }
31
- }
32
- export class ModelSetupStore {
33
- dir;
34
- tail = Promise.resolve();
35
- constructor(dir) {
36
- this.dir = dir;
37
- }
38
- /** Every record that can be read, oldest first. */
39
- async list() {
40
- const names = await readdir(this.dir).catch((err) => {
41
- if (err.code === 'ENOENT')
42
- return [];
43
- throw err;
44
- });
45
- const ids = new Set(names
46
- .filter((n) => n.endsWith('.json') || n.endsWith('.json.bak'))
47
- .map((n) => n.replace(/\.json(\.bak)?$/, '')));
48
- const records = [];
49
- for (const id of ids) {
50
- const record = SAFE_ID.test(id) ? await this.read(id) : null;
51
- if (record)
52
- records.push(record);
53
- }
54
- return records.sort((a, b) => a.created_at - b.created_at || a.setup_id.localeCompare(b.setup_id));
55
- }
56
- /** The record, its `.bak` when the newest write was torn, or `null`. */
57
- async read(setupId) {
58
- if (!SAFE_ID.test(setupId))
59
- return null;
60
- const path = this.path(setupId);
61
- for (const candidate of [path, `${path}.bak`]) {
62
- const text = await readFile(candidate, 'utf8').catch(() => undefined);
63
- const record = text === undefined ? null : parseModelSetupRecord(text);
64
- if (record)
65
- return record;
66
- }
67
- return null;
68
- }
69
- /** Write a new record; fails when one with that id exists. */
70
- async create(record) {
71
- return this.serialise(async () => {
72
- if (await this.read(record.setup_id)) {
73
- throw new AtomicCoreError('INVALID_ARGUMENT', 'A model setup with that id already exists.', record.setup_id);
74
- }
75
- await this.write(record);
76
- return record;
77
- });
78
- }
79
- /**
80
- * Replace the record when it is still at `expectedRevision`; the stored one gets
81
- * `expectedRevision + 1`. Returns `null` without writing when another writer moved it first.
82
- */
83
- async commit(next, expectedRevision) {
84
- return this.serialise(async () => {
85
- const current = await this.read(next.setup_id);
86
- if (!current || current.revision !== expectedRevision)
87
- return null;
88
- const stored = { ...next, revision: expectedRevision + 1 };
89
- await this.write(stored);
90
- return stored;
91
- });
92
- }
93
- path(setupId) {
94
- return join(this.dir, `${setupId}.json`);
95
- }
96
- async write(record) {
97
- await mkdir(this.dir, { recursive: true });
98
- const path = this.path(record.setup_id);
99
- const temporary = `${path}.tmp-${process.pid}`;
100
- await writeFile(temporary, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
101
- await rename(path, `${path}.bak`).catch((err) => {
102
- if (err.code !== 'ENOENT')
103
- throw err;
104
- });
105
- await rename(temporary, path).catch(async (err) => {
106
- await rm(temporary, { force: true }).catch(() => { });
107
- throw err;
108
- });
109
- }
110
- serialise(operation) {
111
- const result = this.tail.then(operation, operation);
112
- this.tail = result.catch(() => { });
113
- return result;
114
- }
115
- }
116
- //# sourceMappingURL=store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/core/model-setup/store.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- /**
2
- * Composition of the model setup for `create.ts`: the plan's facts (the verdict, the conf rule, the
3
- * Hub's file facts, the PrismML manifest, this machine, the packs on disk, free space) gathered from
4
- * the core's services, and the runner's I/O (engine install, downloads, header check, `model.yml`).
5
- */
6
- import type { DataLayout } from '../../config/index.js';
7
- import type { CoreEvents, LocalProviderId, ModelCompatibilityRequest, ModelCompatibilityResponse, ModelSetupPlan, ModelSetupPlanRequest, ProxyConfig } from '../../contracts/index.js';
8
- import type { PrismCatalogService, PrismOfferOptions, RocmHostProbe } from '../../backend/index.js';
9
- import type { DownloadItem } from '../../downloads/index.js';
10
- import type { HardwareFacts } from '../../hardware/index.js';
11
- import type { ModelCompatibilityService, ModelYmlInput } from '../../models/index.js';
12
- import type { PrismPackRef } from './plan.js';
13
- import { ModelSetupService } from './service.js';
14
- export interface ModelSetupWiringDeps {
15
- layout: DataLayout;
16
- compatibility: Pick<ModelCompatibilityService, 'check' | 'ruleFor'>;
17
- prismCatalog: Pick<PrismCatalogService, 'catalog'>;
18
- hardware: () => Promise<HardwareFacts>;
19
- offer: () => PrismOfferOptions;
20
- currentPack: () => Promise<PrismPackRef | null>;
21
- installEngine: (version: string, backend: string, options: {
22
- taskId: string;
23
- proxy: ProxyConfig | null;
24
- }) => Promise<unknown>;
25
- selectEngine: (versionBackend: string) => Promise<unknown>;
26
- downloader: {
27
- download: (taskId: string, items: DownloadItem[], options: {
28
- headers?: Record<string, string>;
29
- resume?: boolean;
30
- }) => Promise<unknown>;
31
- cancel: (taskId: string) => unknown;
32
- };
33
- register: (provider: LocalProviderId, modelId: string, yml: ModelYmlInput) => Promise<unknown>;
34
- /** A registered model's file: absolute path and the sha256 its `model.yml` records. */
35
- modelFile: (provider: LocalProviderId, modelId: string) => Promise<{
36
- modelPath: string;
37
- sha256?: string;
38
- }>;
39
- emit: <K extends keyof CoreEvents>(name: K, payload: CoreEvents[K]) => void;
40
- freeBytes: () => Promise<number | null>;
41
- /** The fetch for one request's proxy policy. */
42
- fetchFor: (proxy?: ProxyConfig | null) => typeof fetch;
43
- newId: () => string;
44
- /** Test hook `ATOMIC_HF_ENDPOINT`: where model files are downloaded from. */
45
- hfEndpoint?: string;
46
- env?: NodeJS.ProcessEnv;
47
- platform?: NodeJS.Platform;
48
- rocmProbe?: () => Promise<RocmHostProbe>;
49
- installedPacks?: () => Promise<PrismPackRef[]>;
50
- log?: (level: 'info' | 'warn', message: string) => void;
51
- }
52
- /** The plan for one request, from what the core knows now. */
53
- export declare function planFor(deps: ModelSetupWiringDeps, request: ModelSetupPlanRequest): Promise<ModelSetupPlan>;
54
- /**
55
- * `POST /models/compatibility`: a registered model by id (its file on disk), or a Hub file before
56
- * download (the conf rule, then — when asked — its header over HTTP ranges).
57
- */
58
- export declare function compatibilityFor(deps: Pick<ModelSetupWiringDeps, 'compatibility' | 'modelFile'>, request: ModelCompatibilityRequest): Promise<ModelCompatibilityResponse>;
59
- export declare function wireModelSetups(deps: ModelSetupWiringDeps): ModelSetupService;
@@ -1,132 +0,0 @@
1
- /**
2
- * Composition of the model setup for `create.ts`: the plan's facts (the verdict, the conf rule, the
3
- * Hub's file facts, the PrismML manifest, this machine, the packs on disk, free space) gathered from
4
- * the core's services, and the runner's I/O (engine install, downloads, header check, `model.yml`).
5
- */
6
- import { AtomicCoreError } from '../../contracts/index.js';
7
- import { getPrismSupportedFeatures, scanInstalledBackends } from '../../backend/index.js';
8
- import { fetchHfGgufFiles, hfToken } from '../../models/index.js';
9
- import { planModelSetup } from './plan.js';
10
- import { ModelSetupService } from './service.js';
11
- import { ModelSetupStore } from './store.js';
12
- function assertPlanRequest(request) {
13
- const ok = (v) => typeof v === 'string' && v.trim() !== '';
14
- if (!ok(request.repo) || !ok(request.file)) {
15
- throw new AtomicCoreError('INVALID_ARGUMENT', 'A model setup needs the Hugging Face repo and file.');
16
- }
17
- if (!/\.gguf$/i.test(request.file)) {
18
- throw new AtomicCoreError('INVALID_ARGUMENT', 'A model setup downloads a .gguf file.', request.file);
19
- }
20
- if (request.revision !== undefined && !ok(request.revision)) {
21
- throw new AtomicCoreError('INVALID_ARGUMENT', 'The revision must be a non-empty string.');
22
- }
23
- }
24
- /** The plan for one request, from what the core knows now. */
25
- export async function planFor(deps, request) {
26
- assertPlanRequest(request);
27
- const query = {
28
- repo: request.repo,
29
- file: request.file,
30
- ...(request.revision ? { revision: request.revision } : {}),
31
- };
32
- const [verdict, rule, catalog, facts, current, installedPacks, freeBytes] = await Promise.all([
33
- deps.compatibility.check({ ...query, inspectRemote: true }),
34
- deps.compatibility.ruleFor(query),
35
- deps.prismCatalog.catalog({ force: false, proxy: request.proxy ?? null }),
36
- deps.hardware(),
37
- deps.currentPack(),
38
- deps.installedPacks
39
- ? deps.installedPacks()
40
- : scanInstalledBackends(deps.layout, 'atomic-prism', deps.platform ?? process.platform).catch(() => []),
41
- deps.freeBytes().catch(() => null),
42
- ]);
43
- let hubFile;
44
- if (!rule) {
45
- const token = hfToken(deps.env ?? process.env);
46
- const files = await fetchHfGgufFiles(request.repo, {
47
- fetch: deps.fetchFor(request.proxy ?? null),
48
- ...(token ? { token } : {}),
49
- });
50
- const found = files.find((f) => f.filename === request.file);
51
- if (!found)
52
- throw new AtomicCoreError('INVALID_ARGUMENT', `"${request.file}" is not a GGUF file of ${request.repo}.`);
53
- hubFile = { size: found.size, ...(found.sha256 ? { sha256: found.sha256 } : {}) };
54
- }
55
- const rocm = facts.osType === 'linux' && deps.rocmProbe ? await deps.rocmProbe().catch(() => undefined) : undefined;
56
- return planModelSetup({
57
- request,
58
- verdict,
59
- ...(rule ? { rule } : {}),
60
- ...(hubFile ? { hubFile } : {}),
61
- manifest: catalog.manifest,
62
- offer: deps.offer(),
63
- host: {
64
- osType: facts.osType,
65
- arch: facts.arch,
66
- features: getPrismSupportedFeatures(facts.osType, facts.cpuExtensions ?? [], facts.gpus, rocm),
67
- gpus: facts.gpus,
68
- },
69
- installedPacks: installedPacks.map((p) => ({ version: p.version, backend: p.backend })),
70
- currentPack: current,
71
- freeBytes,
72
- });
73
- }
74
- /**
75
- * `POST /models/compatibility`: a registered model by id (its file on disk), or a Hub file before
76
- * download (the conf rule, then — when asked — its header over HTTP ranges).
77
- */
78
- export async function compatibilityFor(deps, request) {
79
- if (typeof request.model_id === 'string' && request.model_id !== '') {
80
- const target = await deps.modelFile(request.provider ?? 'llamacpp-upstream', request.model_id);
81
- return deps.compatibility.check({
82
- modelPath: target.modelPath,
83
- ...(target.sha256 ? { sha256: target.sha256 } : {}),
84
- });
85
- }
86
- if (typeof request.repo !== 'string' ||
87
- request.repo === '' ||
88
- typeof request.file !== 'string' ||
89
- request.file === '') {
90
- throw new AtomicCoreError('INVALID_ARGUMENT', 'A compatibility check needs model_id, or repo and file.');
91
- }
92
- return deps.compatibility.check({
93
- repo: request.repo,
94
- file: request.file,
95
- ...(request.revision ? { revision: request.revision } : {}),
96
- ...(request.sha256 ? { sha256: request.sha256 } : {}),
97
- inspectRemote: request.inspect_remote === true,
98
- });
99
- }
100
- export function wireModelSetups(deps) {
101
- return new ModelSetupService({
102
- layout: deps.layout,
103
- store: new ModelSetupStore(deps.layout.core.prismSetupsDir),
104
- plan: (request) => planFor(deps, request),
105
- installEngine: async (engine, taskId, proxy) => {
106
- await deps.installEngine(engine.version, engine.backend, { taskId, proxy });
107
- },
108
- selectEngine: async (engine) => {
109
- await deps.selectEngine(`${engine.version}/${engine.backend}`);
110
- },
111
- download: async (taskId, items) => {
112
- const token = hfToken(deps.env ?? process.env);
113
- await deps.downloader.download(taskId, items, {
114
- resume: true,
115
- ...(token ? { headers: { authorization: `Bearer ${token}` } } : {}),
116
- });
117
- },
118
- cancelDownload: (taskId) => {
119
- deps.downloader.cancel(taskId);
120
- },
121
- verify: (modelPath) => deps.compatibility.check({ modelPath }),
122
- register: async (modelId, yml) => {
123
- await deps.register(typeof yml['atomic_runtime'] === 'object' ? 'atomic-prism' : 'llamacpp-upstream', modelId, yml);
124
- },
125
- emit: (record) => deps.emit('model-setup:changed', record),
126
- imported: (event) => deps.emit('model:imported', event),
127
- newId: deps.newId,
128
- ...(deps.hfEndpoint ? { hfEndpoint: deps.hfEndpoint } : {}),
129
- ...(deps.log ? { log: deps.log } : {}),
130
- });
131
- }
132
- //# sourceMappingURL=wiring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../../src/core/model-setup/wiring.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAW1D,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAIzF,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAwC5C,SAAS,iBAAiB,CAAC,OAA8B;IACvD,MAAM,EAAE,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;IACnE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,qDAAqD,CAAC,CAAA;IACtG,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,uCAAuC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACtG,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,0CAA0C,CAAC,CAAA;IAC3F,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAA0B,EAC1B,OAA8B;IAE9B,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC1B,MAAM,KAAK,GAAG;QACZ,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAA;IACD,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5F,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QACzE,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,cAAc;YACjB,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;YACvB,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACzG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KACnC,CAAC,CAAA;IACF,IAAI,OAAsD,CAAA;IAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE;YACjD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;YAC3C,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5B,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5D,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,IAAI,OAAO,CAAC,IAAI,2BAA2B,OAAO,CAAC,IAAI,GAAG,CAC3D,CAAA;QACH,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;IACnF,CAAC;IACD,MAAM,IAAI,GACR,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACxG,OAAO,cAAc,CAAC;QACpB,OAAO;QACP,OAAO;QACP,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,yBAAyB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;YAC9F,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB;QACD,cAAc,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,WAAW,EAAE,OAAO;QACpB,SAAS;KACV,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAA+D,EAC/D,OAAkC;IAElC,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC9F,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAC9B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC,CAAA;IACJ,CAAC;IACD,IACE,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAChC,OAAO,CAAC,IAAI,KAAK,EAAE;QACnB,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAChC,OAAO,CAAC,IAAI,KAAK,EAAE,EACnB,CAAC;QACD,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,yDAAyD,CAAC,CAAA;IAC1G,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,aAAa,EAAE,OAAO,CAAC,cAAc,KAAK,IAAI;KAC/C,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAA0B;IACxD,OAAO,IAAI,iBAAiB,CAAC;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3D,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;QACzC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;YAC7C,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7E,CAAC;QACD,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QAChE,CAAC;QACD,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;YAC9C,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;gBAC5C,MAAM,EAAE,IAAI;gBACZ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpE,CAAC,CAAA;QACJ,CAAC;QACD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;QACD,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;QAC9D,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAC/B,MAAM,IAAI,CAAC,QAAQ,CACjB,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,EAChF,OAAO,EACP,GAAG,CACJ,CAAA;QACH,CAAC;QACD,IAAI,EAAE,CAAC,MAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC;QACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;QACvD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvC,CAAC,CAAA;AACJ,CAAC"}
@@ -1,169 +0,0 @@
1
- import type { CoreEvents } from '../contracts/index.js';
2
- import type { ModelCompatibility, TensorrtLlmModelDeletion, TensorrtLlmModelLocation } from '../contracts/index.js';
3
- import type { DataLayout, ManagedScopePaths } from '../config/index.js';
4
- import type { ContainerUser, DockerExec, ManagedContainers, ManagedContainersHandle, ReconcileLogger } from '../runtime/container/index.js';
5
- import type { InstallationStore, LinuxHost, RuntimeDescriptorProvider, UnloadEngineSessions, WindowsEnvironmentRecord, WindowsHost } from '../runtime/environment/index.js';
6
- import { createWslManagedDeployment } from '../runtime/managed-text/index.js';
7
- import type { GpuClaimHook, LocalRuntime } from '../runtime/shared/index.js';
8
- import { TensorrtLlmModelRegistry, TensorrtLlmRuntime } from '../runtime/tensorrt-llm/index.js';
9
- import type { ModelFileOps } from '../runtime/tensorrt-llm/index.js';
10
- import { type DistributionKeeper, type GuestMount, type Wsl, type WslDistributionTransport } from '../runtime/wsl/index.js';
11
- import type { AtomicCore } from './atomic-core.js';
12
- import type { ResidencyOccupant } from './gpu/index.js';
13
- import type { CoreLogger } from './types.js';
14
- /**
15
- * What the Windows `tensorrt-llm` wiring reaches Atomic Chat's WSL distribution through (change
16
- * `add-tensorrt-llm-windows`, task 2.8), built by the managed environment on Windows: the environment
17
- * record (which distribution, if any yet), the WSL transport, the one keeper per distribution, this
18
- * scope's `scope_key`, and the Windows machine (its `.wslconfig`, its volumes).
19
- */
20
- export interface WindowsTensorrtLlmContext {
21
- records: {
22
- read(): Promise<WindowsEnvironmentRecord | null>;
23
- };
24
- wsl: Wsl;
25
- keeper: (distribution: string) => DistributionKeeper;
26
- scopeKey: () => Promise<string>;
27
- host: WindowsHost;
28
- /** How core reaches the guest's files; `\\wsl.localhost` unless the managed test hook says otherwise. */
29
- mount?: GuestMount;
30
- }
31
- export interface WireTensorrtLlmOptions {
32
- /** Injected, never `process.platform` read here; the managed environment's (the test host is Linux). */
33
- platform: NodeJS.Platform;
34
- /** `process.arch`: which of the descriptor's images this host runs. */
35
- arch: string;
36
- layout: DataLayout;
37
- instanceId: string;
38
- scope: string;
39
- descriptors: Pick<RuntimeDescriptorProvider, 'forInstallation'>;
40
- /** The setup operation's installation records, under the shared per-user root. */
41
- installations: Pick<InstallationStore, 'list'>;
42
- /** The one Docker executor of this core (`wireManagedEnvironment`'s handle). */
43
- containers: Pick<ManagedContainersHandle, 'resolve'>;
44
- /** The machine the managed environment probes: `nvidia-smi` runs through it. */
45
- host: Pick<LinuxHost, 'probeDeps'>;
46
- /** The public server's live trusted hosts: the same array, so a restart reaches every gateway. */
47
- trustedHosts: string[];
48
- settings: () => Record<string, unknown>;
49
- emit: <K extends keyof CoreEvents>(name: K, payload: CoreEvents[K]) => void;
50
- log: CoreLogger;
51
- /** Core's GPU residency (task 2.15): the provider's `stopping-previous` stage. */
52
- claimGpu?: GpuClaimHook;
53
- /**
54
- * The uid:gid this core runs as (`process.getuid`/`getgid`, read by `create.ts`, never here): every
55
- * model container runs as it, so the engine cache stays removable (final review I-1). Null where the
56
- * platform has no numeric user, which leaves the image's own user.
57
- */
58
- containerUser: ContainerUser | null;
59
- /** Windows x64 (change `add-tensorrt-llm-windows`): the WSL context; without it Windows offers nothing. */
60
- windows?: WindowsTensorrtLlmContext;
61
- }
62
- /** The provider, or null where it is not offered: everywhere but Linux and Windows x64. */
63
- export declare function wireTensorrtLlm(options: WireTensorrtLlmOptions): TensorrtLlmRuntime | null;
64
- /**
65
- * The WSL deployment of one guest (task 2.7): its mounts through the context's mount, the engine probed
66
- * inside the guest as root, and the forwarding error built from `.wslconfig` as it reads at that moment.
67
- */
68
- export declare function windowsDeployment(context: Pick<WindowsTensorrtLlmContext, 'host' | 'mount'>, guest: {
69
- record: WindowsEnvironmentRecord;
70
- transport: WslDistributionTransport;
71
- }, exec: DockerExec): ReturnType<typeof createWslManagedDeployment>;
72
- /** The retried reconcile's executor where the wired one already is the guest's (Windows). */
73
- export declare const wiredExec: (wired: {
74
- exec: DockerExec;
75
- }) => DockerExec;
76
- /**
77
- * `GET /models/tensorrt-llm/location` (change `add-tensorrt-llm-windows`, task 2.8): `<data>/tensorrt-llm/models`
78
- * on Linux; the scope's folder in the WSL guest on Windows (`MANAGED_ADAPTER_UNAVAILABLE` before the import).
79
- */
80
- export declare function tensorrtLlmModelLocation(platform: NodeJS.Platform, layout: DataLayout, windows?: WindowsTensorrtLlmContext): () => Promise<TensorrtLlmModelLocation>;
81
- /** The `tensorrt-llm` model registry: the data folder's root on Linux, the guest root (once it exists) on Windows. */
82
- export declare function tensorrtLlmModelRegistry(platform: NodeJS.Platform, layout: DataLayout, windows?: WindowsTensorrtLlmContext): TensorrtLlmModelRegistry;
83
- /** `windowsModelFiles` bound to one context and layout: the deleter's `windowsFiles` on Windows. */
84
- export declare function windowsModelFilesFor(windows: WindowsTensorrtLlmContext, layout: DataLayout): () => Promise<{
85
- paths: ManagedScopePaths;
86
- files: ModelFileOps;
87
- }>;
88
- /** Windows: where a model's files and caches are, and how to size and remove them (in the guest). */
89
- export declare function windowsModelFiles(windows: WindowsTensorrtLlmContext, layout: DataLayout): Promise<{
90
- paths: ManagedScopePaths;
91
- files: ModelFileOps;
92
- }>;
93
- export interface WireTensorrtLlmModelCheckOptions {
94
- descriptors: Pick<RuntimeDescriptorProvider, 'forInstallation' | 'cachedForNewSetup'>;
95
- /** The setup operation's installation records, under the shared per-user root. */
96
- installations: Pick<InstallationStore, 'list'>;
97
- /** The machine `nvidia-smi`/`/proc/meminfo` are read through; never asked about Docker. */
98
- host: Pick<LinuxHost, 'probeDeps'>;
99
- settings: () => Record<string, unknown>;
100
- /** Windows x64 (change `add-tensorrt-llm-windows`): the cards and the VM's memory are read in the guest. */
101
- windows?: WindowsTensorrtLlmContext;
102
- /** `process.arch`; x64 unless told. */
103
- arch?: string;
104
- }
105
- /**
106
- * `POST /models/tensorrt-llm/check` (task 2.16): `null` off Linux, where the provider is not offered
107
- * at all. Available even when the engine is not installed yet — the check falls back to the latest
108
- * cached descriptor itself (`check.ts`) — and never asks Docker anything, unlike `wireTensorrtLlm`'s
109
- * own `hostFacts` above.
110
- */
111
- export declare function wireTensorrtLlmModelCheck(platform: NodeJS.Platform, options: WireTensorrtLlmModelCheckOptions): ((body: unknown) => Promise<ModelCompatibility>) | null;
112
- /**
113
- * What GPU residency must see of the containers a previous core left (task 2.15; carry-forward from
114
- * 2.12/2.14): startup reconcile could not confirm them stopped — the stop went unconfirmed, a docker
115
- * call failed, or its time budget ran out — so they may still be running and holding a GPU. Which one
116
- * is not recorded, so each holds every card, as `stop-unconfirmed`, under its engine id and container
117
- * id, with the remedy a refusal names. Evicting one runs the reconcile again, bounded like the startup
118
- * one (a short deadline per docker call, a short `--time`, a total budget), over this scope's journal
119
- * only — this instance's own records are never touched — and it is released only once Docker confirms
120
- * it gone.
121
- */
122
- export declare function leftoverContainers(options: {
123
- containers: Pick<ManagedContainersHandle, 'current'>;
124
- instanceId: string;
125
- log: ReconcileLogger;
126
- /** The core's own empty `DOCKER_CONFIG` (`layout.managed.dockerConfigDir`), as every docker call uses. */
127
- dockerConfigDir: string;
128
- /** Test seams: the executor of a retried reconcile (default: the startup deadline per call) and its budget. */
129
- exec?: (wired: ManagedContainers) => DockerExec;
130
- budgetMs?: number;
131
- }): () => ResidencyOccupant[];
132
- /**
133
- * The managed environment's `unloadEngineSessions` (spec "Удаление при загруженной модели"): before
134
- * a removal touches the engine's image, loads of `tensorrt-llm` are held off (`holdOffLoads`) and
135
- * every model holding a card is unloaded with its container's stop confirmed — through the facade's
136
- * own `unload`, as a client's unload or GPU residency would, so each model's cross-process claim is
137
- * released and a load still pending is cancelled rather than queued behind (final review M-1). The
138
- * hold lasts until the removal calls `release`. An unconfirmed stop rejects with
139
- * `MANAGED_STOP_UNCONFIRMED`, which fails the removal with nothing removed, and lifts the hold at
140
- * once. `runtime` and `sessions` are read at removal time: the provider is registered after the
141
- * environment is wired, and the facade after both.
142
- */
143
- export declare function tensorrtLlmSessionUnloader(runtime: () => LocalRuntime | undefined, sessions: () => Pick<AtomicCore, 'cancelLoad' | 'unload'>): UnloadEngineSessions;
144
- export interface TensorrtLlmModelDeleterOptions {
145
- /** Read at deletion time, like `tensorrtLlmSessionUnloader`'s: the provider is registered late. */
146
- runtime: () => LocalRuntime | undefined;
147
- sessions: () => Pick<AtomicCore, 'cancelLoad' | 'unload'>;
148
- registry: Pick<TensorrtLlmModelRegistry, 'list'>;
149
- /** This scope's managed paths: where the model's engine caches live. */
150
- paths: ManagedScopePaths;
151
- /**
152
- * Windows (change `add-tensorrt-llm-windows`, task 2.8): the guest's paths and its file commands,
153
- * read at deletion time — the model and its caches are sized and removed in the guest.
154
- */
155
- windowsFiles?: () => Promise<{
156
- paths: ManagedScopePaths;
157
- files: ModelFileOps;
158
- }>;
159
- }
160
- /**
161
- * `DELETE /models/tensorrt-llm/:id` (task 2.24, design D12a, spec `tensorrt-llm-models` "Модель
162
- * удаляется через core"). The id must be one the registry lists — exactly, never percent-decoded or
163
- * resolved as a path — else `MODEL_NOT_FOUND`: a client's wrong id is an error, not a success. Loads
164
- * of that model are held off for the whole deletion; a load in flight is cancelled and the model
165
- * unloaded through the facade, as a client's unload would be, so its cross-process claim is released.
166
- * Only once Docker confirmed the stop are the files touched; an unconfirmed stop rejects with
167
- * `MANAGED_STOP_UNCONFIRMED` and removes nothing.
168
- */
169
- export declare function tensorrtLlmModelDeleter(options: TensorrtLlmModelDeleterOptions): (modelId: string) => Promise<TensorrtLlmModelDeletion>;