@atomic-chat/core 0.5.1 → 0.13.2

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 (970) hide show
  1. package/README.md +22 -0
  2. package/dist/app-daemon.js +20 -67
  3. package/dist/app-daemon.js.map +1 -1
  4. package/dist/backend/advisor/advisor.d.ts +132 -0
  5. package/dist/backend/advisor/advisor.js +537 -0
  6. package/dist/backend/advisor/advisor.js.map +1 -0
  7. package/dist/backend/advisor/index.d.ts +6 -0
  8. package/dist/backend/advisor/index.js +7 -0
  9. package/dist/backend/advisor/index.js.map +1 -0
  10. package/dist/backend/advisor/policy.d.ts +81 -0
  11. package/dist/backend/advisor/policy.js +154 -0
  12. package/dist/backend/advisor/policy.js.map +1 -0
  13. package/dist/backend/catalog/archive.d.ts +21 -7
  14. package/dist/backend/catalog/archive.js +57 -17
  15. package/dist/backend/catalog/archive.js.map +1 -1
  16. package/dist/backend/catalog/bundled-manifest-baseline.js +42 -26
  17. package/dist/backend/catalog/bundled-manifest-baseline.js.map +1 -1
  18. package/dist/backend/catalog/cuda-family.d.ts +12 -2
  19. package/dist/backend/catalog/cuda-family.js +30 -7
  20. package/dist/backend/catalog/cuda-family.js.map +1 -1
  21. package/dist/backend/catalog/index.d.ts +5 -0
  22. package/dist/backend/catalog/index.js +5 -0
  23. package/dist/backend/catalog/index.js.map +1 -1
  24. package/dist/backend/catalog/manifest.d.ts +5 -3
  25. package/dist/backend/catalog/manifest.js +12 -9
  26. package/dist/backend/catalog/manifest.js.map +1 -1
  27. package/dist/backend/catalog/migrate.d.ts +8 -6
  28. package/dist/backend/catalog/migrate.js +26 -15
  29. package/dist/backend/catalog/migrate.js.map +1 -1
  30. package/dist/backend/catalog/prism-catalog.d.ts +42 -0
  31. package/dist/backend/catalog/prism-catalog.js +101 -0
  32. package/dist/backend/catalog/prism-catalog.js.map +1 -0
  33. package/dist/backend/catalog/prism-manifest-baseline.d.ts +2 -0
  34. package/dist/backend/catalog/prism-manifest-baseline.js +11 -0
  35. package/dist/backend/catalog/prism-manifest-baseline.js.map +1 -0
  36. package/dist/backend/catalog/prism-manifest-baseline.json +134 -0
  37. package/dist/backend/catalog/prism-manifest.d.ts +90 -0
  38. package/dist/backend/catalog/prism-manifest.js +171 -0
  39. package/dist/backend/catalog/prism-manifest.js.map +1 -0
  40. package/dist/backend/catalog/turboquant-catalog.d.ts +60 -0
  41. package/dist/backend/catalog/turboquant-catalog.js +162 -0
  42. package/dist/backend/catalog/turboquant-catalog.js.map +1 -0
  43. package/dist/backend/catalog/turboquant-index.d.ts +104 -0
  44. package/dist/backend/catalog/turboquant-index.js +260 -0
  45. package/dist/backend/catalog/turboquant-index.js.map +1 -0
  46. package/dist/backend/index.d.ts +1 -0
  47. package/dist/backend/index.js +1 -0
  48. package/dist/backend/index.js.map +1 -1
  49. package/dist/backend/install/runtime-backend.d.ts +6 -6
  50. package/dist/backend/install/runtime-backend.js +23 -20
  51. package/dist/backend/install/runtime-backend.js.map +1 -1
  52. package/dist/backend/install/service.d.ts +106 -5
  53. package/dist/backend/install/service.js +247 -21
  54. package/dist/backend/install/service.js.map +1 -1
  55. package/dist/backend/installed/bundled.d.ts +19 -0
  56. package/dist/backend/installed/bundled.js +45 -0
  57. package/dist/backend/installed/bundled.js.map +1 -0
  58. package/dist/backend/installed/index.d.ts +1 -0
  59. package/dist/backend/installed/index.js +1 -0
  60. package/dist/backend/installed/index.js.map +1 -1
  61. package/dist/backend/installed/installed.js +3 -0
  62. package/dist/backend/installed/installed.js.map +1 -1
  63. package/dist/backend/optimal/optimal-cache.d.ts +27 -8
  64. package/dist/backend/optimal/optimal-cache.js +38 -19
  65. package/dist/backend/optimal/optimal-cache.js.map +1 -1
  66. package/dist/backend/optimal/optimal-store.js +1 -1
  67. package/dist/backend/optimal/optimal-store.js.map +1 -1
  68. package/dist/backend/select/categories.d.ts +2 -1
  69. package/dist/backend/select/categories.js +8 -1
  70. package/dist/backend/select/categories.js.map +1 -1
  71. package/dist/backend/select/features.d.ts +13 -5
  72. package/dist/backend/select/features.js +36 -6
  73. package/dist/backend/select/features.js.map +1 -1
  74. package/dist/backend/select/index.d.ts +2 -0
  75. package/dist/backend/select/index.js +2 -0
  76. package/dist/backend/select/index.js.map +1 -1
  77. package/dist/backend/select/prism.d.ts +54 -0
  78. package/dist/backend/select/prism.js +212 -0
  79. package/dist/backend/select/prism.js.map +1 -0
  80. package/dist/backend/select/recovery.d.ts +4 -2
  81. package/dist/backend/select/recovery.js +17 -5
  82. package/dist/backend/select/recovery.js.map +1 -1
  83. package/dist/backend/select/tiers.d.ts +20 -11
  84. package/dist/backend/select/tiers.js +49 -11
  85. package/dist/backend/select/tiers.js.map +1 -1
  86. package/dist/backend/select/turboquant-tiers.d.ts +45 -0
  87. package/dist/backend/select/turboquant-tiers.js +114 -0
  88. package/dist/backend/select/turboquant-tiers.js.map +1 -0
  89. package/dist/backend/types.d.ts +6 -69
  90. package/dist/cli/commands/backends.d.ts +10 -0
  91. package/dist/cli/commands/backends.js +142 -0
  92. package/dist/cli/commands/backends.js.map +1 -0
  93. package/dist/cli/commands/hardware.d.ts +13 -0
  94. package/dist/cli/commands/hardware.js +71 -0
  95. package/dist/cli/commands/hardware.js.map +1 -0
  96. package/dist/cli/commands/host-step.d.ts +28 -0
  97. package/dist/cli/commands/host-step.js +67 -0
  98. package/dist/cli/commands/host-step.js.map +1 -0
  99. package/dist/cli/commands/index.d.ts +4 -1
  100. package/dist/cli/commands/index.js +4 -1
  101. package/dist/cli/commands/index.js.map +1 -1
  102. package/dist/cli/commands/serve.js +4 -4
  103. package/dist/cli/commands/serve.js.map +1 -1
  104. package/dist/cli/commands/shared.d.ts +6 -1
  105. package/dist/cli/commands/shared.js +7 -0
  106. package/dist/cli/commands/shared.js.map +1 -1
  107. package/dist/cli/io.d.ts +11 -0
  108. package/dist/cli/io.js +28 -3
  109. package/dist/cli/io.js.map +1 -1
  110. package/dist/cli/launch.js +2 -2
  111. package/dist/cli/launch.js.map +1 -1
  112. package/dist/cli/main.d.ts +1 -1
  113. package/dist/cli/main.js +11 -1
  114. package/dist/cli/main.js.map +1 -1
  115. package/dist/client/control-client.d.ts +128 -7
  116. package/dist/client/control-client.js +211 -12
  117. package/dist/client/control-client.js.map +1 -1
  118. package/dist/cloud/registry.js +9 -1
  119. package/dist/cloud/registry.js.map +1 -1
  120. package/dist/config/paths.d.ts +137 -0
  121. package/dist/config/paths.js +163 -0
  122. package/dist/config/paths.js.map +1 -1
  123. package/dist/contracts/backend-advisor.d.ts +225 -0
  124. package/dist/contracts/backend-advisor.js +14 -0
  125. package/dist/contracts/backend-advisor.js.map +1 -0
  126. package/dist/contracts/control-api.d.ts +7 -1
  127. package/dist/contracts/control-api.js +7 -1
  128. package/dist/contracts/control-api.js.map +1 -1
  129. package/dist/contracts/decision.d.ts +394 -0
  130. package/dist/contracts/decision.js +69 -0
  131. package/dist/contracts/decision.js.map +1 -0
  132. package/dist/contracts/diffusion.d.ts +62 -9
  133. package/dist/contracts/embedding.d.ts +103 -0
  134. package/dist/contracts/embedding.js +24 -0
  135. package/dist/contracts/embedding.js.map +1 -0
  136. package/dist/contracts/engine-builds.d.ts +108 -0
  137. package/dist/contracts/engine-builds.js +11 -0
  138. package/dist/contracts/engine-builds.js.map +1 -0
  139. package/dist/contracts/engines.d.ts +157 -0
  140. package/dist/contracts/engines.js +50 -0
  141. package/dist/contracts/engines.js.map +1 -0
  142. package/dist/contracts/environment.d.ts +774 -0
  143. package/dist/contracts/environment.js +116 -0
  144. package/dist/contracts/environment.js.map +1 -0
  145. package/dist/contracts/errors.d.ts +43 -2
  146. package/dist/contracts/errors.js +41 -0
  147. package/dist/contracts/errors.js.map +1 -1
  148. package/dist/contracts/events.d.ts +82 -4
  149. package/dist/contracts/hardware.d.ts +79 -6
  150. package/dist/contracts/hardware.js +9 -5
  151. package/dist/contracts/hardware.js.map +1 -1
  152. package/dist/contracts/index.d.ts +8 -0
  153. package/dist/contracts/index.js +8 -0
  154. package/dist/contracts/index.js.map +1 -1
  155. package/dist/contracts/model-compatibility.d.ts +97 -0
  156. package/dist/contracts/model-compatibility.js +6 -0
  157. package/dist/contracts/model-compatibility.js.map +1 -0
  158. package/dist/contracts/model-setup.d.ts +115 -0
  159. package/dist/contracts/model-setup.js +33 -0
  160. package/dist/contracts/model-setup.js.map +1 -0
  161. package/dist/contracts/model-yml.d.ts +14 -0
  162. package/dist/contracts/model-yml.js +1 -0
  163. package/dist/contracts/model-yml.js.map +1 -1
  164. package/dist/contracts/session.d.ts +45 -2
  165. package/dist/contracts/session.js +14 -1
  166. package/dist/contracts/session.js.map +1 -1
  167. package/dist/contracts/settings.d.ts +44 -1
  168. package/dist/contracts/settings.js.map +1 -1
  169. package/dist/core/atomic-core.d.ts +44 -5
  170. package/dist/core/atomic-core.js +24 -0
  171. package/dist/core/atomic-core.js.map +1 -1
  172. package/dist/core/create.js +517 -23
  173. package/dist/core/create.js.map +1 -1
  174. package/dist/core/gpu/index.d.ts +6 -0
  175. package/dist/core/gpu/index.js +7 -0
  176. package/dist/core/gpu/index.js.map +1 -0
  177. package/dist/core/gpu/policy.d.ts +68 -0
  178. package/dist/core/gpu/policy.js +99 -0
  179. package/dist/core/gpu/policy.js.map +1 -0
  180. package/dist/core/gpu/residency.d.ts +44 -0
  181. package/dist/core/gpu/residency.js +101 -0
  182. package/dist/core/gpu/residency.js.map +1 -0
  183. package/dist/core/gpu-residency.d.ts +39 -0
  184. package/dist/core/gpu-residency.js +32 -0
  185. package/dist/core/gpu-residency.js.map +1 -0
  186. package/dist/core/index.d.ts +1 -1
  187. package/dist/core/managed-engines.d.ts +207 -0
  188. package/dist/core/managed-engines.js +579 -0
  189. package/dist/core/managed-engines.js.map +1 -0
  190. package/dist/core/managed-environment.d.ts +72 -0
  191. package/dist/core/managed-environment.js +218 -0
  192. package/dist/core/managed-environment.js.map +1 -0
  193. package/dist/core/model-setup/index.d.ts +4 -0
  194. package/dist/core/model-setup/index.js +5 -0
  195. package/dist/core/model-setup/index.js.map +1 -0
  196. package/dist/core/model-setup/plan.d.ts +56 -0
  197. package/dist/core/model-setup/plan.js +158 -0
  198. package/dist/core/model-setup/plan.js.map +1 -0
  199. package/dist/core/model-setup/service.d.ts +92 -0
  200. package/dist/core/model-setup/service.js +329 -0
  201. package/dist/core/model-setup/service.js.map +1 -0
  202. package/dist/core/model-setup/store.d.ts +29 -0
  203. package/dist/core/model-setup/store.js +116 -0
  204. package/dist/core/model-setup/store.js.map +1 -0
  205. package/dist/core/model-setup/wiring.d.ts +59 -0
  206. package/dist/core/model-setup/wiring.js +132 -0
  207. package/dist/core/model-setup/wiring.js.map +1 -0
  208. package/dist/core/prism.d.ts +36 -0
  209. package/dist/core/prism.js +42 -0
  210. package/dist/core/prism.js.map +1 -0
  211. package/dist/core/public-server.d.ts +7 -0
  212. package/dist/core/public-server.js +2 -0
  213. package/dist/core/public-server.js.map +1 -1
  214. package/dist/core/sessions.d.ts +6 -1
  215. package/dist/core/sessions.js +18 -14
  216. package/dist/core/sessions.js.map +1 -1
  217. package/dist/core/types.d.ts +27 -1
  218. package/dist/core/types.js.map +1 -1
  219. package/dist/decision/args.d.ts +110 -0
  220. package/dist/decision/args.js +126 -0
  221. package/dist/decision/args.js.map +1 -0
  222. package/dist/decision/backoff.d.ts +25 -0
  223. package/dist/decision/backoff.js +33 -0
  224. package/dist/decision/backoff.js.map +1 -0
  225. package/dist/decision/engine-candidates.d.ts +52 -0
  226. package/dist/decision/engine-candidates.js +138 -0
  227. package/dist/decision/engine-candidates.js.map +1 -0
  228. package/dist/decision/engine-fallback.d.ts +41 -0
  229. package/dist/decision/engine-fallback.js +57 -0
  230. package/dist/decision/engine-fallback.js.map +1 -0
  231. package/dist/decision/engine-version.d.ts +27 -0
  232. package/dist/decision/engine-version.js +54 -0
  233. package/dist/decision/engine-version.js.map +1 -0
  234. package/dist/decision/engine.d.ts +114 -0
  235. package/dist/decision/engine.js +253 -0
  236. package/dist/decision/engine.js.map +1 -0
  237. package/dist/decision/http.d.ts +36 -0
  238. package/dist/decision/http.js +73 -0
  239. package/dist/decision/http.js.map +1 -0
  240. package/dist/decision/index.d.ts +20 -0
  241. package/dist/decision/index.js +21 -0
  242. package/dist/decision/index.js.map +1 -0
  243. package/dist/decision/model-facts.d.ts +32 -0
  244. package/dist/decision/model-facts.js +40 -0
  245. package/dist/decision/model-facts.js.map +1 -0
  246. package/dist/decision/outcome.d.ts +35 -0
  247. package/dist/decision/outcome.js +105 -0
  248. package/dist/decision/outcome.js.map +1 -0
  249. package/dist/decision/process.d.ts +67 -0
  250. package/dist/decision/process.js +133 -0
  251. package/dist/decision/process.js.map +1 -0
  252. package/dist/decision/readiness.d.ts +74 -0
  253. package/dist/decision/readiness.js +165 -0
  254. package/dist/decision/readiness.js.map +1 -0
  255. package/dist/decision/request.d.ts +11 -0
  256. package/dist/decision/request.js +56 -0
  257. package/dist/decision/request.js.map +1 -0
  258. package/dist/decision/service.d.ts +202 -0
  259. package/dist/decision/service.js +711 -0
  260. package/dist/decision/service.js.map +1 -0
  261. package/dist/decision/upstream-version.d.ts +23 -0
  262. package/dist/decision/upstream-version.js +34 -0
  263. package/dist/decision/upstream-version.js.map +1 -0
  264. package/dist/decision/wiring.d.ts +67 -0
  265. package/dist/decision/wiring.js +101 -0
  266. package/dist/decision/wiring.js.map +1 -0
  267. package/dist/diffusion/args.d.ts +4 -2
  268. package/dist/diffusion/args.js +10 -3
  269. package/dist/diffusion/args.js.map +1 -1
  270. package/dist/diffusion/image-job.js +1 -1
  271. package/dist/diffusion/image-job.js.map +1 -1
  272. package/dist/diffusion/install.d.ts +35 -11
  273. package/dist/diffusion/install.js +74 -49
  274. package/dist/diffusion/install.js.map +1 -1
  275. package/dist/diffusion/job-kind.d.ts +33 -7
  276. package/dist/diffusion/jobs.d.ts +6 -1
  277. package/dist/diffusion/jobs.js +60 -18
  278. package/dist/diffusion/jobs.js.map +1 -1
  279. package/dist/diffusion/parse.d.ts +1 -2
  280. package/dist/diffusion/parse.js +1 -13
  281. package/dist/diffusion/parse.js.map +1 -1
  282. package/dist/diffusion/progress.js +3 -0
  283. package/dist/diffusion/progress.js.map +1 -1
  284. package/dist/diffusion/server-process.d.ts +6 -0
  285. package/dist/diffusion/server-process.js +3 -2
  286. package/dist/diffusion/server-process.js.map +1 -1
  287. package/dist/diffusion/service.d.ts +52 -6
  288. package/dist/diffusion/service.js +215 -40
  289. package/dist/diffusion/service.js.map +1 -1
  290. package/dist/diffusion/session.d.ts +27 -3
  291. package/dist/diffusion/session.js +108 -17
  292. package/dist/diffusion/session.js.map +1 -1
  293. package/dist/diffusion/state.d.ts +19 -1
  294. package/dist/diffusion/state.js +10 -0
  295. package/dist/diffusion/state.js.map +1 -1
  296. package/dist/diffusion/tracker.d.ts +15 -1
  297. package/dist/diffusion/tracker.js +32 -6
  298. package/dist/diffusion/tracker.js.map +1 -1
  299. package/dist/diffusion/types.d.ts +7 -0
  300. package/dist/diffusion/types.js +11 -0
  301. package/dist/diffusion/types.js.map +1 -1
  302. package/dist/diffusion/video-estimate.d.ts +214 -0
  303. package/dist/diffusion/video-estimate.js +402 -0
  304. package/dist/diffusion/video-estimate.js.map +1 -0
  305. package/dist/diffusion/video-eta.d.ts +90 -0
  306. package/dist/diffusion/video-eta.js +248 -0
  307. package/dist/diffusion/video-eta.js.map +1 -0
  308. package/dist/diffusion/video-history.d.ts +45 -0
  309. package/dist/diffusion/video-history.js +121 -0
  310. package/dist/diffusion/video-history.js.map +1 -0
  311. package/dist/diffusion/video-job.d.ts +13 -5
  312. package/dist/diffusion/video-job.js +42 -15
  313. package/dist/diffusion/video-job.js.map +1 -1
  314. package/dist/diffusion/video-recipe.js +3 -0
  315. package/dist/diffusion/video-recipe.js.map +1 -1
  316. package/dist/diffusion/video-tiling.d.ts +54 -0
  317. package/dist/diffusion/video-tiling.js +70 -0
  318. package/dist/diffusion/video-tiling.js.map +1 -0
  319. package/dist/diffusion/wiring.d.ts +14 -1
  320. package/dist/diffusion/wiring.js +7 -0
  321. package/dist/diffusion/wiring.js.map +1 -1
  322. package/dist/downloads/protocol.d.ts +3 -8
  323. package/dist/downloads/protocol.js.map +1 -1
  324. package/dist/embedding/args.d.ts +39 -0
  325. package/dist/embedding/args.js +46 -0
  326. package/dist/embedding/args.js.map +1 -0
  327. package/dist/embedding/engine.d.ts +50 -0
  328. package/dist/embedding/engine.js +100 -0
  329. package/dist/embedding/engine.js.map +1 -0
  330. package/dist/embedding/ffmpeg.d.ts +18 -0
  331. package/dist/embedding/ffmpeg.js +63 -0
  332. package/dist/embedding/ffmpeg.js.map +1 -0
  333. package/dist/embedding/index.d.ts +16 -0
  334. package/dist/embedding/index.js +17 -0
  335. package/dist/embedding/index.js.map +1 -0
  336. package/dist/embedding/model-facts.d.ts +51 -0
  337. package/dist/embedding/model-facts.js +84 -0
  338. package/dist/embedding/model-facts.js.map +1 -0
  339. package/dist/embedding/process.d.ts +66 -0
  340. package/dist/embedding/process.js +131 -0
  341. package/dist/embedding/process.js.map +1 -0
  342. package/dist/embedding/readiness.d.ts +56 -0
  343. package/dist/embedding/readiness.js +114 -0
  344. package/dist/embedding/readiness.js.map +1 -0
  345. package/dist/embedding/request.d.ts +43 -0
  346. package/dist/embedding/request.js +285 -0
  347. package/dist/embedding/request.js.map +1 -0
  348. package/dist/embedding/service.d.ts +152 -0
  349. package/dist/embedding/service.js +602 -0
  350. package/dist/embedding/service.js.map +1 -0
  351. package/dist/embedding/wiring.d.ts +51 -0
  352. package/dist/embedding/wiring.js +79 -0
  353. package/dist/embedding/wiring.js.map +1 -0
  354. package/dist/engine-builds/builds.d.ts +54 -0
  355. package/dist/engine-builds/builds.js +151 -0
  356. package/dist/engine-builds/builds.js.map +1 -0
  357. package/dist/engine-builds/index.d.ts +10 -0
  358. package/dist/engine-builds/index.js +11 -0
  359. package/dist/engine-builds/index.js.map +1 -0
  360. package/dist/engine-builds/install.d.ts +42 -0
  361. package/dist/engine-builds/install.js +100 -0
  362. package/dist/engine-builds/install.js.map +1 -0
  363. package/dist/engine-builds/manifest.d.ts +121 -0
  364. package/dist/engine-builds/manifest.js +254 -0
  365. package/dist/engine-builds/manifest.js.map +1 -0
  366. package/dist/engine-builds/order.d.ts +24 -0
  367. package/dist/engine-builds/order.js +44 -0
  368. package/dist/engine-builds/order.js.map +1 -0
  369. package/dist/engine-builds/select.d.ts +123 -0
  370. package/dist/engine-builds/select.js +223 -0
  371. package/dist/engine-builds/select.js.map +1 -0
  372. package/dist/engine-builds/service.d.ts +123 -0
  373. package/dist/engine-builds/service.js +392 -0
  374. package/dist/engine-builds/service.js.map +1 -0
  375. package/dist/engines/descriptor-order.d.ts +28 -0
  376. package/dist/engines/descriptor-order.js +60 -0
  377. package/dist/engines/descriptor-order.js.map +1 -0
  378. package/dist/engines/engine-build.d.ts +23 -0
  379. package/dist/engines/engine-build.js +58 -0
  380. package/dist/engines/engine-build.js.map +1 -0
  381. package/dist/engines/index.d.ts +10 -0
  382. package/dist/engines/index.js +11 -0
  383. package/dist/engines/index.js.map +1 -0
  384. package/dist/engines/llamacpp.d.ts +71 -0
  385. package/dist/engines/llamacpp.js +176 -0
  386. package/dist/engines/llamacpp.js.map +1 -0
  387. package/dist/engines/managed.d.ts +49 -0
  388. package/dist/engines/managed.js +88 -0
  389. package/dist/engines/managed.js.map +1 -0
  390. package/dist/engines/service.d.ts +46 -0
  391. package/dist/engines/service.js +61 -0
  392. package/dist/engines/service.js.map +1 -0
  393. package/dist/engines/versions.d.ts +65 -0
  394. package/dist/engines/versions.js +259 -0
  395. package/dist/engines/versions.js.map +1 -0
  396. package/dist/hardware/cpu-flags.d.ts +44 -0
  397. package/dist/hardware/cpu-flags.js +206 -0
  398. package/dist/hardware/cpu-flags.js.map +1 -0
  399. package/dist/hardware/drm-sysfs.d.ts +51 -0
  400. package/dist/hardware/drm-sysfs.js +67 -0
  401. package/dist/hardware/drm-sysfs.js.map +1 -0
  402. package/dist/hardware/facts.d.ts +42 -0
  403. package/dist/hardware/facts.js +92 -0
  404. package/dist/hardware/facts.js.map +1 -0
  405. package/dist/hardware/index.d.ts +19 -3
  406. package/dist/hardware/index.js +19 -3
  407. package/dist/hardware/index.js.map +1 -1
  408. package/dist/hardware/merge.d.ts +55 -0
  409. package/dist/hardware/merge.js +141 -0
  410. package/dist/hardware/merge.js.map +1 -0
  411. package/dist/hardware/nvidia-smi.d.ts +43 -0
  412. package/dist/hardware/nvidia-smi.js +118 -0
  413. package/dist/hardware/nvidia-smi.js.map +1 -0
  414. package/dist/hardware/probe-common.d.ts +72 -0
  415. package/dist/hardware/probe-common.js +106 -0
  416. package/dist/hardware/probe-common.js.map +1 -0
  417. package/dist/hardware/probe-darwin.d.ts +20 -0
  418. package/dist/hardware/probe-darwin.js +76 -0
  419. package/dist/hardware/probe-darwin.js.map +1 -0
  420. package/dist/hardware/probe-linux.d.ts +9 -0
  421. package/dist/hardware/probe-linux.js +133 -0
  422. package/dist/hardware/probe-linux.js.map +1 -0
  423. package/dist/hardware/probe-windows.d.ts +7 -0
  424. package/dist/hardware/probe-windows.js +50 -0
  425. package/dist/hardware/probe-windows.js.map +1 -0
  426. package/dist/hardware/probe.d.ts +16 -0
  427. package/dist/hardware/probe.js +65 -0
  428. package/dist/hardware/probe.js.map +1 -0
  429. package/dist/hardware/service.d.ts +60 -0
  430. package/dist/hardware/service.js +114 -0
  431. package/dist/hardware/service.js.map +1 -0
  432. package/dist/hardware/vulkan.d.ts +47 -0
  433. package/dist/hardware/vulkan.js +148 -0
  434. package/dist/hardware/vulkan.js.map +1 -0
  435. package/dist/hardware/windows-video.d.ts +97 -0
  436. package/dist/hardware/windows-video.js +214 -0
  437. package/dist/hardware/windows-video.js.map +1 -0
  438. package/dist/host/app-daemon.d.ts +47 -0
  439. package/dist/host/app-daemon.js +146 -0
  440. package/dist/host/app-daemon.js.map +1 -0
  441. package/dist/host/index.d.ts +5 -3
  442. package/dist/host/index.js +5 -3
  443. package/dist/host/index.js.map +1 -1
  444. package/dist/host/log-file.d.ts +74 -0
  445. package/dist/host/log-file.js +214 -0
  446. package/dist/host/log-file.js.map +1 -0
  447. package/dist/host/recipes/enable-wsl.d.ts +63 -0
  448. package/dist/host/recipes/enable-wsl.js +73 -0
  449. package/dist/host/recipes/enable-wsl.js.map +1 -0
  450. package/dist/host/recipes/executor-io-windows.d.ts +69 -0
  451. package/dist/host/recipes/executor-io-windows.js +235 -0
  452. package/dist/host/recipes/executor-io-windows.js.map +1 -0
  453. package/dist/host/recipes/executor-io.d.ts +80 -0
  454. package/dist/host/recipes/executor-io.js +211 -0
  455. package/dist/host/recipes/executor-io.js.map +1 -0
  456. package/dist/host/recipes/executor.d.ts +81 -0
  457. package/dist/host/recipes/executor.js +678 -0
  458. package/dist/host/recipes/executor.js.map +1 -0
  459. package/dist/host/recipes/guest-executor.d.ts +29 -0
  460. package/dist/host/recipes/guest-executor.js +76 -0
  461. package/dist/host/recipes/guest-executor.js.map +1 -0
  462. package/dist/host/recipes/index.d.ts +16 -0
  463. package/dist/host/recipes/index.js +17 -0
  464. package/dist/host/recipes/index.js.map +1 -0
  465. package/dist/host/recipes/install-container-runtime.d.ts +389 -0
  466. package/dist/host/recipes/install-container-runtime.js +796 -0
  467. package/dist/host/recipes/install-container-runtime.js.map +1 -0
  468. package/dist/host/recipes/openpgp.d.ts +23 -0
  469. package/dist/host/recipes/openpgp.js +153 -0
  470. package/dist/host/recipes/openpgp.js.map +1 -0
  471. package/dist/host/recipes/request-file.d.ts +96 -0
  472. package/dist/host/recipes/request-file.js +103 -0
  473. package/dist/host/recipes/request-file.js.map +1 -0
  474. package/dist/lock/process-journal.d.ts +5 -2
  475. package/dist/lock/process-journal.js.map +1 -1
  476. package/dist/models/capabilities.d.ts +7 -0
  477. package/dist/models/capabilities.js +17 -1
  478. package/dist/models/capabilities.js.map +1 -1
  479. package/dist/models/compatibility/index.d.ts +10 -0
  480. package/dist/models/compatibility/index.js +11 -0
  481. package/dist/models/compatibility/index.js.map +1 -0
  482. package/dist/models/compatibility/inspect.d.ts +19 -0
  483. package/dist/models/compatibility/inspect.js +59 -0
  484. package/dist/models/compatibility/inspect.js.map +1 -0
  485. package/dist/models/compatibility/resolve.d.ts +59 -0
  486. package/dist/models/compatibility/resolve.js +219 -0
  487. package/dist/models/compatibility/resolve.js.map +1 -0
  488. package/dist/models/compatibility/rules-baseline.d.ts +2 -0
  489. package/dist/models/compatibility/rules-baseline.js +10 -0
  490. package/dist/models/compatibility/rules-baseline.js.map +1 -0
  491. package/dist/models/compatibility/rules-baseline.json +292 -0
  492. package/dist/models/compatibility/rules-service.d.ts +36 -0
  493. package/dist/models/compatibility/rules-service.js +109 -0
  494. package/dist/models/compatibility/rules-service.js.map +1 -0
  495. package/dist/models/compatibility/rules.d.ts +81 -0
  496. package/dist/models/compatibility/rules.js +164 -0
  497. package/dist/models/compatibility/rules.js.map +1 -0
  498. package/dist/models/compatibility/service.d.ts +59 -0
  499. package/dist/models/compatibility/service.js +137 -0
  500. package/dist/models/compatibility/service.js.map +1 -0
  501. package/dist/models/decision-checkpoint.d.ts +22 -0
  502. package/dist/models/decision-checkpoint.js +33 -0
  503. package/dist/models/decision-checkpoint.js.map +1 -0
  504. package/dist/models/gguf/classify.d.ts +27 -1
  505. package/dist/models/gguf/classify.js +78 -2
  506. package/dist/models/gguf/classify.js.map +1 -1
  507. package/dist/models/gguf/index.d.ts +1 -0
  508. package/dist/models/gguf/index.js +1 -0
  509. package/dist/models/gguf/index.js.map +1 -1
  510. package/dist/models/gguf/tensors.d.ts +56 -0
  511. package/dist/models/gguf/tensors.js +236 -0
  512. package/dist/models/gguf/tensors.js.map +1 -0
  513. package/dist/models/index.d.ts +2 -0
  514. package/dist/models/index.js +2 -0
  515. package/dist/models/index.js.map +1 -1
  516. package/dist/router/resolve.d.ts +7 -1
  517. package/dist/router/resolve.js +14 -1
  518. package/dist/router/resolve.js.map +1 -1
  519. package/dist/runtime/container/argv.d.ts +88 -0
  520. package/dist/runtime/container/argv.js +406 -0
  521. package/dist/runtime/container/argv.js.map +1 -0
  522. package/dist/runtime/container/docker-binary.d.ts +4 -0
  523. package/dist/runtime/container/docker-binary.js +34 -0
  524. package/dist/runtime/container/docker-binary.js.map +1 -0
  525. package/dist/runtime/container/env.d.ts +17 -0
  526. package/dist/runtime/container/env.js +52 -0
  527. package/dist/runtime/container/env.js.map +1 -0
  528. package/dist/runtime/container/exec.d.ts +27 -0
  529. package/dist/runtime/container/exec.js +79 -0
  530. package/dist/runtime/container/exec.js.map +1 -0
  531. package/dist/runtime/container/execution-journal.d.ts +55 -0
  532. package/dist/runtime/container/execution-journal.js +167 -0
  533. package/dist/runtime/container/execution-journal.js.map +1 -0
  534. package/dist/runtime/container/heartbeat.d.ts +47 -0
  535. package/dist/runtime/container/heartbeat.js +78 -0
  536. package/dist/runtime/container/heartbeat.js.map +1 -0
  537. package/dist/runtime/container/index.d.ts +30 -0
  538. package/dist/runtime/container/index.js +31 -0
  539. package/dist/runtime/container/index.js.map +1 -0
  540. package/dist/runtime/container/operations.d.ts +40 -0
  541. package/dist/runtime/container/operations.js +233 -0
  542. package/dist/runtime/container/operations.js.map +1 -0
  543. package/dist/runtime/container/pull.d.ts +48 -0
  544. package/dist/runtime/container/pull.js +280 -0
  545. package/dist/runtime/container/pull.js.map +1 -0
  546. package/dist/runtime/container/reconcile.d.ts +34 -0
  547. package/dist/runtime/container/reconcile.js +79 -0
  548. package/dist/runtime/container/reconcile.js.map +1 -0
  549. package/dist/runtime/container/types.d.ts +124 -0
  550. package/dist/runtime/container/types.js +2 -0
  551. package/dist/runtime/container/types.js.map +1 -0
  552. package/dist/runtime/container/watchdog.d.ts +114 -0
  553. package/dist/runtime/container/watchdog.js +418 -0
  554. package/dist/runtime/container/watchdog.js.map +1 -0
  555. package/dist/runtime/container/wiring.d.ts +78 -0
  556. package/dist/runtime/container/wiring.js +92 -0
  557. package/dist/runtime/container/wiring.js.map +1 -0
  558. package/dist/runtime/container/wsl-exec.d.ts +13 -0
  559. package/dist/runtime/container/wsl-exec.js +18 -0
  560. package/dist/runtime/container/wsl-exec.js.map +1 -0
  561. package/dist/runtime/environment/cached-document.d.ts +128 -0
  562. package/dist/runtime/environment/cached-document.js +218 -0
  563. package/dist/runtime/environment/cached-document.js.map +1 -0
  564. package/dist/runtime/environment/canonical-json.d.ts +78 -0
  565. package/dist/runtime/environment/canonical-json.js +86 -0
  566. package/dist/runtime/environment/canonical-json.js.map +1 -0
  567. package/dist/runtime/environment/descriptor-provider.d.ts +121 -0
  568. package/dist/runtime/environment/descriptor-provider.js +159 -0
  569. package/dist/runtime/environment/descriptor-provider.js.map +1 -0
  570. package/dist/runtime/environment/descriptor.d.ts +35 -0
  571. package/dist/runtime/environment/descriptor.js +239 -0
  572. package/dist/runtime/environment/descriptor.js.map +1 -0
  573. package/dist/runtime/environment/diagnostics.d.ts +50 -0
  574. package/dist/runtime/environment/diagnostics.js +114 -0
  575. package/dist/runtime/environment/diagnostics.js.map +1 -0
  576. package/dist/runtime/environment/document-fields.d.ts +39 -0
  577. package/dist/runtime/environment/document-fields.js +96 -0
  578. package/dist/runtime/environment/document-fields.js.map +1 -0
  579. package/dist/runtime/environment/environment-manifest-provider.d.ts +65 -0
  580. package/dist/runtime/environment/environment-manifest-provider.js +89 -0
  581. package/dist/runtime/environment/environment-manifest-provider.js.map +1 -0
  582. package/dist/runtime/environment/environment-manifest.d.ts +35 -0
  583. package/dist/runtime/environment/environment-manifest.js +131 -0
  584. package/dist/runtime/environment/environment-manifest.js.map +1 -0
  585. package/dist/runtime/environment/guest-host.d.ts +43 -0
  586. package/dist/runtime/environment/guest-host.js +88 -0
  587. package/dist/runtime/environment/guest-host.js.map +1 -0
  588. package/dist/runtime/environment/host-exec.d.ts +38 -0
  589. package/dist/runtime/environment/host-exec.js +145 -0
  590. package/dist/runtime/environment/host-exec.js.map +1 -0
  591. package/dist/runtime/environment/host-step-failure.d.ts +33 -0
  592. package/dist/runtime/environment/host-step-failure.js +34 -0
  593. package/dist/runtime/environment/host-step-failure.js.map +1 -0
  594. package/dist/runtime/environment/index.d.ts +56 -0
  595. package/dist/runtime/environment/index.js +57 -0
  596. package/dist/runtime/environment/index.js.map +1 -0
  597. package/dist/runtime/environment/installations.d.ts +25 -0
  598. package/dist/runtime/environment/installations.js +70 -0
  599. package/dist/runtime/environment/installations.js.map +1 -0
  600. package/dist/runtime/environment/inventory.d.ts +42 -0
  601. package/dist/runtime/environment/inventory.js +57 -0
  602. package/dist/runtime/environment/inventory.js.map +1 -0
  603. package/dist/runtime/environment/linux-blockers.d.ts +130 -0
  604. package/dist/runtime/environment/linux-blockers.js +251 -0
  605. package/dist/runtime/environment/linux-blockers.js.map +1 -0
  606. package/dist/runtime/environment/linux-docker-facts.d.ts +200 -0
  607. package/dist/runtime/environment/linux-docker-facts.js +342 -0
  608. package/dist/runtime/environment/linux-docker-facts.js.map +1 -0
  609. package/dist/runtime/environment/linux-docker-network.d.ts +80 -0
  610. package/dist/runtime/environment/linux-docker-network.js +195 -0
  611. package/dist/runtime/environment/linux-docker-network.js.map +1 -0
  612. package/dist/runtime/environment/linux-host.d.ts +22 -0
  613. package/dist/runtime/environment/linux-host.js +98 -0
  614. package/dist/runtime/environment/linux-host.js.map +1 -0
  615. package/dist/runtime/environment/linux-plan.d.ts +126 -0
  616. package/dist/runtime/environment/linux-plan.js +392 -0
  617. package/dist/runtime/environment/linux-plan.js.map +1 -0
  618. package/dist/runtime/environment/linux-probe.d.ts +245 -0
  619. package/dist/runtime/environment/linux-probe.js +315 -0
  620. package/dist/runtime/environment/linux-probe.js.map +1 -0
  621. package/dist/runtime/environment/linux-provisioner.d.ts +102 -0
  622. package/dist/runtime/environment/linux-provisioner.js +734 -0
  623. package/dist/runtime/environment/linux-provisioner.js.map +1 -0
  624. package/dist/runtime/environment/provisioner-descriptors.d.ts +17 -0
  625. package/dist/runtime/environment/provisioner-descriptors.js +62 -0
  626. package/dist/runtime/environment/provisioner-descriptors.js.map +1 -0
  627. package/dist/runtime/environment/recovery.d.ts +74 -0
  628. package/dist/runtime/environment/recovery.js +121 -0
  629. package/dist/runtime/environment/recovery.js.map +1 -0
  630. package/dist/runtime/environment/rootfs-download.d.ts +2 -0
  631. package/dist/runtime/environment/rootfs-download.js +47 -0
  632. package/dist/runtime/environment/rootfs-download.js.map +1 -0
  633. package/dist/runtime/environment/service.d.ts +280 -0
  634. package/dist/runtime/environment/service.js +776 -0
  635. package/dist/runtime/environment/service.js.map +1 -0
  636. package/dist/runtime/environment/state.d.ts +163 -0
  637. package/dist/runtime/environment/state.js +479 -0
  638. package/dist/runtime/environment/state.js.map +1 -0
  639. package/dist/runtime/environment/store-models.d.ts +19 -0
  640. package/dist/runtime/environment/store-models.js +30 -0
  641. package/dist/runtime/environment/store-models.js.map +1 -0
  642. package/dist/runtime/environment/store.d.ts +210 -0
  643. package/dist/runtime/environment/store.js +438 -0
  644. package/dist/runtime/environment/store.js.map +1 -0
  645. package/dist/runtime/environment/windows-environment-record.d.ts +48 -0
  646. package/dist/runtime/environment/windows-environment-record.js +89 -0
  647. package/dist/runtime/environment/windows-environment-record.js.map +1 -0
  648. package/dist/runtime/environment/windows-forwarding.d.ts +27 -0
  649. package/dist/runtime/environment/windows-forwarding.js +84 -0
  650. package/dist/runtime/environment/windows-forwarding.js.map +1 -0
  651. package/dist/runtime/environment/windows-guest-setup.d.ts +48 -0
  652. package/dist/runtime/environment/windows-guest-setup.js +157 -0
  653. package/dist/runtime/environment/windows-guest-setup.js.map +1 -0
  654. package/dist/runtime/environment/windows-host.d.ts +46 -0
  655. package/dist/runtime/environment/windows-host.js +163 -0
  656. package/dist/runtime/environment/windows-host.js.map +1 -0
  657. package/dist/runtime/environment/windows-plan.d.ts +78 -0
  658. package/dist/runtime/environment/windows-plan.js +216 -0
  659. package/dist/runtime/environment/windows-plan.js.map +1 -0
  660. package/dist/runtime/environment/windows-probe.d.ts +135 -0
  661. package/dist/runtime/environment/windows-probe.js +261 -0
  662. package/dist/runtime/environment/windows-probe.js.map +1 -0
  663. package/dist/runtime/environment/windows-provisioner.d.ts +113 -0
  664. package/dist/runtime/environment/windows-provisioner.js +782 -0
  665. package/dist/runtime/environment/windows-provisioner.js.map +1 -0
  666. package/dist/runtime/environment/wiring.d.ts +117 -0
  667. package/dist/runtime/environment/wiring.js +354 -0
  668. package/dist/runtime/environment/wiring.js.map +1 -0
  669. package/dist/runtime/foundation-models/runtime.d.ts +8 -0
  670. package/dist/runtime/foundation-models/runtime.js +5 -2
  671. package/dist/runtime/foundation-models/runtime.js.map +1 -1
  672. package/dist/runtime/llamacpp/args.d.ts +10 -1
  673. package/dist/runtime/llamacpp/args.js +43 -7
  674. package/dist/runtime/llamacpp/args.js.map +1 -1
  675. package/dist/runtime/llamacpp/fit-margin.d.ts +46 -0
  676. package/dist/runtime/llamacpp/fit-margin.js +47 -0
  677. package/dist/runtime/llamacpp/fit-margin.js.map +1 -0
  678. package/dist/runtime/llamacpp/index.d.ts +1 -0
  679. package/dist/runtime/llamacpp/index.js +1 -0
  680. package/dist/runtime/llamacpp/index.js.map +1 -1
  681. package/dist/runtime/llamacpp/load-plan.d.ts +23 -1
  682. package/dist/runtime/llamacpp/load-plan.js +82 -1
  683. package/dist/runtime/llamacpp/load-plan.js.map +1 -1
  684. package/dist/runtime/llamacpp/policy.d.ts +16 -0
  685. package/dist/runtime/llamacpp/policy.js +20 -0
  686. package/dist/runtime/llamacpp/policy.js.map +1 -1
  687. package/dist/runtime/llamacpp/probe.d.ts +21 -1
  688. package/dist/runtime/llamacpp/probe.js +32 -6
  689. package/dist/runtime/llamacpp/probe.js.map +1 -1
  690. package/dist/runtime/llamacpp/runtime.d.ts +56 -1
  691. package/dist/runtime/llamacpp/runtime.js +142 -15
  692. package/dist/runtime/llamacpp/runtime.js.map +1 -1
  693. package/dist/runtime/managed-engines/index.d.ts +8 -0
  694. package/dist/runtime/managed-engines/index.js +9 -0
  695. package/dist/runtime/managed-engines/index.js.map +1 -0
  696. package/dist/runtime/managed-engines/runtime.d.ts +140 -0
  697. package/dist/runtime/managed-engines/runtime.js +402 -0
  698. package/dist/runtime/managed-engines/runtime.js.map +1 -0
  699. package/dist/runtime/managed-engines/spec.d.ts +70 -0
  700. package/dist/runtime/managed-engines/spec.js +39 -0
  701. package/dist/runtime/managed-engines/spec.js.map +1 -0
  702. package/dist/runtime/managed-models/check.d.ts +50 -0
  703. package/dist/runtime/managed-models/check.js +157 -0
  704. package/dist/runtime/managed-models/check.js.map +1 -0
  705. package/dist/runtime/managed-models/compatibility.d.ts +256 -0
  706. package/dist/runtime/managed-models/compatibility.js +594 -0
  707. package/dist/runtime/managed-models/compatibility.js.map +1 -0
  708. package/dist/runtime/managed-models/delete.d.ts +15 -0
  709. package/dist/runtime/managed-models/delete.js +60 -0
  710. package/dist/runtime/managed-models/delete.js.map +1 -0
  711. package/dist/runtime/managed-models/guest-files.d.ts +8 -0
  712. package/dist/runtime/managed-models/guest-files.js +49 -0
  713. package/dist/runtime/managed-models/guest-files.js.map +1 -0
  714. package/dist/runtime/managed-models/index.d.ts +17 -0
  715. package/dist/runtime/managed-models/index.js +18 -0
  716. package/dist/runtime/managed-models/index.js.map +1 -0
  717. package/dist/runtime/managed-models/location.d.ts +22 -0
  718. package/dist/runtime/managed-models/location.js +53 -0
  719. package/dist/runtime/managed-models/location.js.map +1 -0
  720. package/dist/runtime/managed-models/migrate.d.ts +30 -0
  721. package/dist/runtime/managed-models/migrate.js +119 -0
  722. package/dist/runtime/managed-models/migrate.js.map +1 -0
  723. package/dist/runtime/managed-models/model-dir.d.ts +36 -0
  724. package/dist/runtime/managed-models/model-dir.js +136 -0
  725. package/dist/runtime/managed-models/model-dir.js.map +1 -0
  726. package/dist/runtime/managed-models/quant-format.d.ts +71 -0
  727. package/dist/runtime/managed-models/quant-format.js +299 -0
  728. package/dist/runtime/managed-models/quant-format.js.map +1 -0
  729. package/dist/runtime/managed-models/registry.d.ts +26 -0
  730. package/dist/runtime/managed-models/registry.js +66 -0
  731. package/dist/runtime/managed-models/registry.js.map +1 -0
  732. package/dist/runtime/managed-text/adapter.d.ts +266 -0
  733. package/dist/runtime/managed-text/adapter.js +96 -0
  734. package/dist/runtime/managed-text/adapter.js.map +1 -0
  735. package/dist/runtime/managed-text/backend-target.d.ts +3 -0
  736. package/dist/runtime/managed-text/backend-target.js +52 -0
  737. package/dist/runtime/managed-text/backend-target.js.map +1 -0
  738. package/dist/runtime/managed-text/deployment.d.ts +14 -0
  739. package/dist/runtime/managed-text/deployment.js +32 -0
  740. package/dist/runtime/managed-text/deployment.js.map +1 -0
  741. package/dist/runtime/managed-text/engine-cache.d.ts +15 -0
  742. package/dist/runtime/managed-text/engine-cache.js +64 -0
  743. package/dist/runtime/managed-text/engine-cache.js.map +1 -0
  744. package/dist/runtime/managed-text/gateway.d.ts +158 -0
  745. package/dist/runtime/managed-text/gateway.js +535 -0
  746. package/dist/runtime/managed-text/gateway.js.map +1 -0
  747. package/dist/runtime/managed-text/generation-defaults.d.ts +23 -0
  748. package/dist/runtime/managed-text/generation-defaults.js +51 -0
  749. package/dist/runtime/managed-text/generation-defaults.js.map +1 -0
  750. package/dist/runtime/managed-text/index.d.ts +26 -0
  751. package/dist/runtime/managed-text/index.js +27 -0
  752. package/dist/runtime/managed-text/index.js.map +1 -0
  753. package/dist/runtime/managed-text/lifecycle.d.ts +276 -0
  754. package/dist/runtime/managed-text/lifecycle.js +859 -0
  755. package/dist/runtime/managed-text/lifecycle.js.map +1 -0
  756. package/dist/runtime/managed-text/load-policy.d.ts +47 -0
  757. package/dist/runtime/managed-text/load-policy.js +111 -0
  758. package/dist/runtime/managed-text/load-policy.js.map +1 -0
  759. package/dist/runtime/managed-text/mount-source.d.ts +14 -0
  760. package/dist/runtime/managed-text/mount-source.js +18 -0
  761. package/dist/runtime/managed-text/mount-source.js.map +1 -0
  762. package/dist/runtime/managed-text/readiness.d.ts +13 -0
  763. package/dist/runtime/managed-text/readiness.js +24 -0
  764. package/dist/runtime/managed-text/readiness.js.map +1 -0
  765. package/dist/runtime/managed-text/request-rules.d.ts +18 -0
  766. package/dist/runtime/managed-text/request-rules.js +62 -0
  767. package/dist/runtime/managed-text/request-rules.js.map +1 -0
  768. package/dist/runtime/managed-text/types.d.ts +88 -0
  769. package/dist/runtime/managed-text/types.js +12 -0
  770. package/dist/runtime/managed-text/types.js.map +1 -0
  771. package/dist/runtime/managed-text/wsl-deployment.d.ts +24 -0
  772. package/dist/runtime/managed-text/wsl-deployment.js +70 -0
  773. package/dist/runtime/managed-text/wsl-deployment.js.map +1 -0
  774. package/dist/runtime/mlx/errors.d.ts +6 -1
  775. package/dist/runtime/mlx/errors.js +7 -2
  776. package/dist/runtime/mlx/errors.js.map +1 -1
  777. package/dist/runtime/mlx/runtime.d.ts +36 -1
  778. package/dist/runtime/mlx/runtime.js +85 -4
  779. package/dist/runtime/mlx/runtime.js.map +1 -1
  780. package/dist/runtime/shared/backend-output.d.ts +23 -0
  781. package/dist/runtime/shared/backend-output.js +32 -0
  782. package/dist/runtime/shared/backend-output.js.map +1 -0
  783. package/dist/runtime/shared/bounded-output.d.ts +24 -0
  784. package/dist/runtime/shared/bounded-output.js +63 -0
  785. package/dist/runtime/shared/bounded-output.js.map +1 -0
  786. package/dist/runtime/shared/external-sessions.js +9 -1
  787. package/dist/runtime/shared/external-sessions.js.map +1 -1
  788. package/dist/runtime/shared/gpu-occupancy.d.ts +60 -0
  789. package/dist/runtime/shared/gpu-occupancy.js +10 -0
  790. package/dist/runtime/shared/gpu-occupancy.js.map +1 -0
  791. package/dist/runtime/shared/index.d.ts +4 -0
  792. package/dist/runtime/shared/index.js +4 -0
  793. package/dist/runtime/shared/index.js.map +1 -1
  794. package/dist/runtime/shared/local-runtime.d.ts +35 -0
  795. package/dist/runtime/shared/ports.d.ts +6 -0
  796. package/dist/runtime/shared/ports.js +12 -1
  797. package/dist/runtime/shared/ports.js.map +1 -1
  798. package/dist/runtime/shared/process.d.ts +11 -0
  799. package/dist/runtime/shared/process.js +20 -0
  800. package/dist/runtime/shared/process.js.map +1 -1
  801. package/dist/runtime/shared/redact-args.d.ts +7 -0
  802. package/dist/runtime/shared/redact-args.js +26 -0
  803. package/dist/runtime/shared/redact-args.js.map +1 -0
  804. package/dist/runtime/shared/sidecar.d.ts +15 -0
  805. package/dist/runtime/shared/sidecar.js +43 -8
  806. package/dist/runtime/shared/sidecar.js.map +1 -1
  807. package/dist/runtime/tensorrt-llm/adapter.d.ts +250 -0
  808. package/dist/runtime/tensorrt-llm/adapter.js +1011 -0
  809. package/dist/runtime/tensorrt-llm/adapter.js.map +1 -0
  810. package/dist/runtime/tensorrt-llm/check.d.ts +12 -0
  811. package/dist/runtime/tensorrt-llm/check.js +21 -0
  812. package/dist/runtime/tensorrt-llm/check.js.map +1 -0
  813. package/dist/runtime/tensorrt-llm/compatibility.d.ts +100 -0
  814. package/dist/runtime/tensorrt-llm/compatibility.js +181 -0
  815. package/dist/runtime/tensorrt-llm/compatibility.js.map +1 -0
  816. package/dist/runtime/tensorrt-llm/engine.d.ts +3 -0
  817. package/dist/runtime/tensorrt-llm/engine.js +24 -0
  818. package/dist/runtime/tensorrt-llm/engine.js.map +1 -0
  819. package/dist/runtime/tensorrt-llm/host-facts.d.ts +55 -0
  820. package/dist/runtime/tensorrt-llm/host-facts.js +87 -0
  821. package/dist/runtime/tensorrt-llm/host-facts.js.map +1 -0
  822. package/dist/runtime/tensorrt-llm/index.d.ts +30 -0
  823. package/dist/runtime/tensorrt-llm/index.js +31 -0
  824. package/dist/runtime/tensorrt-llm/index.js.map +1 -0
  825. package/dist/runtime/tensorrt-llm/installation.d.ts +23 -0
  826. package/dist/runtime/tensorrt-llm/installation.js +53 -0
  827. package/dist/runtime/tensorrt-llm/installation.js.map +1 -0
  828. package/dist/runtime/tensorrt-llm/kv-cache.d.ts +25 -0
  829. package/dist/runtime/tensorrt-llm/kv-cache.js +28 -0
  830. package/dist/runtime/tensorrt-llm/kv-cache.js.map +1 -0
  831. package/dist/runtime/tensorrt-llm/prelaunch.d.ts +20 -0
  832. package/dist/runtime/tensorrt-llm/prelaunch.js +168 -0
  833. package/dist/runtime/tensorrt-llm/prelaunch.js.map +1 -0
  834. package/dist/runtime/tensorrt-llm/route-policy.d.ts +19 -0
  835. package/dist/runtime/tensorrt-llm/route-policy.js +17 -0
  836. package/dist/runtime/tensorrt-llm/route-policy.js.map +1 -0
  837. package/dist/runtime/tensorrt-llm/settings.d.ts +7 -0
  838. package/dist/runtime/tensorrt-llm/settings.js +48 -0
  839. package/dist/runtime/tensorrt-llm/settings.js.map +1 -0
  840. package/dist/runtime/vllm/adapter.d.ts +46 -0
  841. package/dist/runtime/vllm/adapter.js +425 -0
  842. package/dist/runtime/vllm/adapter.js.map +1 -0
  843. package/dist/runtime/vllm/engine.d.ts +16 -0
  844. package/dist/runtime/vllm/engine.js +37 -0
  845. package/dist/runtime/vllm/engine.js.map +1 -0
  846. package/dist/runtime/vllm/index.d.ts +11 -0
  847. package/dist/runtime/vllm/index.js +12 -0
  848. package/dist/runtime/vllm/index.js.map +1 -0
  849. package/dist/runtime/vllm/memory.d.ts +69 -0
  850. package/dist/runtime/vllm/memory.js +123 -0
  851. package/dist/runtime/vllm/memory.js.map +1 -0
  852. package/dist/runtime/vllm/settings.d.ts +52 -0
  853. package/dist/runtime/vllm/settings.js +151 -0
  854. package/dist/runtime/vllm/settings.js.map +1 -0
  855. package/dist/runtime/wsl/guest-paths.d.ts +33 -0
  856. package/dist/runtime/wsl/guest-paths.js +83 -0
  857. package/dist/runtime/wsl/guest-paths.js.map +1 -0
  858. package/dist/runtime/wsl/guest-scope.d.ts +14 -0
  859. package/dist/runtime/wsl/guest-scope.js +98 -0
  860. package/dist/runtime/wsl/guest-scope.js.map +1 -0
  861. package/dist/runtime/wsl/index.d.ts +12 -0
  862. package/dist/runtime/wsl/index.js +13 -0
  863. package/dist/runtime/wsl/index.js.map +1 -0
  864. package/dist/runtime/wsl/keeper.d.ts +29 -0
  865. package/dist/runtime/wsl/keeper.js +48 -0
  866. package/dist/runtime/wsl/keeper.js.map +1 -0
  867. package/dist/runtime/wsl/transport.d.ts +106 -0
  868. package/dist/runtime/wsl/transport.js +181 -0
  869. package/dist/runtime/wsl/transport.js.map +1 -0
  870. package/dist/server/control/index.d.ts +1 -1
  871. package/dist/server/control/router.js +15 -0
  872. package/dist/server/control/router.js.map +1 -1
  873. package/dist/server/control/routes/backends.js +26 -0
  874. package/dist/server/control/routes/backends.js.map +1 -1
  875. package/dist/server/control/routes/decision.d.ts +10 -0
  876. package/dist/server/control/routes/decision.js +43 -0
  877. package/dist/server/control/routes/decision.js.map +1 -0
  878. package/dist/server/control/routes/diffusion-video.js +4 -0
  879. package/dist/server/control/routes/diffusion-video.js.map +1 -1
  880. package/dist/server/control/routes/diffusion.d.ts +1 -1
  881. package/dist/server/control/routes/diffusion.js +4 -9
  882. package/dist/server/control/routes/diffusion.js.map +1 -1
  883. package/dist/server/control/routes/embedding.d.ts +9 -0
  884. package/dist/server/control/routes/embedding.js +43 -0
  885. package/dist/server/control/routes/embedding.js.map +1 -0
  886. package/dist/server/control/routes/engine-builds.d.ts +14 -0
  887. package/dist/server/control/routes/engine-builds.js +82 -0
  888. package/dist/server/control/routes/engine-builds.js.map +1 -0
  889. package/dist/server/control/routes/engines.d.ts +17 -0
  890. package/dist/server/control/routes/engines.js +152 -0
  891. package/dist/server/control/routes/engines.js.map +1 -0
  892. package/dist/server/control/routes/environments.d.ts +16 -0
  893. package/dist/server/control/routes/environments.js +207 -0
  894. package/dist/server/control/routes/environments.js.map +1 -0
  895. package/dist/server/control/routes/hardware.d.ts +1 -1
  896. package/dist/server/control/routes/hardware.js +11 -6
  897. package/dist/server/control/routes/hardware.js.map +1 -1
  898. package/dist/server/control/routes/model-setups.d.ts +11 -0
  899. package/dist/server/control/routes/model-setups.js +55 -0
  900. package/dist/server/control/routes/model-setups.js.map +1 -0
  901. package/dist/server/control/routes/models.d.ts +3 -2
  902. package/dist/server/control/routes/models.js +45 -2
  903. package/dist/server/control/routes/models.js.map +1 -1
  904. package/dist/server/control/types.d.ts +167 -9
  905. package/dist/server/control/types.js.map +1 -1
  906. package/dist/server/http.d.ts +9 -1
  907. package/dist/server/http.js +51 -1
  908. package/dist/server/http.js.map +1 -1
  909. package/dist/server/public/decision-preview.d.ts +17 -0
  910. package/dist/server/public/decision-preview.js +119 -0
  911. package/dist/server/public/decision-preview.js.map +1 -0
  912. package/dist/server/public/decision.d.ts +32 -0
  913. package/dist/server/public/decision.js +135 -0
  914. package/dist/server/public/decision.js.map +1 -0
  915. package/dist/server/public/embedding.d.ts +31 -0
  916. package/dist/server/public/embedding.js +126 -0
  917. package/dist/server/public/embedding.js.map +1 -0
  918. package/dist/server/public/errors.d.ts +2 -1
  919. package/dist/server/public/errors.js +5 -2
  920. package/dist/server/public/errors.js.map +1 -1
  921. package/dist/server/public/forward.js +75 -3
  922. package/dist/server/public/forward.js.map +1 -1
  923. package/dist/server/public/gates.d.ts +13 -0
  924. package/dist/server/public/gates.js +37 -14
  925. package/dist/server/public/gates.js.map +1 -1
  926. package/dist/server/public/index.d.ts +5 -2
  927. package/dist/server/public/index.js +14 -1
  928. package/dist/server/public/index.js.map +1 -1
  929. package/dist/server/public/listing.d.ts +13 -2
  930. package/dist/server/public/listing.js +33 -9
  931. package/dist/server/public/listing.js.map +1 -1
  932. package/dist/server/public/policy.d.ts +9 -0
  933. package/dist/server/public/policy.js +68 -0
  934. package/dist/server/public/policy.js.map +1 -0
  935. package/dist/server/public/responses.js +10 -0
  936. package/dist/server/public/responses.js.map +1 -1
  937. package/dist/server/public/trace.d.ts +2 -2
  938. package/dist/server/public/trace.js +6 -2
  939. package/dist/server/public/trace.js.map +1 -1
  940. package/dist/server/public/types.d.ts +84 -1
  941. package/dist/settings/decision.d.ts +15 -0
  942. package/dist/settings/decision.js +88 -0
  943. package/dist/settings/decision.js.map +1 -0
  944. package/dist/settings/embedding.d.ts +12 -0
  945. package/dist/settings/embedding.js +82 -0
  946. package/dist/settings/embedding.js.map +1 -0
  947. package/dist/settings/index.d.ts +2 -0
  948. package/dist/settings/index.js +2 -0
  949. package/dist/settings/index.js.map +1 -1
  950. package/dist/settings/schema/atomic-prism.json +433 -0
  951. package/dist/settings/schema/tensorrt-llm.json +253 -0
  952. package/dist/settings/schema/vllm.json +273 -0
  953. package/dist/settings/schema.js +58 -0
  954. package/dist/settings/schema.js.map +1 -1
  955. package/dist/settings/store.d.ts +13 -2
  956. package/dist/settings/store.js +44 -0
  957. package/dist/settings/store.js.map +1 -1
  958. package/dist/util/index.d.ts +1 -0
  959. package/dist/util/index.js +1 -0
  960. package/dist/util/index.js.map +1 -1
  961. package/dist/util/result.d.ts +19 -0
  962. package/dist/util/result.js +15 -0
  963. package/dist/util/result.js.map +1 -0
  964. package/dist/version.d.ts +1 -1
  965. package/dist/version.js +1 -1
  966. package/dist/version.js.map +1 -1
  967. package/package.json +1 -1
  968. package/src/settings/schema/atomic-prism.json +433 -0
  969. package/src/settings/schema/tensorrt-llm.json +253 -0
  970. package/src/settings/schema/vllm.json +273 -0
