@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 +0,0 @@
1
- {"version":3,"file":"segmented.js","sourceRoot":"","sources":["../../src/downloads/segmented.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import type { ManagedScopePaths } from '../../config/index.js';
2
- import type { ModelFileOps } from './guest-files.js';
3
- export interface DeletedTensorrtLlmModelFiles {
4
- freedBytes: number;
5
- engineCachesRemoved: number;
6
- }
7
- /**
8
- * `files` (change `add-tensorrt-llm-windows`, task 2.8): on Windows the model and its caches are in the
9
- * WSL guest, and are sized and removed by commands there (`guestModelFiles`) — all caches and the model
10
- * in one call each, the caches listed first. Without it, the walk below, as on Linux.
11
- */
12
- export declare function deleteTensorrtLlmModelFiles(paths: ManagedScopePaths, model: {
13
- id: string;
14
- dir: string;
15
- }, files?: ModelFileOps): Promise<DeletedTensorrtLlmModelFiles>;
@@ -1,60 +0,0 @@
1
- /**
2
- * The files of a deleted `tensorrt-llm` model (task 2.24, design D12a, spec `tensorrt-llm-models`
3
- * "Модель удаляется через core"): every engine cache of the model, from any descriptor it was ever
4
- * loaded with, then its own folder. Caches go first: a failure there leaves the model listed, so the
5
- * deletion can simply be retried, instead of leaving gigabytes of cache no model points at.
6
- *
7
- * The caller (`tensorrtLlmModelDeleter` in `src/core/tensorrt-llm.ts`) has already stopped the model
8
- * with Docker's confirmation and holds its loads off; nothing here asks Docker anything.
9
- */
10
- import { lstat, readdir, rm } from 'node:fs/promises';
11
- import { join } from 'node:path';
12
- import { engineCacheDirsOf, removeEngineCaches } from '../managed-text/index.js';
13
- /**
14
- * Bytes of the regular files under `path`, symlinks not followed, a hard-linked file counted once
15
- * across one deletion (`seen`). A missing path is 0.
16
- */
17
- async function bytesUnder(path, seen) {
18
- const info = await lstat(path).catch(() => undefined);
19
- if (info === undefined)
20
- return 0;
21
- if (info.isFile()) {
22
- const inode = `${info.dev}:${info.ino}`;
23
- if (seen.has(inode))
24
- return 0;
25
- seen.add(inode);
26
- return info.size;
27
- }
28
- if (!info.isDirectory())
29
- return 0;
30
- const children = await readdir(path).catch(() => []);
31
- let total = 0;
32
- for (const child of children)
33
- total += await bytesUnder(join(path, child), seen);
34
- return total;
35
- }
36
- /**
37
- * `files` (change `add-tensorrt-llm-windows`, task 2.8): on Windows the model and its caches are in the
38
- * WSL guest, and are sized and removed by commands there (`guestModelFiles`) — all caches and the model
39
- * in one call each, the caches listed first. Without it, the walk below, as on Linux.
40
- */
41
- export async function deleteTensorrtLlmModelFiles(paths, model, files) {
42
- if (files !== undefined) {
43
- const caches = await engineCacheDirsOf(paths, model.id);
44
- const sizes = await files.sizes([...caches, model.dir]);
45
- await files.remove([...caches, model.dir]);
46
- const freed = [...sizes.values()].reduce((sum, bytes) => sum + bytes, 0);
47
- return { freedBytes: freed, engineCachesRemoved: caches.length };
48
- }
49
- const seen = new Set();
50
- const caches = await engineCacheDirsOf(paths, model.id);
51
- const sizes = new Map();
52
- for (const dir of caches)
53
- sizes.set(dir, await bytesUnder(dir, seen));
54
- const modelBytes = await bytesUnder(model.dir, seen);
55
- const removed = await removeEngineCaches(paths, { modelId: model.id });
56
- await rm(model.dir, { recursive: true, force: true });
57
- const cacheBytes = removed.reduce((sum, dir) => sum + (sizes.get(dir) ?? 0), 0);
58
- return { freedBytes: cacheBytes + modelBytes, engineCachesRemoved: removed.length };
59
- }
60
- //# sourceMappingURL=delete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/runtime/tensorrt-llm/delete.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { type GuestMount, type WslDistributionTransport } from '../wsl/index.js';
2
- /** Sizing and removing model and cache folders; the Linux default walks the file system itself. */
3
- export interface ModelFileOps {
4
- /** Bytes under each path; a path that is not there is 0. */
5
- sizes(paths: string[]): Promise<Map<string, number>>;
6
- remove(paths: string[]): Promise<void>;
7
- }
8
- export declare function guestModelFiles(transport: WslDistributionTransport, mount?: GuestMount): ModelFileOps;
@@ -1,49 +0,0 @@
1
- /**
2
- * The files of `tensorrt-llm` models and engine caches on Windows (change `add-tensorrt-llm-windows`,
3
- * task 2.8, design D5): they live in the WSL guest's ext4, and core sees them through
4
- * `\\wsl.localhost`. Listing and reading a `model.yml` through that path is fine; sizing or deleting
5
- * tens of gigabytes through it is not — thousands of 9p round trips for what `du` and `rm` do in the
6
- * guest at once. So sizes and removals run as commands in the guest, as root, with the guest paths
7
- * behind the UNC ones (`guestPathFor`, which refuses anything outside the distribution). One `du`
8
- * call for every path counts a hard-linked file once, as the Linux walk does.
9
- */
10
- import { AtomicCoreError } from '../../contracts/index.js';
11
- import { WSL_LOCALHOST_MOUNT } from '../wsl/index.js';
12
- const TIMEOUT_MS = 30 * 60_000;
13
- export function guestModelFiles(transport, mount = WSL_LOCALHOST_MOUNT) {
14
- const toGuest = (paths) => paths.map((path) => mount.guestPath(transport.name, path));
15
- return {
16
- sizes: async (paths) => {
17
- const sizes = new Map(paths.map((path) => [path, 0]));
18
- if (paths.length === 0)
19
- return sizes;
20
- const guest = toGuest(paths);
21
- const answer = await transport.exec(['du', '-s', '-b', '--', ...guest], {
22
- user: 'root',
23
- timeoutMs: TIMEOUT_MS,
24
- });
25
- // `du` exits 1 when one path is missing, and still prints every other.
26
- for (const line of answer.stdout.split('\n')) {
27
- const match = /^(\d+)\t(.+)$/.exec(line);
28
- if (match === null)
29
- continue;
30
- const index = guest.indexOf(match[2]);
31
- if (index !== -1)
32
- sizes.set(paths[index], Number(match[1]));
33
- }
34
- return sizes;
35
- },
36
- remove: async (paths) => {
37
- if (paths.length === 0)
38
- return;
39
- const answer = await transport.exec(['rm', '-rf', '--', ...toGuest(paths)], {
40
- user: 'root',
41
- timeoutMs: TIMEOUT_MS,
42
- });
43
- if (answer.code !== 0) {
44
- throw new AtomicCoreError('IO_ERROR', 'The files could not be removed in the Atomic Chat distribution.', answer.stderr.trim());
45
- }
46
- },
47
- };
48
- }
49
- //# sourceMappingURL=guest-files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guest-files.js","sourceRoot":"","sources":["../../../src/runtime/tensorrt-llm/guest-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAkD,MAAM,iBAAiB,CAAA;AASrG,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,CAAA;AAE9B,MAAM,UAAU,eAAe,CAC7B,SAAmC,EACnC,QAAoB,mBAAmB;IAEvC,MAAM,OAAO,GAAG,CAAC,KAAe,EAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACzG,OAAO;QACL,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAiB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACrE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE;gBACtE,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,UAAU;aACtB,CAAC,CAAA;YACF,uEAAuE;YACvE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACxC,IAAI,KAAK,KAAK,IAAI;oBAAE,SAAQ;gBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAA;gBAC/C,IAAI,KAAK,KAAK,CAAC,CAAC;oBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACvE,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACtB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YAC9B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC1E,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,UAAU;aACtB,CAAC,CAAA;YACF,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,eAAe,CACvB,UAAU,EACV,iEAAiE,EACjE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CACrB,CAAA;YACH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,20 +0,0 @@
1
- import type { TensorrtLlmModelLocation } from '../../contracts/index.js';
2
- import type { WindowsEnvironmentRecord } from '../environment/index.js';
3
- import { type GuestMount, type WslDistributionTransport } from '../wsl/index.js';
4
- /** Linux: `<data>/tensorrt-llm/models`, with the free space of the volume it is (or will be) on. */
5
- export declare function linuxModelLocation(root: string, freeBytes?: (path: string) => Promise<number | null>): Promise<TensorrtLlmModelLocation>;
6
- export interface WindowsModelLocationDeps {
7
- records: {
8
- read(): Promise<WindowsEnvironmentRecord | null>;
9
- };
10
- /** This scope's `scope_key` (`readOrCreateGuestScopeKey`). */
11
- scopeKey: () => Promise<string>;
12
- transport: (distribution: string) => WslDistributionTransport;
13
- /** Free bytes on the Windows volume holding `path` (`WindowsHost.freeDiskBytes`). */
14
- volumeFreeBytes: (path: string) => Promise<number | null>;
15
- /** How core reaches the guest's files; `\\wsl.localhost` unless a test says otherwise. */
16
- mount?: GuestMount;
17
- }
18
- /** The guest folder of this scope's `tensorrt-llm` models. */
19
- export declare function guestModelsRoot(scopeKey: string): string;
20
- export declare function windowsModelLocation(deps: WindowsModelLocationDeps): Promise<TensorrtLlmModelLocation>;
@@ -1,48 +0,0 @@
1
- /**
2
- * Where `tensorrt-llm` models live, as clients must use it (change `add-tensorrt-llm-windows`, task
3
- * 2.8, design D6; spec `tensorrt-llm-models` "Core сообщает расположение моделей"). One answer, from
4
- * core, on every platform, so a client never derives the folder itself: on Linux the data folder's own
5
- * `<data>/tensorrt-llm/models` as before; on Windows the scope's folder in Atomic Chat's WSL
6
- * distribution, `\\wsl.localhost\<distribution>\var\lib\atomic-chat\scopes\<scope_key>\models\tensorrt-llm`,
7
- * created (and handed to uid 1000) before a client writes into it. The free space on Windows is the
8
- * smaller of the guest's own and the Windows volume's that holds the distribution's disk image: the
9
- * guest's disk can grow only as far as that volume lets it. Before the distribution exists there is no
10
- * such folder: `MANAGED_ADAPTER_UNAVAILABLE`, and no download starts.
11
- */
12
- import { AtomicCoreError } from '../../contracts/index.js';
13
- import { freeBytesAtNearest, parseDfAvail } from '../environment/index.js';
14
- import { ensureGuestScope, guestScopeRoot, WSL_LOCALHOST_MOUNT, } from '../wsl/index.js';
15
- /** Linux: `<data>/tensorrt-llm/models`, with the free space of the volume it is (or will be) on. */
16
- export async function linuxModelLocation(root, freeBytes = freeBytesAtNearest) {
17
- return { root, free_bytes: await freeBytes(root).catch(() => null) };
18
- }
19
- /** The guest folder of this scope's `tensorrt-llm` models. */
20
- export function guestModelsRoot(scopeKey) {
21
- return `${guestScopeRoot(scopeKey)}/models/tensorrt-llm`;
22
- }
23
- export async function windowsModelLocation(deps) {
24
- const record = await deps.records.read();
25
- if (record === null) {
26
- throw new AtomicCoreError('MANAGED_ADAPTER_UNAVAILABLE', 'TensorRT-LLM models live in Atomic Chat’s WSL distribution, which is not set up yet.');
27
- }
28
- const key = await deps.scopeKey();
29
- const transport = deps.transport(record.distribution.name);
30
- const guestRoot = guestModelsRoot(key);
31
- // A distribution unregistered behind the app's back is no environment at all for a client.
32
- await ensureGuestScope(transport, key).catch((error) => {
33
- throw new AtomicCoreError('MANAGED_ADAPTER_UNAVAILABLE', 'Atomic Chat’s WSL distribution does not answer; set the environment up again.', error instanceof Error ? error.message : String(error));
34
- });
35
- const [guest, volume] = await Promise.all([
36
- transport
37
- .exec(['df', '--output=avail', '-B1', guestRoot], { user: 'root', timeoutMs: 120_000 })
38
- .then(parseDfAvail)
39
- .catch(() => null),
40
- deps.volumeFreeBytes(record.distribution.path).catch(() => null),
41
- ]);
42
- const known = [guest, volume].filter((value) => value !== null);
43
- return {
44
- root: (deps.mount ?? WSL_LOCALHOST_MOUNT).hostPath(record.distribution.name, guestRoot),
45
- free_bytes: known.length === 0 ? null : Math.min(...known),
46
- };
47
- }
48
- //# sourceMappingURL=location.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"location.js","sourceRoot":"","sources":["../../../src/runtime/tensorrt-llm/location.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE1E,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GAGpB,MAAM,iBAAiB,CAAA;AAExB,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,YAAsD,kBAAkB;IAExE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAA;AACtE,CAAC;AAaD,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,sBAAsB,CAAA;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IACxC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,eAAe,CACvB,6BAA6B,EAC7B,sFAAsF,CACvF,CAAA;IACH,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC1D,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IACtC,2FAA2F;IAC3F,MAAM,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAC9D,MAAM,IAAI,eAAe,CACvB,6BAA6B,EAC7B,+EAA+E,EAC/E,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAA;IACH,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxC,SAAS;aACN,IAAI,CAAC,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;aACtF,IAAI,CAAC,YAAY,CAAC;aAClB,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KACjE,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;IAChF,OAAO;QACL,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC;QACvF,UAAU,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KAC3D,CAAA;AACH,CAAC"}
@@ -1,38 +0,0 @@
1
- import type { CheckpointFile } from './compatibility.js';
2
- /** `model.yml`'s own fields, parsed and typed; nothing here is derived. */
3
- export interface TensorrtLlmModelYmlDocument {
4
- /** `null` when `model.yml` does not carry one (tolerated: `readTensorrtLlmModel`'s own contract). */
5
- repository: string | null;
6
- revision: string | null;
7
- architectures: string[];
8
- quantization: string | null;
9
- files: CheckpointFile[];
10
- }
11
- export interface TensorrtLlmModel {
12
- id: string;
13
- /** The checkpoint directory as core sees it; mounted read-only into the container. */
14
- dir: string;
15
- repository: string | null;
16
- revision: string | null;
17
- /** `architectures[0]`: the Hugging Face class name the descriptor's `model_families` is keyed by. */
18
- architecture: string | null;
19
- quantization: string | null;
20
- /** The revision's file listing exactly as `model.yml` recorded it (the pre-launch check's input). */
21
- files: CheckpointFile[];
22
- /** Weight bytes of `files` (`weightBytes`), 0 when `model.yml` lists none. */
23
- weightBytes: number;
24
- }
25
- /**
26
- * `model.yml`'s codec (`parse` only — the app and the CLI write it, core never does, spec
27
- * `tensorrt-llm-models`): `MANAGED_METADATA_INVALID` when `text` is not valid YAML or not a mapping.
28
- * `repository`/`revision`/`architectures`/`quantization` tolerate absence or the wrong type by
29
- * reading as `null`/`[]`, the same way `readTensorrtLlmModel`'s own tests already expect for a bare
30
- * `model.yml` — a model missing optional metadata is still a model, not a broken one. `files` is the
31
- * one field held to a stricter rule (task 2.16w round 1, finding 4): the array itself may be absent
32
- * (`[]`), but once present every entry must be well-formed (`fileList`/`parseFileEntry`) —
33
- * silently dropping a malformed entry would leave a shard unverified, a checkpoint's weight bytes
34
- * under-counted, or an `hf_quant_config.json` entry quietly lost.
35
- */
36
- export declare function parseTensorrtLlmModelYml(text: string, path: string): TensorrtLlmModelYmlDocument;
37
- /** `MODEL_NOT_FOUND` without a readable `model.yml`; `MANAGED_METADATA_INVALID` when it is not a mapping. */
38
- export declare function readTensorrtLlmModel(modelsDir: string, modelId: string): Promise<TensorrtLlmModel>;
@@ -1,137 +0,0 @@
1
- /**
2
- * Reading an installed `tensorrt-llm` model's directory under `<data>/tensorrt-llm/models/`: its
3
- * `model.yml` (`parseTensorrtLlmModelYml`, task 2.16 — the TRT-specific schema documented in
4
- * `docs/contracts.md`: `repository`, `revision`, `architectures`, `quantization`, `files` with
5
- * `path`/`size`/`sha256`) and the few derived facts a load needs — the first architecture (for the
6
- * descriptor's `model_families` entry) and the weight bytes (for the readiness timeout). The app and
7
- * the CLI write the directory and its `model.yml` last (spec `tensorrt-llm-models`); a directory
8
- * without one is a download still in progress and is not a model.
9
- *
10
- * `readTensorrtLlmModel` is the single-id lookup `TensorrtLlmRuntime.load` uses (task 2.14); the full
11
- * `ModelRegistry` scan across every installed model (`registry.ts`, task 2.16) shares
12
- * `parseTensorrtLlmModelYml` with it, so both agree about what `model.yml` means.
13
- */
14
- import { readFile } from 'node:fs/promises';
15
- import { join, relative, isAbsolute } from 'node:path';
16
- import { parse } from 'yaml';
17
- import { AtomicCoreError } from '../../contracts/index.js';
18
- import { MODEL_YML, modelDirFromId } from '../../config/index.js';
19
- import { weightBytes } from './compatibility.js';
20
- /** An id is one or more `/`-separated path segments inside the models directory, never out of it. */
21
- function assertModelId(modelsDir, modelId) {
22
- const segments = modelId.split('/');
23
- if (modelId === '' || segments.some((s) => s === '' || s === '.' || s === '..' || s.includes('\\'))) {
24
- throw new AtomicCoreError('INVALID_ARGUMENT', 'Not a tensorrt-llm model id.', modelId);
25
- }
26
- const dir = modelDirFromId(modelsDir, modelId);
27
- const inside = relative(modelsDir, dir);
28
- if (inside === '' || inside.startsWith('..') || isAbsolute(inside)) {
29
- throw new AtomicCoreError('INVALID_ARGUMENT', 'Not a tensorrt-llm model id.', modelId);
30
- }
31
- return dir;
32
- }
33
- /**
34
- * A relative file path safe to join onto the model directory and mount read-only into a container:
35
- * forward-slash separated, never absolute, no empty/`.`/`..` segment and no backslash (which some
36
- * shells would treat as an escape on the file's own leaf name).
37
- */
38
- function isSafeRelativePath(path) {
39
- if (path === '' || path.startsWith('/') || path.includes('\\'))
40
- return false;
41
- return path.split('/').every((segment) => segment !== '' && segment !== '.' && segment !== '..');
42
- }
43
- /**
44
- * One `model.yml` `files[]` entry, strictly: `MANAGED_METADATA_INVALID` for anything malformed
45
- * (task 2.16w round 1, finding 4) — a non-string or unsafe `path`, a `size` that is not a finite
46
- * non-negative integer, a `sha256` that is neither a string nor `null`. The previous, lenient
47
- * parsing silently dropped a malformed entry instead: an unverified shard the pre-launch check would
48
- * never even look for, a checkpoint's weight bytes under-counted, or an `hf_quant_config.json` entry
49
- * quietly lost — every one of those is worse than refusing the model outright and naming why.
50
- */
51
- function parseFileEntry(raw, index, path) {
52
- if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
53
- throw new AtomicCoreError('MANAGED_METADATA_INVALID', `${path}: files[${index}] is not a mapping.`, JSON.stringify(raw));
54
- }
55
- const entry = raw;
56
- if (typeof entry.path !== 'string' || !isSafeRelativePath(entry.path)) {
57
- throw new AtomicCoreError('MANAGED_METADATA_INVALID', `${path}: files[${index}].path is not a safe relative path.`, String(entry.path));
58
- }
59
- if (typeof entry.size !== 'number' || !Number.isInteger(entry.size) || entry.size < 0) {
60
- throw new AtomicCoreError('MANAGED_METADATA_INVALID', `${path}: files[${index}].size must be a non-negative integer.`, String(entry.size));
61
- }
62
- if (entry.sha256 !== undefined && entry.sha256 !== null && typeof entry.sha256 !== 'string') {
63
- throw new AtomicCoreError('MANAGED_METADATA_INVALID', `${path}: files[${index}].sha256 must be a string or null.`, String(entry.sha256));
64
- }
65
- return {
66
- path: entry.path,
67
- size: entry.size,
68
- sha256: typeof entry.sha256 === 'string' ? entry.sha256 : null,
69
- };
70
- }
71
- /** `files` absent entirely is tolerated as `[]` (a bare `model.yml` is still a model); once present, every entry must be well-formed. */
72
- function fileList(raw, path) {
73
- if (raw === undefined)
74
- return [];
75
- if (!Array.isArray(raw)) {
76
- throw new AtomicCoreError('MANAGED_METADATA_INVALID', `${path}: files must be an array.`, JSON.stringify(raw));
77
- }
78
- return raw.map((entry, index) => parseFileEntry(entry, index, path));
79
- }
80
- /**
81
- * `model.yml`'s codec (`parse` only — the app and the CLI write it, core never does, spec
82
- * `tensorrt-llm-models`): `MANAGED_METADATA_INVALID` when `text` is not valid YAML or not a mapping.
83
- * `repository`/`revision`/`architectures`/`quantization` tolerate absence or the wrong type by
84
- * reading as `null`/`[]`, the same way `readTensorrtLlmModel`'s own tests already expect for a bare
85
- * `model.yml` — a model missing optional metadata is still a model, not a broken one. `files` is the
86
- * one field held to a stricter rule (task 2.16w round 1, finding 4): the array itself may be absent
87
- * (`[]`), but once present every entry must be well-formed (`fileList`/`parseFileEntry`) —
88
- * silently dropping a malformed entry would leave a shard unverified, a checkpoint's weight bytes
89
- * under-counted, or an `hf_quant_config.json` entry quietly lost.
90
- */
91
- export function parseTensorrtLlmModelYml(text, path) {
92
- let yml;
93
- try {
94
- yml = parse(text);
95
- }
96
- catch (error) {
97
- throw new AtomicCoreError('MANAGED_METADATA_INVALID', `${path} is not valid YAML.`, String(error));
98
- }
99
- if (yml === null || typeof yml !== 'object' || Array.isArray(yml)) {
100
- throw new AtomicCoreError('MANAGED_METADATA_INVALID', `${path} does not describe a model.`, path);
101
- }
102
- const doc = yml;
103
- const architectures = Array.isArray(doc['architectures'])
104
- ? doc['architectures'].filter((entry) => typeof entry === 'string' && entry !== '')
105
- : [];
106
- return {
107
- repository: typeof doc['repository'] === 'string' ? doc['repository'] : null,
108
- revision: typeof doc['revision'] === 'string' ? doc['revision'] : null,
109
- architectures,
110
- quantization: typeof doc['quantization'] === 'string' ? doc['quantization'] : null,
111
- files: fileList(doc['files'], path),
112
- };
113
- }
114
- /** `MODEL_NOT_FOUND` without a readable `model.yml`; `MANAGED_METADATA_INVALID` when it is not a mapping. */
115
- export async function readTensorrtLlmModel(modelsDir, modelId) {
116
- const dir = assertModelId(modelsDir, modelId);
117
- const path = join(dir, MODEL_YML);
118
- let text;
119
- try {
120
- text = await readFile(path, 'utf8');
121
- }
122
- catch {
123
- throw new AtomicCoreError('MODEL_NOT_FOUND', `The tensorrt-llm model '${modelId}' is not installed.`, path);
124
- }
125
- const yml = parseTensorrtLlmModelYml(text, path);
126
- return {
127
- id: modelId,
128
- dir,
129
- repository: yml.repository,
130
- revision: yml.revision,
131
- architecture: yml.architectures[0] ?? null,
132
- quantization: yml.quantization,
133
- files: yml.files,
134
- weightBytes: weightBytes(yml.files),
135
- };
136
- }
137
- //# sourceMappingURL=model-dir.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-dir.js","sourceRoot":"","sources":["../../../src/runtime/tensorrt-llm/model-dir.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- /**
2
- * The quantization-format naming rule: a fixed checkpoint-metadata → format-name mapping that
3
- * `RuntimeDescriptor.quantization[].format` (`src/contracts/environment.ts`) is keyed by. Ported
4
- * verbatim from `atomic-chat-conf`'s README, "Runtime descriptors (`runtimes/`)" →
5
- * `quantization[].format` names — this file *is* the core side of that conf↔core contract, so any
6
- * change to the rule has to change both places together.
7
- *
8
- * The inputs are a checkpoint's `config.json` and, when the repository carries the file, its
9
- * `hf_quant_config.json`. A checkpoint can be quantized with no `quantization_config` in
10
- * `config.json` at all (e.g. `nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8`,
11
- * `nvidia/Llama-3.3-70B-Instruct-NVFP4`), so `hf_quant_config.json` must always be checked before
12
- * `dtype`/`torch_dtype` is trusted. Steps apply in order, stopping at the first that matches; `null`
13
- * means the naming rule does not recognise the checkpoint (an unsupported `quant_method` such as
14
- * `awq`/`gptq`, an `fp8` checkpoint without the block size this engine loads, or a `dtype` other
15
- * than `bfloat16`/`float16`) — the caller rejects that as an unsupported format, never guesses.
16
- *
17
- * Pure and network-free, like every file in this module (design D12).
18
- */
19
- /** A parsed JSON object, exactly as `config.json` / `hf_quant_config.json` arrive on the wire. */
20
- export type JsonObject = Record<string, unknown>;
21
- /**
22
- * Every sibling that is a `.gguf` file. GGUF is not a case of the naming rule at all — this engine
23
- * never loads a GGUF checkpoint's `config.json` — it is the separate, always-reject gate
24
- * `compatibility.ts` applies before the naming rule runs at all (spec `tensorrt-llm-models`: "for
25
- * GGUF there is llama.cpp"). A listing with even one `.gguf` file counts, which also covers a
26
- * GGUF-only listing.
27
- */
28
- export declare function isGgufCheckpoint(files: readonly {
29
- path: string;
30
- }[]): boolean;
31
- /**
32
- * The naming rule, applied in order. `null` means unrecognised: the caller must reject it as an
33
- * unsupported format rather than reporting `bf16`/`fp16` by default.
34
- *
35
- * `hf_quant_config.json` being present at all stops the rule at step 1 — its own `null` (an
36
- * unrecognised or missing `quant_algo`) is final and never falls through to `config.json`/`dtype`,
37
- * matching the README: "if hf_quant_config.json is present ... the format is its quant_algo".
38
- */
39
- export declare function quantizationFormat(configJson: JsonObject, hfQuantConfigJson: JsonObject | null): string | null;
40
- /**
41
- * The KV-cache's own quantization algorithm — NVIDIA ModelOpt's `kv_cache_quant_algo`, a sibling
42
- * field to `quant_algo` above, read the same way and from the same object: `hf_quant_config.json`'s
43
- * `quantization` when the repository carries the file, else `config.json`'s `quantization_config`.
44
- * Used by the KV-cache memory formula (`compatibility.ts`, task 2.16w round 1) to size a KV cache
45
- * entry at 1 byte (`FP8`) instead of the engine's own default 2 bytes (`bf16`/`fp16`). `undefined`
46
- * when neither object carries it — an unquantized KV cache, or a checkpoint this naming rule does
47
- * not otherwise recognise.
48
- */
49
- export declare function kvCacheQuantAlgo(configJson: JsonObject, hfQuantConfigJson: JsonObject | null): string | undefined;
50
- /**
51
- * What the naming rule actually saw when it did not recognise a format, for error messages only —
52
- * never consulted to decide the format itself (that is `quantizationFormat`'s job alone). Mirrors
53
- * `quantizationFormat`'s own step order, so the two must be kept in sync.
54
- */
55
- export declare function describeUnrecognizedQuantization(configJson: JsonObject, hfQuantConfigJson: JsonObject | null): string;
56
- /** What NVIDIA ModelOpt calls a checkpoint whose layers carry different formats. */
57
- export declare const MIXED_PRECISION = "mixed_precision";
58
- /**
59
- * The formats a checkpoint actually needs the engine to load. One format for every checkpoint but a
60
- * ModelOpt `MIXED_PRECISION` one, whose `hf_quant_config.json` lists a `quant_algo` per layer in
61
- * `quantization.quantized_layers` (e.g. `NVFP4` + `FP8`, or `W4A16_NVFP4` + `FP8`): every distinct
62
- * per-layer format, named by the same rule as a whole-checkpoint `quant_algo`. An empty list means
63
- * the mixed checkpoint names no per-layer format at all, which the caller must reject.
64
- */
65
- export declare function quantizationComponents(format: string, hfQuantConfigJson: JsonObject | null): string[];