@atomic-chat/core 0.13.2 → 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 (377) 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 +7 -5
  60. package/dist/core/atomic-core.js +1 -0
  61. package/dist/core/atomic-core.js.map +1 -1
  62. package/dist/core/create.js +48 -58
  63. package/dist/core/create.js.map +1 -1
  64. package/dist/core/managed-engines.js +2 -0
  65. package/dist/core/managed-engines.js.map +1 -1
  66. package/dist/core/prism.d.ts +23 -6
  67. package/dist/core/prism.js +45 -0
  68. package/dist/core/prism.js.map +1 -1
  69. package/dist/core/public-server.js +3 -2
  70. package/dist/core/public-server.js.map +1 -1
  71. package/dist/core/types.d.ts +11 -0
  72. package/dist/core/types.js.map +1 -1
  73. package/dist/decision/process.d.ts +4 -0
  74. package/dist/decision/process.js +10 -1
  75. package/dist/decision/process.js.map +1 -1
  76. package/dist/diffusion/args.d.ts +3 -2
  77. package/dist/diffusion/args.js +21 -4
  78. package/dist/diffusion/args.js.map +1 -1
  79. package/dist/diffusion/compat.d.ts +1 -1
  80. package/dist/diffusion/compat.js +6 -2
  81. package/dist/diffusion/compat.js.map +1 -1
  82. package/dist/diffusion/gallery.d.ts +24 -3
  83. package/dist/diffusion/gallery.js +151 -21
  84. package/dist/diffusion/gallery.js.map +1 -1
  85. package/dist/diffusion/index.d.ts +3 -0
  86. package/dist/diffusion/index.js +3 -0
  87. package/dist/diffusion/index.js.map +1 -1
  88. package/dist/diffusion/jobs.d.ts +6 -1
  89. package/dist/diffusion/jobs.js +10 -1
  90. package/dist/diffusion/jobs.js.map +1 -1
  91. package/dist/diffusion/media-header.d.ts +22 -0
  92. package/dist/diffusion/media-header.js +149 -0
  93. package/dist/diffusion/media-header.js.map +1 -0
  94. package/dist/diffusion/parse.d.ts +3 -1
  95. package/dist/diffusion/parse.js +36 -0
  96. package/dist/diffusion/parse.js.map +1 -1
  97. package/dist/diffusion/recipe.d.ts +10 -1
  98. package/dist/diffusion/recipe.js +85 -21
  99. package/dist/diffusion/recipe.js.map +1 -1
  100. package/dist/diffusion/remote-job.d.ts +76 -0
  101. package/dist/diffusion/remote-job.js +643 -0
  102. package/dist/diffusion/remote-job.js.map +1 -0
  103. package/dist/diffusion/remote-store.d.ts +38 -0
  104. package/dist/diffusion/remote-store.js +91 -0
  105. package/dist/diffusion/remote-store.js.map +1 -0
  106. package/dist/diffusion/service.d.ts +9 -1
  107. package/dist/diffusion/service.js +49 -9
  108. package/dist/diffusion/service.js.map +1 -1
  109. package/dist/diffusion/state.d.ts +13 -1
  110. package/dist/diffusion/state.js +8 -0
  111. package/dist/diffusion/state.js.map +1 -1
  112. package/dist/diffusion/tracker.d.ts +6 -0
  113. package/dist/diffusion/tracker.js +11 -0
  114. package/dist/diffusion/tracker.js.map +1 -1
  115. package/dist/diffusion/validate.js +2 -2
  116. package/dist/diffusion/validate.js.map +1 -1
  117. package/dist/diffusion/video-gallery.d.ts +11 -4
  118. package/dist/diffusion/video-gallery.js +62 -25
  119. package/dist/diffusion/video-gallery.js.map +1 -1
  120. package/dist/diffusion/video-history.js +4 -1
  121. package/dist/diffusion/video-history.js.map +1 -1
  122. package/dist/diffusion/video-recipe.js +58 -25
  123. package/dist/diffusion/video-recipe.js.map +1 -1
  124. package/dist/diffusion/wiring.d.ts +3 -0
  125. package/dist/diffusion/wiring.js +1 -0
  126. package/dist/diffusion/wiring.js.map +1 -1
  127. package/dist/diffusion/workflow.d.ts +8 -2
  128. package/dist/diffusion/workflow.js +13 -5
  129. package/dist/diffusion/workflow.js.map +1 -1
  130. package/dist/downloads/downloader.d.ts +6 -1
  131. package/dist/downloads/downloader.js +12 -1
  132. package/dist/downloads/downloader.js.map +1 -1
  133. package/dist/embedding/process.d.ts +4 -0
  134. package/dist/embedding/process.js +10 -1
  135. package/dist/embedding/process.js.map +1 -1
  136. package/dist/media/adapters/a1111.d.ts +32 -0
  137. package/dist/media/adapters/a1111.js +207 -0
  138. package/dist/media/adapters/a1111.js.map +1 -0
  139. package/dist/media/adapters/aimlapi-videos.d.ts +34 -0
  140. package/dist/media/adapters/aimlapi-videos.js +172 -0
  141. package/dist/media/adapters/aimlapi-videos.js.map +1 -0
  142. package/dist/media/adapters/dashscope-image.d.ts +26 -0
  143. package/dist/media/adapters/dashscope-image.js +160 -0
  144. package/dist/media/adapters/dashscope-image.js.map +1 -0
  145. package/dist/media/adapters/dashscope-video.d.ts +47 -0
  146. package/dist/media/adapters/dashscope-video.js +251 -0
  147. package/dist/media/adapters/dashscope-video.js.map +1 -0
  148. package/dist/media/adapters/gemini-image.d.ts +27 -0
  149. package/dist/media/adapters/gemini-image.js +181 -0
  150. package/dist/media/adapters/gemini-image.js.map +1 -0
  151. package/dist/media/adapters/gemini-veo.d.ts +39 -0
  152. package/dist/media/adapters/gemini-veo.js +196 -0
  153. package/dist/media/adapters/gemini-veo.js.map +1 -0
  154. package/dist/media/adapters/hf-images.d.ts +85 -0
  155. package/dist/media/adapters/hf-images.js +439 -0
  156. package/dist/media/adapters/hf-images.js.map +1 -0
  157. package/dist/media/adapters/hf-videos.d.ts +44 -0
  158. package/dist/media/adapters/hf-videos.js +265 -0
  159. package/dist/media/adapters/hf-videos.js.map +1 -0
  160. package/dist/media/adapters/minimax-image.d.ts +26 -0
  161. package/dist/media/adapters/minimax-image.js +111 -0
  162. package/dist/media/adapters/minimax-image.js.map +1 -0
  163. package/dist/media/adapters/minimax-video-v2.d.ts +34 -0
  164. package/dist/media/adapters/minimax-video-v2.js +191 -0
  165. package/dist/media/adapters/minimax-video-v2.js.map +1 -0
  166. package/dist/media/adapters/minimax-video.d.ts +28 -0
  167. package/dist/media/adapters/minimax-video.js +155 -0
  168. package/dist/media/adapters/minimax-video.js.map +1 -0
  169. package/dist/media/adapters/mistral-agent-image.d.ts +33 -0
  170. package/dist/media/adapters/mistral-agent-image.js +108 -0
  171. package/dist/media/adapters/mistral-agent-image.js.map +1 -0
  172. package/dist/media/adapters/nvidia-genai.d.ts +28 -0
  173. package/dist/media/adapters/nvidia-genai.js +182 -0
  174. package/dist/media/adapters/nvidia-genai.js.map +1 -0
  175. package/dist/media/adapters/openai-images.d.ts +23 -0
  176. package/dist/media/adapters/openai-images.js +164 -0
  177. package/dist/media/adapters/openai-images.js.map +1 -0
  178. package/dist/media/adapters/openai-videos.d.ts +34 -0
  179. package/dist/media/adapters/openai-videos.js +175 -0
  180. package/dist/media/adapters/openai-videos.js.map +1 -0
  181. package/dist/media/adapters/openrouter-images.d.ts +25 -0
  182. package/dist/media/adapters/openrouter-images.js +161 -0
  183. package/dist/media/adapters/openrouter-images.js.map +1 -0
  184. package/dist/media/adapters/openrouter-videos.d.ts +43 -0
  185. package/dist/media/adapters/openrouter-videos.js +208 -0
  186. package/dist/media/adapters/openrouter-videos.js.map +1 -0
  187. package/dist/media/adapters/registry.d.ts +7 -0
  188. package/dist/media/adapters/registry.js +45 -0
  189. package/dist/media/adapters/registry.js.map +1 -0
  190. package/dist/media/adapters/types.d.ts +133 -0
  191. package/dist/media/adapters/types.js +15 -0
  192. package/dist/media/adapters/types.js.map +1 -0
  193. package/dist/media/adapters/xai-images.d.ts +19 -0
  194. package/dist/media/adapters/xai-images.js +83 -0
  195. package/dist/media/adapters/xai-images.js.map +1 -0
  196. package/dist/media/adapters/xai-videos.d.ts +29 -0
  197. package/dist/media/adapters/xai-videos.js +148 -0
  198. package/dist/media/adapters/xai-videos.js.map +1 -0
  199. package/dist/media/catalog-baseline.d.ts +2 -0
  200. package/dist/media/catalog-baseline.js +10 -0
  201. package/dist/media/catalog-baseline.js.map +1 -0
  202. package/dist/media/catalog-baseline.json +1819 -0
  203. package/dist/media/catalog-service.d.ts +42 -0
  204. package/dist/media/catalog-service.js +111 -0
  205. package/dist/media/catalog-service.js.map +1 -0
  206. package/dist/media/catalog.d.ts +50 -0
  207. package/dist/media/catalog.js +315 -0
  208. package/dist/media/catalog.js.map +1 -0
  209. package/dist/media/http.d.ts +125 -0
  210. package/dist/media/http.js +308 -0
  211. package/dist/media/http.js.map +1 -0
  212. package/dist/media/index.d.ts +14 -0
  213. package/dist/media/index.js +15 -0
  214. package/dist/media/index.js.map +1 -0
  215. package/dist/media/mask.d.ts +12 -0
  216. package/dist/media/mask.js +57 -0
  217. package/dist/media/mask.js.map +1 -0
  218. package/dist/media/service.d.ts +42 -0
  219. package/dist/media/service.js +144 -0
  220. package/dist/media/service.js.map +1 -0
  221. package/dist/models/compatibility/inspect.d.ts +11 -2
  222. package/dist/models/compatibility/inspect.js +44 -13
  223. package/dist/models/compatibility/inspect.js.map +1 -1
  224. package/dist/models/compatibility/service.d.ts +3 -0
  225. package/dist/models/compatibility/service.js +1 -0
  226. package/dist/models/compatibility/service.js.map +1 -1
  227. package/dist/models/gguf/tensors.d.ts +1 -0
  228. package/dist/models/gguf/tensors.js +4 -1
  229. package/dist/models/gguf/tensors.js.map +1 -1
  230. package/dist/models/hf.d.ts +3 -16
  231. package/dist/models/hf.js +4 -42
  232. package/dist/models/hf.js.map +1 -1
  233. package/dist/router/resolve.d.ts +15 -4
  234. package/dist/router/resolve.js +25 -3
  235. package/dist/router/resolve.js.map +1 -1
  236. package/dist/runtime/environment/linux-provisioner.js +7 -67
  237. package/dist/runtime/environment/linux-provisioner.js.map +1 -1
  238. package/dist/runtime/environment/runtime-removal-plan.d.ts +19 -0
  239. package/dist/runtime/environment/runtime-removal-plan.js +74 -0
  240. package/dist/runtime/environment/runtime-removal-plan.js.map +1 -0
  241. package/dist/runtime/environment/windows-provisioner.js +20 -4
  242. package/dist/runtime/environment/windows-provisioner.js.map +1 -1
  243. package/dist/runtime/managed-engines/spec.d.ts +2 -2
  244. package/dist/runtime/managed-engines/spec.js +6 -0
  245. package/dist/runtime/managed-engines/spec.js.map +1 -1
  246. package/dist/runtime/managed-models/compatibility.d.ts +10 -0
  247. package/dist/runtime/managed-models/compatibility.js +18 -0
  248. package/dist/runtime/managed-models/compatibility.js.map +1 -1
  249. package/dist/runtime/managed-text/adapter.d.ts +17 -0
  250. package/dist/runtime/managed-text/adapter.js.map +1 -1
  251. package/dist/runtime/managed-text/lifecycle.d.ts +8 -0
  252. package/dist/runtime/managed-text/lifecycle.js +38 -1
  253. package/dist/runtime/managed-text/lifecycle.js.map +1 -1
  254. package/dist/runtime/managed-text/readiness.d.ts +21 -1
  255. package/dist/runtime/managed-text/readiness.js +64 -0
  256. package/dist/runtime/managed-text/readiness.js.map +1 -1
  257. package/dist/runtime/managed-text/request-rules.d.ts +9 -7
  258. package/dist/runtime/managed-text/request-rules.js +58 -2
  259. package/dist/runtime/managed-text/request-rules.js.map +1 -1
  260. package/dist/runtime/managed-text/setting-values.d.ts +9 -0
  261. package/dist/runtime/managed-text/setting-values.js +44 -0
  262. package/dist/runtime/managed-text/setting-values.js.map +1 -0
  263. package/dist/runtime/sglang/adapter.d.ts +50 -0
  264. package/dist/runtime/sglang/adapter.js +393 -0
  265. package/dist/runtime/sglang/adapter.js.map +1 -0
  266. package/dist/runtime/sglang/engine.d.ts +16 -0
  267. package/dist/runtime/sglang/engine.js +38 -0
  268. package/dist/runtime/sglang/engine.js.map +1 -0
  269. package/dist/runtime/sglang/index.d.ts +11 -0
  270. package/dist/runtime/sglang/index.js +12 -0
  271. package/dist/runtime/sglang/index.js.map +1 -0
  272. package/dist/runtime/sglang/memory.d.ts +64 -0
  273. package/dist/runtime/sglang/memory.js +90 -0
  274. package/dist/runtime/sglang/memory.js.map +1 -0
  275. package/dist/runtime/sglang/settings.d.ts +49 -0
  276. package/dist/runtime/sglang/settings.js +118 -0
  277. package/dist/runtime/sglang/settings.js.map +1 -0
  278. package/dist/runtime/shared/external-sessions.js +1 -0
  279. package/dist/runtime/shared/external-sessions.js.map +1 -1
  280. package/dist/runtime/shared/ports.d.ts +10 -0
  281. package/dist/runtime/shared/ports.js +30 -0
  282. package/dist/runtime/shared/ports.js.map +1 -1
  283. package/dist/runtime/tensorrt-llm/adapter.d.ts +1 -4
  284. package/dist/runtime/tensorrt-llm/adapter.js +28 -11
  285. package/dist/runtime/tensorrt-llm/adapter.js.map +1 -1
  286. package/dist/runtime/tensorrt-llm/check.js +1 -0
  287. package/dist/runtime/tensorrt-llm/check.js.map +1 -1
  288. package/dist/runtime/tensorrt-llm/compatibility.d.ts +30 -6
  289. package/dist/runtime/tensorrt-llm/compatibility.js +41 -9
  290. package/dist/runtime/tensorrt-llm/compatibility.js.map +1 -1
  291. package/dist/runtime/tensorrt-llm/cuda-graphs.d.ts +32 -0
  292. package/dist/runtime/tensorrt-llm/cuda-graphs.js +33 -0
  293. package/dist/runtime/tensorrt-llm/cuda-graphs.js.map +1 -0
  294. package/dist/runtime/tensorrt-llm/engine.js +11 -5
  295. package/dist/runtime/tensorrt-llm/engine.js.map +1 -1
  296. package/dist/runtime/tensorrt-llm/kv-cache.d.ts +16 -0
  297. package/dist/runtime/tensorrt-llm/kv-cache.js +21 -1
  298. package/dist/runtime/tensorrt-llm/kv-cache.js.map +1 -1
  299. package/dist/runtime/vllm/adapter.js +2 -47
  300. package/dist/runtime/vllm/adapter.js.map +1 -1
  301. package/dist/runtime/vllm/memory.js +3 -16
  302. package/dist/runtime/vllm/memory.js.map +1 -1
  303. package/dist/runtime/vllm/settings.d.ts +7 -0
  304. package/dist/runtime/vllm/settings.js +2 -30
  305. package/dist/runtime/vllm/settings.js.map +1 -1
  306. package/dist/server/control/router.js +5 -4
  307. package/dist/server/control/router.js.map +1 -1
  308. package/dist/server/control/routes/media.d.ts +9 -0
  309. package/dist/server/control/routes/media.js +24 -0
  310. package/dist/server/control/routes/media.js.map +1 -0
  311. package/dist/server/control/routes/model-compatibility.d.ts +9 -0
  312. package/dist/server/control/routes/model-compatibility.js +31 -0
  313. package/dist/server/control/routes/model-compatibility.js.map +1 -0
  314. package/dist/server/control/types.d.ts +18 -20
  315. package/dist/server/http.js +15 -2
  316. package/dist/server/http.js.map +1 -1
  317. package/dist/server/public/gates.d.ts +6 -1
  318. package/dist/server/public/gates.js +7 -3
  319. package/dist/server/public/gates.js.map +1 -1
  320. package/dist/server/public/images-params.js +18 -1
  321. package/dist/server/public/images-params.js.map +1 -1
  322. package/dist/server/public/images.d.ts +11 -2
  323. package/dist/server/public/images.js +73 -9
  324. package/dist/server/public/images.js.map +1 -1
  325. package/dist/server/public/index.d.ts +1 -0
  326. package/dist/server/public/index.js +16 -7
  327. package/dist/server/public/index.js.map +1 -1
  328. package/dist/server/public/listing.js +1 -0
  329. package/dist/server/public/listing.js.map +1 -1
  330. package/dist/server/public/remote-media.d.ts +51 -0
  331. package/dist/server/public/remote-media.js +225 -0
  332. package/dist/server/public/remote-media.js.map +1 -0
  333. package/dist/server/public/responses.js +4 -2
  334. package/dist/server/public/responses.js.map +1 -1
  335. package/dist/server/public/static-assets.generated.js +1 -1
  336. package/dist/server/public/static-assets.generated.js.map +1 -1
  337. package/dist/server/public/trace.js +2 -0
  338. package/dist/server/public/trace.js.map +1 -1
  339. package/dist/server/public/types.d.ts +12 -1
  340. package/dist/server/public/videos-params.js +13 -3
  341. package/dist/server/public/videos-params.js.map +1 -1
  342. package/dist/server/public/videos.d.ts +1 -0
  343. package/dist/server/public/videos.js +21 -3
  344. package/dist/server/public/videos.js.map +1 -1
  345. package/dist/settings/schema/llamacpp-upstream.json +9 -0
  346. package/dist/settings/schema/sglang.json +251 -0
  347. package/dist/settings/schema.js +27 -1
  348. package/dist/settings/schema.js.map +1 -1
  349. package/dist/version.d.ts +1 -1
  350. package/dist/version.js +1 -1
  351. package/package.json +2 -6
  352. package/src/settings/schema/llamacpp-upstream.json +9 -0
  353. package/src/settings/schema/sglang.json +251 -0
  354. package/dist/backend/catalog/bundled-manifest-baseline.d.ts +0 -2
  355. package/dist/backend/catalog/bundled-manifest-baseline.js +0 -65
  356. package/dist/backend/catalog/bundled-manifest-baseline.js.map +0 -1
  357. package/dist/contracts/model-setup.d.ts +0 -115
  358. package/dist/contracts/model-setup.js +0 -33
  359. package/dist/contracts/model-setup.js.map +0 -1
  360. package/dist/core/model-setup/index.d.ts +0 -4
  361. package/dist/core/model-setup/index.js +0 -5
  362. package/dist/core/model-setup/index.js.map +0 -1
  363. package/dist/core/model-setup/plan.d.ts +0 -56
  364. package/dist/core/model-setup/plan.js +0 -158
  365. package/dist/core/model-setup/plan.js.map +0 -1
  366. package/dist/core/model-setup/service.d.ts +0 -92
  367. package/dist/core/model-setup/service.js +0 -329
  368. package/dist/core/model-setup/service.js.map +0 -1
  369. package/dist/core/model-setup/store.d.ts +0 -29
  370. package/dist/core/model-setup/store.js +0 -116
  371. package/dist/core/model-setup/store.js.map +0 -1
  372. package/dist/core/model-setup/wiring.d.ts +0 -59
  373. package/dist/core/model-setup/wiring.js +0 -132
  374. package/dist/core/model-setup/wiring.js.map +0 -1
  375. package/dist/server/control/routes/model-setups.d.ts +0 -11
  376. package/dist/server/control/routes/model-setups.js +0 -55
  377. package/dist/server/control/routes/model-setups.js.map +0 -1