@@ -0,0 +1,406 @@
1
+ /**
2
+ * Pure Docker CLI argv construction. Nothing in this file touches the filesystem or a process; every
3
+ * function here takes data and returns a `string[]` a caller passes straight to `spawn`/`execFile`
4
+ * with no shell (`exec.ts`), so nothing a descriptor or a probe produced is ever interpreted as a
5
+ * flag or a shell word.
6
+ *
7
+ * `assertSafeArgvValue` is the one guard every descriptor- or probe-derived value goes through
8
+ * before it becomes an argv token: no leading `-` (which Docker would read as a flag) and no NUL,
9
+ * `\n` or `\r` (which would smuggle a second argv-like word past a naive splitter, or corrupt a
10
+ * `-v`/`-l`/`-e` value that gets joined with `:`/`=`). This is a carry-forward from the task 2.1
11
+ * review: conf's `imageRepository` pattern (`schema.json#/definitions/imageRepository`) permits a
12
+ * leading `-`, so a descriptor field like `repository: "-foo/bar"` passes descriptor validation and
13
+ * must still be caught here, one layer closer to the actual `spawn` call. Every option in
14
+ * `buildCreateModelContainerArgv`/`buildRunOnceArgv` is placed before the image reference and any
15
+ * command words, so a positional value can never be mistaken for the start of a new flag either.
16
+ *
17
+ * `--host unix:///var/run/docker.sock` is prepended to every argv by `withSystemSocket`; `env.ts`
18
+ * separately strips `DOCKER_HOST`/`DOCKER_CONTEXT` and points `DOCKER_CONFIG` at an empty,
19
+ * core-owned directory, so between the two, no user Docker context is ever consulted (spec
20
+ * `tensorrt-llm-runtime`, "the model container is isolated"). `buildCreateModelContainerArgv`/
21
+ * `buildRunOnceArgv` also add `--pull=never` (review round 1, item 5 ruling): the only thing in this
22
+ * module that fetches image bytes is `pull.ts`'s `pullImage`, over the Engine API — `docker
23
+ * create`/`docker run` must never trigger an implicit pull of their own, which would otherwise use
24
+ * whatever registry auth `DOCKER_CONFIG`'s directory happens to hold.
25
+ */
26
+ import path from 'node:path';
27
+ import { AtomicCoreError } from '../../contracts/index.js';
28
+ /**
29
+ * The one path to the Docker daemon's system socket, in its two textual forms `argv.ts` and
30
+ * `pull.ts` each need. `pull.ts` derives its `node:http` `socketPath` from `DOCKER_SOCKET_PATH`
31
+ * rather than declaring its own literal (review round 1, item 15), so there is exactly one socket
32
+ * path constant in this module.
33
+ */
34
+ export const DOCKER_SOCKET_PATH = '/var/run/docker.sock';
35
+ /** Forced with every docker CLI call; no user Docker context (`DOCKER_HOST`/context/config) is ever used. */
36
+ export const DOCKER_SYSTEM_SOCKET = `unix://${DOCKER_SOCKET_PATH}`;
37
+ /** Docker socket paths (and their parent directories) that must never be used as a mount source — bind-mounting one of these into the container would hand it the socket even though no `-v` flag ever names it directly. */
38
+ const FORBIDDEN_MOUNT_SOURCES = new Set(['/var/run/docker.sock', '/run/docker.sock', '/var/run', '/run']);
39
+ /** Container-side mount targets. Fixed by this module; callers only choose the host-side source. */
40
+ export const CONTAINER_MODEL_PATH = '/atomic/model';
41
+ export const CONTAINER_ENGINE_CACHE_PATH = '/atomic/engine-cache';
42
+ export const CONTAINER_ENTRYPOINT_PATH = '/atomic/entrypoint.sh';
43
+ /** What runs the watchdog script (`#!/bin/sh`) inside the container. */
44
+ export const CONTAINER_ENTRYPOINT_SHELL = '/bin/sh';
45
+ export const CONTAINER_HEARTBEAT_PATH = '/atomic/heartbeat';
46
+ /**
47
+ * `--shm-size` for the model container. A named placeholder, not a measurement: the real value is
48
+ * measured against a live `trtllm-serve` load in live test 2.19. Bounded rather than left at
49
+ * Docker's 64 MB default, which a multi-worker CUDA server exhausts immediately, and rather than
50
+ * unbounded (`--shm-size` with no limit maps to host memory, defeating the point of a limit).
51
+ */
52
+ export const MODEL_CONTAINER_SHM_SIZE = '2g';
53
+ /** The largest `--shm-size` this module will build, regardless of what a caller passes in `shmSize`. */
54
+ export const MODEL_CONTAINER_SHM_SIZE_CEILING_GB = 16;
55
+ const DIGEST_PATTERN = /^sha256:[0-9a-f]{64}$/;
56
+ const NEWLINE_CHARS = /[\n\r]/;
57
+ /** An env or label key: `KEY=value`/`atomic.key=value` always starts with this, so the leading
58
+ * character can never be misread as a docker flag regardless of what the value contains. */
59
+ const IDENTIFIER_PATTERN = /^[A-Za-z_][A-Za-z0-9_.-]*$/;
60
+ /** `nvidia-smi -L`'s two UUID spellings: `GPU-<uuid>` and, for a MIG slice, `MIG-<uuid>`. */
61
+ const GPU_UUID_PATTERN = /^(GPU|MIG)-[0-9A-Fa-f-]+$/;
62
+ /** An integer byte count with a Docker size suffix, e.g. `2g`, `512m`, `65536k`. */
63
+ const SHM_SIZE_PATTERN = /^([0-9]+)(k|m|g)$/;
64
+ const DESKTOP_LOOPBACK_HOST = '127.0.0.1';
65
+ function invalidArgument(what, value) {
66
+ throw new AtomicCoreError('INVALID_ARGUMENT', `${what} is not safe to pass to docker.`, value);
67
+ }
68
+ /** A NUL byte or a `\n`/`\r`: anything that could smuggle a second argv-like word past a naive splitter. */
69
+ function hasControlChars(value) {
70
+ return value.includes('\u0000') || NEWLINE_CHARS.test(value);
71
+ }
72
+ /**
73
+ * Refuses an empty value, a leading `-` (would be read as a flag), or an embedded NUL/`\n`/`\r`.
74
+ * Every image reference, GPU id, mount source, label value, env value and command word passes
75
+ * through this before becoming an argv token.
76
+ */
77
+ export function assertSafeArgvValue(value, what) {
78
+ if (value === '')
79
+ invalidArgument(what, value);
80
+ if (value.startsWith('-'))
81
+ invalidArgument(what, value);
82
+ if (hasControlChars(value))
83
+ invalidArgument(what, value);
84
+ return value;
85
+ }
86
+ /** Shared with `pull.ts`, which needs the repository and digest validated but not joined by `@`. */
87
+ export function assertDigest(value, what) {
88
+ if (!DIGEST_PATTERN.test(value)) {
89
+ throw new AtomicCoreError('INVALID_ARGUMENT', `${what} is not a sha256 digest.`, value);
90
+ }
91
+ return value;
92
+ }
93
+ function assertPort(value, what) {
94
+ if (!Number.isInteger(value) || value < 1 || value > 65535) {
95
+ throw new AtomicCoreError('INVALID_ARGUMENT', `${what} is not a valid TCP port.`, String(value));
96
+ }
97
+ return value;
98
+ }
99
+ /** The model container's port may only ever be published on the literal desktop loopback address. */
100
+ function assertLoopbackHost(host) {
101
+ if (host !== DESKTOP_LOOPBACK_HOST) {
102
+ throw new AtomicCoreError('FORBIDDEN_HOST', `A model container may only publish its port on ${DESKTOP_LOOPBACK_HOST}.`, host);
103
+ }
104
+ return host;
105
+ }
106
+ /** Shared by env and label keys: both are the `KEY` half of a `KEY=value` argv token. */
107
+ function assertIdentifier(value, what) {
108
+ if (!IDENTIFIER_PATTERN.test(value)) {
109
+ throw new AtomicCoreError('INVALID_ARGUMENT', `${what} is not a valid identifier.`, value);
110
+ }
111
+ return value;
112
+ }
113
+ /**
114
+ * An env *value* embedded in `-e KEY=value`: the key half is already validated as an identifier that
115
+ * cannot start with `-`, so the whole argv token can never be misread as a flag regardless of what
116
+ * the value contains — unlike a standalone value, this one only needs the control-character guard
117
+ * (review round 1, item 16: rejecting a leading `-` here wrongly refused an ordinary value like
118
+ * `TEMPERATURE=-0.5`). Empty is allowed: `FOO=` is a legitimate way to set an empty env var.
119
+ */
120
+ function assertEnvValue(value, what) {
121
+ if (hasControlChars(value))
122
+ invalidArgument(what, value);
123
+ return value;
124
+ }
125
+ function assertGpuUuid(value) {
126
+ if (!GPU_UUID_PATTERN.test(value)) {
127
+ throw new AtomicCoreError('INVALID_ARGUMENT', 'gpu id is not a GPU-<uuid>/MIG-<uuid> value.', value);
128
+ }
129
+ return value;
130
+ }
131
+ /** `--shm-size=<value>`: an integer with a `k`/`m`/`g` suffix, capped at `MODEL_CONTAINER_SHM_SIZE_CEILING_GB`. */
132
+ function assertShmSize(value) {
133
+ const match = SHM_SIZE_PATTERN.exec(value);
134
+ if (!match) {
135
+ throw new AtomicCoreError('INVALID_ARGUMENT', 'shm size is not an integer with a k/m/g suffix.', value);
136
+ }
137
+ const [, digits, unit] = match;
138
+ const amount = Number(digits);
139
+ const gib = unit === 'g' ? amount : unit === 'm' ? amount / 1024 : amount / (1024 * 1024);
140
+ if (gib > MODEL_CONTAINER_SHM_SIZE_CEILING_GB) {
141
+ throw new AtomicCoreError('INVALID_ARGUMENT', `shm size must not exceed ${MODEL_CONTAINER_SHM_SIZE_CEILING_GB}g.`, value);
142
+ }
143
+ return value;
144
+ }
145
+ /** A uid or gid: a non-negative safe integer, so `--user` only ever carries `<digits>:<digits>`. */
146
+ function assertUserId(value, what) {
147
+ if (!Number.isSafeInteger(value) || value < 0) {
148
+ throw new AtomicCoreError('INVALID_ARGUMENT', `${what} is not a non-negative integer id.`, String(value));
149
+ }
150
+ return String(value);
151
+ }
152
+ /** `--user <uid>:<gid>`, or nothing: the image's own user. */
153
+ function userFlags(user) {
154
+ if (user === undefined)
155
+ return [];
156
+ return ['--user', `${assertUserId(user.uid, 'container uid')}:${assertUserId(user.gid, 'container gid')}`];
157
+ }
158
+ /** Normalizes a POSIX (Docker-daemon-side) path: no trailing slash, `.`/`..` resolved, for exact/prefix comparison. */
159
+ function normalizeMountPath(value) {
160
+ const normalized = path.posix.normalize(value);
161
+ return normalized.length > 1 && normalized.endsWith('/') ? normalized.slice(0, -1) : normalized;
162
+ }
163
+ /**
164
+ * A mount source must be an absolute path (the Docker daemon's own view, never a relative path it
165
+ * would resolve against some unpredictable cwd), must not contain `:` (the character `-v`'s own
166
+ * `source:target:options` syntax splits on — a `:` inside the source would be read as the start of
167
+ * the target), and must not be the Docker socket file or a directory that contains it (review round
168
+ * 1, item 1): none of the four mounts this module builds names the socket directly, but a source
169
+ * that IS `/var/run` (or its ancestor) would still hand the container the socket as a side effect of
170
+ * mounting its parent.
171
+ */
172
+ function assertMountSource(source, what) {
173
+ assertSafeArgvValue(source, what);
174
+ if (!source.startsWith('/')) {
175
+ throw new AtomicCoreError('INVALID_ARGUMENT', `${what} must be an absolute path.`, source);
176
+ }
177
+ if (source.includes(':')) {
178
+ throw new AtomicCoreError('INVALID_ARGUMENT', `${what} must not contain ':'.`, source);
179
+ }
180
+ if (FORBIDDEN_MOUNT_SOURCES.has(normalizeMountPath(source))) {
181
+ throw new AtomicCoreError('INVALID_ARGUMENT', `${what} must not be the Docker socket or a directory that contains it.`, source);
182
+ }
183
+ return source;
184
+ }
185
+ /**
186
+ * SELinux's `:z` relabels a directory for every container that shares it — spec `tensorrt-llm-runtime`
187
+ * ("mounts work under SELinux") requires that this module never relabels anything outside its own
188
+ * data (design D15). `dataRoot` is the one directory this executor owns; every `:z`-relabeled source
189
+ * must be it, or under it.
190
+ */
191
+ function assertWithinDataRoot(source, dataRoot, what) {
192
+ const normalizedRoot = normalizeMountPath(dataRoot);
193
+ const normalizedSource = normalizeMountPath(source);
194
+ const prefix = normalizedRoot === '/' ? '/' : `${normalizedRoot}/`;
195
+ if (normalizedSource !== normalizedRoot && !normalizedSource.startsWith(prefix)) {
196
+ // Says what to do (final review M-6): typically a models folder that is a symlink to another
197
+ // disk, which resolves outside the data folder — the only place this core relabels (design D15).
198
+ throw new AtomicCoreError('INVALID_ARGUMENT', `The ${what} is outside the data folder (${normalizedRoot}), and under SELinux this core only ` +
199
+ 'relabels its own data folder for containers. A symlink to another disk resolves outside it: ' +
200
+ 'move the model folder into the data folder, or bind-mount the other disk at that path ' +
201
+ 'instead of linking it (mount --bind), so it resolves inside the data folder.', source);
202
+ }
203
+ }
204
+ /** `repository@digest`, safe only once both halves — and the joined value itself — are validated. */
205
+ export function imageReference(image) {
206
+ const repository = assertSafeArgvValue(image.repository, 'image repository');
207
+ const digest = assertDigest(image.digest, 'image digest');
208
+ return assertSafeArgvValue(`${repository}@${digest}`, 'image reference');
209
+ }
210
+ /** Prepend the forced system-socket connection flag to any docker subcommand argv. */
211
+ export function withSystemSocket(args) {
212
+ return ['--host', DOCKER_SYSTEM_SOCKET, ...args];
213
+ }
214
+ export function buildInspectImageArgv(image) {
215
+ return withSystemSocket(['image', 'inspect', imageReference(image)]);
216
+ }
217
+ export function buildInspectContainerArgv(containerId) {
218
+ return withSystemSocket(['container', 'inspect', assertSafeArgvValue(containerId, 'container id')]);
219
+ }
220
+ export function buildStartArgv(containerId) {
221
+ return withSystemSocket(['start', assertSafeArgvValue(containerId, 'container id')]);
222
+ }
223
+ /**
224
+ * `docker stop --time <timeoutSeconds> <id>`. The CLI call itself blocks until the daemon confirms
225
+ * the container exited (or force-kills it at the timeout and waits for that kill to land) — what a
226
+ * *caller* of this argv must not assume is that getting an answer at all is guaranteed; `operations.ts`
227
+ * turns "no answer" into `StopOutcome.confirmed: false` rather than treating a silent exec failure as
228
+ * a stop.
229
+ */
230
+ export function buildStopArgv(containerId, timeoutSeconds) {
231
+ if (!Number.isInteger(timeoutSeconds) || timeoutSeconds < 0) {
232
+ throw new AtomicCoreError('INVALID_ARGUMENT', 'stop timeout is not a non-negative integer number of seconds.', String(timeoutSeconds));
233
+ }
234
+ return withSystemSocket([
235
+ 'stop',
236
+ '--time',
237
+ String(timeoutSeconds),
238
+ assertSafeArgvValue(containerId, 'container id'),
239
+ ]);
240
+ }
241
+ export function buildRmArgv(containerId) {
242
+ return withSystemSocket(['rm', assertSafeArgvValue(containerId, 'container id')]);
243
+ }
244
+ /**
245
+ * `docker ps --all --filter ancestor=<repo@digest>`: every container, running or stopped, created
246
+ * from this image (or an image built on it) — what removing an engine asks before deleting the
247
+ * image, so an image someone else's container still uses is left in place (task 2.6).
248
+ */
249
+ export function buildListContainersByImageArgv(image) {
250
+ return withSystemSocket([
251
+ 'ps',
252
+ '--all',
253
+ '--no-trunc',
254
+ '--filter',
255
+ `ancestor=${imageReference(image)}`,
256
+ '--format',
257
+ '{{.ID}}',
258
+ ]);
259
+ }
260
+ /**
261
+ * `docker image rm <repo@digest>`, never `--force`: only the digest reference this core pulled is
262
+ * removed, and Docker itself refuses while any container still uses the image. A tag the user added
263
+ * to the same image keeps the image in place (task 2.6).
264
+ */
265
+ export function buildRemoveImageArgv(image) {
266
+ return withSystemSocket(['image', 'rm', imageReference(image)]);
267
+ }
268
+ /**
269
+ * `--timestamps` prefixes every line with its RFC3339Nano time so `operations.ts`'s `containerLogs`
270
+ * can merge stdout and stderr back into one chronological log (review round 1, item 2). `'all'` is
271
+ * docker's own spelling for the whole log.
272
+ */
273
+ export function buildLogsArgv(containerId, tailLines) {
274
+ if (tailLines !== 'all' && (!Number.isInteger(tailLines) || tailLines < 1)) {
275
+ throw new AtomicCoreError('INVALID_ARGUMENT', 'log tail length is not a positive integer.', String(tailLines));
276
+ }
277
+ return withSystemSocket([
278
+ 'logs',
279
+ '--timestamps',
280
+ '--tail',
281
+ String(tailLines),
282
+ assertSafeArgvValue(containerId, 'container id'),
283
+ ]);
284
+ }
285
+ /**
286
+ * `-v <source>:<target>:<mode>[,z]`; `:z` only when the caller says this Docker runs with SELinux
287
+ * (design D15), and only once `source` is confirmed to be inside `dataRoot` — the caller
288
+ * (`buildCreateModelContainerArgv`) has already refused to reach here with `selinux: true` and no
289
+ * `dataRoot`.
290
+ */
291
+ function mountFlag(source, target, mode, selinux, dataRoot, what) {
292
+ assertMountSource(source, what);
293
+ if (selinux && dataRoot !== undefined)
294
+ assertWithinDataRoot(source, dataRoot, what);
295
+ const options = selinux ? `${mode},z` : mode;
296
+ return ['-v', `${source}:${target}:${options}`];
297
+ }
298
+ function labelFlags(labels) {
299
+ const flags = [];
300
+ for (const [key, value] of Object.entries(labels)) {
301
+ assertIdentifier(key, `label key ${key}`);
302
+ flags.push('-l', `atomic.${key}=${assertSafeArgvValue(value, `label ${key}`)}`);
303
+ }
304
+ return flags;
305
+ }
306
+ function envFlags(env) {
307
+ if (!env)
308
+ return [];
309
+ const flags = [];
310
+ for (const [key, value] of Object.entries(env)) {
311
+ assertIdentifier(key, `env key ${key}`);
312
+ flags.push('-e', `${key}=${assertEnvValue(value, `env ${key}`)}`);
313
+ }
314
+ return flags;
315
+ }
316
+ /**
317
+ * Command words run *after* the image reference: Docker itself never parses them as its own flags,
318
+ * it hands them straight to the container's entrypoint, so a leading `-` here is ordinary (e.g. a
319
+ * program's own `--port 8000` or `-L`) rather than a flag-injection risk. Only the control-character
320
+ * guard — which protects the argv boundary itself, not "did this look like a docker flag" — still
321
+ * applies.
322
+ */
323
+ function commandWords(command) {
324
+ if (!command)
325
+ return [];
326
+ return command.map((word, i) => {
327
+ if (word === '' || hasControlChars(word))
328
+ invalidArgument(`command[${i}]`, word);
329
+ return word;
330
+ });
331
+ }
332
+ /**
333
+ * The model container's `docker create` argv (spec `tensorrt-llm-runtime`, requirement "the model
334
+ * container is isolated"; SELinux per requirement "mounts work under SELinux", design D15). Security
335
+ * posture is not configurable by the spec: no docker socket mount, no `--privileged`, no
336
+ * `--ipc=host`, `--restart=no` always, `--pull=never` always (review round 1, item 5 ruling — only
337
+ * `pull.ts` fetches image bytes), and the port published only on `127.0.0.1`. Every option comes
338
+ * before the positional image reference and command, so nothing derived from a descriptor or a probe
339
+ * can land where Docker would read it as the start of a new flag. `spec.selinuxDataRoot` is required
340
+ * whenever `spec.selinux` is true — see `assertWithinDataRoot`. `spec.user` runs the engine as the
341
+ * core's own uid:gid rather than the image's root (final review I-1, ADR
342
+ * 2026-09-29-the-engine-container-runs-as-the-invoking-user).
343
+ */
344
+ export function buildCreateModelContainerArgv(spec) {
345
+ const ref = imageReference(spec.image);
346
+ const gpuUuid = assertGpuUuid(spec.gpuUuid);
347
+ const host = assertLoopbackHost(spec.publication.host);
348
+ // 0: Docker picks a free port on the loopback of the machine it runs on (the WSL guest, design D7 of
349
+ // change `add-tensorrt-llm-windows`), read back afterwards with `docker port`.
350
+ const hostPort = spec.publication.host_port === 0 ? '' : assertPort(spec.publication.host_port, 'host port');
351
+ const containerPort = assertPort(spec.publication.container_port, 'container port');
352
+ const shmSize = assertShmSize(spec.shmSize ?? MODEL_CONTAINER_SHM_SIZE);
353
+ if (spec.selinux && spec.selinuxDataRoot === undefined) {
354
+ throw new AtomicCoreError('INVALID_ARGUMENT', 'selinuxDataRoot is required to :z-relabel mounts under SELinux.', 'selinuxDataRoot');
355
+ }
356
+ const dataRoot = spec.selinux ? spec.selinuxDataRoot : undefined;
357
+ const args = [
358
+ 'create',
359
+ '--restart=no',
360
+ '--pull=never',
361
+ `--shm-size=${shmSize}`,
362
+ ...userFlags(spec.user),
363
+ '--gpus',
364
+ `device=${gpuUuid}`,
365
+ ...mountFlag(spec.mounts.model.source, CONTAINER_MODEL_PATH, 'ro', spec.selinux, dataRoot, 'model mount source'),
366
+ ...mountFlag(spec.mounts.engineCache.source, CONTAINER_ENGINE_CACHE_PATH, 'rw', spec.selinux, dataRoot, 'engine cache mount source'),
367
+ ...mountFlag(spec.mounts.entrypoint.source, CONTAINER_ENTRYPOINT_PATH, 'ro', spec.selinux, dataRoot, 'entrypoint mount source'),
368
+ ...mountFlag(spec.mounts.heartbeat.source, CONTAINER_HEARTBEAT_PATH, 'ro', spec.selinux, dataRoot, 'heartbeat mount source'),
369
+ // The watchdog script runs through its interpreter, not as an executable: on Windows it reaches
370
+ // the guest through `\\wsl.localhost` (9p), which keeps no Unix mode, and a direct entrypoint
371
+ // failed with `exec: "/atomic/entrypoint.sh": permission denied` (live acceptance). Read access is
372
+ // all `/bin/sh` needs, on every host.
373
+ '--entrypoint',
374
+ CONTAINER_ENTRYPOINT_SHELL,
375
+ '-p',
376
+ `${host}:${hostPort}:${containerPort}`,
377
+ ...labelFlags(spec.labels),
378
+ ...envFlags(spec.env),
379
+ ref,
380
+ CONTAINER_ENTRYPOINT_PATH,
381
+ ...commandWords(spec.command),
382
+ ];
383
+ return withSystemSocket(args);
384
+ }
385
+ /** `docker port <id> <port>/tcp`: where a running container's port was published. */
386
+ export function buildPortArgv(containerId, containerPort) {
387
+ return withSystemSocket([
388
+ 'port',
389
+ assertSafeArgvValue(containerId, 'container id'),
390
+ `${assertPort(containerPort, 'container port')}/tcp`,
391
+ ]);
392
+ }
393
+ /**
394
+ * A one-shot `docker run --rm` probe (task 2.x's GPU check): no mounts, no port publication, no
395
+ * restart policy, `--pull=never` (same reasoning as `buildCreateModelContainerArgv`).
396
+ */
397
+ export function buildRunOnceArgv(spec) {
398
+ const ref = imageReference(spec.image);
399
+ const args = ['run', '--rm', '--pull=never'];
400
+ if (spec.gpuUuid !== undefined) {
401
+ args.push('--gpus', `device=${assertGpuUuid(spec.gpuUuid)}`);
402
+ }
403
+ args.push(...envFlags(spec.env), ref, ...commandWords(spec.command));
404
+ return withSystemSocket(args);
405
+ }
406
+ //# sourceMappingURL=argv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argv.js","sourceRoot":"","sources":["../../../src/runtime/container/argv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAS1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAA;AACxD,6GAA6G;AAC7G,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,kBAAkB,EAAE,CAAA;AAElE,6NAA6N;AAC7N,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAEzG,oGAAoG;AACpG,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAA;AACnD,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAAA;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAA;AAChE,wEAAwE;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAA;AACnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAA;AAE5C,wGAAwG;AACxG,MAAM,CAAC,MAAM,mCAAmC,GAAG,EAAE,CAAA;AAErD,MAAM,cAAc,GAAG,uBAAuB,CAAA;AAC9C,MAAM,aAAa,GAAG,QAAQ,CAAA;AAC9B;6FAC6F;AAC7F,MAAM,kBAAkB,GAAG,4BAA4B,CAAA;AACvD,6FAA6F;AAC7F,MAAM,gBAAgB,GAAG,2BAA2B,CAAA;AACpD,oFAAoF;AACpF,MAAM,gBAAgB,GAAG,mBAAmB,CAAA;AAC5C,MAAM,qBAAqB,GAAG,WAAW,CAAA;AAEzC,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa;IAClD,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,GAAG,IAAI,iCAAiC,EAAE,KAAK,CAAC,CAAA;AAChG,CAAC;AAED,4GAA4G;AAC5G,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,IAAY;IAC7D,IAAI,KAAK,KAAK,EAAE;QAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9C,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACvD,IAAI,eAAe,CAAC,KAAK,CAAC;QAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACxD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,IAAY;IACtD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,GAAG,IAAI,0BAA0B,EAAE,KAAK,CAAC,CAAA;IACzF,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,IAAY;IAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAC3D,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,GAAG,IAAI,2BAA2B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAClG,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,qGAAqG;AACrG,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACnC,MAAM,IAAI,eAAe,CACvB,gBAAgB,EAChB,kDAAkD,qBAAqB,GAAG,EAC1E,IAAI,CACL,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,yFAAyF;AACzF,SAAS,gBAAgB,CAAC,KAAa,EAAE,IAAY;IACnD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,GAAG,IAAI,6BAA6B,EAAE,KAAK,CAAC,CAAA;IAC5F,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,KAAa,EAAE,IAAY;IACjD,IAAI,eAAe,CAAC,KAAK,CAAC;QAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACxD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,8CAA8C,EAAE,KAAK,CAAC,CAAA;IACtG,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,mHAAmH;AACnH,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,iDAAiD,EAAE,KAAK,CAAC,CAAA;IACzG,CAAC;IACD,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,KAAqD,CAAA;IAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7B,MAAM,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IACzF,IAAI,GAAG,GAAG,mCAAmC,EAAE,CAAC;QAC9C,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,4BAA4B,mCAAmC,IAAI,EACnE,KAAK,CACN,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,oGAAoG;AACpG,SAAS,YAAY,CAAC,KAAa,EAAE,IAAY;IAC/C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,GAAG,IAAI,oCAAoC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3G,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED,8DAA8D;AAC9D,SAAS,SAAS,CAAC,IAA+B;IAChD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IACjC,OAAO,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,CAAC,CAAA;AAC5G,CAAC;AAED,uHAAuH;AACvH,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC9C,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;AACjG,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,MAAc,EAAE,IAAY;IACrD,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,GAAG,IAAI,4BAA4B,EAAE,MAAM,CAAC,CAAA;IAC5F,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,GAAG,IAAI,wBAAwB,EAAE,MAAM,CAAC,CAAA;IACxF,CAAC;IACD,IAAI,uBAAuB,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,GAAG,IAAI,iEAAiE,EACxE,MAAM,CACP,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,MAAc,EAAE,QAAgB,EAAE,IAAY;IAC1E,MAAM,cAAc,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACnD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,cAAc,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,CAAA;IAClE,IAAI,gBAAgB,KAAK,cAAc,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAChF,6FAA6F;QAC7F,iGAAiG;QACjG,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,OAAO,IAAI,gCAAgC,cAAc,sCAAsC;YAC7F,8FAA8F;YAC9F,wFAAwF;YACxF,8EAA8E,EAChF,MAAM,CACP,CAAA;IACH,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,cAAc,CAAC,KAAe;IAC5C,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;IAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACzD,OAAO,mBAAmB,CAAC,GAAG,UAAU,IAAI,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAA;AAC1E,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,IAAuB;IACtD,OAAO,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAe;IACnD,OAAO,gBAAgB,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,OAAO,gBAAgB,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;AACrG,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,OAAO,gBAAgB,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;AACtF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB,EAAE,cAAsB;IACvE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,+DAA+D,EAC/D,MAAM,CAAC,cAAc,CAAC,CACvB,CAAA;IACH,CAAC;IACD,OAAO,gBAAgB,CAAC;QACtB,MAAM;QACN,QAAQ;QACR,MAAM,CAAC,cAAc,CAAC;QACtB,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC;KACjD,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,OAAO,gBAAgB,CAAC,CAAC,IAAI,EAAE,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;AACnF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,KAAe;IAC5D,OAAO,gBAAgB,CAAC;QACtB,IAAI;QACJ,OAAO;QACP,YAAY;QACZ,UAAU;QACV,YAAY,cAAc,CAAC,KAAK,CAAC,EAAE;QACnC,UAAU;QACV,SAAS;KACV,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAe;IAClD,OAAO,gBAAgB,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB,EAAE,SAAyB;IAC1E,IAAI,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,4CAA4C,EAC5C,MAAM,CAAC,SAAS,CAAC,CAClB,CAAA;IACH,CAAC;IACD,OAAO,gBAAgB,CAAC;QACtB,MAAM;QACN,cAAc;QACd,QAAQ;QACR,MAAM,CAAC,SAAS,CAAC;QACjB,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC;KACjD,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAChB,MAAc,EACd,MAAc,EACd,IAAiB,EACjB,OAAgB,EAChB,QAA4B,EAC5B,IAAY;IAEZ,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/B,IAAI,OAAO,IAAI,QAAQ,KAAK,SAAS;QAAE,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IACnF,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5C,OAAO,CAAC,IAAI,EAAE,GAAG,MAAM,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,UAAU,CAAC,MAA4B;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,EAAE,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;IACjF,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,GAAuC;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IACnB,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,EAAE,CAAC,CAAA;QACvC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,OAA6B;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC7B,IAAI,IAAI,KAAK,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC;YAAE,eAAe,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAChF,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAA8B;IAC1E,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACtD,qGAAqG;IACrG,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IAC5G,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;IACnF,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAA;IACvE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,iEAAiE,EACjE,iBAAiB,CAClB,CAAA;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAA;IAEhE,MAAM,IAAI,GAAa;QACrB,QAAQ;QACR,cAAc;QACd,cAAc;QACd,cAAc,OAAO,EAAE;QACvB,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,QAAQ;QACR,UAAU,OAAO,EAAE;QACnB,GAAG,SAAS,CACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EACxB,oBAAoB,EACpB,IAAI,EACJ,IAAI,CAAC,OAAO,EACZ,QAAQ,EACR,oBAAoB,CACrB;QACD,GAAG,SAAS,CACV,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAC9B,2BAA2B,EAC3B,IAAI,EACJ,IAAI,CAAC,OAAO,EACZ,QAAQ,EACR,2BAA2B,CAC5B;QACD,GAAG,SAAS,CACV,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAC7B,yBAAyB,EACzB,IAAI,EACJ,IAAI,CAAC,OAAO,EACZ,QAAQ,EACR,yBAAyB,CAC1B;QACD,GAAG,SAAS,CACV,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAC5B,wBAAwB,EACxB,IAAI,EACJ,IAAI,CAAC,OAAO,EACZ,QAAQ,EACR,wBAAwB,CACzB;QACD,gGAAgG;QAChG,8FAA8F;QAC9F,mGAAmG;QACnG,sCAAsC;QACtC,cAAc;QACd,0BAA0B;QAC1B,IAAI;QACJ,GAAG,IAAI,IAAI,QAAQ,IAAI,aAAa,EAAE;QACtC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;QAC1B,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QACrB,GAAG;QACH,yBAAyB;QACzB,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;KAC9B,CAAA;IACD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,aAAa,CAAC,WAAmB,EAAE,aAAqB;IACtE,OAAO,gBAAgB,CAAC;QACtB,MAAM;QACN,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC;QAChD,GAAG,UAAU,CAAC,aAAa,EAAE,gBAAgB,CAAC,MAAM;KACrD,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtC,MAAM,IAAI,GAAa,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,CAAA;IACtD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC9D,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACpE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** System locations of the docker CLI, in the order they are tried. Never a relative path. */
2
+ export declare const DOCKER_BINARY_CANDIDATES: readonly string[];
3
+ /** The first candidate that is an executable file, or null when this host has none of them. */
4
+ export declare function resolveDockerBinary(candidates?: readonly string[]): Promise<string | null>;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Where the `docker` CLI lives, resolved once at core startup (task 2.12; task 2.8 review carry-
3
+ * forward). Every model-container command runs this absolute path rather than `docker` looked up on
4
+ * `PATH`: core's `PATH` is whatever the app or shell that started it had, and a directory earlier on
5
+ * it (a user's `~/bin`, a project's `node_modules/.bin`) could put a different program under that
6
+ * name, and core would hand it the model container's whole configuration. The distributions the
7
+ * install recipe supports all ship the CLI in one of the fixed system directories below.
8
+ */
9
+ import { constants } from 'node:fs';
10
+ import { access, stat } from 'node:fs/promises';
11
+ /** System locations of the docker CLI, in the order they are tried. Never a relative path. */
12
+ export const DOCKER_BINARY_CANDIDATES = [
13
+ '/usr/bin/docker',
14
+ '/usr/local/bin/docker',
15
+ '/bin/docker',
16
+ ];
17
+ async function isExecutableFile(path) {
18
+ try {
19
+ await access(path, constants.X_OK);
20
+ return (await stat(path)).isFile();
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ }
26
+ /** The first candidate that is an executable file, or null when this host has none of them. */
27
+ export async function resolveDockerBinary(candidates = DOCKER_BINARY_CANDIDATES) {
28
+ for (const candidate of candidates) {
29
+ if (await isExecutableFile(candidate))
30
+ return candidate;
31
+ }
32
+ return null;
33
+ }
34
+ //# sourceMappingURL=docker-binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-binary.js","sourceRoot":"","sources":["../../../src/runtime/container/docker-binary.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE/C,8FAA8F;AAC9F,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,iBAAiB;IACjB,uBAAuB;IACvB,aAAa;CACd,CAAA;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,aAAgC,wBAAwB;IAExD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAM,gBAAgB,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;IACzD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,17 @@
1
+ /** Removed outright: `--host` (`argv.ts`) already replaces what these two would otherwise select. */
2
+ export declare const STRIPPED_DOCKER_ENV_VARS: readonly ["DOCKER_HOST", "DOCKER_CONTEXT"];
3
+ export interface DockerChildEnvOptions {
4
+ /** An empty, core-owned directory the docker CLI reads as `$DOCKER_CONFIG`. Not created by this function — call `ensureDockerConfigDir` first. */
5
+ dockerConfigDir: string;
6
+ /** Defaults to `process.env`. Never mutated. */
7
+ base?: NodeJS.ProcessEnv;
8
+ }
9
+ /** A copy of `options.base` (default `process.env`) with `DOCKER_HOST`/`DOCKER_CONTEXT` removed and `DOCKER_CONFIG` pointed at `options.dockerConfigDir`. */
10
+ export declare function dockerChildEnv(options: DockerChildEnvOptions): NodeJS.ProcessEnv;
11
+ /**
12
+ * Creates `dir` (and any missing parents) if it does not already exist, then atomically writes an
13
+ * empty `config.json` into it (write to `config.json.tmp`, then `rename` over `config.json`) — every
14
+ * call re-asserts emptiness, rather than trusting that nothing has written there since the last call.
15
+ * Idempotent: safe to call before every docker invocation.
16
+ */
17
+ export declare function ensureDockerConfigDir(dir: string): Promise<void>;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The child environment for a docker CLI call.
3
+ *
4
+ * Review round 1, item 5 (RULING): the first version of this file only *deleted* `DOCKER_CONFIG`
5
+ * from the child's environment, on the theory that an absent variable means "no config". It does
6
+ * not: with `DOCKER_CONFIG` unset, the docker CLI falls back to `$HOME/.docker/config.json` — the
7
+ * user's own config, which can carry a `credsStore` (a credential helper the CLI would invoke on the
8
+ * user's behalf) and `proxies` (`HttpProxy`/`HttpsProxy`/`NoProxy` settings the CLI injects as env
9
+ * vars into every container it creates). Deleting the variable does not isolate the call; it makes
10
+ * the call adopt whatever the user's own Docker identity happens to be. The fix is to *set*
11
+ * `DOCKER_CONFIG` to an empty directory this module owns (injectable — production wiring picks a
12
+ * real path under core's data root; tests point it at a temp directory), so the CLI reads that empty
13
+ * directory (no `config.json` inside → no creds, no injected proxies) instead of falling back.
14
+ * `ensureDockerConfigDir` creates it if missing; `--host` (`argv.ts`) separately forces the system
15
+ * socket, so between the two, no user Docker context is ever consulted.
16
+ *
17
+ * Review round 2, item 3 (controller ruling): an empty *directory* alone is not a guarantee of
18
+ * emptiness — something else could later write a `config.json` into it (another tool, a stray copy,
19
+ * a future bug elsewhere in this codebase), and the docker CLI would read whatever showed up.
20
+ * `ensureDockerConfigDir` now also atomically writes `config.json` containing `{}` into the
21
+ * directory on every call (write to a `.tmp` file, then `rename` over the real one — the same
22
+ * write-then-rename convention as `src/settings/store.ts`'s `persist`), so the directory's content is
23
+ * guaranteed, in code, not just by nothing having gotten there yet.
24
+ */
25
+ import { mkdir, rename, writeFile } from 'node:fs/promises';
26
+ import { join } from 'node:path';
27
+ /** Removed outright: `--host` (`argv.ts`) already replaces what these two would otherwise select. */
28
+ export const STRIPPED_DOCKER_ENV_VARS = ['DOCKER_HOST', 'DOCKER_CONTEXT'];
29
+ /** A copy of `options.base` (default `process.env`) with `DOCKER_HOST`/`DOCKER_CONTEXT` removed and `DOCKER_CONFIG` pointed at `options.dockerConfigDir`. */
30
+ export function dockerChildEnv(options) {
31
+ const env = { ...(options.base ?? process.env) };
32
+ for (const key of STRIPPED_DOCKER_ENV_VARS)
33
+ delete env[key];
34
+ env['DOCKER_CONFIG'] = options.dockerConfigDir;
35
+ return env;
36
+ }
37
+ /** The docker CLI's config file, forced empty (review round 2, item 3): no `credsStore`, no `proxies`. */
38
+ const EMPTY_DOCKER_CONFIG_JSON = '{}\n';
39
+ /**
40
+ * Creates `dir` (and any missing parents) if it does not already exist, then atomically writes an
41
+ * empty `config.json` into it (write to `config.json.tmp`, then `rename` over `config.json`) — every
42
+ * call re-asserts emptiness, rather than trusting that nothing has written there since the last call.
43
+ * Idempotent: safe to call before every docker invocation.
44
+ */
45
+ export async function ensureDockerConfigDir(dir) {
46
+ await mkdir(dir, { recursive: true });
47
+ const configPath = join(dir, 'config.json');
48
+ const tmpPath = `${configPath}.tmp`;
49
+ await writeFile(tmpPath, EMPTY_DOCKER_CONFIG_JSON, { encoding: 'utf8', mode: 0o600 });
50
+ await rename(tmpPath, configPath);
51
+ }
52
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/runtime/container/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,qGAAqG;AACrG,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAU,CAAA;AASlF,6JAA6J;AAC7J,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC3D,MAAM,GAAG,GAAsB,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACnE,KAAK,MAAM,GAAG,IAAI,wBAAwB;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3D,GAAG,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAA;IAC9C,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,0GAA0G;AAC1G,MAAM,wBAAwB,GAAG,MAAM,CAAA;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACrD,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IAC3C,MAAM,OAAO,GAAG,GAAG,UAAU,MAAM,CAAA;IACnC,MAAM,SAAS,CAAC,OAAO,EAAE,wBAAwB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACrF,MAAM,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AACnC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { DockerCommandResult, DockerExec, DockerExecCallOptions } from './types.js';
2
+ export interface DockerCommandOptions {
3
+ /** How long one docker call may take before it counts as unanswered. Default 30 s; a per-call `timeoutMs` overrides it for just that call. */
4
+ timeoutMs?: number;
5
+ /**
6
+ * Per stream (so stdout and stderr together hold up to twice this). Past it the whole lines within
7
+ * the first half and within the last half are kept and the middle is dropped; the command still
8
+ * counts as answered. Default 4 MiB.
9
+ */
10
+ maxOutputBytes?: number;
11
+ env?: NodeJS.ProcessEnv;
12
+ /** An empty, core-owned directory the docker CLI reads as `$DOCKER_CONFIG` (review round 1, item 5 ruling). Created if missing before every call. */
13
+ dockerConfigDir: string;
14
+ }
15
+ /** `spawn(exe, args)` with no shell, a sanitized environment (`env.ts`), a deadline and a bounded buffer. */
16
+ export declare function runDockerCommand(exe: string, args: string[], options: DockerCommandOptions, callOptions?: DockerExecCallOptions): Promise<DockerCommandResult>;
17
+ export interface CreateDockerExecOptions extends DockerCommandOptions {
18
+ /** The docker executable to run. Defaults to `'docker'` on `PATH`; tests inject a fake binary. */
19
+ dockerPath?: string;
20
+ }
21
+ /**
22
+ * The production `DockerExec`: real `docker`, the system socket already forced by `argv.ts`'s
23
+ * builders. `dockerConfigDir` is required — see `env.ts`'s doc comment for why this module never
24
+ * runs `docker` without one. The returned function accepts a per-call `DockerExecCallOptions`
25
+ * (review round 1, item 3): `stopContainer` uses it to extend the deadline past a long `--time`.
26
+ */
27
+ export declare function createDockerExec(options: CreateDockerExecOptions): DockerExec;