@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,418 @@
1
+ /**
2
+ * The watchdog entrypoint for a `tensorrt-llm` model container (openspec change
3
+ * `add-tensorrt-llm-linux`, task 2.9, spec `tensorrt-llm-runtime` ▸ "Watchdog гарантирует
4
+ * освобождение GPU"). Docker gives it PID 1 in place of `trtllm-serve`: it starts the engine, then
5
+ * polls a heartbeat file the core keeps touching (see `heartbeat.ts`) from outside the container.
6
+ * If that file stops changing, the core is presumed dead (crashed, killed, machine slept) and the
7
+ * engine is torn down so the GPU is freed even though nothing asked for that on purpose. The
8
+ * requirement is explicit that this cannot be turned off by a setting: there is no config path that
9
+ * skips the poll loop, only the timing knobs below.
10
+ *
11
+ * For the script to actually be able to do this, the executor (task 2.8/2.12) MUST run it as the
12
+ * container's PID 1 — directly, or under `--init` — and MUST NOT run the container with
13
+ * `--pid=host`: a watchdog that is not PID 1 does not own the process tree Docker tears down when
14
+ * the container exits, and `trtllm-serve`'s own worker processes would then survive the watchdog's
15
+ * own exit instead of dying with it.
16
+ *
17
+ * The script is embedded as a plain POSIX `/bin/sh` string rather than loaded from a file at
18
+ * runtime, because the core must stay runtime-agnostic (no `import.meta.url`-relative loading) and
19
+ * because the container never gets write access to it — `writeWatchdogScript` below is the only way
20
+ * it reaches disk, mode `0555`, for the executor to bind-mount read-only next to the model.
21
+ *
22
+ * Docker argv/mount wiring, the executor that invokes this, and the lifecycle that runs the
23
+ * heartbeat ticker against a real container are out of scope here (tasks 2.8, 2.11, 2.12); this
24
+ * module only provides the script text, the function that writes it to a given path, and
25
+ * `watchdogEnv`, the one place that turns the timing constants into the env vars the script reads —
26
+ * callers should use it rather than building that env object by hand, so a future change to a
27
+ * default only has to happen here.
28
+ */
29
+ import { randomBytes } from 'node:crypto';
30
+ import { chmod, lstat, mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
31
+ import { basename, dirname, join } from 'node:path';
32
+ import { AtomicCoreError } from '../../contracts/index.js';
33
+ // ── Timing constants ─────────────────────────────────────────────────────────────────────────────
34
+ //
35
+ // Placeholders (design.md "Open Questions" ▸ "Точные значения heartbeat-интервала, лимита
36
+ // watchdog... измеряются в live-тесте core"): task 2.19 measures real values against real hardware
37
+ // and updates these. They are deliberately generous relative to a plausible heartbeat write cost so
38
+ // a slow disk does not trip the watchdog on its own. This is the one place all three live — the
39
+ // heartbeat ticker (`heartbeat.ts`), the watchdog script and `watchdogEnv` below all agree with each
40
+ // other only because everything reads from here; nothing else in the codebase should redeclare them.
41
+ /** How often the core touches the heartbeat file. */
42
+ export const DEFAULT_HEARTBEAT_INTERVAL_SECS = 5;
43
+ /** How long the heartbeat file may go unchanged before the watchdog kills the engine. */
44
+ export const DEFAULT_WATCHDOG_STALE_LIMIT_SECS = 30;
45
+ /** How often the watchdog polls the heartbeat file. */
46
+ export const DEFAULT_WATCHDOG_POLL_INTERVAL_SECS = DEFAULT_HEARTBEAT_INTERVAL_SECS;
47
+ /** TERM→KILL grace the watchdog gives the engine once it has decided to stop it. */
48
+ export const DEFAULT_WATCHDOG_KILL_GRACE_SECS = 10;
49
+ // ── Script configuration surface ─────────────────────────────────────────────────────────────────
50
+ //
51
+ // The script's own argv is reserved entirely for the engine command Docker passes as CMD (it must
52
+ // follow a literal "--" and is forwarded as "$@", never built into or eval'd as a shell string), so
53
+ // the watchdog's own settings travel as env vars instead.
54
+ export const WATCHDOG_ENV_VARS = {
55
+ heartbeatFile: 'ATOMIC_WATCHDOG_HEARTBEAT_FILE',
56
+ staleLimitSecs: 'ATOMIC_WATCHDOG_STALE_LIMIT_SECS',
57
+ pollIntervalSecs: 'ATOMIC_WATCHDOG_POLL_INTERVAL_SECS',
58
+ killGraceSecs: 'ATOMIC_WATCHDOG_KILL_GRACE_SECS',
59
+ };
60
+ /**
61
+ * Builds the `ATOMIC_WATCHDOG_*` env vars the script needs, filling in the timing constants above
62
+ * for anything the caller does not override. This is the single place that turns those constants
63
+ * into the wire form the script reads — the executor/lifecycle MUST build the container's env
64
+ * through this function rather than re-deriving `ATOMIC_WATCHDOG_POLL_INTERVAL_SECS` and friends
65
+ * itself, so the three timing knobs never drift out of sync with the ticker's own default interval.
66
+ */
67
+ export function watchdogEnv(options) {
68
+ return {
69
+ [WATCHDOG_ENV_VARS.heartbeatFile]: options.heartbeatFile,
70
+ [WATCHDOG_ENV_VARS.staleLimitSecs]: String(options.staleLimitSecs ?? DEFAULT_WATCHDOG_STALE_LIMIT_SECS),
71
+ [WATCHDOG_ENV_VARS.pollIntervalSecs]: String(options.pollIntervalSecs ?? DEFAULT_WATCHDOG_POLL_INTERVAL_SECS),
72
+ [WATCHDOG_ENV_VARS.killGraceSecs]: String(options.killGraceSecs ?? DEFAULT_WATCHDOG_KILL_GRACE_SECS),
73
+ };
74
+ }
75
+ /** The script's own config was missing or malformed (missing env var, missing `--` separator, a
76
+ * timing value that is not a positive integer). */
77
+ export const WATCHDOG_EXIT_CODE_CONFIG_ERROR = 96;
78
+ /** The heartbeat observation (an mtime, or "missing") held unchanged for the stale threshold. */
79
+ export const WATCHDOG_EXIT_CODE_STALE_HEARTBEAT = 97;
80
+ /** Suggested filename for `writeWatchdogScript`'s target; the executor decides the actual path. */
81
+ export const WATCHDOG_SCRIPT_FILENAME = 'atomic-watchdog-entrypoint.sh';
82
+ /** Mode the script is written with: readable and executable, never writable, not even by owner. */
83
+ export const WATCHDOG_SCRIPT_MODE = 0o555;
84
+ // ── The script itself ────────────────────────────────────────────────────────────────────────────
85
+ //
86
+ // Built from an array of lines (not a template literal) so the shell's own "${...}" syntax never
87
+ // collides with JavaScript's — nothing here needs interpolation from TypeScript.
88
+ //
89
+ // Notes on choices that are not obvious from the text:
90
+ //
91
+ // - `set -u` only, not `-e`: shells disagree on whether `set -e` fires when a command substitution
92
+ // used in a plain assignment (`x=$(cmd)`) fails, so every failure this script cares about is
93
+ // checked explicitly instead.
94
+ //
95
+ // - Staleness is judged by whether the heartbeat *observation* — its mtime, or the literal
96
+ // "missing" — has stayed the same for `THRESHOLD` consecutive polls counted from script start,
97
+ // never by comparing that mtime against the current wall clock. A wall-clock "now - mtime >=
98
+ // limit" check has three real failure modes this avoids: an unwritable heartbeat directory made
99
+ // the tolerant create's own redirection fail in a way that used to abort the whole shell before
100
+ // the engine even started (a `: > file` redirection failure is a *special builtin* error, which
101
+ // POSIX allows a non-interactive shell to treat as fatal); a leftover heartbeat file from a
102
+ // previous run has an mtime old enough to look already-stale on the very first poll; and a host
103
+ // clock that jumps (NTP step, VM pause/resume) desyncs "now" from the mtime it is compared against
104
+ // in either direction. Comparing consecutive observations to each other sidesteps all three: the
105
+ // file being created late, missing outright, or already old are just more values that either stay
106
+ // the same (and eventually trip the threshold) or change (and reset the count), independent of
107
+ // what time it is. The baseline (`PREV_OBSERVATION`) is read exactly once, right after the
108
+ // tolerant create, and `UNCHANGED_POLLS` starts at 0 and is reset to 0 (not 1) on every change —
109
+ // the poll that first observes a value establishes the baseline, it does not itself count as one
110
+ // confirmed-unchanged poll, or `STALE_LIMIT_SECS <= POLL_INTERVAL_SECS` would kill a heartbeat
111
+ // that was changing on every single poll (findings-2.9-r2 item 1).
112
+ //
113
+ // - `THRESHOLD = ceil((STALE_LIMIT_SECS + 1) / POLL_INTERVAL_SECS)`, not `ceil(STALE_LIMIT_SECS /
114
+ // POLL_INTERVAL_SECS)`. Plain `ceil(limit/poll)` polls after the baseline is *usually* enough, but
115
+ // mtime's whole-second resolution can make it up to a second short: a write at, say, X.9s records
116
+ // mtime X, and a later poll landing at exactly X+limit can already show that same integer second
117
+ // as its own most recent write if that write also happened to floor to X — so a plain
118
+ // `ceil(limit/poll)` can fire as early as `limit - 1` real seconds after the true last write when
119
+ // `poll` evenly divides `limit`. Padding the numerator by one whole second absorbs that one-second
120
+ // floor error, so the kill is never earlier than `STALE_LIMIT_SECS` after the last real write —
121
+ // only, in the worst case, up to `POLL_INTERVAL_SECS` later than the old formula would have fired
122
+ // (findings-2.9-r3 item 3; a smaller, residual version of the round-2 off-by-one's own symptom —
123
+ // that one could fire a full poll interval early in the general case and is fixed separately
124
+ // above; this is the up-to-one-second error that remains from mtime's own rounding even once the
125
+ // poll counting itself is exactly right).
126
+ //
127
+ // - A heartbeat file that already exists when the script starts is left alone, not truncated: the
128
+ // tolerant create only runs when nothing is there yet. Its age never mattered to the loop above,
129
+ // only whether it keeps changing from here on, so there was never a correctness reason to touch
130
+ // it — and leaving it alone is what makes "a genuinely leftover file" something a test can set up
131
+ // and then verify was not clobbered.
132
+ //
133
+ // - mtime is read with `stat -c %Y` (GNU coreutils — the actual runtime is the NGC Ubuntu base
134
+ // image) falling back to `stat -f %m` (BSD/macOS `stat`), so the exact same file also runs under
135
+ // the `/bin/sh` on a macOS development machine, which is what the test suite for this script does
136
+ // (no container involved). Both forms report mtime with whole-second resolution only, which
137
+ // matters for how small `ATOMIC_WATCHDOG_POLL_INTERVAL_SECS` can safely be: two polls one second
138
+ // apart can land on either side of the *same* integer second under ordinary scheduling jitter
139
+ // even while the file is genuinely being rewritten several times a second, reading as a false
140
+ // "unchanged" observation. `DEFAULT_WATCHDOG_POLL_INTERVAL_SECS` (5s, matching the heartbeat
141
+ // ticker's own default interval) gives ample margin; a caller that overrides it much smaller than
142
+ // that should keep `STALE_LIMIT_SECS` large enough, relative to the poll interval, that one
143
+ // aliased poll cannot look like a full stale window on its own.
144
+ //
145
+ // - The poll sleep is backgrounded and `wait`-ed (`sleep "$N" & wait $!`) rather than run in the
146
+ // foreground, and traps are installed before the engine ever starts: a foreground `sleep` blocks
147
+ // a POSIX shell from running a trap until that sleep itself returns, so `docker stop`'s TERM
148
+ // could sit unhandled for up to one whole poll interval; `wait` is interruptible immediately.
149
+ // Traps go in before `"$@" &` because this script is the container's PID 1, and PID 1 gets no
150
+ // signal at all for anything it has not explicitly trapped — a window with the engine running and
151
+ // no trap installed yet would make `docker stop` silently do nothing during it.
152
+ //
153
+ // - INT is forwarded as TERM, not as INT: a command started with `&` when job control is off (the
154
+ // normal state for a non-interactive script) has SIGINT ignored for it by the shell as part of
155
+ // POSIX's rules for asynchronous lists, so sending the engine a literal INT can be a silent
156
+ // no-op. TERM has no such carve-out, so both signals converge on it.
157
+ //
158
+ // - Both the stale-heartbeat path and TERM/INT forwarding go through the same `terminate_engine`:
159
+ // TERM, then poll for exit, escalating to KILL once `KILL_GRACE_SECS` has passed with the engine
160
+ // still alive. Forwarding a stop signal is not allowed to hang forever on an engine that never
161
+ // reacts. The poll itself is a short `sleep 0.25 & wait $!` (backgrounded/`wait`-ed, for the same
162
+ // reason as the main loop's poll sleep) rather than a full second, so an engine that dies right
163
+ // after TERM is noticed promptly — `kill -0` cannot tell a genuinely running process from a
164
+ // not-yet-reaped zombie, so without frequent re-checking, the *first* check after sending TERM
165
+ // would still see the (zombie) pid as present and commit to a full second's wait before checking
166
+ // again (findings-2.9-r3 item 7).
167
+ //
168
+ // - `terminate_engine` guards against re-entry with `STOPPING`: a second TERM/INT arriving while a
169
+ // shutdown is already in progress (`docker stop` repeating itself, or a TERM landing during the
170
+ // stale path's own grace wait) does not restart the grace clock, and — as of this round — does not
171
+ // even shorten it. `GRACE_DEADLINE` is a wall-clock deadline (`date +%s` plus `KILL_GRACE_SECS`
172
+ // plus one, seconds since the epoch) taken once, the first time `STOPPING` flips to 1, and never touched
173
+ // again; the initial signal is likewise sent only once. Two rounds of the same bug, both from
174
+ // treating the grace period as a count of loop iterations instead of an actual span of time:
175
+ // counting *polls* let a trap firing again *during* the interrupted call's own `wait` restart
176
+ // `terminate_engine` from its top on every signal, so a TERM repeating faster than `KILL_GRACE_SECS`
177
+ // could postpone the KILL indefinitely (findings-2.9-r2 item 2); the first fix for that counted
178
+ // *elapsed polls* instead of restarting them, which stopped the postponement but introduced the
179
+ // opposite problem — each interrupted poll still advanced the count by a full nominal second
180
+ // regardless of how little real time had actually elapsed, so ten TERMs 100ms apart could cut a
181
+ // 10s grace period down to close to 1s (findings-2.9-r3 item 2). A wall-clock deadline is immune to
182
+ // both: however many times the wait gets interrupted and re-entered, "is it past the deadline yet"
183
+ // gives the same answer it would have without any interruptions at all. `STOP_EXIT_CODE` exists for
184
+ // the same re-entry: if the stale path is what is tearing the engine down, its trap invocation
185
+ // (should one fire mid-shutdown) must still `exit 97`, not whatever status the interrupted `wait`
186
+ // happened to leave in `$?` — the stale branch sets it before calling `terminate_engine`, and the
187
+ // TERM/INT trap falls back to `$?` only when nothing set it. The `+ 1` (final review M-10):
188
+ // `date +%s` floors, so a deadline of `now + KILL_GRACE_SECS` taken at X.9 s fired at X+G, only
189
+ // G-0.9 s later — the real grace landed anywhere in (G-1, G]. Adding one second makes it
190
+ // (G, G+1]: never shorter than the grace an engine was promised, at most a second longer.
191
+ //
192
+ // - `date +%s` and a fractional `sleep 0.25` are not POSIX, but both shells this script runs under
193
+ // support them: GNU coreutils in the NGC Ubuntu base image, and BSD `date`/`sleep` on the macOS
194
+ // machines its tests run on. A base image without them would need this revisited.
195
+ //
196
+ // - `terminate_engine` resolves the pid to act on as `${ENGINE_PID:-$!}` (with `set +u`/`set -u`
197
+ // bracketing it, since `$!` is unset — not just empty — before any job has ever been backgrounded,
198
+ // and referencing an unset special parameter under `set -u` is itself fatal on at least one real
199
+ // `/bin/sh`). A TERM/INT landing in the gap between `"$@" &` starting the engine and the very next
200
+ // statement assigning `ENGINE_PID=$!` would otherwise see `ENGINE_PID` still empty and return
201
+ // early as if there were nothing to stop — exiting 0 with the engine alive and orphaned
202
+ // (findings-2.9-r2 item 3). `$!` — the shell's own record of the most recently started background
203
+ // job — still resolves correctly in exactly that gap, because it is set by `&` itself, before the
204
+ // next statement ever runs.
205
+ //
206
+ // - A missing heartbeat file is just another observation value, not a special case: the file is
207
+ // still created tolerantly at startup (wrapped in a subshell, `( : > "$F" ) 2>/dev/null || true`,
208
+ // so a failure there cannot take the special-builtin-abort path down with it), but nothing past
209
+ // that point depends on it having worked.
210
+ //
211
+ // - The main loop re-checks `kill -0 "$ENGINE_PID"` immediately before acting on a stale reading, not
212
+ // only at the top of the loop: the poll sleep can span the exact moment the engine exits on its
213
+ // own, and without this second check a poll that turned out stale *and* found the engine already
214
+ // gone would still report the stale-heartbeat exit code (97) instead of the engine's own — hiding
215
+ // what actually happened (a crash, an OOM kill) behind a code that means something else entirely
216
+ // (findings-2.9-r3 item 6).
217
+ //
218
+ // - "$@" is always quoted and only ever used to start a background process, never passed to `eval`
219
+ // or a shell -c string, so nothing in the engine's own argv can be interpreted as shell syntax.
220
+ const WATCHDOG_SCRIPT_LINES = [
221
+ '#!/bin/sh',
222
+ '# atomic-chat-core watchdog entrypoint (openspec change add-tensorrt-llm-linux, task 2.9).',
223
+ '# Generated by src/runtime/container/watchdog.ts — do not edit the mounted copy by hand.',
224
+ '#',
225
+ '# Starts the engine command given after "--" in the background, then kills it and exits if the',
226
+ '# heartbeat file the core touches from outside the container stops changing. Configuration is env',
227
+ '# vars (see watchdogEnv() in watchdog.ts); the script argv is reserved for the engine command.',
228
+ "# Must run as the container's PID 1 (directly or under --init); the container must not use",
229
+ "# --pid=host, or the engine's own workers will outlive this script's exit.",
230
+ '',
231
+ 'set -u',
232
+ '',
233
+ 'WATCHDOG_EXIT_CONFIG_ERROR=96',
234
+ 'WATCHDOG_EXIT_STALE_HEARTBEAT=97',
235
+ '',
236
+ 'fail() {',
237
+ ' echo "atomic-watchdog: $1" >&2',
238
+ ' exit "$WATCHDOG_EXIT_CONFIG_ERROR"',
239
+ '}',
240
+ '',
241
+ '[ -n "${ATOMIC_WATCHDOG_HEARTBEAT_FILE:-}" ] || fail "ATOMIC_WATCHDOG_HEARTBEAT_FILE is required"',
242
+ '[ -n "${ATOMIC_WATCHDOG_STALE_LIMIT_SECS:-}" ] || fail "ATOMIC_WATCHDOG_STALE_LIMIT_SECS is required"',
243
+ '[ -n "${ATOMIC_WATCHDOG_POLL_INTERVAL_SECS:-}" ] || fail "ATOMIC_WATCHDOG_POLL_INTERVAL_SECS is required"',
244
+ '[ -n "${ATOMIC_WATCHDOG_KILL_GRACE_SECS:-}" ] || fail "ATOMIC_WATCHDOG_KILL_GRACE_SECS is required"',
245
+ '',
246
+ 'HEARTBEAT_FILE=$ATOMIC_WATCHDOG_HEARTBEAT_FILE',
247
+ 'STALE_LIMIT_SECS=$ATOMIC_WATCHDOG_STALE_LIMIT_SECS',
248
+ 'POLL_INTERVAL_SECS=$ATOMIC_WATCHDOG_POLL_INTERVAL_SECS',
249
+ 'KILL_GRACE_SECS=$ATOMIC_WATCHDOG_KILL_GRACE_SECS',
250
+ '',
251
+ '# A malformed timing value must not silently disable the watchdog (a non-integer',
252
+ '# STALE_LIMIT_SECS would make the arithmetic below fail with "Illegal number" only once it is',
253
+ '# first used, and a zero POLL_INTERVAL_SECS would turn the poll loop into a busy loop). A leading',
254
+ '# zero is rejected too, not just tolerated as decimal: "08"/"09" are not valid octal digits and',
255
+ '# abort arithmetic evaluation outright, and "010" is silently octal 8, not decimal ten — neither',
256
+ '# is a value anyone setting this env var meant to produce.',
257
+ 'validate_positive_int() {',
258
+ ' case $2 in',
259
+ " ''|*[!0-9]*|0|0[0-9]*) fail \"$1 must be a positive integer with no leading zero (got '$2')\" ;;",
260
+ ' esac',
261
+ ' [ "$2" -gt 0 ] 2>/dev/null || fail "$1 must be a positive integer with no leading zero (got \'$2\')"',
262
+ '}',
263
+ 'validate_positive_int ATOMIC_WATCHDOG_STALE_LIMIT_SECS "$STALE_LIMIT_SECS"',
264
+ 'validate_positive_int ATOMIC_WATCHDOG_POLL_INTERVAL_SECS "$POLL_INTERVAL_SECS"',
265
+ 'validate_positive_int ATOMIC_WATCHDOG_KILL_GRACE_SECS "$KILL_GRACE_SECS"',
266
+ '',
267
+ '[ "${1:-}" = "--" ] || fail "expected -- before the engine command"',
268
+ 'shift',
269
+ '',
270
+ '# Consecutive-unchanged-polls threshold. +1 on the limit (equivalently: ceil((limit+1)/poll))',
271
+ "# pads out one whole second of slack for mtime's own whole-second rounding, so a kill can never",
272
+ '# land earlier than STALE_LIMIT_SECS after the true last write, only possibly a bit later.',
273
+ "# PREV_OBSERVATION is seeded once, right below (after the tolerant create), from the heartbeat's",
274
+ '# actual state; UNCHANGED_POLLS then counts polls whose observation matched the one before it,',
275
+ '# starting from 0 — the poll that establishes the baseline is not itself counted as unchanged.',
276
+ 'THRESHOLD=$(( (STALE_LIMIT_SECS + POLL_INTERVAL_SECS) / POLL_INTERVAL_SECS ))',
277
+ '',
278
+ '# Only if nothing is there yet: a genuinely leftover file from a previous run is left alone. Best-',
279
+ '# effort either way — staleness is judged by the observation loop below, not by this having worked.',
280
+ 'if [ ! -e "$HEARTBEAT_FILE" ]; then',
281
+ ' ( : > "$HEARTBEAT_FILE" ) 2>/dev/null || true',
282
+ 'fi',
283
+ '',
284
+ 'heartbeat_observation() {',
285
+ ' m=$(stat -c %Y "$1" 2>/dev/null) && { echo "$m"; return 0; }',
286
+ ' m=$(stat -f %m "$1" 2>/dev/null) && { echo "$m"; return 0; }',
287
+ ' echo missing',
288
+ '}',
289
+ '',
290
+ 'PREV_OBSERVATION=$(heartbeat_observation "$HEARTBEAT_FILE")',
291
+ 'UNCHANGED_POLLS=0',
292
+ '',
293
+ 'ENGINE_PID=',
294
+ 'STOPPING=0',
295
+ 'GRACE_DEADLINE=',
296
+ 'STOP_EXIT_CODE=',
297
+ '',
298
+ 'terminate_engine() {',
299
+ ' set +u',
300
+ ' pid=${ENGINE_PID:-$!}',
301
+ ' set -u',
302
+ ' [ -n "$pid" ] || return 0',
303
+ ' if [ "$STOPPING" -eq 0 ]; then',
304
+ ' STOPPING=1',
305
+ ' kill -"$1" "$pid" 2>/dev/null || true',
306
+ ' GRACE_DEADLINE=$(( $(date +%s) + KILL_GRACE_SECS + 1 ))',
307
+ ' fi',
308
+ ' while kill -0 "$pid" 2>/dev/null; do',
309
+ ' if [ "$(date +%s)" -ge "$GRACE_DEADLINE" ]; then',
310
+ ' kill -KILL "$pid" 2>/dev/null || true',
311
+ ' break',
312
+ ' fi',
313
+ ' sleep 0.25 & wait $!',
314
+ ' done',
315
+ ' wait "$pid" 2>/dev/null',
316
+ '}',
317
+ '',
318
+ 'trap \'terminate_engine TERM; exit "${STOP_EXIT_CODE:-$?}"\' TERM',
319
+ 'trap \'terminate_engine TERM; exit "${STOP_EXIT_CODE:-$?}"\' INT',
320
+ '',
321
+ '"$@" &',
322
+ 'ENGINE_PID=$!',
323
+ '',
324
+ 'while true; do',
325
+ ' if ! kill -0 "$ENGINE_PID" 2>/dev/null; then',
326
+ ' wait "$ENGINE_PID"',
327
+ ' exit $?',
328
+ ' fi',
329
+ '',
330
+ ' sleep "$POLL_INTERVAL_SECS" & wait $!',
331
+ '',
332
+ ' OBSERVATION=$(heartbeat_observation "$HEARTBEAT_FILE")',
333
+ ' if [ "$OBSERVATION" = "$PREV_OBSERVATION" ]; then',
334
+ ' UNCHANGED_POLLS=$((UNCHANGED_POLLS + 1))',
335
+ ' else',
336
+ ' UNCHANGED_POLLS=0',
337
+ ' PREV_OBSERVATION=$OBSERVATION',
338
+ ' fi',
339
+ '',
340
+ ' if [ "$UNCHANGED_POLLS" -ge "$THRESHOLD" ]; then',
341
+ ' # The engine may have exited on its own during the sleep just above, in the same poll that',
342
+ ' # also turned out stale; its own exit status is what happened and takes priority over 97.',
343
+ ' if ! kill -0 "$ENGINE_PID" 2>/dev/null; then',
344
+ ' wait "$ENGINE_PID"',
345
+ ' exit $?',
346
+ ' fi',
347
+ ' echo "atomic-watchdog: heartbeat unchanged for $UNCHANGED_POLLS/$THRESHOLD polls; stopping the engine" >&2',
348
+ ' STOP_EXIT_CODE=$WATCHDOG_EXIT_STALE_HEARTBEAT',
349
+ ' terminate_engine TERM',
350
+ ' exit "$WATCHDOG_EXIT_STALE_HEARTBEAT"',
351
+ ' fi',
352
+ 'done',
353
+ '',
354
+ ];
355
+ /** The watchdog entrypoint script text, ready to write to disk verbatim. */
356
+ export const WATCHDOG_SCRIPT = WATCHDOG_SCRIPT_LINES.join('\n');
357
+ const NODE_FS = { mkdir, writeFile, chmod, rename, rm, lstat, readFile };
358
+ /**
359
+ * Whether `path` is already exactly what `writeWatchdogScript` would produce: a regular file (not a
360
+ * symlink, not a directory or anything else), mode `0555` exactly, holding `WATCHDOG_SCRIPT`
361
+ * verbatim. Content alone is not enough — a symlink that happens to point at identical content, or a
362
+ * regular file with the right content but the wrong mode (e.g. still `0644` from some other writer),
363
+ * both need to be replaced, not left alone.
364
+ */
365
+ async function isCurrent(fs, path, host) {
366
+ const info = await fs.lstat(path).catch(() => undefined);
367
+ if (info === undefined || !info.isFile())
368
+ return false;
369
+ // Windows keeps no POSIX mode: a 0555 file reads back as 0444, so the mode can never match there
370
+ // and only the content says whether the script is current.
371
+ if (host !== 'win32' && (info.mode & 0o777) !== WATCHDOG_SCRIPT_MODE)
372
+ return false;
373
+ const content = await fs.readFile(path, 'utf8').catch(() => undefined);
374
+ return content === WATCHDOG_SCRIPT;
375
+ }
376
+ /**
377
+ * Writes the watchdog entrypoint script to `path`, atomically and idempotently.
378
+ *
379
+ * A second call on a path that already holds the current script at the right mode (the common case:
380
+ * the executor calls this on every container start, not only the first) is a no-op — worth checking,
381
+ * since the file is `0555` and a second `writeFile` straight at that path would fail `EACCES`. When
382
+ * it is not already current, the script is written to a temp file in the same directory (created
383
+ * exclusively, so two writers never interleave into the same temp name), locked to `0555`, then
384
+ * `rename`d over the target: a rename replaces whatever is at the destination — including a symlink
385
+ * itself, not whatever it points at — in one atomic step, so a container that is mid-read of the old
386
+ * script never sees a half-written file, and nothing already running with the old copy open loses it
387
+ * out from under itself. If `chmod` or `rename` fails partway through, the abandoned temp file is
388
+ * removed rather than left behind for the next call (or a directory listing) to trip over.
389
+ *
390
+ * The executor (task 2.8/2.12) bind-mounts the result into the model container read-only and passes
391
+ * it as the container's entrypoint; this function has no opinion on where `path` lives — that is the
392
+ * core's per-scope data directory, chosen by the caller.
393
+ */
394
+ export async function writeWatchdogScript(path, fs = NODE_FS, host = process.platform) {
395
+ if (await isCurrent(fs, path, host))
396
+ return path;
397
+ let tempPath;
398
+ try {
399
+ const dir = dirname(path);
400
+ await fs.mkdir(dir, { recursive: true });
401
+ tempPath = join(dir, `.${basename(path)}.tmp-${randomBytes(6).toString('hex')}`);
402
+ await fs.writeFile(tempPath, WATCHDOG_SCRIPT, { flag: 'wx' });
403
+ await fs.chmod(tempPath, WATCHDOG_SCRIPT_MODE);
404
+ // On Windows the 0555 of an earlier write is the read-only attribute, and NTFS refuses to rename
405
+ // over a read-only file (EPERM): the second write after a restart failed. Made writable first, the
406
+ // replacement stays one rename.
407
+ if (host === 'win32')
408
+ await fs.chmod(path, 0o644).catch(() => { });
409
+ await fs.rename(tempPath, path);
410
+ }
411
+ catch (error) {
412
+ if (tempPath !== undefined)
413
+ await fs.rm(tempPath).catch(() => { });
414
+ throw new AtomicCoreError('IO_ERROR', 'Cannot write the watchdog entrypoint script.', error instanceof Error ? error.message : String(error));
415
+ }
416
+ return path;
417
+ }
418
+ //# sourceMappingURL=watchdog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchdog.js","sourceRoot":"","sources":["../../../src/runtime/container/watchdog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Core startup's half of the Docker executor (task 2.12; task 2.10 review carry-forward): on Linux,
3
+ * with a docker CLI in a system directory, build the one `DockerExec` this core uses — the absolute
4
+ * binary, the core-owned empty `DOCKER_CONFIG` — open this scope's execution journal, and reconcile
5
+ * it before the first load can be served (spec `tensorrt-llm-runtime`, "Восстановление контейнеров
6
+ * после перезапуска core"). `core/create.ts` calls this; the managed-text provider (task 2.14) keeps
7
+ * the returned executor and journal for its lifecycle.
8
+ */
9
+ import type { DataLayout } from '../../config/index.js';
10
+ import { ExecutionJournal } from './execution-journal.js';
11
+ import type { ExecutionReconcileResult, ReconcileLogger } from './reconcile.js';
12
+ import type { DockerExec } from './types.js';
13
+ import type { WslDistributionTransport } from '../wsl/index.js';
14
+ export interface WireManagedContainersOptions {
15
+ /** Injected, never `process.platform` read here. */
16
+ platform: NodeJS.Platform;
17
+ layout: DataLayout;
18
+ instanceId: string;
19
+ log: ReconcileLogger;
20
+ /** The docker CLI to run; `undefined` resolves it from the system directories, `null` means none. */
21
+ dockerPath?: string | null;
22
+ /** The Docker Engine API socket image pulls stream from. Default `DOCKER_SOCKET_PATH`; a test seam. */
23
+ dockerSocketPath?: string;
24
+ /**
25
+ * Deadline of each `docker inspect`/`docker rm` the startup reconcile makes. Default
26
+ * `RECONCILE_CALL_TIMEOUT_MS`. Not the stop's: `stopContainer` gives its own call `--time` plus 5 s.
27
+ */
28
+ reconcileCallTimeoutMs?: number;
29
+ /** Past this, reconcile starts no further record. Default `RECONCILE_BUDGET_MS`. */
30
+ reconcileBudgetMs?: number;
31
+ /**
32
+ * Windows (change `add-tensorrt-llm-windows`): Atomic Chat's WSL distribution, or null before it is
33
+ * imported. Docker runs there, as the guest's root through `wsl.exe` (`guestDockerExec`).
34
+ */
35
+ guest?: () => Promise<WslDistributionTransport | null>;
36
+ }
37
+ /**
38
+ * Startup must not wait on a hung daemon (task 2.12 review round 1, item 5): each `docker inspect` and
39
+ * `docker rm` of the reconcile gets this short deadline instead of the executor's usual 30 s. The stop
40
+ * is bounded separately: `docker stop --time RECONCILE_STARTUP_STOP_TIMEOUT_SECONDS`, whose own call
41
+ * deadline `stopContainer` sets to that plus 5 s. That shorter `--time` also halves the grace a
42
+ * leftover engine gets between SIGTERM and SIGKILL (5 s instead of an unload's 10 s).
43
+ */
44
+ export declare const RECONCILE_CALL_TIMEOUT_MS = 10000;
45
+ export declare const RECONCILE_STARTUP_STOP_TIMEOUT_SECONDS = 5;
46
+ /**
47
+ * No record is started after this. Worst case, startup waits this long plus one record's three calls
48
+ * (inspect, stop, rm) at `RECONCILE_CALL_TIMEOUT_MS` each; anything left is reconciled next startup.
49
+ */
50
+ export declare const RECONCILE_BUDGET_MS = 20000;
51
+ export interface ManagedContainers {
52
+ exec: DockerExec;
53
+ journal: ExecutionJournal;
54
+ dockerPath: string;
55
+ /** Where `pullImage` reaches the Engine API (the system socket outside tests). */
56
+ socketPath: string;
57
+ reconciled: ExecutionReconcileResult;
58
+ }
59
+ /**
60
+ * `null` off Linux and Windows, when no docker CLI is installed, or on Windows before Atomic Chat's
61
+ * WSL distribution exists: there is nothing to run a container with.
62
+ */
63
+ export declare function wireManagedContainers(options: WireManagedContainersOptions): Promise<ManagedContainers | null>;
64
+ /**
65
+ * The one Docker executor of this core, wired lazily (task 2.6; carry-forward from 2.8/2.12: keep
66
+ * the startup handle, never construct a second). Core startup resolves it once, which reconciles
67
+ * the execution journal as before. On a machine with no docker CLI at startup it stays null — until
68
+ * the setup's privileged step installs Docker, when the next caller wires it then. Every caller —
69
+ * the environment setup, and the managed-text provider (task 2.14) — goes through the same handle,
70
+ * so there is only ever one executor and one journal per core.
71
+ */
72
+ export interface ManagedContainersHandle {
73
+ /** What has been wired so far, without trying again. */
74
+ current(): ManagedContainers | null;
75
+ /** The executor, wiring it on first use and retrying after a start that found no docker CLI. */
76
+ resolve(): Promise<ManagedContainers | null>;
77
+ }
78
+ export declare function createManagedContainersHandle(options: WireManagedContainersOptions, wire?: (options: WireManagedContainersOptions) => Promise<ManagedContainers | null>): ManagedContainersHandle;
@@ -0,0 +1,92 @@
1
+ import { DOCKER_SOCKET_PATH } from './argv.js';
2
+ import { resolveDockerBinary } from './docker-binary.js';
3
+ import { createDockerExec } from './exec.js';
4
+ import { ExecutionJournal } from './execution-journal.js';
5
+ import { reconcileExecutions } from './reconcile.js';
6
+ import { GUEST_DOCKER_BINARY, guestDockerExec } from './wsl-exec.js';
7
+ /**
8
+ * Startup must not wait on a hung daemon (task 2.12 review round 1, item 5): each `docker inspect` and
9
+ * `docker rm` of the reconcile gets this short deadline instead of the executor's usual 30 s. The stop
10
+ * is bounded separately: `docker stop --time RECONCILE_STARTUP_STOP_TIMEOUT_SECONDS`, whose own call
11
+ * deadline `stopContainer` sets to that plus 5 s. That shorter `--time` also halves the grace a
12
+ * leftover engine gets between SIGTERM and SIGKILL (5 s instead of an unload's 10 s).
13
+ */
14
+ export const RECONCILE_CALL_TIMEOUT_MS = 10_000;
15
+ export const RECONCILE_STARTUP_STOP_TIMEOUT_SECONDS = 5;
16
+ /**
17
+ * No record is started after this. Worst case, startup waits this long plus one record's three calls
18
+ * (inspect, stop, rm) at `RECONCILE_CALL_TIMEOUT_MS` each; anything left is reconciled next startup.
19
+ */
20
+ export const RECONCILE_BUDGET_MS = 20_000;
21
+ /**
22
+ * `null` off Linux and Windows, when no docker CLI is installed, or on Windows before Atomic Chat's
23
+ * WSL distribution exists: there is nothing to run a container with.
24
+ */
25
+ export async function wireManagedContainers(options) {
26
+ let dockerPath;
27
+ let exec;
28
+ let reconcileExec;
29
+ const reconcileTimeout = options.reconcileCallTimeoutMs ?? RECONCILE_CALL_TIMEOUT_MS;
30
+ if (options.platform === 'win32' && options.guest !== undefined) {
31
+ const transport = await options.guest();
32
+ if (transport === null)
33
+ return null;
34
+ dockerPath = GUEST_DOCKER_BINARY;
35
+ exec = guestDockerExec(transport);
36
+ const guest = exec;
37
+ reconcileExec = (args, call) => guest(args, { timeoutMs: call?.timeoutMs ?? reconcileTimeout });
38
+ }
39
+ else {
40
+ if (options.platform !== 'linux')
41
+ return null;
42
+ const resolved = options.dockerPath === undefined ? await resolveDockerBinary() : options.dockerPath;
43
+ if (resolved === null)
44
+ return null;
45
+ dockerPath = resolved;
46
+ exec = createDockerExec({ dockerPath, dockerConfigDir: options.layout.managed.dockerConfigDir });
47
+ reconcileExec = createDockerExec({
48
+ dockerPath,
49
+ dockerConfigDir: options.layout.managed.dockerConfigDir,
50
+ timeoutMs: reconcileTimeout,
51
+ });
52
+ }
53
+ const journal = await ExecutionJournal.open(options.layout);
54
+ const budget = new AbortController();
55
+ const timer = setTimeout(() => budget.abort(), options.reconcileBudgetMs ?? RECONCILE_BUDGET_MS);
56
+ timer.unref?.();
57
+ try {
58
+ const reconciled = await reconcileExecutions(journal, options.instanceId, reconcileExec, options.log, RECONCILE_STARTUP_STOP_TIMEOUT_SECONDS, budget.signal);
59
+ return {
60
+ exec,
61
+ journal,
62
+ dockerPath,
63
+ socketPath: options.dockerSocketPath ?? DOCKER_SOCKET_PATH,
64
+ reconciled,
65
+ };
66
+ }
67
+ finally {
68
+ clearTimeout(timer);
69
+ }
70
+ }
71
+ export function createManagedContainersHandle(options, wire = wireManagedContainers) {
72
+ let wired = null;
73
+ let inFlight = null;
74
+ return {
75
+ current: () => wired,
76
+ resolve: () => {
77
+ if (wired !== null)
78
+ return Promise.resolve(wired);
79
+ // Two callers at once share one attempt: two attempts would open the journal twice.
80
+ inFlight ??= wire(options)
81
+ .then((result) => {
82
+ wired = result;
83
+ return result;
84
+ })
85
+ .finally(() => {
86
+ inFlight = null;
87
+ });
88
+ return inFlight;
89
+ },
90
+ };
91
+ }
92
+ //# sourceMappingURL=wiring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../../src/runtime/container/wiring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The Docker executor's two host-side seams, pointed into Atomic Chat's WSL distribution (change
3
+ * `add-tensorrt-llm-windows`, task 2.6, design D3/D5): every docker argv `argv.ts` builds runs as the
4
+ * guest's root through `wsl.exe --exec` — the guest's own `/usr/bin/docker` on its system socket, no
5
+ * shell, no `docker` group — and every mount source is `realpath`-ed in the guest's filesystem, where
6
+ * Docker will actually bind it, rather than on Windows, where the path does not exist.
7
+ */
8
+ import type { WslDistributionTransport } from '../wsl/index.js';
9
+ import type { DockerExec, Realpath } from './types.js';
10
+ /** The docker CLI the guest recipe installs. */
11
+ export declare const GUEST_DOCKER_BINARY = "/usr/bin/docker";
12
+ export declare function guestDockerExec(transport: WslDistributionTransport): DockerExec;
13
+ export declare function guestRealpath(transport: WslDistributionTransport): Realpath;