@atomic-chat/core 0.13.2 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/README.md +1 -1
  2. package/dist/backend/advisor/advisor.d.ts +8 -7
  3. package/dist/backend/advisor/advisor.js +17 -25
  4. package/dist/backend/advisor/advisor.js.map +1 -1
  5. package/dist/backend/catalog/index.d.ts +4 -2
  6. package/dist/backend/catalog/index.js +4 -2
  7. package/dist/backend/catalog/index.js.map +1 -1
  8. package/dist/backend/catalog/manifest.d.ts +5 -51
  9. package/dist/backend/catalog/manifest.js +5 -93
  10. package/dist/backend/catalog/manifest.js.map +1 -1
  11. package/dist/backend/catalog/upstream-releases-baseline.d.ts +2 -0
  12. package/dist/backend/catalog/upstream-releases-baseline.js +12 -0
  13. package/dist/backend/catalog/upstream-releases-baseline.js.map +1 -0
  14. package/dist/backend/catalog/upstream-releases-baseline.json +101 -0
  15. package/dist/backend/catalog/upstream-releases-catalog.d.ts +54 -0
  16. package/dist/backend/catalog/upstream-releases-catalog.js +148 -0
  17. package/dist/backend/catalog/upstream-releases-catalog.js.map +1 -0
  18. package/dist/backend/catalog/upstream-releases.d.ts +75 -0
  19. package/dist/backend/catalog/upstream-releases.js +155 -0
  20. package/dist/backend/catalog/upstream-releases.js.map +1 -0
  21. package/dist/backend/install/service.d.ts +7 -4
  22. package/dist/backend/install/service.js +4 -4
  23. package/dist/backend/install/service.js.map +1 -1
  24. package/dist/cli/commands/serve.js +10 -28
  25. package/dist/cli/commands/serve.js.map +1 -1
  26. package/dist/cli/main.d.ts +1 -1
  27. package/dist/cli/main.js +0 -1
  28. package/dist/cli/main.js.map +1 -1
  29. package/dist/client/control-client.d.ts +7 -19
  30. package/dist/client/control-client.js +9 -29
  31. package/dist/client/control-client.js.map +1 -1
  32. package/dist/cloud/registry.d.ts +14 -1
  33. package/dist/cloud/registry.js +73 -2
  34. package/dist/cloud/registry.js.map +1 -1
  35. package/dist/config/paths.d.ts +4 -3
  36. package/dist/config/paths.js +15 -14
  37. package/dist/config/paths.js.map +1 -1
  38. package/dist/contracts/diffusion.d.ts +45 -18
  39. package/dist/contracts/diffusion.js +1 -1
  40. package/dist/contracts/diffusion.js.map +1 -1
  41. package/dist/contracts/engines.d.ts +1 -1
  42. package/dist/contracts/engines.js +2 -0
  43. package/dist/contracts/engines.js.map +1 -1
  44. package/dist/contracts/errors.d.ts +1 -3
  45. package/dist/contracts/errors.js +16 -0
  46. package/dist/contracts/errors.js.map +1 -1
  47. package/dist/contracts/events.d.ts +11 -6
  48. package/dist/contracts/index.d.ts +1 -1
  49. package/dist/contracts/index.js +1 -1
  50. package/dist/contracts/index.js.map +1 -1
  51. package/dist/contracts/media.d.ts +186 -0
  52. package/dist/contracts/media.js +55 -0
  53. package/dist/contracts/media.js.map +1 -0
  54. package/dist/contracts/session.d.ts +10 -1
  55. package/dist/contracts/session.js +10 -0
  56. package/dist/contracts/session.js.map +1 -1
  57. package/dist/contracts/settings.d.ts +36 -1
  58. package/dist/contracts/settings.js.map +1 -1
  59. package/dist/core/atomic-core.d.ts +7 -5
  60. package/dist/core/atomic-core.js +1 -0
  61. package/dist/core/atomic-core.js.map +1 -1
  62. package/dist/core/create.js +48 -58
  63. package/dist/core/create.js.map +1 -1
  64. package/dist/core/managed-engines.js +2 -0
  65. package/dist/core/managed-engines.js.map +1 -1
  66. package/dist/core/prism.d.ts +23 -6
  67. package/dist/core/prism.js +45 -0
  68. package/dist/core/prism.js.map +1 -1
  69. package/dist/core/public-server.js +3 -2
  70. package/dist/core/public-server.js.map +1 -1
  71. package/dist/core/types.d.ts +11 -0
  72. package/dist/core/types.js.map +1 -1
  73. package/dist/decision/process.d.ts +4 -0
  74. package/dist/decision/process.js +10 -1
  75. package/dist/decision/process.js.map +1 -1
  76. package/dist/diffusion/args.d.ts +3 -2
  77. package/dist/diffusion/args.js +21 -4
  78. package/dist/diffusion/args.js.map +1 -1
  79. package/dist/diffusion/compat.d.ts +1 -1
  80. package/dist/diffusion/compat.js +6 -2
  81. package/dist/diffusion/compat.js.map +1 -1
  82. package/dist/diffusion/gallery.d.ts +24 -3
  83. package/dist/diffusion/gallery.js +151 -21
  84. package/dist/diffusion/gallery.js.map +1 -1
  85. package/dist/diffusion/index.d.ts +3 -0
  86. package/dist/diffusion/index.js +3 -0
  87. package/dist/diffusion/index.js.map +1 -1
  88. package/dist/diffusion/jobs.d.ts +6 -1
  89. package/dist/diffusion/jobs.js +10 -1
  90. package/dist/diffusion/jobs.js.map +1 -1
  91. package/dist/diffusion/media-header.d.ts +22 -0
  92. package/dist/diffusion/media-header.js +149 -0
  93. package/dist/diffusion/media-header.js.map +1 -0
  94. package/dist/diffusion/parse.d.ts +3 -1
  95. package/dist/diffusion/parse.js +36 -0
  96. package/dist/diffusion/parse.js.map +1 -1
  97. package/dist/diffusion/recipe.d.ts +10 -1
  98. package/dist/diffusion/recipe.js +85 -21
  99. package/dist/diffusion/recipe.js.map +1 -1
  100. package/dist/diffusion/remote-job.d.ts +76 -0
  101. package/dist/diffusion/remote-job.js +643 -0
  102. package/dist/diffusion/remote-job.js.map +1 -0
  103. package/dist/diffusion/remote-store.d.ts +38 -0
  104. package/dist/diffusion/remote-store.js +91 -0
  105. package/dist/diffusion/remote-store.js.map +1 -0
  106. package/dist/diffusion/service.d.ts +9 -1
  107. package/dist/diffusion/service.js +49 -9
  108. package/dist/diffusion/service.js.map +1 -1
  109. package/dist/diffusion/state.d.ts +13 -1
  110. package/dist/diffusion/state.js +8 -0
  111. package/dist/diffusion/state.js.map +1 -1
  112. package/dist/diffusion/tracker.d.ts +6 -0
  113. package/dist/diffusion/tracker.js +11 -0
  114. package/dist/diffusion/tracker.js.map +1 -1
  115. package/dist/diffusion/validate.js +2 -2
  116. package/dist/diffusion/validate.js.map +1 -1
  117. package/dist/diffusion/video-gallery.d.ts +11 -4
  118. package/dist/diffusion/video-gallery.js +62 -25
  119. package/dist/diffusion/video-gallery.js.map +1 -1
  120. package/dist/diffusion/video-history.js +4 -1
  121. package/dist/diffusion/video-history.js.map +1 -1
  122. package/dist/diffusion/video-recipe.js +58 -25
  123. package/dist/diffusion/video-recipe.js.map +1 -1
  124. package/dist/diffusion/wiring.d.ts +3 -0
  125. package/dist/diffusion/wiring.js +1 -0
  126. package/dist/diffusion/wiring.js.map +1 -1
  127. package/dist/diffusion/workflow.d.ts +8 -2
  128. package/dist/diffusion/workflow.js +13 -5
  129. package/dist/diffusion/workflow.js.map +1 -1
  130. package/dist/downloads/downloader.d.ts +6 -1
  131. package/dist/downloads/downloader.js +12 -1
  132. package/dist/downloads/downloader.js.map +1 -1
  133. package/dist/embedding/process.d.ts +4 -0
  134. package/dist/embedding/process.js +10 -1
  135. package/dist/embedding/process.js.map +1 -1
  136. package/dist/media/adapters/a1111.d.ts +32 -0
  137. package/dist/media/adapters/a1111.js +207 -0
  138. package/dist/media/adapters/a1111.js.map +1 -0
  139. package/dist/media/adapters/aimlapi-videos.d.ts +34 -0
  140. package/dist/media/adapters/aimlapi-videos.js +172 -0
  141. package/dist/media/adapters/aimlapi-videos.js.map +1 -0
  142. package/dist/media/adapters/dashscope-image.d.ts +26 -0
  143. package/dist/media/adapters/dashscope-image.js +160 -0
  144. package/dist/media/adapters/dashscope-image.js.map +1 -0
  145. package/dist/media/adapters/dashscope-video.d.ts +47 -0
  146. package/dist/media/adapters/dashscope-video.js +251 -0
  147. package/dist/media/adapters/dashscope-video.js.map +1 -0
  148. package/dist/media/adapters/gemini-image.d.ts +27 -0
  149. package/dist/media/adapters/gemini-image.js +181 -0
  150. package/dist/media/adapters/gemini-image.js.map +1 -0
  151. package/dist/media/adapters/gemini-veo.d.ts +39 -0
  152. package/dist/media/adapters/gemini-veo.js +196 -0
  153. package/dist/media/adapters/gemini-veo.js.map +1 -0
  154. package/dist/media/adapters/hf-images.d.ts +85 -0
  155. package/dist/media/adapters/hf-images.js +439 -0
  156. package/dist/media/adapters/hf-images.js.map +1 -0
  157. package/dist/media/adapters/hf-videos.d.ts +44 -0
  158. package/dist/media/adapters/hf-videos.js +265 -0
  159. package/dist/media/adapters/hf-videos.js.map +1 -0
  160. package/dist/media/adapters/minimax-image.d.ts +26 -0
  161. package/dist/media/adapters/minimax-image.js +111 -0
  162. package/dist/media/adapters/minimax-image.js.map +1 -0
  163. package/dist/media/adapters/minimax-video-v2.d.ts +34 -0
  164. package/dist/media/adapters/minimax-video-v2.js +191 -0
  165. package/dist/media/adapters/minimax-video-v2.js.map +1 -0
  166. package/dist/media/adapters/minimax-video.d.ts +28 -0
  167. package/dist/media/adapters/minimax-video.js +155 -0
  168. package/dist/media/adapters/minimax-video.js.map +1 -0
  169. package/dist/media/adapters/mistral-agent-image.d.ts +33 -0
  170. package/dist/media/adapters/mistral-agent-image.js +108 -0
  171. package/dist/media/adapters/mistral-agent-image.js.map +1 -0
  172. package/dist/media/adapters/nvidia-genai.d.ts +28 -0
  173. package/dist/media/adapters/nvidia-genai.js +182 -0
  174. package/dist/media/adapters/nvidia-genai.js.map +1 -0
  175. package/dist/media/adapters/openai-images.d.ts +23 -0
  176. package/dist/media/adapters/openai-images.js +164 -0
  177. package/dist/media/adapters/openai-images.js.map +1 -0
  178. package/dist/media/adapters/openai-videos.d.ts +34 -0
  179. package/dist/media/adapters/openai-videos.js +175 -0
  180. package/dist/media/adapters/openai-videos.js.map +1 -0
  181. package/dist/media/adapters/openrouter-images.d.ts +25 -0
  182. package/dist/media/adapters/openrouter-images.js +161 -0
  183. package/dist/media/adapters/openrouter-images.js.map +1 -0
  184. package/dist/media/adapters/openrouter-videos.d.ts +43 -0
  185. package/dist/media/adapters/openrouter-videos.js +208 -0
  186. package/dist/media/adapters/openrouter-videos.js.map +1 -0
  187. package/dist/media/adapters/registry.d.ts +7 -0
  188. package/dist/media/adapters/registry.js +45 -0
  189. package/dist/media/adapters/registry.js.map +1 -0
  190. package/dist/media/adapters/types.d.ts +133 -0
  191. package/dist/media/adapters/types.js +15 -0
  192. package/dist/media/adapters/types.js.map +1 -0
  193. package/dist/media/adapters/xai-images.d.ts +19 -0
  194. package/dist/media/adapters/xai-images.js +83 -0
  195. package/dist/media/adapters/xai-images.js.map +1 -0
  196. package/dist/media/adapters/xai-videos.d.ts +29 -0
  197. package/dist/media/adapters/xai-videos.js +148 -0
  198. package/dist/media/adapters/xai-videos.js.map +1 -0
  199. package/dist/media/catalog-baseline.d.ts +2 -0
  200. package/dist/media/catalog-baseline.js +10 -0
  201. package/dist/media/catalog-baseline.js.map +1 -0
  202. package/dist/media/catalog-baseline.json +1819 -0
  203. package/dist/media/catalog-service.d.ts +42 -0
  204. package/dist/media/catalog-service.js +111 -0
  205. package/dist/media/catalog-service.js.map +1 -0
  206. package/dist/media/catalog.d.ts +50 -0
  207. package/dist/media/catalog.js +315 -0
  208. package/dist/media/catalog.js.map +1 -0
  209. package/dist/media/http.d.ts +125 -0
  210. package/dist/media/http.js +308 -0
  211. package/dist/media/http.js.map +1 -0
  212. package/dist/media/index.d.ts +14 -0
  213. package/dist/media/index.js +15 -0
  214. package/dist/media/index.js.map +1 -0
  215. package/dist/media/mask.d.ts +12 -0
  216. package/dist/media/mask.js +57 -0
  217. package/dist/media/mask.js.map +1 -0
  218. package/dist/media/service.d.ts +42 -0
  219. package/dist/media/service.js +144 -0
  220. package/dist/media/service.js.map +1 -0
  221. package/dist/models/compatibility/inspect.d.ts +11 -2
  222. package/dist/models/compatibility/inspect.js +44 -13
  223. package/dist/models/compatibility/inspect.js.map +1 -1
  224. package/dist/models/compatibility/service.d.ts +3 -0
  225. package/dist/models/compatibility/service.js +1 -0
  226. package/dist/models/compatibility/service.js.map +1 -1
  227. package/dist/models/gguf/tensors.d.ts +1 -0
  228. package/dist/models/gguf/tensors.js +4 -1
  229. package/dist/models/gguf/tensors.js.map +1 -1
  230. package/dist/models/hf.d.ts +3 -16
  231. package/dist/models/hf.js +4 -42
  232. package/dist/models/hf.js.map +1 -1
  233. package/dist/router/resolve.d.ts +15 -4
  234. package/dist/router/resolve.js +25 -3
  235. package/dist/router/resolve.js.map +1 -1
  236. package/dist/runtime/environment/linux-provisioner.js +7 -67
  237. package/dist/runtime/environment/linux-provisioner.js.map +1 -1
  238. package/dist/runtime/environment/runtime-removal-plan.d.ts +19 -0
  239. package/dist/runtime/environment/runtime-removal-plan.js +74 -0
  240. package/dist/runtime/environment/runtime-removal-plan.js.map +1 -0
  241. package/dist/runtime/environment/windows-provisioner.js +20 -4
  242. package/dist/runtime/environment/windows-provisioner.js.map +1 -1
  243. package/dist/runtime/managed-engines/spec.d.ts +2 -2
  244. package/dist/runtime/managed-engines/spec.js +6 -0
  245. package/dist/runtime/managed-engines/spec.js.map +1 -1
  246. package/dist/runtime/managed-models/compatibility.d.ts +10 -0
  247. package/dist/runtime/managed-models/compatibility.js +18 -0
  248. package/dist/runtime/managed-models/compatibility.js.map +1 -1
  249. package/dist/runtime/managed-text/adapter.d.ts +17 -0
  250. package/dist/runtime/managed-text/adapter.js.map +1 -1
  251. package/dist/runtime/managed-text/lifecycle.d.ts +8 -0
  252. package/dist/runtime/managed-text/lifecycle.js +38 -1
  253. package/dist/runtime/managed-text/lifecycle.js.map +1 -1
  254. package/dist/runtime/managed-text/readiness.d.ts +21 -1
  255. package/dist/runtime/managed-text/readiness.js +64 -0
  256. package/dist/runtime/managed-text/readiness.js.map +1 -1
  257. package/dist/runtime/managed-text/request-rules.d.ts +9 -7
  258. package/dist/runtime/managed-text/request-rules.js +58 -2
  259. package/dist/runtime/managed-text/request-rules.js.map +1 -1
  260. package/dist/runtime/managed-text/setting-values.d.ts +9 -0
  261. package/dist/runtime/managed-text/setting-values.js +44 -0
  262. package/dist/runtime/managed-text/setting-values.js.map +1 -0
  263. package/dist/runtime/sglang/adapter.d.ts +50 -0
  264. package/dist/runtime/sglang/adapter.js +393 -0
  265. package/dist/runtime/sglang/adapter.js.map +1 -0
  266. package/dist/runtime/sglang/engine.d.ts +16 -0
  267. package/dist/runtime/sglang/engine.js +38 -0
  268. package/dist/runtime/sglang/engine.js.map +1 -0
  269. package/dist/runtime/sglang/index.d.ts +11 -0
  270. package/dist/runtime/sglang/index.js +12 -0
  271. package/dist/runtime/sglang/index.js.map +1 -0
  272. package/dist/runtime/sglang/memory.d.ts +64 -0
  273. package/dist/runtime/sglang/memory.js +90 -0
  274. package/dist/runtime/sglang/memory.js.map +1 -0
  275. package/dist/runtime/sglang/settings.d.ts +49 -0
  276. package/dist/runtime/sglang/settings.js +118 -0
  277. package/dist/runtime/sglang/settings.js.map +1 -0
  278. package/dist/runtime/shared/external-sessions.js +1 -0
  279. package/dist/runtime/shared/external-sessions.js.map +1 -1
  280. package/dist/runtime/shared/ports.d.ts +10 -0
  281. package/dist/runtime/shared/ports.js +30 -0
  282. package/dist/runtime/shared/ports.js.map +1 -1
  283. package/dist/runtime/tensorrt-llm/adapter.d.ts +1 -4
  284. package/dist/runtime/tensorrt-llm/adapter.js +28 -11
  285. package/dist/runtime/tensorrt-llm/adapter.js.map +1 -1
  286. package/dist/runtime/tensorrt-llm/check.js +1 -0
  287. package/dist/runtime/tensorrt-llm/check.js.map +1 -1
  288. package/dist/runtime/tensorrt-llm/compatibility.d.ts +30 -6
  289. package/dist/runtime/tensorrt-llm/compatibility.js +41 -9
  290. package/dist/runtime/tensorrt-llm/compatibility.js.map +1 -1
  291. package/dist/runtime/tensorrt-llm/cuda-graphs.d.ts +32 -0
  292. package/dist/runtime/tensorrt-llm/cuda-graphs.js +33 -0
  293. package/dist/runtime/tensorrt-llm/cuda-graphs.js.map +1 -0
  294. package/dist/runtime/tensorrt-llm/engine.js +11 -5
  295. package/dist/runtime/tensorrt-llm/engine.js.map +1 -1
  296. package/dist/runtime/tensorrt-llm/kv-cache.d.ts +16 -0
  297. package/dist/runtime/tensorrt-llm/kv-cache.js +21 -1
  298. package/dist/runtime/tensorrt-llm/kv-cache.js.map +1 -1
  299. package/dist/runtime/vllm/adapter.js +2 -47
  300. package/dist/runtime/vllm/adapter.js.map +1 -1
  301. package/dist/runtime/vllm/memory.js +3 -16
  302. package/dist/runtime/vllm/memory.js.map +1 -1
  303. package/dist/runtime/vllm/settings.d.ts +7 -0
  304. package/dist/runtime/vllm/settings.js +2 -30
  305. package/dist/runtime/vllm/settings.js.map +1 -1
  306. package/dist/server/control/router.js +5 -4
  307. package/dist/server/control/router.js.map +1 -1
  308. package/dist/server/control/routes/media.d.ts +9 -0
  309. package/dist/server/control/routes/media.js +24 -0
  310. package/dist/server/control/routes/media.js.map +1 -0
  311. package/dist/server/control/routes/model-compatibility.d.ts +9 -0
  312. package/dist/server/control/routes/model-compatibility.js +31 -0
  313. package/dist/server/control/routes/model-compatibility.js.map +1 -0
  314. package/dist/server/control/types.d.ts +18 -20
  315. package/dist/server/http.js +15 -2
  316. package/dist/server/http.js.map +1 -1
  317. package/dist/server/public/gates.d.ts +6 -1
  318. package/dist/server/public/gates.js +7 -3
  319. package/dist/server/public/gates.js.map +1 -1
  320. package/dist/server/public/images-params.js +18 -1
  321. package/dist/server/public/images-params.js.map +1 -1
  322. package/dist/server/public/images.d.ts +11 -2
  323. package/dist/server/public/images.js +73 -9
  324. package/dist/server/public/images.js.map +1 -1
  325. package/dist/server/public/index.d.ts +1 -0
  326. package/dist/server/public/index.js +16 -7
  327. package/dist/server/public/index.js.map +1 -1
  328. package/dist/server/public/listing.js +1 -0
  329. package/dist/server/public/listing.js.map +1 -1
  330. package/dist/server/public/remote-media.d.ts +51 -0
  331. package/dist/server/public/remote-media.js +225 -0
  332. package/dist/server/public/remote-media.js.map +1 -0
  333. package/dist/server/public/responses.js +4 -2
  334. package/dist/server/public/responses.js.map +1 -1
  335. package/dist/server/public/static-assets.generated.js +1 -1
  336. package/dist/server/public/static-assets.generated.js.map +1 -1
  337. package/dist/server/public/trace.js +2 -0
  338. package/dist/server/public/trace.js.map +1 -1
  339. package/dist/server/public/types.d.ts +12 -1
  340. package/dist/server/public/videos-params.js +13 -3
  341. package/dist/server/public/videos-params.js.map +1 -1
  342. package/dist/server/public/videos.d.ts +1 -0
  343. package/dist/server/public/videos.js +21 -3
  344. package/dist/server/public/videos.js.map +1 -1
  345. package/dist/settings/schema/llamacpp-upstream.json +9 -0
  346. package/dist/settings/schema/sglang.json +251 -0
  347. package/dist/settings/schema.js +27 -1
  348. package/dist/settings/schema.js.map +1 -1
  349. package/dist/version.d.ts +1 -1
  350. package/dist/version.js +1 -1
  351. package/package.json +2 -6
  352. package/src/settings/schema/llamacpp-upstream.json +9 -0
  353. package/src/settings/schema/sglang.json +251 -0
  354. package/dist/backend/catalog/bundled-manifest-baseline.d.ts +0 -2
  355. package/dist/backend/catalog/bundled-manifest-baseline.js +0 -65
  356. package/dist/backend/catalog/bundled-manifest-baseline.js.map +0 -1
  357. package/dist/contracts/model-setup.d.ts +0 -115
  358. package/dist/contracts/model-setup.js +0 -33
  359. package/dist/contracts/model-setup.js.map +0 -1
  360. package/dist/core/model-setup/index.d.ts +0 -4
  361. package/dist/core/model-setup/index.js +0 -5
  362. package/dist/core/model-setup/index.js.map +0 -1
  363. package/dist/core/model-setup/plan.d.ts +0 -56
  364. package/dist/core/model-setup/plan.js +0 -158
  365. package/dist/core/model-setup/plan.js.map +0 -1
  366. package/dist/core/model-setup/service.d.ts +0 -92
  367. package/dist/core/model-setup/service.js +0 -329
  368. package/dist/core/model-setup/service.js.map +0 -1
  369. package/dist/core/model-setup/store.d.ts +0 -29
  370. package/dist/core/model-setup/store.js +0 -116
  371. package/dist/core/model-setup/store.js.map +0 -1
  372. package/dist/core/model-setup/wiring.d.ts +0 -59
  373. package/dist/core/model-setup/wiring.js +0 -132
  374. package/dist/core/model-setup/wiring.js.map +0 -1
  375. package/dist/server/control/routes/model-setups.d.ts +0 -11
  376. package/dist/server/control/routes/model-setups.js +0 -55
  377. package/dist/server/control/routes/model-setups.js.map +0 -1
