@atomic-chat/core 0.5.1

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 (868) hide show
  1. package/README.md +46 -0
  2. package/dist/app-daemon.d.ts +2 -0
  3. package/dist/app-daemon.js +72 -0
  4. package/dist/app-daemon.js.map +1 -0
  5. package/dist/backend/catalog/archive.d.ts +70 -0
  6. package/dist/backend/catalog/archive.js +138 -0
  7. package/dist/backend/catalog/archive.js.map +1 -0
  8. package/dist/backend/catalog/bundled-manifest-baseline.d.ts +2 -0
  9. package/dist/backend/catalog/bundled-manifest-baseline.js +49 -0
  10. package/dist/backend/catalog/bundled-manifest-baseline.js.map +1 -0
  11. package/dist/backend/catalog/cuda-family.d.ts +54 -0
  12. package/dist/backend/catalog/cuda-family.js +93 -0
  13. package/dist/backend/catalog/cuda-family.js.map +1 -0
  14. package/dist/backend/catalog/index.d.ts +6 -0
  15. package/dist/backend/catalog/index.js +7 -0
  16. package/dist/backend/catalog/index.js.map +1 -0
  17. package/dist/backend/catalog/manifest.d.ts +102 -0
  18. package/dist/backend/catalog/manifest.js +233 -0
  19. package/dist/backend/catalog/manifest.js.map +1 -0
  20. package/dist/backend/catalog/migrate.d.ts +40 -0
  21. package/dist/backend/catalog/migrate.js +135 -0
  22. package/dist/backend/catalog/migrate.js.map +1 -0
  23. package/dist/backend/index.d.ts +18 -0
  24. package/dist/backend/index.js +19 -0
  25. package/dist/backend/index.js.map +1 -0
  26. package/dist/backend/install/index.d.ts +3 -0
  27. package/dist/backend/install/index.js +4 -0
  28. package/dist/backend/install/index.js.map +1 -0
  29. package/dist/backend/install/runtime-backend.d.ts +22 -0
  30. package/dist/backend/install/runtime-backend.js +95 -0
  31. package/dist/backend/install/runtime-backend.js.map +1 -0
  32. package/dist/backend/install/service.d.ts +119 -0
  33. package/dist/backend/install/service.js +218 -0
  34. package/dist/backend/install/service.js.map +1 -0
  35. package/dist/backend/installed/index.d.ts +3 -0
  36. package/dist/backend/installed/index.js +4 -0
  37. package/dist/backend/installed/index.js.map +1 -0
  38. package/dist/backend/installed/installed.d.ts +93 -0
  39. package/dist/backend/installed/installed.js +209 -0
  40. package/dist/backend/installed/installed.js.map +1 -0
  41. package/dist/backend/installed/scan.d.ts +39 -0
  42. package/dist/backend/installed/scan.js +105 -0
  43. package/dist/backend/installed/scan.js.map +1 -0
  44. package/dist/backend/optimal/index.d.ts +3 -0
  45. package/dist/backend/optimal/index.js +4 -0
  46. package/dist/backend/optimal/index.js.map +1 -0
  47. package/dist/backend/optimal/optimal-cache.d.ts +90 -0
  48. package/dist/backend/optimal/optimal-cache.js +198 -0
  49. package/dist/backend/optimal/optimal-cache.js.map +1 -0
  50. package/dist/backend/optimal/optimal-store.d.ts +24 -0
  51. package/dist/backend/optimal/optimal-store.js +103 -0
  52. package/dist/backend/optimal/optimal-store.js.map +1 -0
  53. package/dist/backend/select/amd-rocm-pci-ids.d.ts +3 -0
  54. package/dist/backend/select/amd-rocm-pci-ids.js +57 -0
  55. package/dist/backend/select/amd-rocm-pci-ids.js.map +1 -0
  56. package/dist/backend/select/categories.d.ts +49 -0
  57. package/dist/backend/select/categories.js +178 -0
  58. package/dist/backend/select/categories.js.map +1 -0
  59. package/dist/backend/select/features.d.ts +81 -0
  60. package/dist/backend/select/features.js +221 -0
  61. package/dist/backend/select/features.js.map +1 -0
  62. package/dist/backend/select/index.d.ts +9 -0
  63. package/dist/backend/select/index.js +10 -0
  64. package/dist/backend/select/index.js.map +1 -0
  65. package/dist/backend/select/recovery.d.ts +51 -0
  66. package/dist/backend/select/recovery.js +108 -0
  67. package/dist/backend/select/recovery.js.map +1 -0
  68. package/dist/backend/select/tiers.d.ts +76 -0
  69. package/dist/backend/select/tiers.js +179 -0
  70. package/dist/backend/select/tiers.js.map +1 -0
  71. package/dist/backend/turboquant.d.ts +134 -0
  72. package/dist/backend/turboquant.js +587 -0
  73. package/dist/backend/turboquant.js.map +1 -0
  74. package/dist/backend/types.d.ts +139 -0
  75. package/dist/backend/types.js +13 -0
  76. package/dist/backend/types.js.map +1 -0
  77. package/dist/backend/version.d.ts +59 -0
  78. package/dist/backend/version.js +168 -0
  79. package/dist/backend/version.js.map +1 -0
  80. package/dist/cli/bin.d.ts +2 -0
  81. package/dist/cli/bin.js +10 -0
  82. package/dist/cli/bin.js.map +1 -0
  83. package/dist/cli/cloud.d.ts +13 -0
  84. package/dist/cli/cloud.js +146 -0
  85. package/dist/cli/cloud.js.map +1 -0
  86. package/dist/cli/commands/daemon.d.ts +4 -0
  87. package/dist/cli/commands/daemon.js +88 -0
  88. package/dist/cli/commands/daemon.js.map +1 -0
  89. package/dist/cli/commands/index.d.ts +16 -0
  90. package/dist/cli/commands/index.js +17 -0
  91. package/dist/cli/commands/index.js.map +1 -0
  92. package/dist/cli/commands/models.d.ts +4 -0
  93. package/dist/cli/commands/models.js +52 -0
  94. package/dist/cli/commands/models.js.map +1 -0
  95. package/dist/cli/commands/serve.d.ts +16 -0
  96. package/dist/cli/commands/serve.js +263 -0
  97. package/dist/cli/commands/serve.js.map +1 -0
  98. package/dist/cli/commands/server.d.ts +4 -0
  99. package/dist/cli/commands/server.js +126 -0
  100. package/dist/cli/commands/server.js.map +1 -0
  101. package/dist/cli/commands/shared.d.ts +10 -0
  102. package/dist/cli/commands/shared.js +34 -0
  103. package/dist/cli/commands/shared.js.map +1 -0
  104. package/dist/cli/commands/shutdown.d.ts +4 -0
  105. package/dist/cli/commands/shutdown.js +32 -0
  106. package/dist/cli/commands/shutdown.js.map +1 -0
  107. package/dist/cli/commands/telemetry.d.ts +8 -0
  108. package/dist/cli/commands/telemetry.js +50 -0
  109. package/dist/cli/commands/telemetry.js.map +1 -0
  110. package/dist/cli/index.d.ts +7 -0
  111. package/dist/cli/index.js +8 -0
  112. package/dist/cli/index.js.map +1 -0
  113. package/dist/cli/io.d.ts +46 -0
  114. package/dist/cli/io.js +101 -0
  115. package/dist/cli/io.js.map +1 -0
  116. package/dist/cli/launch.d.ts +50 -0
  117. package/dist/cli/launch.js +327 -0
  118. package/dist/cli/launch.js.map +1 -0
  119. package/dist/cli/main.d.ts +10 -0
  120. package/dist/cli/main.js +109 -0
  121. package/dist/cli/main.js.map +1 -0
  122. package/dist/cli/owner.d.ts +39 -0
  123. package/dist/cli/owner.js +179 -0
  124. package/dist/cli/owner.js.map +1 -0
  125. package/dist/client/control-client.d.ts +213 -0
  126. package/dist/client/control-client.js +368 -0
  127. package/dist/client/control-client.js.map +1 -0
  128. package/dist/client/index.d.ts +7 -0
  129. package/dist/client/index.js +8 -0
  130. package/dist/client/index.js.map +1 -0
  131. package/dist/cloud/chatgpt.d.ts +63 -0
  132. package/dist/cloud/chatgpt.js +233 -0
  133. package/dist/cloud/chatgpt.js.map +1 -0
  134. package/dist/cloud/index.d.ts +8 -0
  135. package/dist/cloud/index.js +9 -0
  136. package/dist/cloud/index.js.map +1 -0
  137. package/dist/cloud/registry.d.ts +51 -0
  138. package/dist/cloud/registry.js +148 -0
  139. package/dist/cloud/registry.js.map +1 -0
  140. package/dist/config/data-folder.d.ts +57 -0
  141. package/dist/config/data-folder.js +150 -0
  142. package/dist/config/data-folder.js.map +1 -0
  143. package/dist/config/index.d.ts +9 -0
  144. package/dist/config/index.js +10 -0
  145. package/dist/config/index.js.map +1 -0
  146. package/dist/config/paths.d.ts +98 -0
  147. package/dist/config/paths.js +109 -0
  148. package/dist/config/paths.js.map +1 -0
  149. package/dist/contracts/control-api.d.ts +61 -0
  150. package/dist/contracts/control-api.js +7 -0
  151. package/dist/contracts/control-api.js.map +1 -0
  152. package/dist/contracts/diffusion.d.ts +477 -0
  153. package/dist/contracts/diffusion.js +10 -0
  154. package/dist/contracts/diffusion.js.map +1 -0
  155. package/dist/contracts/errors.d.ts +61 -0
  156. package/dist/contracts/errors.js +70 -0
  157. package/dist/contracts/errors.js.map +1 -0
  158. package/dist/contracts/events.d.ts +270 -0
  159. package/dist/contracts/events.js +7 -0
  160. package/dist/contracts/events.js.map +1 -0
  161. package/dist/contracts/hardware.d.ts +53 -0
  162. package/dist/contracts/hardware.js +12 -0
  163. package/dist/contracts/hardware.js.map +1 -0
  164. package/dist/contracts/index.d.ts +12 -0
  165. package/dist/contracts/index.js +13 -0
  166. package/dist/contracts/index.js.map +1 -0
  167. package/dist/contracts/model-yml.d.ts +28 -0
  168. package/dist/contracts/model-yml.js +23 -0
  169. package/dist/contracts/model-yml.js.map +1 -0
  170. package/dist/contracts/remote-access.d.ts +43 -0
  171. package/dist/contracts/remote-access.js +12 -0
  172. package/dist/contracts/remote-access.js.map +1 -0
  173. package/dist/contracts/session.d.ts +39 -0
  174. package/dist/contracts/session.js +7 -0
  175. package/dist/contracts/session.js.map +1 -0
  176. package/dist/contracts/settings.d.ts +106 -0
  177. package/dist/contracts/settings.js +17 -0
  178. package/dist/contracts/settings.js.map +1 -0
  179. package/dist/core/atomic-core.d.ts +149 -0
  180. package/dist/core/atomic-core.js +289 -0
  181. package/dist/core/atomic-core.js.map +1 -0
  182. package/dist/core/create.d.ts +12 -0
  183. package/dist/core/create.js +393 -0
  184. package/dist/core/create.js.map +1 -0
  185. package/dist/core/index.d.ts +10 -0
  186. package/dist/core/index.js +9 -0
  187. package/dist/core/index.js.map +1 -0
  188. package/dist/core/public-server.d.ts +76 -0
  189. package/dist/core/public-server.js +143 -0
  190. package/dist/core/public-server.js.map +1 -0
  191. package/dist/core/reap-orphans.d.ts +7 -0
  192. package/dist/core/reap-orphans.js +40 -0
  193. package/dist/core/reap-orphans.js.map +1 -0
  194. package/dist/core/sessions.d.ts +60 -0
  195. package/dist/core/sessions.js +180 -0
  196. package/dist/core/sessions.js.map +1 -0
  197. package/dist/core/types.d.ts +61 -0
  198. package/dist/core/types.js +2 -0
  199. package/dist/core/types.js.map +1 -0
  200. package/dist/credentials/api-keys.d.ts +41 -0
  201. package/dist/credentials/api-keys.js +156 -0
  202. package/dist/credentials/api-keys.js.map +1 -0
  203. package/dist/credentials/chatgpt-auth.d.ts +73 -0
  204. package/dist/credentials/chatgpt-auth.js +167 -0
  205. package/dist/credentials/chatgpt-auth.js.map +1 -0
  206. package/dist/credentials/chatgpt-oauth.d.ts +97 -0
  207. package/dist/credentials/chatgpt-oauth.js +329 -0
  208. package/dist/credentials/chatgpt-oauth.js.map +1 -0
  209. package/dist/credentials/chatgpt-store.d.ts +33 -0
  210. package/dist/credentials/chatgpt-store.js +110 -0
  211. package/dist/credentials/chatgpt-store.js.map +1 -0
  212. package/dist/credentials/index.d.ts +11 -0
  213. package/dist/credentials/index.js +12 -0
  214. package/dist/credentials/index.js.map +1 -0
  215. package/dist/diffusion/args.d.ts +102 -0
  216. package/dist/diffusion/args.js +291 -0
  217. package/dist/diffusion/args.js.map +1 -0
  218. package/dist/diffusion/compat.d.ts +20 -0
  219. package/dist/diffusion/compat.js +58 -0
  220. package/dist/diffusion/compat.js.map +1 -0
  221. package/dist/diffusion/containment.d.ts +15 -0
  222. package/dist/diffusion/containment.js +32 -0
  223. package/dist/diffusion/containment.js.map +1 -0
  224. package/dist/diffusion/errors.d.ts +28 -0
  225. package/dist/diffusion/errors.js +63 -0
  226. package/dist/diffusion/errors.js.map +1 -0
  227. package/dist/diffusion/gallery.d.ts +76 -0
  228. package/dist/diffusion/gallery.js +307 -0
  229. package/dist/diffusion/gallery.js.map +1 -0
  230. package/dist/diffusion/http.d.ts +16 -0
  231. package/dist/diffusion/http.js +41 -0
  232. package/dist/diffusion/http.js.map +1 -0
  233. package/dist/diffusion/idle.d.ts +23 -0
  234. package/dist/diffusion/idle.js +45 -0
  235. package/dist/diffusion/idle.js.map +1 -0
  236. package/dist/diffusion/image-job.d.ts +25 -0
  237. package/dist/diffusion/image-job.js +176 -0
  238. package/dist/diffusion/image-job.js.map +1 -0
  239. package/dist/diffusion/index.d.ts +35 -0
  240. package/dist/diffusion/index.js +36 -0
  241. package/dist/diffusion/index.js.map +1 -0
  242. package/dist/diffusion/install.d.ts +61 -0
  243. package/dist/diffusion/install.js +287 -0
  244. package/dist/diffusion/install.js.map +1 -0
  245. package/dist/diffusion/job-kind.d.ts +74 -0
  246. package/dist/diffusion/job-kind.js +7 -0
  247. package/dist/diffusion/job-kind.js.map +1 -0
  248. package/dist/diffusion/jobs.d.ts +90 -0
  249. package/dist/diffusion/jobs.js +433 -0
  250. package/dist/diffusion/jobs.js.map +1 -0
  251. package/dist/diffusion/mutex.d.ts +16 -0
  252. package/dist/diffusion/mutex.js +46 -0
  253. package/dist/diffusion/mutex.js.map +1 -0
  254. package/dist/diffusion/parse.d.ts +19 -0
  255. package/dist/diffusion/parse.js +274 -0
  256. package/dist/diffusion/parse.js.map +1 -0
  257. package/dist/diffusion/png.d.ts +77 -0
  258. package/dist/diffusion/png.js +335 -0
  259. package/dist/diffusion/png.js.map +1 -0
  260. package/dist/diffusion/progress.d.ts +74 -0
  261. package/dist/diffusion/progress.js +223 -0
  262. package/dist/diffusion/progress.js.map +1 -0
  263. package/dist/diffusion/recipe.d.ts +26 -0
  264. package/dist/diffusion/recipe.js +206 -0
  265. package/dist/diffusion/recipe.js.map +1 -0
  266. package/dist/diffusion/server-process.d.ts +59 -0
  267. package/dist/diffusion/server-process.js +235 -0
  268. package/dist/diffusion/server-process.js.map +1 -0
  269. package/dist/diffusion/service.d.ts +107 -0
  270. package/dist/diffusion/service.js +431 -0
  271. package/dist/diffusion/service.js.map +1 -0
  272. package/dist/diffusion/session.d.ts +58 -0
  273. package/dist/diffusion/session.js +226 -0
  274. package/dist/diffusion/session.js.map +1 -0
  275. package/dist/diffusion/state.d.ts +90 -0
  276. package/dist/diffusion/state.js +122 -0
  277. package/dist/diffusion/state.js.map +1 -0
  278. package/dist/diffusion/tracker.d.ts +46 -0
  279. package/dist/diffusion/tracker.js +153 -0
  280. package/dist/diffusion/tracker.js.map +1 -0
  281. package/dist/diffusion/types.d.ts +62 -0
  282. package/dist/diffusion/types.js +10 -0
  283. package/dist/diffusion/types.js.map +1 -0
  284. package/dist/diffusion/validate.d.ts +36 -0
  285. package/dist/diffusion/validate.js +166 -0
  286. package/dist/diffusion/validate.js.map +1 -0
  287. package/dist/diffusion/video-gallery.d.ts +56 -0
  288. package/dist/diffusion/video-gallery.js +252 -0
  289. package/dist/diffusion/video-gallery.js.map +1 -0
  290. package/dist/diffusion/video-job.d.ts +33 -0
  291. package/dist/diffusion/video-job.js +150 -0
  292. package/dist/diffusion/video-job.js.map +1 -0
  293. package/dist/diffusion/video-recipe.d.ts +12 -0
  294. package/dist/diffusion/video-recipe.js +141 -0
  295. package/dist/diffusion/video-recipe.js.map +1 -0
  296. package/dist/diffusion/wiring.d.ts +24 -0
  297. package/dist/diffusion/wiring.js +38 -0
  298. package/dist/diffusion/wiring.js.map +1 -0
  299. package/dist/diffusion/workflow.d.ts +33 -0
  300. package/dist/diffusion/workflow.js +78 -0
  301. package/dist/diffusion/workflow.js.map +1 -0
  302. package/dist/downloads/archive.d.ts +15 -0
  303. package/dist/downloads/archive.js +121 -0
  304. package/dist/downloads/archive.js.map +1 -0
  305. package/dist/downloads/disk-space.d.ts +18 -0
  306. package/dist/downloads/disk-space.js +32 -0
  307. package/dist/downloads/disk-space.js.map +1 -0
  308. package/dist/downloads/disk.d.ts +38 -0
  309. package/dist/downloads/disk.js +88 -0
  310. package/dist/downloads/disk.js.map +1 -0
  311. package/dist/downloads/downloader.d.ts +75 -0
  312. package/dist/downloads/downloader.js +479 -0
  313. package/dist/downloads/downloader.js.map +1 -0
  314. package/dist/downloads/index.d.ts +14 -0
  315. package/dist/downloads/index.js +15 -0
  316. package/dist/downloads/index.js.map +1 -0
  317. package/dist/downloads/protocol.d.ts +52 -0
  318. package/dist/downloads/protocol.js +153 -0
  319. package/dist/downloads/protocol.js.map +1 -0
  320. package/dist/downloads/proxy-fetch.d.ts +45 -0
  321. package/dist/downloads/proxy-fetch.js +571 -0
  322. package/dist/downloads/proxy-fetch.js.map +1 -0
  323. package/dist/downloads/verify.d.ts +22 -0
  324. package/dist/downloads/verify.js +74 -0
  325. package/dist/downloads/verify.js.map +1 -0
  326. package/dist/events/emitter.d.ts +44 -0
  327. package/dist/events/emitter.js +104 -0
  328. package/dist/events/emitter.js.map +1 -0
  329. package/dist/events/index.d.ts +5 -0
  330. package/dist/events/index.js +6 -0
  331. package/dist/events/index.js.map +1 -0
  332. package/dist/hardware/index.d.ts +7 -0
  333. package/dist/hardware/index.js +8 -0
  334. package/dist/hardware/index.js.map +1 -0
  335. package/dist/hardware/override.d.ts +46 -0
  336. package/dist/hardware/override.js +81 -0
  337. package/dist/hardware/override.js.map +1 -0
  338. package/dist/host/index.d.ts +15 -0
  339. package/dist/host/index.js +16 -0
  340. package/dist/host/index.js.map +1 -0
  341. package/dist/index.d.ts +5 -0
  342. package/dist/index.js +6 -0
  343. package/dist/index.js.map +1 -0
  344. package/dist/integrations/catalog.d.ts +67 -0
  345. package/dist/integrations/catalog.js +385 -0
  346. package/dist/integrations/catalog.js.map +1 -0
  347. package/dist/integrations/config-io.d.ts +86 -0
  348. package/dist/integrations/config-io.js +229 -0
  349. package/dist/integrations/config-io.js.map +1 -0
  350. package/dist/integrations/configure/atomic-agent.d.ts +33 -0
  351. package/dist/integrations/configure/atomic-agent.js +127 -0
  352. package/dist/integrations/configure/atomic-agent.js.map +1 -0
  353. package/dist/integrations/configure/claude-code.d.ts +16 -0
  354. package/dist/integrations/configure/claude-code.js +45 -0
  355. package/dist/integrations/configure/claude-code.js.map +1 -0
  356. package/dist/integrations/configure/cline.d.ts +28 -0
  357. package/dist/integrations/configure/cline.js +70 -0
  358. package/dist/integrations/configure/cline.js.map +1 -0
  359. package/dist/integrations/configure/codex.d.ts +17 -0
  360. package/dist/integrations/configure/codex.js +43 -0
  361. package/dist/integrations/configure/codex.js.map +1 -0
  362. package/dist/integrations/configure/copilot.d.ts +10 -0
  363. package/dist/integrations/configure/copilot.js +14 -0
  364. package/dist/integrations/configure/copilot.js.map +1 -0
  365. package/dist/integrations/configure/droid.d.ts +12 -0
  366. package/dist/integrations/configure/droid.js +47 -0
  367. package/dist/integrations/configure/droid.js.map +1 -0
  368. package/dist/integrations/configure/dsh.d.ts +34 -0
  369. package/dist/integrations/configure/dsh.js +146 -0
  370. package/dist/integrations/configure/dsh.js.map +1 -0
  371. package/dist/integrations/configure/env-agent.d.ts +26 -0
  372. package/dist/integrations/configure/env-agent.js +41 -0
  373. package/dist/integrations/configure/env-agent.js.map +1 -0
  374. package/dist/integrations/configure/goose.d.ts +12 -0
  375. package/dist/integrations/configure/goose.js +16 -0
  376. package/dist/integrations/configure/goose.js.map +1 -0
  377. package/dist/integrations/configure/hermes.d.ts +41 -0
  378. package/dist/integrations/configure/hermes.js +247 -0
  379. package/dist/integrations/configure/hermes.js.map +1 -0
  380. package/dist/integrations/configure/index.d.ts +25 -0
  381. package/dist/integrations/configure/index.js +26 -0
  382. package/dist/integrations/configure/index.js.map +1 -0
  383. package/dist/integrations/configure/json-tree.d.ts +16 -0
  384. package/dist/integrations/configure/json-tree.js +19 -0
  385. package/dist/integrations/configure/json-tree.js.map +1 -0
  386. package/dist/integrations/configure/kilo.d.ts +9 -0
  387. package/dist/integrations/configure/kilo.js +19 -0
  388. package/dist/integrations/configure/kilo.js.map +1 -0
  389. package/dist/integrations/configure/mimo.d.ts +9 -0
  390. package/dist/integrations/configure/mimo.js +19 -0
  391. package/dist/integrations/configure/mimo.js.map +1 -0
  392. package/dist/integrations/configure/muse.d.ts +9 -0
  393. package/dist/integrations/configure/muse.js +13 -0
  394. package/dist/integrations/configure/muse.js.map +1 -0
  395. package/dist/integrations/configure/openclaude.d.ts +13 -0
  396. package/dist/integrations/configure/openclaude.js +56 -0
  397. package/dist/integrations/configure/openclaude.js.map +1 -0
  398. package/dist/integrations/configure/openclaw.d.ts +24 -0
  399. package/dist/integrations/configure/openclaw.js +99 -0
  400. package/dist/integrations/configure/openclaw.js.map +1 -0
  401. package/dist/integrations/configure/opencode-style.d.ts +25 -0
  402. package/dist/integrations/configure/opencode-style.js +43 -0
  403. package/dist/integrations/configure/opencode-style.js.map +1 -0
  404. package/dist/integrations/configure/opencode.d.ts +9 -0
  405. package/dist/integrations/configure/opencode.js +19 -0
  406. package/dist/integrations/configure/opencode.js.map +1 -0
  407. package/dist/integrations/configure/openhands.d.ts +8 -0
  408. package/dist/integrations/configure/openhands.js +12 -0
  409. package/dist/integrations/configure/openhands.js.map +1 -0
  410. package/dist/integrations/configure/pi.d.ts +14 -0
  411. package/dist/integrations/configure/pi.js +49 -0
  412. package/dist/integrations/configure/pi.js.map +1 -0
  413. package/dist/integrations/configure/poolside.d.ts +8 -0
  414. package/dist/integrations/configure/poolside.js +12 -0
  415. package/dist/integrations/configure/poolside.js.map +1 -0
  416. package/dist/integrations/configure/registry.d.ts +41 -0
  417. package/dist/integrations/configure/registry.js +50 -0
  418. package/dist/integrations/configure/registry.js.map +1 -0
  419. package/dist/integrations/configure/zcode.d.ts +59 -0
  420. package/dist/integrations/configure/zcode.js +260 -0
  421. package/dist/integrations/configure/zcode.js.map +1 -0
  422. package/dist/integrations/configure/zed.d.ts +16 -0
  423. package/dist/integrations/configure/zed.js +61 -0
  424. package/dist/integrations/configure/zed.js.map +1 -0
  425. package/dist/integrations/detect.d.ts +29 -0
  426. package/dist/integrations/detect.js +43 -0
  427. package/dist/integrations/detect.js.map +1 -0
  428. package/dist/integrations/index.d.ts +9 -0
  429. package/dist/integrations/index.js +10 -0
  430. package/dist/integrations/index.js.map +1 -0
  431. package/dist/lock/control-token.d.ts +19 -0
  432. package/dist/lock/control-token.js +58 -0
  433. package/dist/lock/control-token.js.map +1 -0
  434. package/dist/lock/index.d.ts +10 -0
  435. package/dist/lock/index.js +11 -0
  436. package/dist/lock/index.js.map +1 -0
  437. package/dist/lock/instance-lock.d.ts +93 -0
  438. package/dist/lock/instance-lock.js +244 -0
  439. package/dist/lock/instance-lock.js.map +1 -0
  440. package/dist/lock/legacy-guard.d.ts +46 -0
  441. package/dist/lock/legacy-guard.js +87 -0
  442. package/dist/lock/legacy-guard.js.map +1 -0
  443. package/dist/lock/model-claim.d.ts +20 -0
  444. package/dist/lock/model-claim.js +84 -0
  445. package/dist/lock/model-claim.js.map +1 -0
  446. package/dist/lock/process-identity.d.ts +48 -0
  447. package/dist/lock/process-identity.js +180 -0
  448. package/dist/lock/process-identity.js.map +1 -0
  449. package/dist/lock/process-journal.d.ts +56 -0
  450. package/dist/lock/process-journal.js +113 -0
  451. package/dist/lock/process-journal.js.map +1 -0
  452. package/dist/models/capabilities.d.ts +73 -0
  453. package/dist/models/capabilities.js +123 -0
  454. package/dist/models/capabilities.js.map +1 -0
  455. package/dist/models/embed.d.ts +30 -0
  456. package/dist/models/embed.js +83 -0
  457. package/dist/models/embed.js.map +1 -0
  458. package/dist/models/gguf/classify.d.ts +29 -0
  459. package/dist/models/gguf/classify.js +89 -0
  460. package/dist/models/gguf/classify.js.map +1 -0
  461. package/dist/models/gguf/index.d.ts +5 -0
  462. package/dist/models/gguf/index.js +6 -0
  463. package/dist/models/gguf/index.js.map +1 -0
  464. package/dist/models/gguf/kv-cache.d.ts +27 -0
  465. package/dist/models/gguf/kv-cache.js +101 -0
  466. package/dist/models/gguf/kv-cache.js.map +1 -0
  467. package/dist/models/gguf/read-file.d.ts +11 -0
  468. package/dist/models/gguf/read-file.js +21 -0
  469. package/dist/models/gguf/read-file.js.map +1 -0
  470. package/dist/models/gguf/reader.d.ts +40 -0
  471. package/dist/models/gguf/reader.js +271 -0
  472. package/dist/models/gguf/reader.js.map +1 -0
  473. package/dist/models/gguf/support.d.ts +47 -0
  474. package/dist/models/gguf/support.js +48 -0
  475. package/dist/models/gguf/support.js.map +1 -0
  476. package/dist/models/hf.d.ts +35 -0
  477. package/dist/models/hf.js +140 -0
  478. package/dist/models/hf.js.map +1 -0
  479. package/dist/models/index.d.ts +14 -0
  480. package/dist/models/index.js +15 -0
  481. package/dist/models/index.js.map +1 -0
  482. package/dist/models/model-yml.d.ts +22 -0
  483. package/dist/models/model-yml.js +63 -0
  484. package/dist/models/model-yml.js.map +1 -0
  485. package/dist/models/registry.d.ts +51 -0
  486. package/dist/models/registry.js +102 -0
  487. package/dist/models/registry.js.map +1 -0
  488. package/dist/models/shards.d.ts +20 -0
  489. package/dist/models/shards.js +46 -0
  490. package/dist/models/shards.js.map +1 -0
  491. package/dist/remote-access/cloudflared-args.d.ts +41 -0
  492. package/dist/remote-access/cloudflared-args.js +59 -0
  493. package/dist/remote-access/cloudflared-args.js.map +1 -0
  494. package/dist/remote-access/cloudflared-output.d.ts +26 -0
  495. package/dist/remote-access/cloudflared-output.js +51 -0
  496. package/dist/remote-access/cloudflared-output.js.map +1 -0
  497. package/dist/remote-access/index.d.ts +16 -0
  498. package/dist/remote-access/index.js +17 -0
  499. package/dist/remote-access/index.js.map +1 -0
  500. package/dist/remote-access/journal.d.ts +63 -0
  501. package/dist/remote-access/journal.js +140 -0
  502. package/dist/remote-access/journal.js.map +1 -0
  503. package/dist/remote-access/lan-probe.d.ts +28 -0
  504. package/dist/remote-access/lan-probe.js +63 -0
  505. package/dist/remote-access/lan-probe.js.map +1 -0
  506. package/dist/remote-access/lan.d.ts +31 -0
  507. package/dist/remote-access/lan.js +90 -0
  508. package/dist/remote-access/lan.js.map +1 -0
  509. package/dist/remote-access/manager.d.ts +111 -0
  510. package/dist/remote-access/manager.js +316 -0
  511. package/dist/remote-access/manager.js.map +1 -0
  512. package/dist/remote-access/probe.d.ts +92 -0
  513. package/dist/remote-access/probe.js +186 -0
  514. package/dist/remote-access/probe.js.map +1 -0
  515. package/dist/remote-access/process.d.ts +66 -0
  516. package/dist/remote-access/process.js +160 -0
  517. package/dist/remote-access/process.js.map +1 -0
  518. package/dist/remote-access/spawner.d.ts +25 -0
  519. package/dist/remote-access/spawner.js +49 -0
  520. package/dist/remote-access/spawner.js.map +1 -0
  521. package/dist/remote-access/status.d.ts +39 -0
  522. package/dist/remote-access/status.js +49 -0
  523. package/dist/remote-access/status.js.map +1 -0
  524. package/dist/remote-access/wiring.d.ts +34 -0
  525. package/dist/remote-access/wiring.js +47 -0
  526. package/dist/remote-access/wiring.js.map +1 -0
  527. package/dist/router/index.d.ts +7 -0
  528. package/dist/router/index.js +8 -0
  529. package/dist/router/index.js.map +1 -0
  530. package/dist/router/resolve.d.ts +41 -0
  531. package/dist/router/resolve.js +53 -0
  532. package/dist/router/resolve.js.map +1 -0
  533. package/dist/runtime/foundation-models/errors.d.ts +28 -0
  534. package/dist/runtime/foundation-models/errors.js +48 -0
  535. package/dist/runtime/foundation-models/errors.js.map +1 -0
  536. package/dist/runtime/foundation-models/index.d.ts +8 -0
  537. package/dist/runtime/foundation-models/index.js +9 -0
  538. package/dist/runtime/foundation-models/index.js.map +1 -0
  539. package/dist/runtime/foundation-models/runtime.d.ts +73 -0
  540. package/dist/runtime/foundation-models/runtime.js +186 -0
  541. package/dist/runtime/foundation-models/runtime.js.map +1 -0
  542. package/dist/runtime/index.d.ts +5 -0
  543. package/dist/runtime/index.js +6 -0
  544. package/dist/runtime/index.js.map +1 -0
  545. package/dist/runtime/llamacpp/args.d.ts +90 -0
  546. package/dist/runtime/llamacpp/args.js +379 -0
  547. package/dist/runtime/llamacpp/args.js.map +1 -0
  548. package/dist/runtime/llamacpp/ctx-ladder.d.ts +16 -0
  549. package/dist/runtime/llamacpp/ctx-ladder.js +28 -0
  550. package/dist/runtime/llamacpp/ctx-ladder.js.map +1 -0
  551. package/dist/runtime/llamacpp/devices.d.ts +26 -0
  552. package/dist/runtime/llamacpp/devices.js +86 -0
  553. package/dist/runtime/llamacpp/devices.js.map +1 -0
  554. package/dist/runtime/llamacpp/errors.d.ts +34 -0
  555. package/dist/runtime/llamacpp/errors.js +137 -0
  556. package/dist/runtime/llamacpp/errors.js.map +1 -0
  557. package/dist/runtime/llamacpp/index.d.ts +14 -0
  558. package/dist/runtime/llamacpp/index.js +15 -0
  559. package/dist/runtime/llamacpp/index.js.map +1 -0
  560. package/dist/runtime/llamacpp/load-plan.d.ts +113 -0
  561. package/dist/runtime/llamacpp/load-plan.js +259 -0
  562. package/dist/runtime/llamacpp/load-plan.js.map +1 -0
  563. package/dist/runtime/llamacpp/policy.d.ts +70 -0
  564. package/dist/runtime/llamacpp/policy.js +191 -0
  565. package/dist/runtime/llamacpp/policy.js.map +1 -0
  566. package/dist/runtime/llamacpp/probe.d.ts +13 -0
  567. package/dist/runtime/llamacpp/probe.js +35 -0
  568. package/dist/runtime/llamacpp/probe.js.map +1 -0
  569. package/dist/runtime/llamacpp/runtime-device.d.ts +33 -0
  570. package/dist/runtime/llamacpp/runtime-device.js +169 -0
  571. package/dist/runtime/llamacpp/runtime-device.js.map +1 -0
  572. package/dist/runtime/llamacpp/runtime.d.ts +151 -0
  573. package/dist/runtime/llamacpp/runtime.js +535 -0
  574. package/dist/runtime/llamacpp/runtime.js.map +1 -0
  575. package/dist/runtime/mlx/args.d.ts +10 -0
  576. package/dist/runtime/mlx/args.js +44 -0
  577. package/dist/runtime/mlx/args.js.map +1 -0
  578. package/dist/runtime/mlx/config.d.ts +71 -0
  579. package/dist/runtime/mlx/config.js +91 -0
  580. package/dist/runtime/mlx/config.js.map +1 -0
  581. package/dist/runtime/mlx/errors.d.ts +21 -0
  582. package/dist/runtime/mlx/errors.js +73 -0
  583. package/dist/runtime/mlx/errors.js.map +1 -0
  584. package/dist/runtime/mlx/index.d.ts +12 -0
  585. package/dist/runtime/mlx/index.js +13 -0
  586. package/dist/runtime/mlx/index.js.map +1 -0
  587. package/dist/runtime/mlx/model-files.d.ts +29 -0
  588. package/dist/runtime/mlx/model-files.js +82 -0
  589. package/dist/runtime/mlx/model-files.js.map +1 -0
  590. package/dist/runtime/mlx/runtime.d.ts +77 -0
  591. package/dist/runtime/mlx/runtime.js +223 -0
  592. package/dist/runtime/mlx/runtime.js.map +1 -0
  593. package/dist/runtime/mlx/shard-repair.d.ts +25 -0
  594. package/dist/runtime/mlx/shard-repair.js +44 -0
  595. package/dist/runtime/mlx/shard-repair.js.map +1 -0
  596. package/dist/runtime/shared/env.d.ts +49 -0
  597. package/dist/runtime/shared/env.js +155 -0
  598. package/dist/runtime/shared/env.js.map +1 -0
  599. package/dist/runtime/shared/external-sessions.d.ts +67 -0
  600. package/dist/runtime/shared/external-sessions.js +155 -0
  601. package/dist/runtime/shared/external-sessions.js.map +1 -0
  602. package/dist/runtime/shared/index.d.ts +17 -0
  603. package/dist/runtime/shared/index.js +18 -0
  604. package/dist/runtime/shared/index.js.map +1 -0
  605. package/dist/runtime/shared/load-cancel.d.ts +45 -0
  606. package/dist/runtime/shared/load-cancel.js +95 -0
  607. package/dist/runtime/shared/load-cancel.js.map +1 -0
  608. package/dist/runtime/shared/local-runtime.d.ts +68 -0
  609. package/dist/runtime/shared/local-runtime.js +12 -0
  610. package/dist/runtime/shared/local-runtime.js.map +1 -0
  611. package/dist/runtime/shared/log-stream.d.ts +4 -0
  612. package/dist/runtime/shared/log-stream.js +28 -0
  613. package/dist/runtime/shared/log-stream.js.map +1 -0
  614. package/dist/runtime/shared/paths.d.ts +21 -0
  615. package/dist/runtime/shared/paths.js +63 -0
  616. package/dist/runtime/shared/paths.js.map +1 -0
  617. package/dist/runtime/shared/ports.d.ts +26 -0
  618. package/dist/runtime/shared/ports.js +45 -0
  619. package/dist/runtime/shared/ports.js.map +1 -0
  620. package/dist/runtime/shared/process.d.ts +95 -0
  621. package/dist/runtime/shared/process.js +224 -0
  622. package/dist/runtime/shared/process.js.map +1 -0
  623. package/dist/runtime/shared/sidecar.d.ts +86 -0
  624. package/dist/runtime/shared/sidecar.js +214 -0
  625. package/dist/runtime/shared/sidecar.js.map +1 -0
  626. package/dist/server/clients.d.ts +40 -0
  627. package/dist/server/clients.js +74 -0
  628. package/dist/server/clients.js.map +1 -0
  629. package/dist/server/control/index.d.ts +12 -0
  630. package/dist/server/control/index.js +12 -0
  631. package/dist/server/control/index.js.map +1 -0
  632. package/dist/server/control/router.d.ts +9 -0
  633. package/dist/server/control/router.js +61 -0
  634. package/dist/server/control/router.js.map +1 -0
  635. package/dist/server/control/routes/backends.d.ts +4 -0
  636. package/dist/server/control/routes/backends.js +47 -0
  637. package/dist/server/control/routes/backends.js.map +1 -0
  638. package/dist/server/control/routes/clients.d.ts +4 -0
  639. package/dist/server/control/routes/clients.js +30 -0
  640. package/dist/server/control/routes/clients.js.map +1 -0
  641. package/dist/server/control/routes/cloud.d.ts +4 -0
  642. package/dist/server/control/routes/cloud.js +32 -0
  643. package/dist/server/control/routes/cloud.js.map +1 -0
  644. package/dist/server/control/routes/diffusion-video.d.ts +10 -0
  645. package/dist/server/control/routes/diffusion-video.js +33 -0
  646. package/dist/server/control/routes/diffusion-video.js.map +1 -0
  647. package/dist/server/control/routes/diffusion.d.ts +15 -0
  648. package/dist/server/control/routes/diffusion.js +71 -0
  649. package/dist/server/control/routes/diffusion.js.map +1 -0
  650. package/dist/server/control/routes/disk.d.ts +4 -0
  651. package/dist/server/control/routes/disk.js +11 -0
  652. package/dist/server/control/routes/disk.js.map +1 -0
  653. package/dist/server/control/routes/external-sessions.d.ts +4 -0
  654. package/dist/server/control/routes/external-sessions.js +27 -0
  655. package/dist/server/control/routes/external-sessions.js.map +1 -0
  656. package/dist/server/control/routes/hardware.d.ts +4 -0
  657. package/dist/server/control/routes/hardware.js +14 -0
  658. package/dist/server/control/routes/hardware.js.map +1 -0
  659. package/dist/server/control/routes/lifecycle.d.ts +12 -0
  660. package/dist/server/control/routes/lifecycle.js +67 -0
  661. package/dist/server/control/routes/lifecycle.js.map +1 -0
  662. package/dist/server/control/routes/models.d.ts +7 -0
  663. package/dist/server/control/routes/models.js +59 -0
  664. package/dist/server/control/routes/models.js.map +1 -0
  665. package/dist/server/control/routes/public-server.d.ts +4 -0
  666. package/dist/server/control/routes/public-server.js +30 -0
  667. package/dist/server/control/routes/public-server.js.map +1 -0
  668. package/dist/server/control/routes/remote-access.d.ts +7 -0
  669. package/dist/server/control/routes/remote-access.js +16 -0
  670. package/dist/server/control/routes/remote-access.js.map +1 -0
  671. package/dist/server/control/routes/settings.d.ts +4 -0
  672. package/dist/server/control/routes/settings.js +58 -0
  673. package/dist/server/control/routes/settings.js.map +1 -0
  674. package/dist/server/control/routes/telemetry.d.ts +7 -0
  675. package/dist/server/control/routes/telemetry.js +46 -0
  676. package/dist/server/control/routes/telemetry.js.map +1 -0
  677. package/dist/server/control/server.d.ts +26 -0
  678. package/dist/server/control/server.js +111 -0
  679. package/dist/server/control/server.js.map +1 -0
  680. package/dist/server/control/types.d.ts +271 -0
  681. package/dist/server/control/types.js +6 -0
  682. package/dist/server/control/types.js.map +1 -0
  683. package/dist/server/http.d.ts +62 -0
  684. package/dist/server/http.js +220 -0
  685. package/dist/server/http.js.map +1 -0
  686. package/dist/server/index.d.ts +9 -0
  687. package/dist/server/index.js +10 -0
  688. package/dist/server/index.js.map +1 -0
  689. package/dist/server/public/ctx.d.ts +23 -0
  690. package/dist/server/public/ctx.js +42 -0
  691. package/dist/server/public/ctx.js.map +1 -0
  692. package/dist/server/public/dynamic-hosts.d.ts +40 -0
  693. package/dist/server/public/dynamic-hosts.js +117 -0
  694. package/dist/server/public/dynamic-hosts.js.map +1 -0
  695. package/dist/server/public/errors.d.ts +36 -0
  696. package/dist/server/public/errors.js +120 -0
  697. package/dist/server/public/errors.js.map +1 -0
  698. package/dist/server/public/exchange.d.ts +42 -0
  699. package/dist/server/public/exchange.js +85 -0
  700. package/dist/server/public/exchange.js.map +1 -0
  701. package/dist/server/public/forward.d.ts +53 -0
  702. package/dist/server/public/forward.js +448 -0
  703. package/dist/server/public/forward.js.map +1 -0
  704. package/dist/server/public/gates.d.ts +49 -0
  705. package/dist/server/public/gates.js +181 -0
  706. package/dist/server/public/gates.js.map +1 -0
  707. package/dist/server/public/images-params.d.ts +50 -0
  708. package/dist/server/public/images-params.js +162 -0
  709. package/dist/server/public/images-params.js.map +1 -0
  710. package/dist/server/public/images.d.ts +12 -0
  711. package/dist/server/public/images.js +96 -0
  712. package/dist/server/public/images.js.map +1 -0
  713. package/dist/server/public/index.d.ts +58 -0
  714. package/dist/server/public/index.js +253 -0
  715. package/dist/server/public/index.js.map +1 -0
  716. package/dist/server/public/listing.d.ts +27 -0
  717. package/dist/server/public/listing.js +116 -0
  718. package/dist/server/public/listing.js.map +1 -0
  719. package/dist/server/public/responses.d.ts +11 -0
  720. package/dist/server/public/responses.js +158 -0
  721. package/dist/server/public/responses.js.map +1 -0
  722. package/dist/server/public/sse.d.ts +33 -0
  723. package/dist/server/public/sse.js +48 -0
  724. package/dist/server/public/sse.js.map +1 -0
  725. package/dist/server/public/static-assets.generated.d.ts +3 -0
  726. package/dist/server/public/static-assets.generated.js +6 -0
  727. package/dist/server/public/static-assets.generated.js.map +1 -0
  728. package/dist/server/public/static.d.ts +13 -0
  729. package/dist/server/public/static.js +75 -0
  730. package/dist/server/public/static.js.map +1 -0
  731. package/dist/server/public/subscription.d.ts +14 -0
  732. package/dist/server/public/subscription.js +56 -0
  733. package/dist/server/public/subscription.js.map +1 -0
  734. package/dist/server/public/telemetry.d.ts +65 -0
  735. package/dist/server/public/telemetry.js +284 -0
  736. package/dist/server/public/telemetry.js.map +1 -0
  737. package/dist/server/public/trace.d.ts +66 -0
  738. package/dist/server/public/trace.js +223 -0
  739. package/dist/server/public/trace.js.map +1 -0
  740. package/dist/server/public/types.d.ts +131 -0
  741. package/dist/server/public/types.js +9 -0
  742. package/dist/server/public/types.js.map +1 -0
  743. package/dist/server/public/videos-params.d.ts +95 -0
  744. package/dist/server/public/videos-params.js +220 -0
  745. package/dist/server/public/videos-params.js.map +1 -0
  746. package/dist/server/public/videos.d.ts +16 -0
  747. package/dist/server/public/videos.js +188 -0
  748. package/dist/server/public/videos.js.map +1 -0
  749. package/dist/server/public/wire.d.ts +53 -0
  750. package/dist/server/public/wire.js +174 -0
  751. package/dist/server/public/wire.js.map +1 -0
  752. package/dist/server/shims/anthropic.d.ts +52 -0
  753. package/dist/server/shims/anthropic.js +519 -0
  754. package/dist/server/shims/anthropic.js.map +1 -0
  755. package/dist/server/shims/chat-to-responses.d.ts +113 -0
  756. package/dist/server/shims/chat-to-responses.js +557 -0
  757. package/dist/server/shims/chat-to-responses.js.map +1 -0
  758. package/dist/server/shims/index.d.ts +8 -0
  759. package/dist/server/shims/index.js +9 -0
  760. package/dist/server/shims/index.js.map +1 -0
  761. package/dist/server/shims/json.d.ts +10 -0
  762. package/dist/server/shims/json.js +78 -0
  763. package/dist/server/shims/json.js.map +1 -0
  764. package/dist/server/shims/responses.d.ts +79 -0
  765. package/dist/server/shims/responses.js +543 -0
  766. package/dist/server/shims/responses.js.map +1 -0
  767. package/dist/server/state-file.d.ts +44 -0
  768. package/dist/server/state-file.js +107 -0
  769. package/dist/server/state-file.js.map +1 -0
  770. package/dist/settings/import.d.ts +61 -0
  771. package/dist/settings/import.js +104 -0
  772. package/dist/settings/import.js.map +1 -0
  773. package/dist/settings/index.d.ts +11 -0
  774. package/dist/settings/index.js +12 -0
  775. package/dist/settings/index.js.map +1 -0
  776. package/dist/settings/schema/foundation-models.json +1 -0
  777. package/dist/settings/schema/llamacpp-upstream.json +489 -0
  778. package/dist/settings/schema/llamacpp.json +475 -0
  779. package/dist/settings/schema/mlx.json +136 -0
  780. package/dist/settings/schema.d.ts +35 -0
  781. package/dist/settings/schema.js +196 -0
  782. package/dist/settings/schema.js.map +1 -0
  783. package/dist/settings/store.d.ts +168 -0
  784. package/dist/settings/store.js +350 -0
  785. package/dist/settings/store.js.map +1 -0
  786. package/dist/speculative/chat-template-overrides.d.ts +35 -0
  787. package/dist/speculative/chat-template-overrides.js +142 -0
  788. package/dist/speculative/chat-template-overrides.js.map +1 -0
  789. package/dist/speculative/dflash-registry.d.ts +50 -0
  790. package/dist/speculative/dflash-registry.js +258 -0
  791. package/dist/speculative/dflash-registry.js.map +1 -0
  792. package/dist/speculative/gemma-mtp-registry.d.ts +48 -0
  793. package/dist/speculative/gemma-mtp-registry.js +79 -0
  794. package/dist/speculative/gemma-mtp-registry.js.map +1 -0
  795. package/dist/speculative/index.d.ts +18 -0
  796. package/dist/speculative/index.js +19 -0
  797. package/dist/speculative/index.js.map +1 -0
  798. package/dist/speculative/mlx-dflash-registry.d.ts +39 -0
  799. package/dist/speculative/mlx-dflash-registry.js +230 -0
  800. package/dist/speculative/mlx-dflash-registry.js.map +1 -0
  801. package/dist/speculative/mlx-eagle3-registry.d.ts +24 -0
  802. package/dist/speculative/mlx-eagle3-registry.js +81 -0
  803. package/dist/speculative/mlx-eagle3-registry.js.map +1 -0
  804. package/dist/speculative/mlx-mtp-registry.d.ts +31 -0
  805. package/dist/speculative/mlx-mtp-registry.js +139 -0
  806. package/dist/speculative/mlx-mtp-registry.js.map +1 -0
  807. package/dist/speculative/transcription-registry.d.ts +72 -0
  808. package/dist/speculative/transcription-registry.js +94 -0
  809. package/dist/speculative/transcription-registry.js.map +1 -0
  810. package/dist/telemetry/config.d.ts +38 -0
  811. package/dist/telemetry/config.js +44 -0
  812. package/dist/telemetry/config.js.map +1 -0
  813. package/dist/telemetry/consent.d.ts +21 -0
  814. package/dist/telemetry/consent.js +35 -0
  815. package/dist/telemetry/consent.js.map +1 -0
  816. package/dist/telemetry/core-reporter.d.ts +47 -0
  817. package/dist/telemetry/core-reporter.js +72 -0
  818. package/dist/telemetry/core-reporter.js.map +1 -0
  819. package/dist/telemetry/daemon.d.ts +40 -0
  820. package/dist/telemetry/daemon.js +67 -0
  821. package/dist/telemetry/daemon.js.map +1 -0
  822. package/dist/telemetry/dsn.d.ts +15 -0
  823. package/dist/telemetry/dsn.js +32 -0
  824. package/dist/telemetry/dsn.js.map +1 -0
  825. package/dist/telemetry/envelope.d.ts +97 -0
  826. package/dist/telemetry/envelope.js +95 -0
  827. package/dist/telemetry/envelope.js.map +1 -0
  828. package/dist/telemetry/index.d.ts +18 -0
  829. package/dist/telemetry/index.js +19 -0
  830. package/dist/telemetry/index.js.map +1 -0
  831. package/dist/telemetry/policy.d.ts +39 -0
  832. package/dist/telemetry/policy.js +142 -0
  833. package/dist/telemetry/policy.js.map +1 -0
  834. package/dist/telemetry/reporter.d.ts +80 -0
  835. package/dist/telemetry/reporter.js +0 -0
  836. package/dist/telemetry/reporter.js.map +1 -0
  837. package/dist/telemetry/reports.d.ts +68 -0
  838. package/dist/telemetry/reports.js +212 -0
  839. package/dist/telemetry/reports.js.map +1 -0
  840. package/dist/telemetry/scrub.d.ts +19 -0
  841. package/dist/telemetry/scrub.js +75 -0
  842. package/dist/telemetry/scrub.js.map +1 -0
  843. package/dist/telemetry/stack.d.ts +21 -0
  844. package/dist/telemetry/stack.js +68 -0
  845. package/dist/telemetry/stack.js.map +1 -0
  846. package/dist/telemetry/store.d.ts +17 -0
  847. package/dist/telemetry/store.js +51 -0
  848. package/dist/telemetry/store.js.map +1 -0
  849. package/dist/telemetry/subscribe.d.ts +13 -0
  850. package/dist/telemetry/subscribe.js +19 -0
  851. package/dist/telemetry/subscribe.js.map +1 -0
  852. package/dist/telemetry/types.d.ts +40 -0
  853. package/dist/telemetry/types.js +2 -0
  854. package/dist/telemetry/types.js.map +1 -0
  855. package/dist/util/index.d.ts +5 -0
  856. package/dist/util/index.js +6 -0
  857. package/dist/util/index.js.map +1 -0
  858. package/dist/util/rust-number.d.ts +27 -0
  859. package/dist/util/rust-number.js +101 -0
  860. package/dist/util/rust-number.js.map +1 -0
  861. package/dist/version.d.ts +2 -0
  862. package/dist/version.js +3 -0
  863. package/dist/version.js.map +1 -0
  864. package/package.json +86 -0
  865. package/src/settings/schema/foundation-models.json +1 -0
  866. package/src/settings/schema/llamacpp-upstream.json +489 -0
  867. package/src/settings/schema/llamacpp.json +475 -0
  868. package/src/settings/schema/mlx.json +136 -0
