@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,395 +0,0 @@
1
- /**
2
- * The `tensorrt-llm` provider (task 2.14, spec `tensorrt-llm-runtime`): a `LocalRuntime` on the
3
- * engine-neutral managed-text lifecycle (`../managed-text/`), registered by core only on Linux. What
4
- * this file adds on top of the lifecycle is the provider's own part of a load:
5
- *
6
- * - refusing it before any container exists — no Docker, no `ready` installation
7
- * (`MANAGED_ADAPTER_UNAVAILABLE`), settings the adapter rejects (`INVALID_ARGUMENT`), a model that
8
- * is not installed, a host with no NVIDIA card, an embedding request;
9
- * - the card: the saved `gpu_id` when the probe still finds it, otherwise the one with the most free
10
- * memory, ties by the most total memory (`selectLaunchGpu`, the same rule `POST /check` uses,
11
- * design D12b), with the replacement reported on every load event;
12
- * - one session at a time, and one resident model per card: the lifecycle's `stopping-previous`
13
- * stage asks core's GPU residency (`claimGpu`, task 2.15) to stop every other `tensorrt-llm`
14
- * model and every other engine on the chosen card, each with a confirmed exit, before this one's
15
- * container is created — or, with no residency wired, stops the other `tensorrt-llm` models itself;
16
- * - what a session can do (`routePolicy`, `capabilities`), read off the pinned descriptor's
17
- * `model_families` entry for the model's architecture — never guessed (design D9);
18
- * - never growing a context or recreating a session: a restart of a multi-minute container in the
19
- * middle of a conversation is worse than an honest `context_length_exceeded` (design D9);
20
- * - the pre-launch check (task 2.16), split in two (round 1, finding 1 (Critical)): before
21
- * `stopPrevious` runs, `verifyModelFilesAndCompatibility` (`prelaunch.ts`) re-verifies every file
22
- * `model.yml` recorded present on disk at its size, and recomputes architecture/format/compute-
23
- * capability against `config.json`/`hf_quant_config.json` as they sit in the model's directory
24
- * right now — never memory, which the model this load is about to replace may still be holding on
25
- * the very same card. Memory is checked after `stopPrevious`, through the lifecycle's own
26
- * `beforeCreate` hook (`checkMemoryBeforeCreate` below), which re-probes the chosen card's free
27
- * memory once whatever `stopPrevious` freed is actually free;
28
- * - `family` (tools/structured output/route policy) is read off the descriptor's `model_families`
29
- * entry for the *verified* `config.json` architecture (finding 5) — `model.yml`'s own copy of the
30
- * architecture is never consulted for this, since the pre-launch check may have found it stale.
31
- *
32
- * Everything that touches the machine arrives injected: the lifecycle over the core's one Docker
33
- * executor, the ready installation, the host facts, the model lookup and the stored settings.
34
- */
35
- import { AtomicCoreError } from '../../contracts/index.js';
36
- import { throwIfLoadCancelled } from '../shared/index.js';
37
- import { tensorrtLlmAdapter } from './adapter.js';
38
- import { checkModelMemory, selectLaunchGpu } from './compatibility.js';
39
- import { verifyModelFilesAndCompatibility } from './prelaunch.js';
40
- import { tensorrtLlmRoutePolicy } from './route-policy.js';
41
- import { tensorrtLlmSettings } from './settings.js';
42
- const NONE = {
43
- tools: false,
44
- reasoning: false,
45
- structured_output: false,
46
- vision: false,
47
- embeddings: false,
48
- responses: false,
49
- };
50
- /** `capabilities()`'s own lookup, off `model.yml`'s architecture: no disk verification runs for it. */
51
- function familyOf(ready, model) {
52
- if (model.architecture === null)
53
- return null;
54
- return ready.descriptor.model_families[model.architecture] ?? null;
55
- }
56
- /**
57
- * The load path's own lookup (finding 5): off the *verified* `config.json` architecture
58
- * (`ResolvedCheckpoint.architectures[0]`, from the pre-launch check), never `model.yml`'s — the two
59
- * can disagree (a stale `model.yml`, or none at all), and only the one the compatibility check just
60
- * confirmed against the descriptor's `supported_architectures` is trustworthy enough to gate what a
61
- * session is allowed to do.
62
- */
63
- function familyFromResolved(ready, resolved) {
64
- const architecture = resolved.architectures[0];
65
- return architecture === undefined ? null : (ready.descriptor.model_families[architecture] ?? null);
66
- }
67
- export class TensorrtLlmRuntime {
68
- deps;
69
- current = null;
70
- closed = false;
71
- /** Removals of the engine in progress: while any holds loads off, every load is refused (M-1). */
72
- loadHolds = 0;
73
- /** Deletions of one model in progress (task 2.24): each refuses loads of that model only, counted. */
74
- modelHolds = new Map();
75
- /** Generations whose GPU claim succeeded: a load only holds its card from then on. */
76
- claimed = new Set();
77
- /** What each loaded session can do, keyed by model and pinned to the generation it was computed for. */
78
- sessionCapabilities = new Map();
79
- constructor(deps) {
80
- this.deps = deps;
81
- }
82
- list() {
83
- return this.current?.list() ?? [];
84
- }
85
- findSession(modelId) {
86
- return this.current?.findSession(modelId);
87
- }
88
- getLoadedModels() {
89
- return this.list().map((session) => session.model_id);
90
- }
91
- isLoading(modelId) {
92
- return this.current?.isLoading(modelId) ?? false;
93
- }
94
- async load(modelId, opts = {}) {
95
- const { signal } = opts;
96
- this.assertOpen();
97
- this.assertNotHeldOff(modelId);
98
- throwIfLoadCancelled(signal);
99
- if (opts.isEmbedding) {
100
- throw new AtomicCoreError('INVALID_ARGUMENT', 'tensorrt-llm models do not serve embeddings.', modelId);
101
- }
102
- // Validated first, before anything is asked of the machine (spec: schema validation before start).
103
- const settings = tensorrtLlmSettings(this.deps.settings(), opts.overrides);
104
- const lifecycle = await this.deps.lifecycle().catch((cause) => {
105
- throw new AtomicCoreError('MANAGED_ADAPTER_UNAVAILABLE', 'The managed container runtime failed to initialise, so tensorrt-llm cannot run models.', cause instanceof Error ? cause.message : String(cause));
106
- });
107
- if (lifecycle === null) {
108
- throw new AtomicCoreError('MANAGED_ADAPTER_UNAVAILABLE', 'Docker is not installed on this machine, so tensorrt-llm cannot run models.');
109
- }
110
- // Kept from the first load on: what `list`, `unload` and `shutdown` act on. Nothing is loaded
111
- // before that, so there is nothing for them to find earlier either.
112
- this.current = lifecycle;
113
- const ready = await this.deps.readyInstallation();
114
- throwIfLoadCancelled(signal);
115
- const model = await this.deps.model(modelId);
116
- const facts = await this.deps.hostFacts();
117
- throwIfLoadCancelled(signal);
118
- this.assertOpen();
119
- const gpu = selectLaunchGpu(facts.gpus, facts.memory, settings.gpu_id ?? undefined);
120
- if (gpu === null) {
121
- throw new AtomicCoreError('MANAGED_PREREQUISITE_BLOCKED', 'No NVIDIA GPU was found on this machine, so tensorrt-llm cannot load a model.');
122
- }
123
- const substituted = settings.gpu_id !== null && gpu.gpu_id !== settings.gpu_id
124
- ? { requested_gpu_id: settings.gpu_id, gpu_id: gpu.gpu_id }
125
- : undefined;
126
- const memory = {
127
- contextLength: settings.context_length,
128
- kvCacheFreeGpuMemoryFraction: settings.kv_cache_free_gpu_memory_fraction,
129
- };
130
- // Pre-launch check, phase 1 (task 2.16, spec "Проверка файлов при загрузке"; round 1, finding 1
131
- // (Critical)): every file model.yml recorded is still on disk at its size, and architecture/
132
- // format/compute-capability are recomputed against config.json/hf_quant_config.json as they sit
133
- // on disk right now — never model.yml's word for it, and never memory, which the model this load
134
- // is about to replace may still be holding on this very card. No container exists yet; a failure
135
- // here never creates one.
136
- const resolved = await verifyModelFilesAndCompatibility(model, ready.descriptor, facts.gpus, facts.memory, { gpuId: gpu.gpu_id, memory });
137
- throwIfLoadCancelled(signal);
138
- this.assertOpen();
139
- // family from the *verified* config.json architecture, never model.yml's own (finding 5).
140
- const family = familyFromResolved(ready, resolved);
141
- const { descriptor } = ready;
142
- // Again right before the lifecycle registers this load (synchronously, inside `lifecycle.load`):
143
- // a removal that began while this load was probing the host must not find it past the check.
144
- this.assertNotHeldOff(modelId);
145
- const session = await lifecycle.load({
146
- modelId,
147
- modelPath: model.dir,
148
- weightBytes: model.weightBytes,
149
- installation: {
150
- descriptor_id: descriptor.descriptor_id,
151
- engine_id: descriptor.engine_id,
152
- adapter_id: descriptor.adapter_id,
153
- adapter_contract_version: descriptor.adapter_contract_version,
154
- image: ready.image,
155
- },
156
- family,
157
- gpuUuid: gpu.gpu_id,
158
- // No VRAM of its own (design D13): the launch bounds the KV cache by tokens, as the memory
159
- // check (`checkModelMemory`, same rule) reserved for it.
160
- unifiedMemory: gpu.total_vram_bytes === null,
161
- gpuTotalVramBytes: gpu.total_vram_bytes,
162
- gpuComputeCapability: gpu.compute_capability,
163
- selinux: facts.selinux,
164
- settings,
165
- // Always passed, evaluated when the stage runs: a second model that arrived a moment earlier
166
- // is still found, so two loads racing each other can never both end up running.
167
- stopPrevious: (stageSignal, generation) => this.stopOthers(lifecycle, { modelId, generation, gpuId: gpu.gpu_id }, stageSignal),
168
- // Pre-launch check, phase 2 (finding 1): the memory line alone, re-probed fresh once
169
- // stopPrevious (above) has actually freed the card — never the snapshot `facts` took before
170
- // eviction, which is why this is a lifecycle hook and not just more code in this function.
171
- beforeCreate: () => this.checkMemoryBeforeCreate(gpu.gpu_id, descriptor, resolved, memory),
172
- ...(opts.timeoutSecs !== undefined ? { timeoutMs: opts.timeoutSecs * 1000 } : {}),
173
- ...(signal !== undefined ? { signal } : {}),
174
- ...(substituted !== undefined ? { gpuSubstituted: substituted } : {}),
175
- });
176
- this.sessionCapabilities.set(modelId, {
177
- generation: session.generation ?? '',
178
- capabilities: tensorrtLlmAdapter.capabilities({ settings, family }),
179
- limits: { contextLength: settings.context_length, maxOutputTokens: settings.max_output_tokens },
180
- });
181
- return session;
182
- }
183
- /**
184
- * Throws `MANAGED_STOP_UNCONFIRMED` when Docker will not confirm the stop: the card stays reserved
185
- * and the caller is told, rather than handed a success that is not one.
186
- */
187
- async unload(modelId) {
188
- // Read before the stop: an id this provider never had answers `was_loaded: false` (spec
189
- // `tensorrt-llm-runtime`), so a client's wrong id never reads as a stopped model (G-app-4).
190
- const wasLoaded = this.residentModels().includes(modelId);
191
- await this.current?.unload(modelId);
192
- this.sessionCapabilities.delete(modelId);
193
- return { success: true, was_loaded: wasLoaded };
194
- }
195
- /**
196
- * Every model holding a card through this provider — loading, ready, stopping, or stopped without
197
- * Docker's confirmation: what a removal of the engine must unload first (task 2.6), through core's
198
- * own unload so each model's cross-process claim is released with it (final review M-1).
199
- */
200
- residentModels() {
201
- return [...new Set((this.current?.reservations() ?? []).map((r) => r.model_id))];
202
- }
203
- /**
204
- * Refuses every load with `MANAGED_OPERATION_CONFLICT` until the returned release is called (final
205
- * review M-1): a removal of the engine holds loads off for as long as it runs, so no load creates
206
- * a container on an installation being removed. Holds nest; each release counts once.
207
- */
208
- holdOffLoads() {
209
- this.loadHolds += 1;
210
- let released = false;
211
- return () => {
212
- if (released)
213
- return;
214
- released = true;
215
- this.loadHolds -= 1;
216
- };
217
- }
218
- /**
219
- * Refuses loads of this one model with `MANAGED_OPERATION_CONFLICT` until the returned release is
220
- * called (task 2.24): a deletion holds them off from before it stops the model until its files are
221
- * gone, so no load mounts a folder being removed. Other models load as usual. Holds nest.
222
- */
223
- holdOffModel(modelId) {
224
- this.modelHolds.set(modelId, (this.modelHolds.get(modelId) ?? 0) + 1);
225
- let released = false;
226
- return () => {
227
- if (released)
228
- return;
229
- released = true;
230
- const left = (this.modelHolds.get(modelId) ?? 1) - 1;
231
- if (left > 0)
232
- this.modelHolds.set(modelId, left);
233
- else
234
- this.modelHolds.delete(modelId);
235
- };
236
- }
237
- /** Never: the context is fixed when the container starts (design D9, spec "без авто-роста"). */
238
- autoIncreaseCtx(_modelId) {
239
- return Promise.resolve({ ok: false, reason: 'unsupported' });
240
- }
241
- recreateSession(modelId) {
242
- return Promise.reject(new AtomicCoreError('INVALID_ARGUMENT', 'A tensorrt-llm session is not recreated in place; unload the model and load it again.', modelId));
243
- }
244
- async shutdown() {
245
- this.closed = true;
246
- await this.current?.shutdown();
247
- this.sessionCapabilities.clear();
248
- }
249
- routePolicy(modelId) {
250
- const session = this.findSession(modelId);
251
- if (session === undefined)
252
- return undefined;
253
- const known = this.sessionCapabilities.get(modelId);
254
- // A session with no record of what it can do is treated as able to do nothing optional.
255
- if (known === undefined || known.generation !== session.generation)
256
- return tensorrtLlmRoutePolicy(NONE);
257
- return tensorrtLlmRoutePolicy(known.capabilities, known.limits);
258
- }
259
- /** Answers rather than throws, like every provider's capabilities: all false while nothing resolves. */
260
- async capabilities(modelId) {
261
- const base = {
262
- modelId,
263
- mmprojExists: false,
264
- isEmbedding: false,
265
- isDecision: false,
266
- audio: false,
267
- gemmaMtp: false,
268
- dflash: false,
269
- dflashDrafts: [],
270
- ...NONE,
271
- architecture: null,
272
- };
273
- try {
274
- const [ready, model] = await Promise.all([this.deps.readyInstallation(), this.deps.model(modelId)]);
275
- const settings = tensorrtLlmSettings({});
276
- return {
277
- ...base,
278
- ...tensorrtLlmAdapter.capabilities({ settings, family: familyOf(ready, model) }),
279
- architecture: model.architecture,
280
- };
281
- }
282
- catch {
283
- return base;
284
- }
285
- }
286
- async logs(modelId) {
287
- const lifecycle = this.current;
288
- const session = lifecycle?.findSession(modelId);
289
- if (lifecycle && session) {
290
- return {
291
- model_id: modelId,
292
- source: 'session',
293
- generation: session.generation ?? '',
294
- log_tail: (await lifecycle.logs(modelId)) ?? '',
295
- };
296
- }
297
- const attempt = lifecycle?.lastAttempt(modelId);
298
- if (attempt === undefined)
299
- return { model_id: modelId, source: null, log_tail: '' };
300
- return {
301
- model_id: modelId,
302
- source: 'last-attempt',
303
- generation: attempt.generation,
304
- log_tail: attempt.log_tail,
305
- error: attempt.error,
306
- at: attempt.at,
307
- };
308
- }
309
- assertOpen() {
310
- if (this.closed) {
311
- throw new AtomicCoreError('CORE_NOT_RUNNING', 'The tensorrt-llm provider is shutting down.');
312
- }
313
- }
314
- assertNotHeldOff(modelId) {
315
- if (this.loadHolds > 0) {
316
- throw new AtomicCoreError('MANAGED_OPERATION_CONFLICT', 'The TensorRT-LLM engine is being removed; load the model once the removal has finished.', modelId);
317
- }
318
- if (this.modelHolds.has(modelId)) {
319
- throw new AtomicCoreError('MANAGED_OPERATION_CONFLICT', 'The model is being deleted.', modelId);
320
- }
321
- }
322
- /**
323
- * The card each container holds, for core's residency rule: every model past its claim — loading,
324
- * ready, stopping, or stopped without Docker's confirmation, which still holds the card.
325
- */
326
- gpuOccupancy() {
327
- return (this.current?.reservations() ?? [])
328
- .filter((r) => r.state !== 'loading' || this.claimed.has(r.generation))
329
- .map((r) => ({
330
- model_id: r.model_id,
331
- cards: [r.gpu_uuid],
332
- auxiliary: false,
333
- state: r.state,
334
- ...(r.state === 'stop-unconfirmed' && r.container_id !== null
335
- ? {
336
- remedy: `Loading again retries the stop; if Docker keeps failing, restart Docker or remove ` +
337
- `container ${r.container_id} (docker rm -f ${r.container_id}).`,
338
- }
339
- : {}),
340
- }));
341
- }
342
- /**
343
- * The `stopping-previous` stage. With core's residency: its claim on `gpuId`, which stops every other
344
- * `tensorrt-llm` model (one session at a time) and every other engine on that card, each with a
345
- * confirmed exit, and refuses with `GPU_BUSY` while one will not stop. Without it: every other
346
- * `tensorrt-llm` model, loading or loaded, stopped with confirmation. Either way the load holds its
347
- * card from then on — with residency, from the moment core grants the claim, inside core's turn.
348
- */
349
- async stopOthers(lifecycle, load, signal) {
350
- // Generations whose reservation is gone are forgotten here, never while answering a read.
351
- const live = new Set(lifecycle.reservations().map((r) => r.generation));
352
- for (const generation of this.claimed)
353
- if (!live.has(generation))
354
- this.claimed.delete(generation);
355
- const hold = () => {
356
- this.claimed.add(load.generation);
357
- };
358
- if (this.deps.claimGpu) {
359
- const claim = {
360
- model_id: load.modelId,
361
- cards: [load.gpuId],
362
- auxiliary: false,
363
- soleSessionOfProvider: true,
364
- };
365
- await this.deps.claimGpu(claim, signal, hold);
366
- }
367
- else {
368
- const others = new Set(lifecycle.reservations().map((r) => r.model_id));
369
- others.delete(load.modelId);
370
- for (const other of others)
371
- await this.unload(other);
372
- }
373
- hold();
374
- }
375
- /**
376
- * The lifecycle's `beforeCreate` hook (task 2.16w round 1, finding 1 (Critical)): the pre-launch
377
- * check's memory line, re-probed fresh right before the container is actually created — after
378
- * `stopPrevious` has run, so a model switch on a single-GPU host sees the card the previous
379
- * session just freed, never a snapshot `load()` took before eviction. `MANAGED_PREREQUISITE_
380
- * BLOCKED` when the chosen card is no longer on the host at all (the same code a missing card gets
381
- * earlier in `load()`); `MODEL_INCOMPATIBLE` when it is still there but does not have room.
382
- */
383
- async checkMemoryBeforeCreate(gpuId, descriptor, resolved, memory) {
384
- const facts = await this.deps.hostFacts();
385
- if (!facts.gpus.some((gpu) => gpu.gpu_id === gpuId)) {
386
- throw new AtomicCoreError('MANAGED_PREREQUISITE_BLOCKED', 'The selected GPU disappeared before the container could start.', gpuId);
387
- }
388
- const verdict = checkModelMemory(resolved, descriptor, facts.gpus, facts.memory, memory);
389
- if (!verdict.verdict.ok) {
390
- const { code, message, details } = verdict.verdict.error;
391
- throw new AtomicCoreError(code, message, details);
392
- }
393
- }
394
- }
395
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/runtime/tensorrt-llm/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Model compatibility and the model setup: `POST /models/compatibility` (what a file needs and
3
- * whether this core runs it), `GET /models/atomic-prism/families` (the Bonsai models the conf rules
4
- * name, for the Hub), `POST /models/setup-plan` (what a setup would install and download,
5
- * with a digest), `POST /model-setups` (start one from that digest), `GET /model-setups[/:id]`, and
6
- * `POST /model-setups/:id/{cancel,resume}`. Progress is the `model-setup:changed` event plus the
7
- * `download:*` events of the setup's task ids.
8
- */
9
- import type { Router } from '../../http.js';
10
- import type { ControlRouteContext, ControlServerDeps } from '../types.js';
11
- export declare function registerModelSetupRoutes(router: Router, deps: ControlServerDeps, ctx: ControlRouteContext): void;
@@ -1,55 +0,0 @@
1
- /**
2
- * Model compatibility and the model setup: `POST /models/compatibility` (what a file needs and
3
- * whether this core runs it), `GET /models/atomic-prism/families` (the Bonsai models the conf rules
4
- * name, for the Hub), `POST /models/setup-plan` (what a setup would install and download,
5
- * with a digest), `POST /model-setups` (start one from that digest), `GET /model-setups[/:id]`, and
6
- * `POST /model-setups/:id/{cancel,resume}`. Progress is the `model-setup:changed` event plus the
7
- * `download:*` events of the setup's task ids.
8
- */
9
- import { AtomicCoreError } from '../../../contracts/index.js';
10
- import { readJsonBody, sendJson } from '../../http.js';
11
- function control(deps) {
12
- if (!deps.modelSetups)
13
- throw new AtomicCoreError('INVALID_ARGUMENT', 'Model setup is not available in this core.');
14
- return deps.modelSetups;
15
- }
16
- async function objectBody(req) {
17
- const body = await readJsonBody(req);
18
- if (typeof body !== 'object' || body === null || Array.isArray(body)) {
19
- throw new AtomicCoreError('INVALID_ARGUMENT', 'The request body must be a JSON object.');
20
- }
21
- return body;
22
- }
23
- export function registerModelSetupRoutes(router, deps, ctx) {
24
- const { p } = ctx;
25
- router.post(p('/models/compatibility'), async (req, res) => {
26
- const setups = control(deps);
27
- sendJson(res, 200, await setups.compatibility(await objectBody(req)));
28
- });
29
- router.get(p('/models/atomic-prism/families'), async (_req, res) => {
30
- sendJson(res, 200, await control(deps).families());
31
- });
32
- router.post(p('/models/setup-plan'), async (req, res) => {
33
- const setups = control(deps);
34
- sendJson(res, 200, await setups.plan(await objectBody(req)));
35
- });
36
- router.post(p('/model-setups'), async (req, res) => {
37
- const setups = control(deps);
38
- sendJson(res, 202, await setups.start(await objectBody(req)));
39
- });
40
- router.get(p('/model-setups'), async (_req, res) => {
41
- sendJson(res, 200, { setups: await control(deps).list() });
42
- });
43
- router.get(p('/model-setups/:id'), async (_req, res, { params }) => {
44
- sendJson(res, 200, await control(deps).get(params['id'] ?? ''));
45
- });
46
- router.post(p('/model-setups/:id/cancel'), async (_req, res, { params }) => {
47
- sendJson(res, 200, await control(deps).cancel(params['id'] ?? ''));
48
- });
49
- router.post(p('/model-setups/:id/resume'), async (req, res, { params }) => {
50
- const setups = control(deps);
51
- const body = await objectBody(req);
52
- sendJson(res, 200, await setups.resume(params['id'] ?? '', { proxy: body.proxy ?? null }));
53
- });
54
- }
55
- //# sourceMappingURL=model-setups.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-setups.js","sourceRoot":"","sources":["../../../../src/server/control/routes/model-setups.ts"],"names":[],"mappings":"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"}