@@ -0,0 +1,64 @@
1
+ /**
2
+ * SGLang's memory, decided by core (change `add-sglang-runtime`, task 2.3, design D4; spec
3
+ * `sglang-runtime`, "Память SGLang задаёт core"). SGLang sizes its budget from the memory it finds
4
+ * free at start-up, once its own CUDA context exists: it keeps `--mem-fraction-static` of it for the
5
+ * weights and the KV cache, and the rest is its room for activations and CUDA graphs
6
+ * (`mem_cache/kv_cache_configurator.py::_profile_available_bytes`). Its own default share is computed
7
+ * from the card's *total* memory, so on a card a desktop already holds part of, that room comes out
8
+ * smaller than SGLang meant. Core instead:
9
+ *
10
+ * - gives SGLang (unless the share setting fixes it) `f = (F − R) / F`, clamped to [0.5, 0.95], where
11
+ * `F` is what the card has free right before the container is created and `R` the room SGLang needs
12
+ * (2 GiB with CUDA graphs, 1.25 GiB without): SGLang then keeps about `R` whatever other processes
13
+ * took. On a card with the host's memory the static share holds at most half of the host's memory:
14
+ * `(min(F, half the host) − R) / F`. Within its share SGLang sizes the KV cache itself — hybrid
15
+ * models' linear-attention state included — and core passes `--max-total-tokens` only from the
16
+ * setting.
17
+ * - checks, before any container, that the weights, an estimate of the KV cache (context × parallel
18
+ * requests × the model's per-token KV bytes over its attention layers, or the KV token limit) and
19
+ * SGLang's own overhead fit the free memory — the same rule `POST /models/sglang/check` applies. It
20
+ * is an estimate for the verdict and the refusal before a container; it sizes nothing SGLang runs
21
+ * with.
22
+ *
23
+ * The reserve, the overhead (~2 GiB: CUDA context, activations, graphs) and the margin are first
24
+ * estimates; the live run of task 4.1 records the numbers (`summary.json`, `rulings/core.md`).
25
+ */
26
+ import type { GpuFacts } from '../../contracts/index.js';
27
+ import { type CheckpointMemoryInputs, type HostMemory, type JsonObject, type KvReserveBasis, type ManagedCheckEngine, type MemoryNeed } from '../managed-models/index.js';
28
+ import type { SglangLaunchPlan } from './adapter.js';
29
+ import type { SglangSettings } from './settings.js';
30
+ /** SGLang's room for activations and CUDA graphs captured up to the parallel requests (design D4, D5). */
31
+ export declare const SGLANG_RUNTIME_RESERVE_BYTES: number;
32
+ /** The same room with CUDA graphs off. */
33
+ export declare const SGLANG_RUNTIME_RESERVE_NO_GRAPHS_BYTES: number;
34
+ /** What SGLang holds beyond weights and KV cache: CUDA context, activations, graphs. */
35
+ export declare const SGLANG_ENGINE_OVERHEAD_BYTES: number;
36
+ /** Counted as needed in the memory check: what other processes may still take meanwhile. */
37
+ export declare const SGLANG_FREE_MEMORY_MARGIN_BYTES: number;
38
+ export declare const SGLANG_MIN_MEM_FRACTION_STATIC = 0.5;
39
+ export declare const SGLANG_MAX_MEM_FRACTION_STATIC = 0.95;
40
+ /**
41
+ * The KV cache the memory check counts: the KV token limit when set, else context × parallel
42
+ * requests, × the bytes per token over the model's attention layers — and whether the model's shape
43
+ * sized it. Without a shape: a quarter of the weights, at least 1 GiB.
44
+ */
45
+ export declare function sglangKvCacheBytes(checkpoint: {
46
+ configJson: JsonObject;
47
+ hfQuantConfigJson: JsonObject | null;
48
+ weightBytesTotal?: number;
49
+ }, settings: SglangSettings, gpu: GpuFacts): {
50
+ bytes: number;
51
+ basis: KvReserveBasis;
52
+ };
53
+ /**
54
+ * SGLang's memory rule on `gpu`: weights + KV cache estimate + its own overhead + a margin for what
55
+ * other processes may take meanwhile; on a card with the host's memory, whatever of `MemAvailable`
56
+ * lies beyond half the host's memory counts as needed too.
57
+ */
58
+ export declare function sglangMemoryNeed(gpu: GpuFacts, checkpoint: CheckpointMemoryInputs, settings: SglangSettings, host: HostMemory): MemoryNeed;
59
+ /** `--mem-fraction-static` from the card as it stands now (see the file banner). */
60
+ export declare function sglangMemFractionStatic(settings: SglangSettings, gpu: GpuFacts, host: HostMemory): number;
61
+ /** The launch plan `beforeCreate` hands the adapter, from the card re-probed right before the container. */
62
+ export declare function sglangLaunchPlan(settings: SglangSettings, checkpoint: CheckpointMemoryInputs, gpu: GpuFacts, host: HostMemory): SglangLaunchPlan;
63
+ /** The check skeleton's hooks for SGLang: its memory rule, and no checkpoint quirks of its own. */
64
+ export declare function sglangCheckEngine(settings: SglangSettings): ManagedCheckEngine;
@@ -0,0 +1,90 @@
1
+ import { checkpointIsMultimodal, freeMemoryBytes, isUnifiedMemory, kvCacheQuantAlgo, readKvCacheShape, supportsFp8KvCache, totalMemoryBytes, } from '../managed-models/index.js';
2
+ const GiB = 1024 ** 3;
3
+ const MiB = 1024 ** 2;
4
+ /** SGLang's room for activations and CUDA graphs captured up to the parallel requests (design D4, D5). */
5
+ export const SGLANG_RUNTIME_RESERVE_BYTES = 2 * GiB;
6
+ /** The same room with CUDA graphs off. */
7
+ export const SGLANG_RUNTIME_RESERVE_NO_GRAPHS_BYTES = 1.25 * GiB;
8
+ /** What SGLang holds beyond weights and KV cache: CUDA context, activations, graphs. */
9
+ export const SGLANG_ENGINE_OVERHEAD_BYTES = 2 * GiB;
10
+ /** Counted as needed in the memory check: what other processes may still take meanwhile. */
11
+ export const SGLANG_FREE_MEMORY_MARGIN_BYTES = 512 * MiB;
12
+ export const SGLANG_MIN_MEM_FRACTION_STATIC = 0.5;
13
+ export const SGLANG_MAX_MEM_FRACTION_STATIC = 0.95;
14
+ /** Without the model's KV shape: a quarter of the weights, at least 1 GiB (vLLM's rule). */
15
+ const FALLBACK_KV_WEIGHT_SHARE = 0.25;
16
+ const FALLBACK_KV_MIN_BYTES = GiB;
17
+ /**
18
+ * The KV cache the memory check counts: the KV token limit when set, else context × parallel
19
+ * requests, × the bytes per token over the model's attention layers — and whether the model's shape
20
+ * sized it. Without a shape: a quarter of the weights, at least 1 GiB.
21
+ */
22
+ export function sglangKvCacheBytes(checkpoint, settings, gpu) {
23
+ const shape = readKvCacheShape(checkpoint.configJson);
24
+ if (shape === undefined) {
25
+ const weights = checkpoint.weightBytesTotal ?? 0;
26
+ return {
27
+ bytes: Math.max(FALLBACK_KV_MIN_BYTES, Math.ceil(weights * FALLBACK_KV_WEIGHT_SHARE)),
28
+ basis: 'weight_fraction',
29
+ };
30
+ }
31
+ const fp8 = (settings.kv_cache_dtype === 'fp8' && supportsFp8KvCache(gpu.compute_capability)) ||
32
+ kvCacheQuantAlgo(checkpoint.configJson, checkpoint.hfQuantConfigJson)?.toUpperCase() === 'FP8';
33
+ const perToken = 2 * shape.numHiddenLayers * shape.numKeyValueHeads * shape.headDim * (fp8 ? 1 : 2);
34
+ const tokens = settings.max_total_tokens ?? settings.context_length * settings.max_running_requests;
35
+ return { bytes: perToken * tokens, basis: 'config' };
36
+ }
37
+ /**
38
+ * SGLang's memory rule on `gpu`: weights + KV cache estimate + its own overhead + a margin for what
39
+ * other processes may take meanwhile; on a card with the host's memory, whatever of `MemAvailable`
40
+ * lies beyond half the host's memory counts as needed too.
41
+ */
42
+ export function sglangMemoryNeed(gpu, checkpoint, settings, host) {
43
+ const unified = isUnifiedMemory(gpu);
44
+ const kv = sglangKvCacheBytes(checkpoint, settings, gpu);
45
+ const systemReserve = unified
46
+ ? Math.max(0, freeMemoryBytes(gpu, host) - totalMemoryBytes(gpu, host) / 2)
47
+ : 0;
48
+ const neededBytes = checkpoint.weightBytesTotal +
49
+ kv.bytes +
50
+ SGLANG_ENGINE_OVERHEAD_BYTES +
51
+ SGLANG_FREE_MEMORY_MARGIN_BYTES +
52
+ systemReserve;
53
+ return {
54
+ neededBytes,
55
+ kvReserveBasis: kv.basis,
56
+ details: `weight_bytes=${checkpoint.weightBytesTotal} kv_cache_bytes=${kv.bytes} kv_reserve_basis=${kv.basis} ` +
57
+ `engine_overhead_bytes=${SGLANG_ENGINE_OVERHEAD_BYTES} free_margin_bytes=${SGLANG_FREE_MEMORY_MARGIN_BYTES}` +
58
+ (unified ? ` system_reserve_bytes=${systemReserve}` : '') +
59
+ ` needed_bytes=${neededBytes}`,
60
+ };
61
+ }
62
+ /** `--mem-fraction-static` from the card as it stands now (see the file banner). */
63
+ export function sglangMemFractionStatic(settings, gpu, host) {
64
+ const free = freeMemoryBytes(gpu, host);
65
+ if (free <= 0)
66
+ return SGLANG_MIN_MEM_FRACTION_STATIC;
67
+ const reserve = settings.cuda_graphs === 'off' ? SGLANG_RUNTIME_RESERVE_NO_GRAPHS_BYTES : SGLANG_RUNTIME_RESERVE_BYTES;
68
+ // On the host's memory, half of it stays the system's (the same rule as TensorRT-LLM's and vLLM's);
69
+ // SGLang still measures all of the available memory as free, so the share is of that.
70
+ const budget = isUnifiedMemory(gpu) ? Math.min(free, totalMemoryBytes(gpu, host) / 2) : free;
71
+ const share = (budget - reserve) / free;
72
+ const clamped = Math.min(SGLANG_MAX_MEM_FRACTION_STATIC, Math.max(SGLANG_MIN_MEM_FRACTION_STATIC, share));
73
+ return Math.floor(clamped * 10_000) / 10_000;
74
+ }
75
+ /** The launch plan `beforeCreate` hands the adapter, from the card re-probed right before the container. */
76
+ export function sglangLaunchPlan(settings, checkpoint, gpu, host) {
77
+ return {
78
+ memFractionStatic: settings.mem_fraction_static ?? sglangMemFractionStatic(settings, gpu, host),
79
+ multimodal: checkpointIsMultimodal(checkpoint.configJson),
80
+ };
81
+ }
82
+ /** The check skeleton's hooks for SGLang: its memory rule, and no checkpoint quirks of its own. */
83
+ export function sglangCheckEngine(settings) {
84
+ return {
85
+ engineId: 'sglang',
86
+ checkpointProblems: () => null,
87
+ memoryNeed: (gpu, checkpoint, host) => sglangMemoryNeed(gpu, checkpoint, settings, host),
88
+ };
89
+ }
90
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/runtime/sglang/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * The `sglang` provider's settings (change `add-sglang-runtime`, task 2.1, design D6; spec
3
+ * `sglang-runtime`, "Выбор карты и настройки провайдера sglang"): stored values, overlaid by a load's
4
+ * own overrides, reduced to this provider's keys and validated before anything is asked of the
5
+ * machine — `INVALID_ARGUMENT` for anything the schema (`src/settings/schema/sglang.json`) would
6
+ * refuse. A value left at its default reaches the engine as nothing (SGLang's own), and what the
7
+ * engine is never told by a setting — `--trust-remote-code`, request logging, an API key — has no key
8
+ * here.
9
+ */
10
+ import { type GenerationDefaults } from '../managed-text/generation-defaults.js';
11
+ export interface SglangSettings {
12
+ /** `GPU-<uuid>`/`MIG-<uuid>`, or `null` to let the load pick the card with the most free memory. */
13
+ gpu_id: string | null;
14
+ context_length: number;
15
+ max_output_tokens: number;
16
+ /** `--max-running-requests`. */
17
+ max_running_requests: number;
18
+ /**
19
+ * `--mem-fraction-static`: the share of the card's free memory SGLang keeps for weights and KV
20
+ * cache; `null` (auto) lets core compute it from the card's free memory right before the container.
21
+ */
22
+ mem_fraction_static: number | null;
23
+ /** `--max-total-tokens`; `null` lets SGLang size the KV cache from its share. */
24
+ max_total_tokens: number | null;
25
+ /** `auto`: `--cuda-graph-max-bs <max_running_requests>`; `on`: SGLang's own; `off`: `--disable-cuda-graph`. */
26
+ cuda_graphs: 'auto' | 'on' | 'off';
27
+ kv_cache_dtype: 'auto' | 'fp8';
28
+ /** Seconds. `null` leaves the adapter's own weight-based estimate in force. */
29
+ load_timeout_seconds: number | null;
30
+ /** `false` passes `--disable-radix-cache`; SGLang's own default is on. */
31
+ enable_prefix_caching: boolean;
32
+ /** `--chunked-prefill-size`; `null` leaves SGLang's own. */
33
+ chunked_prefill_size: number | null;
34
+ /** `--dtype`; `auto` passes nothing. */
35
+ dtype: 'auto' | 'float16' | 'bfloat16' | 'float32';
36
+ /** `--random-seed`; `null` leaves SGLang's own. */
37
+ seed: number | null;
38
+ /** Sampling defaults for a request that sets none; a key is present only when the person set it. */
39
+ generation: GenerationDefaults;
40
+ }
41
+ /** Validates already-merged values; anything absent takes the schema's default. */
42
+ export declare function validateSglangSettings(raw: Record<string, unknown>): SglangSettings;
43
+ /**
44
+ * Stored values, overlaid by a load's own overrides (the control API's `overrides`), reduced to this
45
+ * provider's keys and validated. Anything else in either object — another provider's key, a stray
46
+ * field a client sent — is ignored rather than passed to the engine. `''` and `0` are the stored
47
+ * spelling of "not set" (`''` for a generation default, whose `0` can be a real value).
48
+ */
49
+ export declare function sglangSettings(stored: Record<string, unknown>, overrides?: Record<string, unknown>): SglangSettings;
@@ -0,0 +1,118 @@
1
+ /**
2
+ * The `sglang` provider's settings (change `add-sglang-runtime`, task 2.1, design D6; spec
3
+ * `sglang-runtime`, "Выбор карты и настройки провайдера sglang"): stored values, overlaid by a load's
4
+ * own overrides, reduced to this provider's keys and validated before anything is asked of the
5
+ * machine — `INVALID_ARGUMENT` for anything the schema (`src/settings/schema/sglang.json`) would
6
+ * refuse. A value left at its default reaches the engine as nothing (SGLang's own), and what the
7
+ * engine is never told by a setting — `--trust-remote-code`, request logging, an API key — has no key
8
+ * here.
9
+ */
10
+ import { GENERATION_DEFAULT_KEYS, readGenerationDefaults, } from '../managed-text/generation-defaults.js';
11
+ import { settingValues } from '../managed-text/setting-values.js';
12
+ const KEYS = [
13
+ 'gpu_id',
14
+ 'context_length',
15
+ 'max_output_tokens',
16
+ 'max_running_requests',
17
+ 'mem_fraction_static',
18
+ 'max_total_tokens',
19
+ 'cuda_graphs',
20
+ 'kv_cache_dtype',
21
+ 'load_timeout_seconds',
22
+ 'enable_prefix_caching',
23
+ 'chunked_prefill_size',
24
+ 'dtype',
25
+ 'seed',
26
+ ...Object.values(GENERATION_DEFAULT_KEYS),
27
+ ];
28
+ const DEFAULTS = {
29
+ gpu_id: null,
30
+ context_length: 8192,
31
+ max_output_tokens: 4096,
32
+ // One request at a time, as every managed engine (owner's decision, change add-vllm-runtime).
33
+ max_running_requests: 1,
34
+ mem_fraction_static: null,
35
+ max_total_tokens: null,
36
+ cuda_graphs: 'auto',
37
+ kv_cache_dtype: 'auto',
38
+ load_timeout_seconds: null,
39
+ enable_prefix_caching: true,
40
+ chunked_prefill_size: null,
41
+ dtype: 'auto',
42
+ seed: null,
43
+ generation: {},
44
+ };
45
+ const GPU_UUID = /^(GPU|MIG)-[0-9A-Za-z-]+$/;
46
+ const { invalid, integer, decimal, yesNo, oneOf } = settingValues('sglang');
47
+ /** Validates already-merged values; anything absent takes the schema's default. */
48
+ export function validateSglangSettings(raw) {
49
+ const settings = { ...DEFAULTS };
50
+ if (raw['gpu_id'] !== undefined && raw['gpu_id'] !== null) {
51
+ if (typeof raw['gpu_id'] !== 'string' || !GPU_UUID.test(raw['gpu_id'])) {
52
+ invalid('gpu_id', raw['gpu_id'], 'must be an NVIDIA GPU or MIG UUID');
53
+ }
54
+ settings.gpu_id = raw['gpu_id'];
55
+ }
56
+ if (raw['context_length'] !== undefined)
57
+ settings.context_length = integer('context_length', raw['context_length'], 512, 1_048_576);
58
+ if (raw['max_output_tokens'] !== undefined)
59
+ settings.max_output_tokens = integer('max_output_tokens', raw['max_output_tokens'], 1, 1_048_576);
60
+ if (raw['max_running_requests'] !== undefined)
61
+ settings.max_running_requests = integer('max_running_requests', raw['max_running_requests'], 1, 256);
62
+ // Below 1: the rest of SGLang's free memory is its room for activations and CUDA graphs.
63
+ if (raw['mem_fraction_static'] !== undefined && raw['mem_fraction_static'] !== null)
64
+ settings.mem_fraction_static = decimal('mem_fraction_static', raw['mem_fraction_static'], (n) => n > 0 && n < 1, 'above 0 and below 1');
65
+ if (raw['max_total_tokens'] !== undefined && raw['max_total_tokens'] !== null)
66
+ settings.max_total_tokens = integer('max_total_tokens', raw['max_total_tokens'], 1, 16_777_216);
67
+ if (raw['cuda_graphs'] !== undefined)
68
+ settings.cuda_graphs = oneOf('cuda_graphs', raw['cuda_graphs'], ['auto', 'on', 'off']);
69
+ if (raw['kv_cache_dtype'] !== undefined)
70
+ settings.kv_cache_dtype = oneOf('kv_cache_dtype', raw['kv_cache_dtype'], ['auto', 'fp8']);
71
+ if (raw['load_timeout_seconds'] !== undefined && raw['load_timeout_seconds'] !== null)
72
+ settings.load_timeout_seconds = integer('load_timeout_seconds', raw['load_timeout_seconds'], 1, 3600);
73
+ if (raw['enable_prefix_caching'] !== undefined)
74
+ settings.enable_prefix_caching = yesNo('enable_prefix_caching', raw['enable_prefix_caching']);
75
+ if (raw['chunked_prefill_size'] !== undefined && raw['chunked_prefill_size'] !== null)
76
+ settings.chunked_prefill_size = integer('chunked_prefill_size', raw['chunked_prefill_size'], 1, 1_048_576);
77
+ if (raw['dtype'] !== undefined)
78
+ settings.dtype = oneOf('dtype', raw['dtype'], ['auto', 'float16', 'bfloat16', 'float32']);
79
+ if (raw['seed'] !== undefined && raw['seed'] !== null)
80
+ settings.seed = integer('seed', raw['seed'], 1, 2_147_483_647);
81
+ settings.generation = readGenerationDefaults('sglang', raw);
82
+ if (settings.max_output_tokens >= settings.context_length) {
83
+ invalid('max_output_tokens', settings.max_output_tokens, `must be less than the context length (${settings.context_length})`);
84
+ }
85
+ return settings;
86
+ }
87
+ /**
88
+ * Stored values, overlaid by a load's own overrides (the control API's `overrides`), reduced to this
89
+ * provider's keys and validated. Anything else in either object — another provider's key, a stray
90
+ * field a client sent — is ignored rather than passed to the engine. `''` and `0` are the stored
91
+ * spelling of "not set" (`''` for a generation default, whose `0` can be a real value).
92
+ */
93
+ export function sglangSettings(stored, overrides = {}) {
94
+ const merged = {};
95
+ for (const key of KEYS) {
96
+ const value = key in overrides ? overrides[key] : stored[key];
97
+ if (value !== undefined)
98
+ merged[key] = value;
99
+ }
100
+ if (typeof merged['gpu_id'] === 'string' && merged['gpu_id'].trim() === '')
101
+ merged['gpu_id'] = null;
102
+ for (const key of [
103
+ 'load_timeout_seconds',
104
+ 'mem_fraction_static',
105
+ 'max_total_tokens',
106
+ 'chunked_prefill_size',
107
+ 'seed',
108
+ ]) {
109
+ if (merged[key] === 0)
110
+ merged[key] = null;
111
+ }
112
+ for (const key of Object.values(GENERATION_DEFAULT_KEYS)) {
113
+ if (typeof merged[key] === 'string' && merged[key].trim() === '')
114
+ merged[key] = null;
115
+ }
116
+ return validateSglangSettings(merged);
117
+ }
118
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/runtime/sglang/settings.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ const PROVIDERS = new Set([
25
25
  'foundation-models',
26
26
  'tensorrt-llm',
27
27
  'vllm',
28
+ 'sglang',
28
29
  ]);
29
30
  export class ExternalSessions {
30
31
  options;
@@ -1 +1 @@
1
- {"version":3,"file":"external-sessions.js","sourceRoot":"","sources":["../../../src/runtime/shared/external-sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external-sessions.js","sourceRoot":"","sources":["../../../src/runtime/shared/external-sessions.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,16 @@ export interface PortOptions {
23
23
  }
24
24
  /** A random port in [3000, 4000) that no session uses and that binds. */
25
25
  export declare function randomFreePort(usedPorts: Iterable<number>, opts?: PortOptions): Promise<number>;
26
+ /** How many ports a start tries when each one is taken before the engine can bind it. */
27
+ export declare const PORT_TAKEN_ATTEMPTS = 3;
28
+ /** Whether an engine that exited while starting did so because its port was already taken. */
29
+ export declare function exitedOnTakenPort(details: string | undefined): boolean;
30
+ /**
31
+ * `start` again, on a port it picks anew, while it fails because its port was taken (the probe is
32
+ * racy by nature: another process can bind the port between the probe and the engine's own bind).
33
+ * `portTaken` reads the failure; anything else, or the last attempt's failure, is thrown as it is.
34
+ */
35
+ export declare function retryOnTakenPort<T>(start: () => Promise<T>, portTaken: (error: unknown) => boolean, onRetry?: (attempt: number) => void, attempts?: number): Promise<T>;
26
36
  /** Secret the extension has always used for session keys (`index.ts:531`). */
27
37
  export declare const DEFAULT_API_SECRET = "JustAskNow";
28
38
  /**
@@ -44,6 +44,36 @@ export async function randomFreePort(usedPorts, opts = {}) {
44
44
  }
45
45
  throw new Error(PORT_EXHAUSTED_MESSAGE);
46
46
  }
47
+ /**
48
+ * What `llama-server` prints when its port was taken between `randomFreePort`'s probe and its own
49
+ * bind ("couldn't bind HTTP server socket, hostname: …, port: …"), and what a Node server says.
50
+ */
51
+ const PORT_TAKEN = /couldn't bind HTTP server socket|address already in use|EADDRINUSE/i;
52
+ /** How many ports a start tries when each one is taken before the engine can bind it. */
53
+ export const PORT_TAKEN_ATTEMPTS = 3;
54
+ /** Whether an engine that exited while starting did so because its port was already taken. */
55
+ export function exitedOnTakenPort(details) {
56
+ return details !== undefined && PORT_TAKEN.test(details);
57
+ }
58
+ /**
59
+ * `start` again, on a port it picks anew, while it fails because its port was taken (the probe is
60
+ * racy by nature: another process can bind the port between the probe and the engine's own bind).
61
+ * `portTaken` reads the failure; anything else, or the last attempt's failure, is thrown as it is.
62
+ */
63
+ export async function retryOnTakenPort(start, portTaken, onRetry = () => { }, attempts = PORT_TAKEN_ATTEMPTS) {
64
+ const attempt = async (n) => {
65
+ try {
66
+ return await start();
67
+ }
68
+ catch (error) {
69
+ if (n >= attempts || !portTaken(error))
70
+ throw error;
71
+ onRetry(n);
72
+ return attempt(n + 1);
73
+ }
74
+ };
75
+ return attempt(1);
76
+ }
47
77
  /** Secret the extension has always used for session keys (`index.ts:531`). */
48
78
  export const DEFAULT_API_SECRET = 'JustAskNow';
49
79
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/runtime/shared/ports.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA,CAAC,YAAY;AAC/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAA;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,wDAAwD,CAAA;AAE9F;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IAC9D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACvG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACvG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACtG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;CAC1F,CAAC,CAAA;AAEF,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;QAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;AACJ,CAAC;AAUD,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAA2B,EAAE,OAAoB,EAAE;IACtF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,cAAc,CAAA;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,cAAc,CAAA;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAA;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,eAAe,CAAA;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC7D,IAAI,MAAM,WAAW,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IAC1C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACzC,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAE9C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,IAAqB,EACrB,SAAiB,kBAAkB;IAEnC,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAClF,CAAC"}
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/runtime/shared/ports.ts"],"names":[],"mappings":"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"}
@@ -66,10 +66,7 @@ export declare const TENSORRT_LLM_CONTAINER_PORT = 8000;
66
66
  */
67
67
  export declare const TENSORRT_LLM_API_OPTIONS_FILE = "llm-api-options.yaml";
68
68
  export declare const TENSORRT_LLM_GUIDED_DECODING_OPTIONS = "guided_decoding_backend: xgrammar\n";
69
- /** Below this much card memory `cuda_graphs: auto` leaves CUDA graphs off: they took about 2 GB on
70
- * an 8 GB card in the Windows live acceptance (Qwen3.5-2B, "Memory used outside torch … 2.12 GiB").
71
- * A card that reports no size of its own is a unified-memory one (GB10): it keeps them. */
72
- export declare const TENSORRT_LLM_CUDA_GRAPHS_MIN_VRAM_BYTES: number;
69
+ export { TENSORRT_LLM_CUDA_GRAPHS_MIN_VRAM_BYTES } from './cuda-graphs.js';
73
70
  /**
74
71
  * `--max_batch_size`: how many sequences the engine serves at once. `trtllm-serve` defaults to 2048, a
75
72
  * server's number; a desktop runs a chat, an agent turn and a few API calls at most. For a model with
@@ -121,7 +121,8 @@
121
121
  import { AtomicCoreError } from '../../contracts/index.js';
122
122
  import { readGenerationDefaults, withGenerationDefaults, } from '../managed-text/generation-defaults.js';
123
123
  import { MANAGED_TEXT_ADAPTER_CONTRACT_VERSION, ManagedRequestRefusal, asksForStructuredOutput, asksForTools, reasoningIntoContent, thinkingRequested, } from '../managed-text/index.js';
124
- import { TENSORRT_LLM_DEFAULT_KV_CACHE_FREE_FRACTION, tensorrtLlmUnifiedKvMaxTokens } from './kv-cache.js';
124
+ import { tensorrtLlmCudaGraphsOn } from './cuda-graphs.js';
125
+ import { TENSORRT_LLM_DEFAULT_KV_CACHE_FREE_FRACTION, tensorrtLlmKvTokens, tensorrtLlmUnifiedKvMaxTokens, tensorrtLlmWholeBlockTokens, } from './kv-cache.js';
125
126
  const GiB = 1024 ** 3;
126
127
  // ---------------------------------------------------------------------------------------------
127
128
  // Settings
@@ -291,10 +292,7 @@ function llmApiOptions(guided, kvMaxTokens, kvFp8 = false, cudaGraphsOff = false
291
292
  lines.push(`dtype: ${settings.dtype}`);
292
293
  return lines.length === 0 ? null : `${lines.join('\n')}\n`;
293
294
  }
294
- /** Below this much card memory `cuda_graphs: auto` leaves CUDA graphs off: they took about 2 GB on
295
- * an 8 GB card in the Windows live acceptance (Qwen3.5-2B, "Memory used outside torch … 2.12 GiB").
296
- * A card that reports no size of its own is a unified-memory one (GB10): it keeps them. */
297
- export const TENSORRT_LLM_CUDA_GRAPHS_MIN_VRAM_BYTES = 12 * 1024 ** 3;
295
+ export { TENSORRT_LLM_CUDA_GRAPHS_MIN_VRAM_BYTES } from './cuda-graphs.js';
298
296
  /** FP8 KV cache needs compute capability 8.9 (Ada) or newer. */
299
297
  function supportsFp8Kv(computeCapability) {
300
298
  if (computeCapability === null || computeCapability === undefined)
@@ -320,6 +318,14 @@ export const TENSORRT_LLM_MAX_KV_CACHE_MAX_TOKENS = 16_777_216;
320
318
  /** The container binds every interface; only the host-side publication (design D1/D11) is
321
319
  * loopback-restricted, by the executor, not by the engine's own bind address. */
322
320
  const CONTAINER_BIND_HOST = '0.0.0.0';
321
+ /** `ManagedLaunchContext.plan` as this engine's own plan, or undefined when there is none. */
322
+ function launchPlanOf(plan) {
323
+ return typeof plan === 'object' &&
324
+ plan !== null &&
325
+ typeof plan.cudaGraphs === 'boolean'
326
+ ? plan
327
+ : undefined;
328
+ }
323
329
  /** Builds `trtllm-serve serve <model-dir> ...` (task 2.13; flags sourced from `serve.py`, see the
324
330
  * file header). `serve` is named explicitly rather than relying on the CLI's default-command
325
331
  * resolution (`DefaultGroup.resolve_command`, `commands/serve.py`) — that quirk keeps `trtllm-serve
@@ -369,14 +375,18 @@ export function buildTensorrtLlmLaunch(context) {
369
375
  // Windows live acceptance with Qwen3.5-2B). Room for every sequence the batch admits at full context;
370
376
  // the engine takes the smaller of this and the free-memory fraction, so attention-only models keep
371
377
  // the memory they had. A unified-memory card keeps its own, tighter bound.
372
- const vram = context.gpuTotalVramBytes ?? null;
373
- const cudaGraphsOff = settings.cuda_graphs === 'off' ||
374
- (settings.cuda_graphs === 'auto' && vram !== null && vram < TENSORRT_LLM_CUDA_GRAPHS_MIN_VRAM_BYTES);
378
+ // CUDA graphs: the plan `beforeCreate` made on the card as it stands now (`tensorrtLlmLaunchPlan`:
379
+ // `auto` keeps them only where they fit beside the model); without one, the card's size alone.
380
+ const cudaGraphsOff = !(launchPlanOf(context.plan)?.cudaGraphs ??
381
+ tensorrtLlmCudaGraphsOn(settings.cuda_graphs, context.gpuTotalVramBytes ?? null));
375
382
  const kvFp8 = settings.kv_cache_dtype === 'fp8' && supportsFp8Kv(context.gpuComputeCapability);
376
- const options = llmApiOptions(family?.structured_output === true, settings.kv_cache_max_tokens ??
377
- (context.unifiedMemory
383
+ // In whole blocks: the engine rounds `max_tokens` down to them, and a sequence one block short of
384
+ // the context is a load the readiness check refuses (`kv-cache.ts`).
385
+ const options = llmApiOptions(family?.structured_output === true, settings.kv_cache_max_tokens !== null
386
+ ? tensorrtLlmWholeBlockTokens(settings.kv_cache_max_tokens)
387
+ : context.unifiedMemory
378
388
  ? tensorrtLlmUnifiedKvMaxTokens(settings.context_length)
379
- : settings.context_length * settings.max_batch_size), kvFp8, cudaGraphsOff, settings);
389
+ : tensorrtLlmKvTokens(settings.context_length, settings.max_batch_size), kvFp8, cudaGraphsOff, settings);
380
390
  if (options !== null) {
381
391
  argv.push('--extra_llm_api_options', `${generationFilesPath}/${TENSORRT_LLM_API_OPTIONS_FILE}`);
382
392
  }
@@ -977,6 +987,13 @@ export const tensorrtLlmAdapter = {
977
987
  id: 'tensorrt-llm',
978
988
  contractVersion: MANAGED_TEXT_ADAPTER_CONTRACT_VERSION,
979
989
  readiness: { path: '/health', expectedStatus: 200 },
990
+ // `/health` answers before anything has been generated, and a hybrid model's cache manager logs no
991
+ // `max sequence length=` line for `classifyReady` to read: one token proves the engine can serve.
992
+ generationProbe: {
993
+ modelsPath: '/v1/models',
994
+ path: '/v1/chat/completions',
995
+ body: { messages: [{ role: 'user', content: 'Hi' }], max_tokens: 1, stream: false },
996
+ },
980
997
  routes: TENSORRT_LLM_ROUTES,
981
998
  rewritableRoutes: TENSORRT_LLM_REWRITABLE_ROUTES,
982
999
  stageMarkers: STAGE_MARKERS,