@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,18 @@
1
+ /** The docker CLI the guest recipe installs. */
2
+ export const GUEST_DOCKER_BINARY = '/usr/bin/docker';
3
+ const GUEST_ROOT = 'root';
4
+ export function guestDockerExec(transport) {
5
+ return (args, call) => transport.exec([GUEST_DOCKER_BINARY, ...args], {
6
+ user: GUEST_ROOT,
7
+ ...(call?.timeoutMs === undefined ? {} : { timeoutMs: call.timeoutMs }),
8
+ });
9
+ }
10
+ export function guestRealpath(transport) {
11
+ return async (path) => {
12
+ const resolved = await transport.exec(['realpath', '-e', '--', path], { user: GUEST_ROOT });
13
+ if (resolved.code !== 0)
14
+ throw new Error(resolved.stderr.trim() || `realpath -e ${path} failed`);
15
+ return resolved.stdout.trim();
16
+ };
17
+ }
18
+ //# sourceMappingURL=wsl-exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsl-exec.js","sourceRoot":"","sources":["../../../src/runtime/container/wsl-exec.ts"],"names":[],"mappings":"AAUA,gDAAgD;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAA;AACpD,MAAM,UAAU,GAAG,MAAM,CAAA;AAEzB,MAAM,UAAU,eAAe,CAAC,SAAmC;IACjE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACpB,SAAS,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,EAAE;QAC7C,IAAI,EAAE,UAAU;QAChB,GAAG,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;KACxE,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAmC;IAC/D,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;QAC3F,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,eAAe,IAAI,SAAS,CAAC,CAAA;QAChG,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAC/B,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Getting one kind of conf document onto disk and keeping the right one in play — the mechanism
3
+ * the runtime descriptor (`descriptor-provider.ts`) and the environment manifest
4
+ * (`environment-manifest-provider.ts`) share (openspec change `extract-environment-manifest`, design
5
+ * D3). Each provider only says which document it is: where it comes from, which variable overrides
6
+ * that, how it parses, which field is its immutable id, and where its cache lives. Everything below
7
+ * is the same for both, so a fix to one is a fix to the other.
8
+ *
9
+ * Two rules shape the whole thing:
10
+ *
11
+ * - A document is accepted only when it parses AND its `minimum_core_version` is no higher than
12
+ * this build's own `CORE_VERSION`. An accepted document is cached forever, keyed by its own id —
13
+ * conf's own rule is that an id's content never changes, so the cached copy is exactly as good as
14
+ * a fresh fetch would be, on every later read.
15
+ * - Only `latest()` talks to the network. `cached(id)` and `latestCached()` read the cache alone,
16
+ * so whatever pinned an id (an installation, a consented operation) is never moved by a newer
17
+ * document published in conf, and never waits on a fetch.
18
+ *
19
+ * Fetch transport follows the house pattern in `src/backend/catalog/manifest.ts`: an injected
20
+ * `fetch`, a hard timeout, `raw.githubusercontent.com` of `AtomicBot-ai/atomic-chat-conf` `main`. The
21
+ * override variable accepts only `file://…` (read from disk through an injected `readFile`) and
22
+ * `https://…` (fetched); anything else, including a plain `http://`, is refused as a source and
23
+ * treated the same as "could not fetch" — the document is production-only network input, and a
24
+ * scheme this mechanism does not recognise is not worth guessing about.
25
+ *
26
+ * The cache never deletes anything: this file only ever writes `<dir>/<id>.json` and repoints
27
+ * `<dir>/latest.json`. The cache directory is shared by an app core and a CLI core with no lock over
28
+ * it (unlike `store.ts`'s operation records): every write goes through a per-call random temp name
29
+ * (the same convention as `execution-journal.ts`/`optimal-store.ts`) so two concurrent accepts never
30
+ * contend for the same temp file, and a cache write that fails for any other reason (disk full,
31
+ * permissions) is swallowed rather than failing the whole resolution — the freshly fetched,
32
+ * already-validated document is still good to hand back even if this core could not persist it.
33
+ */
34
+ /** Matches `MANIFEST_FETCH_TIMEOUT_MS` (`src/backend/catalog/manifest.ts`): the house budget. */
35
+ export declare const DOCUMENT_FETCH_TIMEOUT_MS = 8000;
36
+ /** One way of fetching a conf document; `timeoutMs` is the hard budget to honour. */
37
+ export type DocumentFetch = (url: string, timeoutMs: number) => Promise<Response>;
38
+ /**
39
+ * A transport over a `fetch`-compatible function with an abort-on-timeout, matching the catalog
40
+ * manifest's. `label` names the document in the timeout message ("Runtime descriptor fetch timed out…").
41
+ */
42
+ export declare function documentFetchFromFetch(fetchImpl: typeof fetch, label: string): DocumentFetch;
43
+ /** The slice of `node:fs/promises` the cache needs; tests pass an in-memory fake. */
44
+ export interface DocumentCacheFs {
45
+ readFile(path: string, encoding: 'utf8'): Promise<string>;
46
+ writeFile(path: string, data: string, options?: {
47
+ encoding?: 'utf8';
48
+ mode?: number;
49
+ }): Promise<void>;
50
+ rename(from: string, to: string): Promise<void>;
51
+ mkdir(path: string, options?: {
52
+ recursive?: boolean;
53
+ }): Promise<string | undefined>;
54
+ /** Cleans up an orphaned temp file after a failed rename; never the source of truth for anything. */
55
+ rm(path: string, options?: {
56
+ force?: boolean;
57
+ }): Promise<void>;
58
+ }
59
+ /** Which document this is: everything that differs between a descriptor and a manifest. */
60
+ export interface CachedDocumentKind<T> {
61
+ /** Names the document in warnings: "Runtime descriptor", "Environment manifest". */
62
+ label: string;
63
+ /**
64
+ * The variable that overrides the source, e.g. `ATOMIC_RUNTIME_DESCRIPTOR_URL`; or several, the
65
+ * first one set winning (a descriptor's per-engine variable, then the legacy one).
66
+ */
67
+ urlEnv: string | readonly string[];
68
+ /** Throws on anything that is not a valid document of this kind. */
69
+ parse(input: unknown): T;
70
+ /** The document's immutable id field, e.g. `descriptor_id`; also the key `latest.json` holds. */
71
+ idField: string;
72
+ id(document: T): string;
73
+ minimumCoreVersion(document: T): string;
74
+ /** The cache directory, one document's file in it, and `latest.json`. */
75
+ cacheDir: string;
76
+ cacheFile(id: string): string;
77
+ latestFile: string;
78
+ /**
79
+ * Pointers an older core wrote, read in order only while `latestFile` does not exist yet; a
80
+ * pointer whose document `parse` rejects (another engine's descriptor) counts as absent.
81
+ */
82
+ legacyLatestFiles?: readonly string[];
83
+ }
84
+ export interface CachedDocumentOptions {
85
+ /** Where the override variable is read from; the real process env in production. */
86
+ env: Record<string, string | undefined>;
87
+ fetch: DocumentFetch;
88
+ /** Reads a `file://…` override; rejects when the file does not exist or cannot be read. */
89
+ readFile: (path: string) => Promise<string>;
90
+ fs?: DocumentCacheFs;
91
+ /** This build's own version; defaults to `CORE_VERSION`. A test pins it to check the gate. */
92
+ coreVersion?: string;
93
+ /** The source when no override is set: conf main's published document. */
94
+ url: string;
95
+ timeoutMs?: number;
96
+ /** A rejected source scheme or a failed cache write is never fatal; this is where it is reported. */
97
+ onWarn?: (message: string) => void;
98
+ }
99
+ /**
100
+ * What `latest()` found. `fresh` — fetched and accepted now; `cached` — the fetch gave nothing
101
+ * acceptable, the latest previously accepted document stands in (never an error); `too-new` — the
102
+ * fetched document parsed but needs a newer core, and nothing was ever accepted before; `none` —
103
+ * nothing to fetch and nothing cached.
104
+ */
105
+ export type LatestDocument<T> = {
106
+ kind: 'fresh';
107
+ document: T;
108
+ } | {
109
+ kind: 'cached';
110
+ document: T;
111
+ } | {
112
+ kind: 'too-new';
113
+ id: string;
114
+ } | {
115
+ kind: 'none';
116
+ };
117
+ export interface CachedDocuments<T> {
118
+ /** Fetch from the configured source; on any failure to obtain a newly accepted one, the cache. */
119
+ latest(): Promise<LatestDocument<T>>;
120
+ /** One accepted document by id, from the cache alone: no fetch, no `readFile`. */
121
+ cached(id: string): Promise<T | null>;
122
+ /** What `latest()` would fall back to: the newest accepted document, from the cache alone. */
123
+ latestCached(): Promise<T | null>;
124
+ }
125
+ /** `minimum_core_version` no higher than this build's own version (numeric semver compare). */
126
+ export declare function meetsCoreVersion(minimumCoreVersion: string, coreVersion: string): boolean;
127
+ /** Build the mechanism for one kind. Construction does no I/O; every access happens per call. */
128
+ export declare function createCachedDocuments<T>(kind: CachedDocumentKind<T>, options: CachedDocumentOptions): CachedDocuments<T>;
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Getting one kind of conf document onto disk and keeping the right one in play — the mechanism
3
+ * the runtime descriptor (`descriptor-provider.ts`) and the environment manifest
4
+ * (`environment-manifest-provider.ts`) share (openspec change `extract-environment-manifest`, design
5
+ * D3). Each provider only says which document it is: where it comes from, which variable overrides
6
+ * that, how it parses, which field is its immutable id, and where its cache lives. Everything below
7
+ * is the same for both, so a fix to one is a fix to the other.
8
+ *
9
+ * Two rules shape the whole thing:
10
+ *
11
+ * - A document is accepted only when it parses AND its `minimum_core_version` is no higher than
12
+ * this build's own `CORE_VERSION`. An accepted document is cached forever, keyed by its own id —
13
+ * conf's own rule is that an id's content never changes, so the cached copy is exactly as good as
14
+ * a fresh fetch would be, on every later read.
15
+ * - Only `latest()` talks to the network. `cached(id)` and `latestCached()` read the cache alone,
16
+ * so whatever pinned an id (an installation, a consented operation) is never moved by a newer
17
+ * document published in conf, and never waits on a fetch.
18
+ *
19
+ * Fetch transport follows the house pattern in `src/backend/catalog/manifest.ts`: an injected
20
+ * `fetch`, a hard timeout, `raw.githubusercontent.com` of `AtomicBot-ai/atomic-chat-conf` `main`. The
21
+ * override variable accepts only `file://…` (read from disk through an injected `readFile`) and
22
+ * `https://…` (fetched); anything else, including a plain `http://`, is refused as a source and
23
+ * treated the same as "could not fetch" — the document is production-only network input, and a
24
+ * scheme this mechanism does not recognise is not worth guessing about.
25
+ *
26
+ * The cache never deletes anything: this file only ever writes `<dir>/<id>.json` and repoints
27
+ * `<dir>/latest.json`. The cache directory is shared by an app core and a CLI core with no lock over
28
+ * it (unlike `store.ts`'s operation records): every write goes through a per-call random temp name
29
+ * (the same convention as `execution-journal.ts`/`optimal-store.ts`) so two concurrent accepts never
30
+ * contend for the same temp file, and a cache write that fails for any other reason (disk full,
31
+ * permissions) is swallowed rather than failing the whole resolution — the freshly fetched,
32
+ * already-validated document is still good to hand back even if this core could not persist it.
33
+ */
34
+ import { randomUUID } from 'node:crypto';
35
+ import { fileURLToPath } from 'node:url';
36
+ import { readFile as nodeReadFile, mkdir as nodeMkdir, rename as nodeRename, rm as nodeRm, writeFile as nodeWriteFile, } from 'node:fs/promises';
37
+ import { compareVersions, withHardTimeout } from '../../backend/index.js';
38
+ import { CORE_VERSION } from '../../version.js';
39
+ /** Matches `MANIFEST_FETCH_TIMEOUT_MS` (`src/backend/catalog/manifest.ts`): the house budget. */
40
+ export const DOCUMENT_FETCH_TIMEOUT_MS = 8_000;
41
+ /**
42
+ * A transport over a `fetch`-compatible function with an abort-on-timeout, matching the catalog
43
+ * manifest's. `label` names the document in the timeout message ("Runtime descriptor fetch timed out…").
44
+ */
45
+ export function documentFetchFromFetch(fetchImpl, label) {
46
+ return (url, timeoutMs) => {
47
+ const controller = new AbortController();
48
+ const request = fetchImpl(url, { headers: { Accept: 'application/json' }, signal: controller.signal });
49
+ return withHardTimeout(request, timeoutMs, `${label} fetch timed out after ${timeoutMs}ms`).catch((err) => {
50
+ controller.abort();
51
+ throw err;
52
+ });
53
+ };
54
+ }
55
+ const NODE_FS = {
56
+ readFile: (path) => nodeReadFile(path, 'utf8'),
57
+ writeFile: nodeWriteFile,
58
+ rename: nodeRename,
59
+ mkdir: nodeMkdir,
60
+ rm: (path, options) => nodeRm(path, { force: options?.force ?? false }),
61
+ };
62
+ /** `minimum_core_version` no higher than this build's own version (numeric semver compare). */
63
+ export function meetsCoreVersion(minimumCoreVersion, coreVersion) {
64
+ return compareVersions(coreVersion, minimumCoreVersion) >= 0;
65
+ }
66
+ /**
67
+ * Write-then-rename with a per-call random temp name, never a fixed `<path>.tmp`: this cache has no
68
+ * lock over it, so two concurrent writers sharing one temp name would clobber each other's bytes or
69
+ * hit `ENOENT` on whichever renames second. `path` itself may still collide between two concurrent
70
+ * writers (`latest.json`, or the same id accepted twice at once) — that rename is a single
71
+ * filesystem syscall, so the loser's write is simply superseded, never torn.
72
+ */
73
+ async function atomicWrite(fs, dir, path, contents) {
74
+ await fs.mkdir(dir, { recursive: true });
75
+ const tmp = `${path}.${randomUUID()}.tmp`;
76
+ await fs.writeFile(tmp, contents, { encoding: 'utf8', mode: 0o600 });
77
+ await fs.rename(tmp, path).catch(async (error) => {
78
+ await fs.rm(tmp, { force: true }).catch(() => undefined);
79
+ throw error;
80
+ });
81
+ }
82
+ /** Build the mechanism for one kind. Construction does no I/O; every access happens per call. */
83
+ export function createCachedDocuments(kind, options) {
84
+ const fs = options.fs ?? NODE_FS;
85
+ const coreVersion = options.coreVersion ?? CORE_VERSION;
86
+ const timeoutMs = options.timeoutMs ?? DOCUMENT_FETCH_TIMEOUT_MS;
87
+ const onWarn = options.onWarn ?? (() => undefined);
88
+ // `latest()` runs on every probe: the same warning is written once per process, not per call.
89
+ const warned = new Set();
90
+ const warnOnce = (message) => {
91
+ if (warned.has(message))
92
+ return;
93
+ warned.add(message);
94
+ onWarn(message);
95
+ };
96
+ const urlEnvs = typeof kind.urlEnv === 'string' ? [kind.urlEnv] : kind.urlEnv;
97
+ const sourceUrl = () => {
98
+ for (const variable of urlEnvs) {
99
+ const override = options.env[variable];
100
+ if (override === undefined || override.trim() === '')
101
+ continue;
102
+ // A pinned source silently hides every newer document conf publishes (a test machine kept a
103
+ // commit-pinned descriptor URL and never saw the next one, 2026-10-06): say so in the log.
104
+ warnOnce(`${kind.label} source is overridden by ${variable}=${override.trim()}; ${options.url} is not read.`);
105
+ return override.trim();
106
+ }
107
+ return options.url;
108
+ };
109
+ /** `JSON.parse` + shape validation; `null` for anything that fails either. */
110
+ const parse = (raw) => parseWithProblem(raw).document;
111
+ const parseWithProblem = (raw) => {
112
+ try {
113
+ return { document: kind.parse(JSON.parse(raw)), problem: null };
114
+ }
115
+ catch (error) {
116
+ return { document: null, problem: error instanceof Error ? error.message : String(error) };
117
+ }
118
+ };
119
+ /**
120
+ * `file://…` via `readFile`, `https://…` via `fetch`; on any failure or another scheme no text,
121
+ * and why, for the warning `latest()` writes when it falls back.
122
+ */
123
+ const readSource = async (url) => {
124
+ try {
125
+ if (url.startsWith('file://'))
126
+ return { raw: await options.readFile(fileURLToPath(url)) };
127
+ if (url.startsWith('https://')) {
128
+ const response = await options.fetch(url, timeoutMs);
129
+ if (!response.ok)
130
+ return { problem: `HTTP ${response.status}` };
131
+ return { raw: await response.text() };
132
+ }
133
+ return { problem: 'the source is neither file:// nor https://' };
134
+ }
135
+ catch (error) {
136
+ return { problem: error instanceof Error ? error.message : String(error) };
137
+ }
138
+ };
139
+ const cached = async (id) => {
140
+ try {
141
+ return parse(await fs.readFile(kind.cacheFile(id), 'utf8'));
142
+ }
143
+ catch {
144
+ return null;
145
+ }
146
+ };
147
+ /** The id a pointer file names: `undefined` when the file is absent, `null` when it is unreadable. */
148
+ const pointedId = async (file) => {
149
+ let text;
150
+ try {
151
+ text = await fs.readFile(file, 'utf8');
152
+ }
153
+ catch {
154
+ return undefined;
155
+ }
156
+ try {
157
+ const id = JSON.parse(text)[kind.idField];
158
+ return typeof id === 'string' ? id : null;
159
+ }
160
+ catch {
161
+ return null;
162
+ }
163
+ };
164
+ const latestCached = async () => {
165
+ const current = await pointedId(kind.latestFile);
166
+ if (current !== undefined)
167
+ return current === null ? null : await cached(current);
168
+ for (const legacy of kind.legacyLatestFiles ?? []) {
169
+ const id = await pointedId(legacy);
170
+ const document = typeof id === 'string' ? await cached(id) : null;
171
+ if (document !== null)
172
+ return document;
173
+ }
174
+ return null;
175
+ };
176
+ /** Cache the accepted document's exact bytes by its own id, and repoint `latestFile` at it. */
177
+ const accept = async (raw, document) => {
178
+ const id = kind.id(document);
179
+ await atomicWrite(fs, kind.cacheDir, kind.cacheFile(id), raw);
180
+ await atomicWrite(fs, kind.cacheDir, kind.latestFile, `${JSON.stringify({ [kind.idField]: id }, null, 2)}\n`);
181
+ };
182
+ return {
183
+ async latest() {
184
+ const url = sourceUrl();
185
+ const source = await readSource(url);
186
+ const raw = 'raw' in source ? source.raw : null;
187
+ const parsed = raw === null ? null : parseWithProblem(raw);
188
+ const fetched = parsed?.document ?? null;
189
+ // `raw !== null` always holds when `fetched` does; spelling it out is what lets `accept` cache
190
+ // the exact bytes received — the literal published document, not a re-serialization.
191
+ if (raw !== null &&
192
+ fetched !== null &&
193
+ meetsCoreVersion(kind.minimumCoreVersion(fetched), coreVersion)) {
194
+ await accept(raw, fetched).catch((error) => {
195
+ onWarn(`Could not cache ${kind.label.toLowerCase()} ${kind.id(fetched)}: ${error instanceof Error ? error.message : String(error)}`);
196
+ });
197
+ return { kind: 'fresh', document: fetched };
198
+ }
199
+ const previous = await latestCached();
200
+ // Falling back is never an error to the caller, but it must not be invisible either.
201
+ const why = 'problem' in source
202
+ ? `could not be read (${source.problem})`
203
+ : fetched === null
204
+ ? `is not a valid ${kind.label.toLowerCase()} (${parsed?.problem ?? 'unreadable'})`
205
+ : `is ${kind.id(fetched)}, which needs core ${kind.minimumCoreVersion(fetched)} (this is ${coreVersion})`;
206
+ warnOnce(`${kind.label} from ${url} ${why}; ${previous === null ? 'none is cached' : `using the cached ${kind.id(previous)}`}.`);
207
+ if (previous !== null)
208
+ return { kind: 'cached', document: previous };
209
+ // Parsed fine, but this build is too old for it, and nothing was ever accepted before.
210
+ if (fetched !== null)
211
+ return { kind: 'too-new', id: kind.id(fetched) };
212
+ return { kind: 'none' };
213
+ },
214
+ cached,
215
+ latestCached,
216
+ };
217
+ }
218
+ //# sourceMappingURL=cached-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cached-document.js","sourceRoot":"","sources":["../../../src/runtime/environment/cached-document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * One byte sequence per value, so two sides can agree on a hash — and the hashes the managed
3
+ * runtime makes decisions with: the fingerprint that decides whether a retried `begin` is the same
4
+ * request, and the plan digest the user's consent is bound to.
5
+ *
6
+ * This is deliberately not `settings`' `stableStringify`. That one fingerprints a settings object
7
+ * to answer "have I already imported this?", and it tolerates whatever `JSON.stringify` tolerates:
8
+ * `undefined` disappears, `NaN` becomes `null`, a `Date` becomes a string. Those are silent
9
+ * coercions, and a value that can be spelled two ways is a value two parties can disagree about
10
+ * while agreeing on the hash. Here a hash stands behind a privileged install the user approved, so
11
+ * anything that cannot be represented exactly is refused instead of coerced. Changing that older
12
+ * function was not an option either: its hashes are already on users' disks.
13
+ */
14
+ import type { BeginOperation, ManagedOperationTarget, ManagedSystemChange, Sha256Digest } from '../../contracts/index.js';
15
+ /**
16
+ * The canonical UTF-8 JSON of a value: object keys sorted recursively, array order kept, absent
17
+ * properties and explicit `undefined` treated alike, and anything JSON cannot hold refused.
18
+ */
19
+ export declare function canonicalJson(value: unknown): string;
20
+ /** `sha256:` + the hex digest of the canonical JSON. */
21
+ export declare function canonicalDigest(value: unknown): Sha256Digest;
22
+ /**
23
+ * What makes two `begin` requests the same request. The request id is the caller's idempotency key,
24
+ * not part of the meaning, and the approved plan is consent that a resume may legitimately change,
25
+ * so neither is hashed. Everything that decides what would be installed is.
26
+ */
27
+ export declare function beginFingerprint(input: BeginOperation): Sha256Digest;
28
+ /**
29
+ * What the host looked like when the plan was computed, as far as consent is concerned (spec
30
+ * "Хост изменился до согласия": free space, the set of cards, or what is installed changed between
31
+ * the probe and the consent). `gpu_ids` is the sorted set of GPU UUIDs. `disk_sufficient` is whether
32
+ * the free space in `DockerRootDir` covers what the image still needs, not the number: free space
33
+ * moves by kilobytes on its own every second, and a digest over any rounding of it would still flip
34
+ * at a boundary and refuse a consent given a moment earlier (review r1, item 3). Null when unknown.
35
+ * "What is installed" is already in `system_changes`.
36
+ */
37
+ export interface PlanHostFingerprint {
38
+ gpu_ids: string[];
39
+ disk_sufficient: boolean | null;
40
+ docker_root_dir: string | null;
41
+ }
42
+ /**
43
+ * The part of a requirement plan the user is consenting to. Whatever changes here invalidates an
44
+ * approval and sends the operation back to `awaiting-consent`: the target, the recipe, every system
45
+ * change (code, parameters and the text the user read), and the host facts in `host` — the GPU set
46
+ * and whether the free space where the image would land suffices (task 2.6, carry item 1). The registry's reported
47
+ * download size is left out: it is the descriptor's own estimate, pinned by `descriptor_id`.
48
+ */
49
+ export interface PlanFingerprint {
50
+ target: ManagedOperationTarget;
51
+ recipe_id: string;
52
+ recipe_digest: Sha256Digest;
53
+ /** A plan that adopts the host's existing engine changes nothing, and says so in the hash. */
54
+ adopts_existing_engine: boolean;
55
+ system_changes: ManagedSystemChange[];
56
+ requires_elevation: boolean;
57
+ may_require_relogin: boolean;
58
+ may_require_reboot: boolean;
59
+ /**
60
+ * The runtime this plan would install, identified by the platform image it pins. Descriptors no
61
+ * longer carry a separate entrypoint digest (design D1/D12 reshape to
62
+ * `atomic-chat-conf/runtimes/schema.json`: `image` is a per-platform map, and there is nothing
63
+ * else in a descriptor that names what actually runs) — the image digest for the host's own
64
+ * platform is the whole identity.
65
+ */
66
+ descriptor: {
67
+ descriptor_id: string;
68
+ image_digest: Sha256Digest;
69
+ } | null;
70
+ /**
71
+ * The environment manifest the host was judged against (change `extract-environment-manifest`,
72
+ * D4): which distributions the install recipe was qualified for. A newly published manifest is a
73
+ * new plan, approved again; null when no manifest was available.
74
+ */
75
+ environment_manifest_id: string | null;
76
+ host: PlanHostFingerprint | null;
77
+ }
78
+ export declare function planDigest(plan: PlanFingerprint): Sha256Digest;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * One byte sequence per value, so two sides can agree on a hash — and the hashes the managed
3
+ * runtime makes decisions with: the fingerprint that decides whether a retried `begin` is the same
4
+ * request, and the plan digest the user's consent is bound to.
5
+ *
6
+ * This is deliberately not `settings`' `stableStringify`. That one fingerprints a settings object
7
+ * to answer "have I already imported this?", and it tolerates whatever `JSON.stringify` tolerates:
8
+ * `undefined` disappears, `NaN` becomes `null`, a `Date` becomes a string. Those are silent
9
+ * coercions, and a value that can be spelled two ways is a value two parties can disagree about
10
+ * while agreeing on the hash. Here a hash stands behind a privileged install the user approved, so
11
+ * anything that cannot be represented exactly is refused instead of coerced. Changing that older
12
+ * function was not an option either: its hashes are already on users' disks.
13
+ */
14
+ import { createHash } from 'node:crypto';
15
+ import { AtomicCoreError } from '../../contracts/index.js';
16
+ const invalid = (why) => {
17
+ throw new AtomicCoreError('MANAGED_METADATA_INVALID', `Cannot canonicalise this value: ${why}`);
18
+ };
19
+ const isPlain = (value) => {
20
+ const proto = Object.getPrototypeOf(value);
21
+ return proto === Object.prototype || proto === null;
22
+ };
23
+ const write = (value, path) => {
24
+ if (value === null)
25
+ return 'null';
26
+ switch (typeof value) {
27
+ case 'boolean':
28
+ return value ? 'true' : 'false';
29
+ case 'string':
30
+ return JSON.stringify(value);
31
+ case 'number':
32
+ // `NaN` and the infinities have no JSON spelling; `JSON.stringify` writes `null` for them,
33
+ // which would make two different plans hash the same.
34
+ return Number.isFinite(value) ? JSON.stringify(value) : invalid(`${path} is ${String(value)}`);
35
+ case 'undefined':
36
+ return invalid(`${path} is undefined`);
37
+ case 'bigint':
38
+ return invalid(`${path} is a bigint`);
39
+ case 'function':
40
+ case 'symbol':
41
+ return invalid(`${path} is a ${typeof value}`);
42
+ }
43
+ const object = value;
44
+ if (Array.isArray(object)) {
45
+ // Order is meaning here: a list of system changes in another order is another plan.
46
+ return `[${object.map((item, index) => write(item, `${path}[${index}]`)).join(',')}]`;
47
+ }
48
+ // A `Date`, `Map` or class instance would walk as `{}` or as its private fields. Neither is what
49
+ // the caller meant, and both are silent.
50
+ if (!isPlain(object))
51
+ return invalid(`${path} is not a plain object`);
52
+ const entries = Object.entries(object)
53
+ .filter(([, v]) => v !== undefined)
54
+ .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
55
+ .map(([key, v]) => `${JSON.stringify(key)}:${write(v, `${path}.${key}`)}`);
56
+ return `{${entries.join(',')}}`;
57
+ };
58
+ /**
59
+ * The canonical UTF-8 JSON of a value: object keys sorted recursively, array order kept, absent
60
+ * properties and explicit `undefined` treated alike, and anything JSON cannot hold refused.
61
+ */
62
+ export function canonicalJson(value) {
63
+ return write(value, '$');
64
+ }
65
+ /** `sha256:` + the hex digest of the canonical JSON. */
66
+ export function canonicalDigest(value) {
67
+ const hex = createHash('sha256').update(canonicalJson(value), 'utf8').digest('hex');
68
+ return `sha256:${hex}`;
69
+ }
70
+ /**
71
+ * What makes two `begin` requests the same request. The request id is the caller's idempotency key,
72
+ * not part of the meaning, and the approved plan is consent that a resume may legitimately change,
73
+ * so neither is hashed. Everything that decides what would be installed is.
74
+ */
75
+ export function beginFingerprint(input) {
76
+ return canonicalDigest({
77
+ target: input.target,
78
+ kind: input.kind,
79
+ descriptor_id: input.descriptor_id ?? null,
80
+ retain_models: input.retain_models ?? false,
81
+ });
82
+ }
83
+ export function planDigest(plan) {
84
+ return canonicalDigest(plan);
85
+ }
86
+ //# sourceMappingURL=canonical-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../../src/runtime/environment/canonical-json.ts"],"names":[],"mappings":"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"}