@@ -1,116 +0,0 @@
1
- /**
2
- * `<data>/atomic-core/prism-setups/<setup id>.json`: one record per model setup. One core owns a
3
- * data folder at a time (the instance lock), so the store serialises writers in memory rather than
4
- * with a lock file. A write never overwrites the only good copy: the previous record is kept as
5
- * `.bak` and read back when the newest is torn. `commit` applies only against the revision it was
6
- * computed from, so a late writer cannot step on a newer state.
7
- */
8
- import { mkdir, readFile, readdir, rename, rm, writeFile } from 'node:fs/promises';
9
- import { join } from 'node:path';
10
- import { AtomicCoreError, MODEL_SETUP_STAGES } from '../../contracts/index.js';
11
- const SAFE_ID = /^[A-Za-z0-9_-]{1,128}$/;
12
- /** Enough of a shape check to tell a record from a truncated write or a foreign file. */
13
- export function parseModelSetupRecord(text) {
14
- try {
15
- const raw = JSON.parse(text);
16
- if (typeof raw?.setup_id !== 'string' || !SAFE_ID.test(raw.setup_id))
17
- return null;
18
- if (typeof raw.request_id !== 'string')
19
- return null;
20
- if (!Number.isSafeInteger(raw.revision) || raw.revision < 0)
21
- return null;
22
- if (!MODEL_SETUP_STAGES.includes(raw.stage))
23
- return null;
24
- if (typeof raw.plan?.digest !== 'string' || typeof raw.plan.model_id !== 'string')
25
- return null;
26
- return raw;
27
- }
28
- catch {
29
- return null;
30
- }
31
- }
32
- export class ModelSetupStore {
33
- dir;
34
- tail = Promise.resolve();
35
- constructor(dir) {
36
- this.dir = dir;
37
- }
38
- /** Every record that can be read, oldest first. */
39
- async list() {
40
- const names = await readdir(this.dir).catch((err) => {
41
- if (err.code === 'ENOENT')
42
- return [];
43
- throw err;
44
- });
45
- const ids = new Set(names
46
- .filter((n) => n.endsWith('.json') || n.endsWith('.json.bak'))
47
- .map((n) => n.replace(/\.json(\.bak)?$/, '')));
48
- const records = [];
49
- for (const id of ids) {
50
- const record = SAFE_ID.test(id) ? await this.read(id) : null;
51
- if (record)
52
- records.push(record);
53
- }
54
- return records.sort((a, b) => a.created_at - b.created_at || a.setup_id.localeCompare(b.setup_id));
55
- }
56
- /** The record, its `.bak` when the newest write was torn, or `null`. */
57
- async read(setupId) {
58
- if (!SAFE_ID.test(setupId))
59
- return null;
60
- const path = this.path(setupId);
61
- for (const candidate of [path, `${path}.bak`]) {
62
- const text = await readFile(candidate, 'utf8').catch(() => undefined);
63
- const record = text === undefined ? null : parseModelSetupRecord(text);
64
- if (record)
65
- return record;
66
- }
67
- return null;
68
- }
69
- /** Write a new record; fails when one with that id exists. */
70
- async create(record) {
71
- return this.serialise(async () => {
72
- if (await this.read(record.setup_id)) {
73
- throw new AtomicCoreError('INVALID_ARGUMENT', 'A model setup with that id already exists.', record.setup_id);
74
- }
75
- await this.write(record);
76
- return record;
77
- });
78
- }
79
- /**
80
- * Replace the record when it is still at `expectedRevision`; the stored one gets
81
- * `expectedRevision + 1`. Returns `null` without writing when another writer moved it first.
82
- */
83
- async commit(next, expectedRevision) {
84
- return this.serialise(async () => {
85
- const current = await this.read(next.setup_id);
86
- if (!current || current.revision !== expectedRevision)
87
- return null;
88
- const stored = { ...next, revision: expectedRevision + 1 };
89
- await this.write(stored);
90
- return stored;
91
- });
92
- }
93
- path(setupId) {
94
- return join(this.dir, `${setupId}.json`);
95
- }
96
- async write(record) {
97
- await mkdir(this.dir, { recursive: true });
98
- const path = this.path(record.setup_id);
99
- const temporary = `${path}.tmp-${process.pid}`;
100
- await writeFile(temporary, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
101
- await rename(path, `${path}.bak`).catch((err) => {
102
- if (err.code !== 'ENOENT')
103
- throw err;
104
- });
105
- await rename(temporary, path).catch(async (err) => {
106
- await rm(temporary, { force: true }).catch(() => { });
107
- throw err;
108
- });
109
- }
110
- serialise(operation) {
111
- const result = this.tail.then(operation, operation);
112
- this.tail = result.catch(() => { });
113
- return result;
114
- }
115
- }
116
- //# sourceMappingURL=store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/core/model-setup/store.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- /**
2
- * Composition of the model setup for `create.ts`: the plan's facts (the verdict, the conf rule, the
3
- * Hub's file facts, the PrismML manifest, this machine, the packs on disk, free space) gathered from
4
- * the core's services, and the runner's I/O (engine install, downloads, header check, `model.yml`).
5
- */
6
- import type { DataLayout } from '../../config/index.js';
7
- import type { CoreEvents, LocalProviderId, ModelCompatibilityRequest, ModelCompatibilityResponse, ModelSetupPlan, ModelSetupPlanRequest, ProxyConfig } from '../../contracts/index.js';
8
- import type { PrismCatalogService, PrismOfferOptions, RocmHostProbe } from '../../backend/index.js';
9
- import type { DownloadItem } from '../../downloads/index.js';
10
- import type { HardwareFacts } from '../../hardware/index.js';
11
- import type { ModelCompatibilityService, ModelYmlInput } from '../../models/index.js';
12
- import type { PrismPackRef } from './plan.js';
13
- import { ModelSetupService } from './service.js';
14
- export interface ModelSetupWiringDeps {
15
- layout: DataLayout;
16
- compatibility: Pick<ModelCompatibilityService, 'check' | 'ruleFor'>;
17
- prismCatalog: Pick<PrismCatalogService, 'catalog'>;
18
- hardware: () => Promise<HardwareFacts>;
19
- offer: () => PrismOfferOptions;
20
- currentPack: () => Promise<PrismPackRef | null>;
21
- installEngine: (version: string, backend: string, options: {
22
- taskId: string;
23
- proxy: ProxyConfig | null;
24
- }) => Promise<unknown>;
25
- selectEngine: (versionBackend: string) => Promise<unknown>;
26
- downloader: {
27
- download: (taskId: string, items: DownloadItem[], options: {
28
- headers?: Record<string, string>;
29
- resume?: boolean;
30
- }) => Promise<unknown>;
31
- cancel: (taskId: string) => unknown;
32
- };
33
- register: (provider: LocalProviderId, modelId: string, yml: ModelYmlInput) => Promise<unknown>;
34
- /** A registered model's file: absolute path and the sha256 its `model.yml` records. */
35
- modelFile: (provider: LocalProviderId, modelId: string) => Promise<{
36
- modelPath: string;
37
- sha256?: string;
38
- }>;
39
- emit: <K extends keyof CoreEvents>(name: K, payload: CoreEvents[K]) => void;
40
- freeBytes: () => Promise<number | null>;
41
- /** The fetch for one request's proxy policy. */
42
- fetchFor: (proxy?: ProxyConfig | null) => typeof fetch;
43
- newId: () => string;
44
- /** Test hook `ATOMIC_HF_ENDPOINT`: where model files are downloaded from. */
45
- hfEndpoint?: string;
46
- env?: NodeJS.ProcessEnv;
47
- platform?: NodeJS.Platform;
48
- rocmProbe?: () => Promise<RocmHostProbe>;
49
- installedPacks?: () => Promise<PrismPackRef[]>;
50
- log?: (level: 'info' | 'warn', message: string) => void;
51
- }
52
- /** The plan for one request, from what the core knows now. */
53
- export declare function planFor(deps: ModelSetupWiringDeps, request: ModelSetupPlanRequest): Promise<ModelSetupPlan>;
54
- /**
55
- * `POST /models/compatibility`: a registered model by id (its file on disk), or a Hub file before
56
- * download (the conf rule, then — when asked — its header over HTTP ranges).
57
- */
58
- export declare function compatibilityFor(deps: Pick<ModelSetupWiringDeps, 'compatibility' | 'modelFile'>, request: ModelCompatibilityRequest): Promise<ModelCompatibilityResponse>;
59
- export declare function wireModelSetups(deps: ModelSetupWiringDeps): ModelSetupService;
@@ -1,132 +0,0 @@
1
- /**
2
- * Composition of the model setup for `create.ts`: the plan's facts (the verdict, the conf rule, the
3
- * Hub's file facts, the PrismML manifest, this machine, the packs on disk, free space) gathered from
4
- * the core's services, and the runner's I/O (engine install, downloads, header check, `model.yml`).
5
- */
6
- import { AtomicCoreError } from '../../contracts/index.js';
7
- import { getPrismSupportedFeatures, scanInstalledBackends } from '../../backend/index.js';
8
- import { fetchHfGgufFiles, hfToken } from '../../models/index.js';
9
- import { planModelSetup } from './plan.js';
10
- import { ModelSetupService } from './service.js';
11
- import { ModelSetupStore } from './store.js';
12
- function assertPlanRequest(request) {
13
- const ok = (v) => typeof v === 'string' && v.trim() !== '';
14
- if (!ok(request.repo) || !ok(request.file)) {
15
- throw new AtomicCoreError('INVALID_ARGUMENT', 'A model setup needs the Hugging Face repo and file.');
16
- }
17
- if (!/\.gguf$/i.test(request.file)) {
18
- throw new AtomicCoreError('INVALID_ARGUMENT', 'A model setup downloads a .gguf file.', request.file);
19
- }
20
- if (request.revision !== undefined && !ok(request.revision)) {
21
- throw new AtomicCoreError('INVALID_ARGUMENT', 'The revision must be a non-empty string.');
22
- }
23
- }
24
- /** The plan for one request, from what the core knows now. */
25
- export async function planFor(deps, request) {
26
- assertPlanRequest(request);
27
- const query = {
28
- repo: request.repo,
29
- file: request.file,
30
- ...(request.revision ? { revision: request.revision } : {}),
31
- };
32
- const [verdict, rule, catalog, facts, current, installedPacks, freeBytes] = await Promise.all([
33
- deps.compatibility.check({ ...query, inspectRemote: true }),
34
- deps.compatibility.ruleFor(query),
35
- deps.prismCatalog.catalog({ force: false, proxy: request.proxy ?? null }),
36
- deps.hardware(),
37
- deps.currentPack(),
38
- deps.installedPacks
39
- ? deps.installedPacks()
40
- : scanInstalledBackends(deps.layout, 'atomic-prism', deps.platform ?? process.platform).catch(() => []),
41
- deps.freeBytes().catch(() => null),
42
- ]);
43
- let hubFile;
44
- if (!rule) {
45
- const token = hfToken(deps.env ?? process.env);
46
- const files = await fetchHfGgufFiles(request.repo, {
47
- fetch: deps.fetchFor(request.proxy ?? null),
48
- ...(token ? { token } : {}),
49
- });
50
- const found = files.find((f) => f.filename === request.file);
51
- if (!found)
52
- throw new AtomicCoreError('INVALID_ARGUMENT', `"${request.file}" is not a GGUF file of ${request.repo}.`);
53
- hubFile = { size: found.size, ...(found.sha256 ? { sha256: found.sha256 } : {}) };
54
- }
55
- const rocm = facts.osType === 'linux' && deps.rocmProbe ? await deps.rocmProbe().catch(() => undefined) : undefined;
56
- return planModelSetup({
57
- request,
58
- verdict,
59
- ...(rule ? { rule } : {}),
60
- ...(hubFile ? { hubFile } : {}),
61
- manifest: catalog.manifest,
62
- offer: deps.offer(),
63
- host: {
64
- osType: facts.osType,
65
- arch: facts.arch,
66
- features: getPrismSupportedFeatures(facts.osType, facts.cpuExtensions ?? [], facts.gpus, rocm),
67
- gpus: facts.gpus,
68
- },
69
- installedPacks: installedPacks.map((p) => ({ version: p.version, backend: p.backend })),
70
- currentPack: current,
71
- freeBytes,
72
- });
73
- }
74
- /**
75
- * `POST /models/compatibility`: a registered model by id (its file on disk), or a Hub file before
76
- * download (the conf rule, then — when asked — its header over HTTP ranges).
77
- */
78
- export async function compatibilityFor(deps, request) {
79
- if (typeof request.model_id === 'string' && request.model_id !== '') {
80
- const target = await deps.modelFile(request.provider ?? 'llamacpp-upstream', request.model_id);
81
- return deps.compatibility.check({
82
- modelPath: target.modelPath,
83
- ...(target.sha256 ? { sha256: target.sha256 } : {}),
84
- });
85
- }
86
- if (typeof request.repo !== 'string' ||
87
- request.repo === '' ||
88
- typeof request.file !== 'string' ||
89
- request.file === '') {
90
- throw new AtomicCoreError('INVALID_ARGUMENT', 'A compatibility check needs model_id, or repo and file.');
91
- }
92
- return deps.compatibility.check({
93
- repo: request.repo,
94
- file: request.file,
95
- ...(request.revision ? { revision: request.revision } : {}),
96
- ...(request.sha256 ? { sha256: request.sha256 } : {}),
97
- inspectRemote: request.inspect_remote === true,
98
- });
99
- }
100
- export function wireModelSetups(deps) {
101
- return new ModelSetupService({
102
- layout: deps.layout,
103
- store: new ModelSetupStore(deps.layout.core.prismSetupsDir),
104
- plan: (request) => planFor(deps, request),
105
- installEngine: async (engine, taskId, proxy) => {
106
- await deps.installEngine(engine.version, engine.backend, { taskId, proxy });
107
- },
108
- selectEngine: async (engine) => {
109
- await deps.selectEngine(`${engine.version}/${engine.backend}`);
110
- },
111
- download: async (taskId, items) => {
112
- const token = hfToken(deps.env ?? process.env);
113
- await deps.downloader.download(taskId, items, {
114
- resume: true,
115
- ...(token ? { headers: { authorization: `Bearer ${token}` } } : {}),
116
- });
117
- },
118
- cancelDownload: (taskId) => {
119
- deps.downloader.cancel(taskId);
120
- },
121
- verify: (modelPath) => deps.compatibility.check({ modelPath }),
122
- register: async (modelId, yml) => {
123
- await deps.register(typeof yml['atomic_runtime'] === 'object' ? 'atomic-prism' : 'llamacpp-upstream', modelId, yml);
124
- },
125
- emit: (record) => deps.emit('model-setup:changed', record),
126
- imported: (event) => deps.emit('model:imported', event),
127
- newId: deps.newId,
128
- ...(deps.hfEndpoint ? { hfEndpoint: deps.hfEndpoint } : {}),
129
- ...(deps.log ? { log: deps.log } : {}),
130
- });
131
- }
132
- //# sourceMappingURL=wiring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../../src/core/model-setup/wiring.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Model compatibility and the model setup: `POST /models/compatibility` (what a file needs and
3
- * whether this core runs it), `GET /models/atomic-prism/families` (the Bonsai models the conf rules
4
- * name, for the Hub), `POST /models/setup-plan` (what a setup would install and download,
5
- * with a digest), `POST /model-setups` (start one from that digest), `GET /model-setups[/:id]`, and
6
- * `POST /model-setups/:id/{cancel,resume}`. Progress is the `model-setup:changed` event plus the
7
- * `download:*` events of the setup's task ids.
8
- */
9
- import type { Router } from '../../http.js';
10
- import type { ControlRouteContext, ControlServerDeps } from '../types.js';
11
- export declare function registerModelSetupRoutes(router: Router, deps: ControlServerDeps, ctx: ControlRouteContext): void;
@@ -1,55 +0,0 @@
1
- /**
2
- * Model compatibility and the model setup: `POST /models/compatibility` (what a file needs and
3
- * whether this core runs it), `GET /models/atomic-prism/families` (the Bonsai models the conf rules
4
- * name, for the Hub), `POST /models/setup-plan` (what a setup would install and download,
5
- * with a digest), `POST /model-setups` (start one from that digest), `GET /model-setups[/:id]`, and
6
- * `POST /model-setups/:id/{cancel,resume}`. Progress is the `model-setup:changed` event plus the
7
- * `download:*` events of the setup's task ids.
8
- */
9
- import { AtomicCoreError } from '../../../contracts/index.js';
10
- import { readJsonBody, sendJson } from '../../http.js';
11
- function control(deps) {
12
- if (!deps.modelSetups)
13
- throw new AtomicCoreError('INVALID_ARGUMENT', 'Model setup is not available in this core.');
14
- return deps.modelSetups;
15
- }
16
- async function objectBody(req) {
17
- const body = await readJsonBody(req);
18
- if (typeof body !== 'object' || body === null || Array.isArray(body)) {
19
- throw new AtomicCoreError('INVALID_ARGUMENT', 'The request body must be a JSON object.');
20
- }
21
- return body;
22
- }
23
- export function registerModelSetupRoutes(router, deps, ctx) {
24
- const { p } = ctx;
25
- router.post(p('/models/compatibility'), async (req, res) => {
26
- const setups = control(deps);
27
- sendJson(res, 200, await setups.compatibility(await objectBody(req)));
28
- });
29
- router.get(p('/models/atomic-prism/families'), async (_req, res) => {
30
- sendJson(res, 200, await control(deps).families());
31
- });
32
- router.post(p('/models/setup-plan'), async (req, res) => {
33
- const setups = control(deps);
34
- sendJson(res, 200, await setups.plan(await objectBody(req)));
35
- });
36
- router.post(p('/model-setups'), async (req, res) => {
37
- const setups = control(deps);
38
- sendJson(res, 202, await setups.start(await objectBody(req)));
39
- });
40
- router.get(p('/model-setups'), async (_req, res) => {
41
- sendJson(res, 200, { setups: await control(deps).list() });
42
- });
43
- router.get(p('/model-setups/:id'), async (_req, res, { params }) => {
44
- sendJson(res, 200, await control(deps).get(params['id'] ?? ''));
45
- });
46
- router.post(p('/model-setups/:id/cancel'), async (_req, res, { params }) => {
47
- sendJson(res, 200, await control(deps).cancel(params['id'] ?? ''));
48
- });
49
- router.post(p('/model-setups/:id/resume'), async (req, res, { params }) => {
50
- const setups = control(deps);
51
- const body = await objectBody(req);
52
- sendJson(res, 200, await setups.resume(params['id'] ?? '', { proxy: body.proxy ?? null }));
53
- });
54
- }
55
- //# sourceMappingURL=model-setups.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-setups.js","sourceRoot":"","sources":["../../../../src/server/control/routes/model-setups.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAItD,SAAS,OAAO,CAAC,IAAuB;IACtC,IAAI,CAAC,IAAI,CAAC,WAAW;QACnB,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,4CAA4C,CAAC,CAAA;IAC7F,OAAO,IAAI,CAAC,WAAW,CAAA;AACzB,CAAC;AAED,KAAK,UAAU,UAAU,CAAI,GAAuC;IAClE,MAAM,IAAI,GAAG,MAAM,YAAY,CAAI,GAAG,CAAC,CAAA;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,yCAAyC,CAAC,CAAA;IAC1F,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,IAAuB,EACvB,GAAwB;IAExB,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAA;IACjB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACzD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,+BAA+B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACjE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACjD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACjE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACzE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAiC,GAAG,CAAC,CAAA;QAClE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;AACJ,CAAC"}