@@ -0,0 +1,95 @@
1
+ /** Resolve the installed backend a runtime may actually execute on this host. */
2
+ import { AtomicCoreError } from '../../contracts/index.js';
3
+ import { isConcreteVersionBackend } from '../../runtime/llamacpp/index.js';
4
+ import { canonicalProviderDefaults } from '../../settings/index.js';
5
+ import { discoverBackendBinary, resolveBackendExe, scanInstalledBackends } from '../installed/index.js';
6
+ import { determineBestBackend, determineSupportedBackends, filterBackendsBySupport, getSupportedFeatures, } from '../select/index.js';
7
+ import { determineBestTurboquantBackend, determineTurboquantSupportedBackends, filterTurboquantBackendsBySupport, getTurboquantSupportedFeatures, probeLinuxRocmHost, } from '../turboquant.js';
8
+ /** Provider settings plus the engine-level keys the load plan reads. */
9
+ export async function readRuntimeSettings(settings, provider, layout, hardware) {
10
+ const values = { ...canonicalProviderDefaults(provider), ...settings.get(provider) };
11
+ const configured = String(values['version_backend'] ?? '').trim();
12
+ if (!isConcreteVersionBackend(configured)) {
13
+ const discovered = await selectInstalledBackend(layout, provider, hardware);
14
+ if (discovered)
15
+ values['version_backend'] = discovered.version_backend;
16
+ }
17
+ return {
18
+ config: values,
19
+ engine: {
20
+ timeout: values['timeout'] ?? 600,
21
+ llamacpp_env: values['llamacpp_env'] ?? '',
22
+ ...(values['dflash_block_size'] !== undefined
23
+ ? { dflash_block_size: values['dflash_block_size'] }
24
+ : {}),
25
+ },
26
+ };
27
+ }
28
+ /**
29
+ * The installed backend a load runs on: the configured pack when it is on disk, otherwise the best
30
+ * compatible installed one. `repair` runs on the pack that will be used before it is returned — the
31
+ * TurboQuant provider puts a missing CUDA runtime back there, as its extension did before every load.
32
+ */
33
+ export async function ensureBackend(layout, provider, backend, version, hardware, hostArch = process.arch, repair) {
34
+ const exact = await resolveBackendExe(layout, provider, version, backend);
35
+ if (exact) {
36
+ await repair?.(backend, version);
37
+ return { version, backend, exePath: exact };
38
+ }
39
+ const discovered = await selectInstalledBackend(layout, provider, hardware, hostArch);
40
+ if (discovered) {
41
+ await repair?.(discovered.backend, discovered.version);
42
+ return { version: discovered.version, backend: discovered.backend, exePath: discovered.path };
43
+ }
44
+ throw new AtomicCoreError('BINARY_NOT_FOUND', 'No llama.cpp backend is installed in this data folder.', `looked for ${version}/${backend} under ${layout.provider(provider).backendsDir}`);
45
+ }
46
+ /** Choose among installed packs using the app-injected hardware facts, never directory order. */
47
+ export async function selectInstalledBackend(layout, provider, hardware, hostArch = process.arch, probeRocm = probeLinuxRocmHost) {
48
+ const installed = await scanInstalledBackends(layout, provider);
49
+ if (installed.length === 0)
50
+ return discoverBackendBinary(layout, provider);
51
+ const override = hardware.get();
52
+ const osType = override?.os_type ?? platformOsType(process.platform);
53
+ const arch = platformArch(hostArch);
54
+ const gpus = hardware.gpus([]);
55
+ let selected;
56
+ if (provider === 'llamacpp') {
57
+ // The fork's own matrix, ids and priorities: the upstream ones filter every TurboQuant pack out.
58
+ const rocm = osType === 'linux' ? await probeRocm() : undefined;
59
+ const features = getTurboquantSupportedFeatures(osType, hardware.cpuExtensions([]), gpus, rocm);
60
+ const supported = determineTurboquantSupportedBackends(osType, arch, features);
61
+ const compatible = filterTurboquantBackendsBySupport(installed, supported);
62
+ if (compatible.length === 0)
63
+ return undefined;
64
+ selected = determineBestTurboquantBackend(compatible, gpus);
65
+ }
66
+ else {
67
+ const features = getSupportedFeatures(osType, hardware.cpuExtensions([]), gpus);
68
+ const supported = determineSupportedBackends(osType, arch, features);
69
+ const compatible = filterBackendsBySupport(installed, supported, osType);
70
+ if (compatible.length === 0)
71
+ return undefined;
72
+ selected = determineBestBackend(compatible, gpus);
73
+ }
74
+ const [version, backend] = selected.split('/');
75
+ if (!version || !backend)
76
+ return undefined;
77
+ const path = await resolveBackendExe(layout, provider, version, backend);
78
+ return path ? { path, version_backend: selected, version, backend } : undefined;
79
+ }
80
+ function platformOsType(platform) {
81
+ if (platform === 'win32')
82
+ return 'windows';
83
+ if (platform === 'darwin')
84
+ return 'macos';
85
+ return platform;
86
+ }
87
+ /** Node's `process.arch` in the Rust spelling the backend and CPU policies expect (`x64` → `x86_64`). */
88
+ export function platformArch(arch) {
89
+ if (arch === 'x64')
90
+ return 'x86_64';
91
+ if (arch === 'ia32')
92
+ return 'x86';
93
+ return arch;
94
+ }
95
+ //# sourceMappingURL=runtime-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-backend.js","sourceRoot":"","sources":["../../../src/backend/install/runtime-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Installing and updating llama.cpp backends (PLAN.md §4, stage 3c).
3
+ *
4
+ * The pieces this composes already existed — the manifest reader, the archive URL builder, the
5
+ * downloader, the extractor, the installed-pack scanner. What was missing is the thing that puts
6
+ * them in order and gives the result the names the app's "Backend updater" screen already calls.
7
+ *
8
+ * Two properties it owes the UI.
9
+ *
10
+ * *One task id per install, and it is the download's.* The app's progress bar listens on an event
11
+ * named after the task, and a backend install that invented a second id mid-flight would leave the
12
+ * bar stuck at whatever it last saw. So the caller names the task and everything — the archive, the
13
+ * CUDA runtime that some Windows backends need alongside it — reports under that one name.
14
+ *
15
+ * *A failed install leaves nothing installed.* An extracted-but-incomplete pack is worse than no
16
+ * pack: `selectInstalledBackend` would find it, the runtime would spawn from it, and the failure
17
+ * would surface as a model that will not load rather than as a download that did not finish. The
18
+ * install therefore extracts into a temporary directory and moves it into place only once every
19
+ * part has arrived.
20
+ */
21
+ import type { LocalProviderId } from '../../contracts/index.js';
22
+ import type { DataLayout } from '../../config/index.js';
23
+ import type { Downloader, ProxyConfig } from '../../downloads/index.js';
24
+ import type { InstalledBackendPack, UpstreamManifest } from '../types.js';
25
+ import type { OptimalBackendStore, OptimalState, OptimalUpdate } from '../optimal/index.js';
26
+ /** Same launch gate as the former macOS extension, run on staging before replacing a working pack. */
27
+ export declare function verifyMacBackendBinary(staging: string, version: string): Promise<void>;
28
+ /** The server executable inside a pack; the only name `normalizeBackendLayout` looks for. */
29
+ export declare function backendExeName(osType: string): string;
30
+ export interface BackendServiceDeps {
31
+ layout: DataLayout;
32
+ provider: LocalProviderId;
33
+ downloader: Downloader;
34
+ /** The live manifest for this platform, or `null` when it could not be fetched. */
35
+ readManifest: (proxy?: ProxyConfig | null) => Promise<UpstreamManifest | null>;
36
+ optimalStore?: OptimalBackendStore;
37
+ /** Decides the executable name inside a pack (`llama-server` vs `llama-server.exe`). */
38
+ platform?: NodeJS.Platform;
39
+ /** Test seam for the staging directory's name. */
40
+ now?: () => number;
41
+ /** Test seam for the macOS launch gate. */
42
+ verifyMacBackend?: (staging: string, version: string) => Promise<void>;
43
+ log?: (message: string) => void;
44
+ }
45
+ export interface InstallBackendOptions {
46
+ /** Event/task name the progress is reported under. The caller owns it; see the module note. */
47
+ taskId: string;
48
+ /** Reinstall even when the pack is already on disk. */
49
+ force?: boolean;
50
+ /** Current app proxy policy; never persisted. */
51
+ proxy?: ProxyConfig | null;
52
+ /**
53
+ * TurboQuant only: the asset the release index names for this pair. Without it the index cache on
54
+ * disk is read, then the fork's naming convention is used.
55
+ */
56
+ assetName?: string;
57
+ }
58
+ export interface InstallBackendResult {
59
+ version: string;
60
+ backend: string;
61
+ /** `false` when the pack was already installed and `force` was not set. */
62
+ installed: boolean;
63
+ path: string;
64
+ }
65
+ export declare class BackendService {
66
+ private readonly deps;
67
+ constructor(deps: BackendServiceDeps);
68
+ /**
69
+ * Every backend pack on disk — what the updater screen lists.
70
+ *
71
+ * `currentVersionBackend` decides which row is marked as the one in use; the caller passes what
72
+ * the provider's settings say, because the service has no opinion about which backend is selected.
73
+ */
74
+ listInstalled(currentVersionBackend?: string): Promise<InstalledBackendPack[]>;
75
+ isInstalled(version: string, backend: string): Promise<boolean>;
76
+ /**
77
+ * Download and unpack a backend.
78
+ *
79
+ * Idempotent by default: a pack already on disk is reported as `installed: false` rather than
80
+ * downloaded again, because the updater screen calls this for every row it offers and a user
81
+ * clicking twice should not re-fetch half a gigabyte.
82
+ */
83
+ install(version: string, backend: string, options: InstallBackendOptions): Promise<InstallBackendResult>;
84
+ /**
85
+ * An upstream pack: from the signed mirror when the manifest lists this exact asset, otherwise the
86
+ * ggml-org CDN without a checksum — the app's behaviour, and the reason a build the mirror has not
87
+ * caught up with still installs; a wrong tag then fails as a 404 during the download. Some Windows
88
+ * CUDA backends ship without the CUDA runtime, which is fetched beside them under the same task,
89
+ * because to the user this is one install with one progress bar.
90
+ */
91
+ private upstreamDownloads;
92
+ /**
93
+ * A TurboQuant pack from the fork's release CDN, under the asset name its release index gives.
94
+ * The index carries sizes and hashes, but the extension never checked them; neither does this, so
95
+ * a republished asset installs the same way it did.
96
+ */
97
+ private turboquantDownloads;
98
+ /**
99
+ * The optimal-backend record for a provider, or `null` when nothing has been detected yet.
100
+ *
101
+ * The app used to keep this in `localStorage`, where the CLI could not see it. It now lives beside
102
+ * the data it describes (`<data>/atomic-core/optimal-backend.json`, PLAN.md §3.4) and is keyed by
103
+ * provider, because the two llama.cpp providers can be on different builds. Moving the data folder
104
+ * to new hardware is not detected by this format; that requires a separate invalidation rule.
105
+ */
106
+ getOptimalCache(): Promise<OptimalState>;
107
+ /**
108
+ * Store a detection result. Writing `null` forgets it, which is what a "Find optimal backend"
109
+ * that finds nothing must do — leaving the previous answer would keep recommending a backend for
110
+ * hardware that is no longer there.
111
+ */
112
+ setOptimalCache(record: OptimalState['optimal'], expectedRevision: number): Promise<OptimalUpdate>;
113
+ /** Remove an installed pack. Silent when it is not there — the end state is what was asked for. */
114
+ /**
115
+ * Delete a pack. Refuses ids that would leave the backends directory and the pack the provider's
116
+ * settings select: the app's extensions checked this themselves, and the CLI never did.
117
+ */
118
+ remove(version: string, backend: string, currentVersionBackend?: string): Promise<boolean>;
119
+ }
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Installing and updating llama.cpp backends (PLAN.md §4, stage 3c).
3
+ *
4
+ * The pieces this composes already existed — the manifest reader, the archive URL builder, the
5
+ * downloader, the extractor, the installed-pack scanner. What was missing is the thing that puts
6
+ * them in order and gives the result the names the app's "Backend updater" screen already calls.
7
+ *
8
+ * Two properties it owes the UI.
9
+ *
10
+ * *One task id per install, and it is the download's.* The app's progress bar listens on an event
11
+ * named after the task, and a backend install that invented a second id mid-flight would leave the
12
+ * bar stuck at whatever it last saw. So the caller names the task and everything — the archive, the
13
+ * CUDA runtime that some Windows backends need alongside it — reports under that one name.
14
+ *
15
+ * *A failed install leaves nothing installed.* An extracted-but-incomplete pack is worse than no
16
+ * pack: `selectInstalledBackend` would find it, the runtime would spawn from it, and the failure
17
+ * would surface as a model that will not load rather than as a download that did not finish. The
18
+ * install therefore extracts into a temporary directory and moves it into place only once every
19
+ * part has arrived.
20
+ */
21
+ import { chmod, mkdir, readdir, rename, rm } from 'node:fs/promises';
22
+ import { execFile } from 'node:child_process';
23
+ import { promisify } from 'node:util';
24
+ import { join } from 'node:path';
25
+ import { validateProxyConfig } from '../../downloads/index.js';
26
+ import { extractArchive, normalizeBackendLayout } from '../../downloads/index.js';
27
+ import { getBackendArchiveName, getCudartArchiveName, getCudartDownloadUrl, resolveBackendArchiveSource, } from '../catalog/index.js';
28
+ import { deletableBackendPack, getBackendDir, listInstalledBackendPacks } from '../installed/index.js';
29
+ import { scanInstalledBackends } from '../installed/index.js';
30
+ import { llamaServerExeName } from '../../config/index.js';
31
+ import { ensureTurboquantCudart, readTurboquantIndexedAsset, turboquantArchiveUrl } from '../turboquant.js';
32
+ import { parseBackendVersion, parseBinaryVersion } from '../version.js';
33
+ const execFileAsync = promisify(execFile);
34
+ /** Same launch gate as the former macOS extension, run on staging before replacing a working pack. */
35
+ export async function verifyMacBackendBinary(staging, version) {
36
+ const bin = join(staging, 'build', 'bin');
37
+ // The former Rust gate made every build/bin file executable, not just the main server.
38
+ for (const entry of await readdir(bin, { withFileTypes: true })) {
39
+ if (entry.isFile())
40
+ await chmod(join(bin, entry.name), 0o755);
41
+ }
42
+ const executable = join(bin, 'llama-server');
43
+ const { stdout, stderr } = await execFileAsync(executable, ['--version'], { timeout: 15_000 });
44
+ const expected = parseBackendVersion(version);
45
+ if (expected !== 0 && parseBinaryVersion(`${stdout}\n${stderr}`) !== expected) {
46
+ throw new Error(`backend did not report build ${version}`);
47
+ }
48
+ }
49
+ /** The server executable inside a pack; the only name `normalizeBackendLayout` looks for. */
50
+ export function backendExeName(osType) {
51
+ return osType === 'windows' ? 'llama-server.exe' : 'llama-server';
52
+ }
53
+ export class BackendService {
54
+ deps;
55
+ constructor(deps) {
56
+ this.deps = deps;
57
+ }
58
+ /**
59
+ * Every backend pack on disk — what the updater screen lists.
60
+ *
61
+ * `currentVersionBackend` decides which row is marked as the one in use; the caller passes what
62
+ * the provider's settings say, because the service has no opinion about which backend is selected.
63
+ */
64
+ async listInstalled(currentVersionBackend = '') {
65
+ const entries = await scanInstalledBackends(this.deps.layout, this.deps.provider);
66
+ return listInstalledBackendPacks(this.deps.layout.provider(this.deps.provider), entries, currentVersionBackend);
67
+ }
68
+ async isInstalled(version, backend) {
69
+ const packs = await this.listInstalled();
70
+ return packs.some((pack) => pack.version === version && pack.backend === backend);
71
+ }
72
+ /**
73
+ * Download and unpack a backend.
74
+ *
75
+ * Idempotent by default: a pack already on disk is reported as `installed: false` rather than
76
+ * downloaded again, because the updater screen calls this for every row it offers and a user
77
+ * clicking twice should not re-fetch half a gigabyte.
78
+ */
79
+ async install(version, backend, options) {
80
+ if (options.proxy) {
81
+ const problem = validateProxyConfig(options.proxy);
82
+ if (problem)
83
+ throw new Error(problem);
84
+ }
85
+ const target = getBackendDir(this.deps.layout.provider(this.deps.provider), backend, version);
86
+ if (!options.force && (await this.isInstalled(version, backend))) {
87
+ return { version, backend, installed: false, path: target };
88
+ }
89
+ // Staging directory beside the target, so the move at the end is a rename on the same volume
90
+ // rather than a copy across one.
91
+ const staging = `${target}.incoming-${this.deps.now?.() ?? Date.now()}`;
92
+ const plan = this.deps.provider === 'llamacpp'
93
+ ? await this.turboquantDownloads(version, backend, staging, options)
94
+ : await this.upstreamDownloads(version, backend, staging, options);
95
+ await rm(staging, { recursive: true, force: true });
96
+ await mkdir(staging, { recursive: true });
97
+ try {
98
+ await this.deps.downloader.download(options.taskId, plan.items);
99
+ for (const archive of plan.archives) {
100
+ await extractArchive(archive, staging);
101
+ await rm(archive, { force: true });
102
+ }
103
+ await normalizeBackendLayout(staging, llamaServerExeName(this.deps.platform ?? process.platform));
104
+ if (this.deps.provider === 'llamacpp-upstream' &&
105
+ (this.deps.platform ?? process.platform) === 'darwin') {
106
+ try {
107
+ await (this.deps.verifyMacBackend ?? verifyMacBackendBinary)(staging, version);
108
+ }
109
+ catch (error) {
110
+ throw new Error(`The downloaded ${version}/${backend} backend failed its launch check (${String(error)}). Keeping the current backend.`);
111
+ }
112
+ }
113
+ await rm(target, { recursive: true, force: true });
114
+ await mkdir(join(target, '..'), { recursive: true });
115
+ await rename(staging, target);
116
+ }
117
+ catch (e) {
118
+ // Nothing half-installed survives: a partial pack would be picked up by backend selection and
119
+ // would fail later as a model that will not load.
120
+ await rm(staging, { recursive: true, force: true });
121
+ throw e;
122
+ }
123
+ if (this.deps.provider === 'llamacpp') {
124
+ // Some fork zips ship without the CUDA runtime. The extension repaired it after installing and
125
+ // only warned on failure: the pack may still run on a host with a CUDA toolkit.
126
+ await ensureTurboquantCudart(backend, target, options.taskId, {
127
+ layout: this.deps.layout,
128
+ downloader: this.deps.downloader,
129
+ ...(this.deps.platform ? { platform: this.deps.platform } : {}),
130
+ ...(options.proxy ? { proxy: options.proxy } : {}),
131
+ ...(this.deps.log ? { log: this.deps.log } : {}),
132
+ }).catch((e) => this.deps.log?.(`cudart repair for ${version}/${backend} failed: ${String(e)}`));
133
+ }
134
+ return { version, backend, installed: true, path: target };
135
+ }
136
+ /**
137
+ * An upstream pack: from the signed mirror when the manifest lists this exact asset, otherwise the
138
+ * ggml-org CDN without a checksum — the app's behaviour, and the reason a build the mirror has not
139
+ * caught up with still installs; a wrong tag then fails as a 404 during the download. Some Windows
140
+ * CUDA backends ship without the CUDA runtime, which is fetched beside them under the same task,
141
+ * because to the user this is one install with one progress bar.
142
+ */
143
+ async upstreamDownloads(version, backend, staging, options) {
144
+ const manifest = await this.deps.readManifest(options.proxy);
145
+ const source = resolveBackendArchiveSource(version, backend, manifest ?? undefined);
146
+ const archivePath = join(staging, getBackendArchiveName(version, backend));
147
+ const cudartName = getCudartArchiveName(backend);
148
+ const cudartUrl = getCudartDownloadUrl(version, backend);
149
+ const proxy = options.proxy ? { proxy: options.proxy } : {};
150
+ const items = [
151
+ {
152
+ url: source.url,
153
+ save_path: archivePath,
154
+ ...(source.sha256 ? { sha256: source.sha256 } : {}),
155
+ ...(source.size ? { size: source.size } : {}),
156
+ ...proxy,
157
+ },
158
+ ];
159
+ const archives = [archivePath];
160
+ if (cudartName && cudartUrl) {
161
+ items.push({ url: cudartUrl, save_path: join(staging, cudartName), ...proxy });
162
+ archives.push(join(staging, cudartName));
163
+ }
164
+ return { items, archives };
165
+ }
166
+ /**
167
+ * A TurboQuant pack from the fork's release CDN, under the asset name its release index gives.
168
+ * The index carries sizes and hashes, but the extension never checked them; neither does this, so
169
+ * a republished asset installs the same way it did.
170
+ */
171
+ async turboquantDownloads(version, backend, staging, options) {
172
+ const asset = options.assetName ?? (await readTurboquantIndexedAsset(this.deps.layout, version, backend));
173
+ const url = turboquantArchiveUrl(version, backend, asset, this.deps.platform);
174
+ const archivePath = join(staging, url.slice(url.lastIndexOf('/') + 1));
175
+ return {
176
+ items: [{ url, save_path: archivePath, ...(options.proxy ? { proxy: options.proxy } : {}) }],
177
+ archives: [archivePath],
178
+ };
179
+ }
180
+ /**
181
+ * The optimal-backend record for a provider, or `null` when nothing has been detected yet.
182
+ *
183
+ * The app used to keep this in `localStorage`, where the CLI could not see it. It now lives beside
184
+ * the data it describes (`<data>/atomic-core/optimal-backend.json`, PLAN.md §3.4) and is keyed by
185
+ * provider, because the two llama.cpp providers can be on different builds. Moving the data folder
186
+ * to new hardware is not detected by this format; that requires a separate invalidation rule.
187
+ */
188
+ async getOptimalCache() {
189
+ if (!this.deps.optimalStore)
190
+ throw new Error('Optimal-backend store is not configured');
191
+ return this.deps.optimalStore.get(this.deps.provider);
192
+ }
193
+ /**
194
+ * Store a detection result. Writing `null` forgets it, which is what a "Find optimal backend"
195
+ * that finds nothing must do — leaving the previous answer would keep recommending a backend for
196
+ * hardware that is no longer there.
197
+ */
198
+ async setOptimalCache(record, expectedRevision) {
199
+ if (!this.deps.optimalStore)
200
+ throw new Error('Optimal-backend store is not configured');
201
+ return this.deps.optimalStore.set(this.deps.provider, record, expectedRevision);
202
+ }
203
+ /** Remove an installed pack. Silent when it is not there — the end state is what was asked for. */
204
+ /**
205
+ * Delete a pack. Refuses ids that would leave the backends directory and the pack the provider's
206
+ * settings select: the app's extensions checked this themselves, and the CLI never did.
207
+ */
208
+ async remove(version, backend, currentVersionBackend = '') {
209
+ const pack = deletableBackendPack(currentVersionBackend, version, backend);
210
+ version = pack.version;
211
+ backend = pack.backend;
212
+ const target = getBackendDir(this.deps.layout.provider(this.deps.provider), backend, version);
213
+ const existed = await this.isInstalled(version, backend);
214
+ await rm(target, { recursive: true, force: true });
215
+ return existed;
216
+ }
217
+ }
218
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/backend/install/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Installed backend packs on disk: path and pack decisions, and the directory scan. */
2
+ export * from './installed.js';
3
+ export * from './scan.js';
@@ -0,0 +1,4 @@
1
+ /** Installed backend packs on disk: path and pack decisions, and the directory scan. */
2
+ export * from './installed.js';
3
+ export * from './scan.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backend/installed/index.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Installed backend packs on disk — the pure half. Port of `getBackendDir`, `getBackendExePath`,
3
+ * `isBackendInstalled`, `listInstalledBackendPacks`, `deleteBackendPack` (validation only),
4
+ * `backendTypeEquivalents`, `findCompatibleInstalledBackend` and `mergeBackendOptions` from
5
+ * `extensions/llamacpp-upstream-extension/src/backend.ts`, plus the `order` semantics of
6
+ * `get_local_installed_backends` and the library-name half of `is_cuda_installed` from `backend.rs`.
7
+ *
8
+ * Layout (PLAN.md §8.1): `<data>/<provider>/backends/<version>/<backend>/build/bin/llama-server`,
9
+ * legacy flat `<backend>/llama-server`. Directory scanning, `rm` and `stat` are phase 1
10
+ * (`store.ts`); this file only turns scan results into decisions and joins paths.
11
+ */
12
+ import type { ProviderPaths } from '../../config/index.js';
13
+ import type { BackendOption, BackendVersion, InstalledBackendPack } from '../types.js';
14
+ /** One `<version>/<backend>` directory as a scanner reports it. */
15
+ export interface InstalledBackendEntry {
16
+ version: string;
17
+ backend: string;
18
+ /** `build/bin/<exe>` or flat `<exe>` exists. */
19
+ hasExe: boolean;
20
+ /** Directory mtime, seconds since the epoch. */
21
+ mtimeSeconds?: number;
22
+ }
23
+ /**
24
+ * Rust `get_local_installed_backends` on scan results: only directories carrying the executable,
25
+ * names BOM-stripped and trimmed, `order` = mtime seconds as u32 (0 when unknown).
26
+ */
27
+ export declare function installedBackendsFromEntries(entries: readonly InstalledBackendEntry[]): BackendVersion[];
28
+ /** `<backendsDir>/<version>/<backend>`, both ids BOM-stripped. */
29
+ export declare function getBackendDir(paths: ProviderPaths, backend: string, version: string): string;
30
+ /** `[build/bin/<exe>, <exe>]` under the pack directory, per platform. */
31
+ export declare function backendExePathCandidates(paths: ProviderPaths, backend: string, version: string, platform: NodeJS.Platform): [string, string];
32
+ /**
33
+ * The executable path the app would launch: `build/bin/<exe>` when the pack has a `build/` directory,
34
+ * else the legacy flat `<exe>`. (The app checks for the directory, not the file.)
35
+ */
36
+ export declare function getBackendExePath(paths: ProviderPaths, backend: string, version: string, platform: NodeJS.Platform, exists: (path: string) => Promise<boolean>): Promise<string>;
37
+ /** Rust `is_backend_installed`: either candidate executable exists. */
38
+ export declare function isBackendInstalled(paths: ProviderPaths, backend: string, version: string, platform: NodeJS.Platform, exists: (path: string) => Promise<boolean>): Promise<boolean>;
39
+ /**
40
+ * Every installed build with its absolute path (for "reveal in file manager") and whether it is the
41
+ * selected one (which must not be deletable).
42
+ */
43
+ export declare function listInstalledBackendPacks(paths: ProviderPaths, installed: readonly BackendVersion[], currentVersionBackend: string): InstalledBackendPack[];
44
+ /**
45
+ * Validate a pack for deletion: both ids non-empty, free of path separators and not `.`/`..` (no
46
+ * escape from the backends directory),
47
+ * and not the selected build — deleting that would leave `version_backend` pointing at nothing and
48
+ * the next load would fail with `BINARY_NOT_FOUND` instead of anything actionable.
49
+ */
50
+ export declare function deletableBackendPack(currentVersionBackend: string, version: string, backend: string): {
51
+ version: string;
52
+ backend: string;
53
+ };
54
+ /**
55
+ * Ids treated as the same backend type (ATO-233): a tarball installed by its upstream file name sits
56
+ * on disk as `ubuntu-vulkan-x64` while the app stores `linux-vulkan-x64`.
57
+ */
58
+ export declare function backendTypeEquivalents(backendType: string): Set<string>;
59
+ /**
60
+ * Newest installed build of exactly this type (any release tag), by install `order`, or `null`.
61
+ * Never crosses types (cuda → cpu is a user choice). Fallback for a pinned tag that cannot be
62
+ * downloaded (ATO-179).
63
+ */
64
+ export declare function findCompatibleInstalledBackend(backendType: string, installed: readonly BackendVersion[]): BackendVersion | null;
65
+ /**
66
+ * Flatten the dropdown tiers (most-preferred first) into one list: first spelling of a value wins
67
+ * (keeps the richest label), blanks and BOM-only values drop, and `recommended` is forced to the
68
+ * front when absent — a recommendation the dropdown cannot offer is a dead end.
69
+ */
70
+ export declare function mergeBackendOptions(tiers: readonly (readonly BackendOption[])[], recommended?: BackendOption): BackendOption[];
71
+ /**
72
+ * CUDA runtime library a backend needs, by CUDA *major* (so a 13.x minor bump does not break the
73
+ * probe): `cudart64_{110,12,13}.dll` on Windows, `libcudart.so.{11.0,12,13}` on Linux; `null` for
74
+ * any other OS or major.
75
+ */
76
+ export declare function cudaRuntimeLibName(osType: string, version: string): string | null;
77
+ export interface CudaLibFs {
78
+ exists: (path: string) => Promise<boolean>;
79
+ mkdir: (path: string) => Promise<void>;
80
+ rename: (from: string, to: string) => Promise<void>;
81
+ }
82
+ /**
83
+ * Rust `is_cuda_installed`: the runtime library is present at `<backendDir>/build/bin/<lib>`, or it
84
+ * sits at the legacy `<data>/llamacpp/lib/<lib>` and is moved into place (creating `build/bin`;
85
+ * a failed `mkdir` is `IO_ERROR`, a failed `rename` is `false`). `false` for an unknown OS/major.
86
+ */
87
+ export declare function isCudaInstalled(input: {
88
+ backendDir: string;
89
+ version: string;
90
+ osType: string;
91
+ legacyLibDir: string;
92
+ fs: CudaLibFs;
93
+ }): Promise<boolean>;