@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 @@
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/diffusion/tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * State the diffusion module keeps for itself; nothing here crosses the wire. `state.rs` in
3
+ * `tauri-plugin-atomic-diffusion` (app commit `767ff6350`).
4
+ */
5
+ import type { DiffusionBackend, DiffusionEngineId, DiffusionFamilyDefaults, DiffusionFamilyRanges, DiffusionModality, DiffusionModelFiles, DiffusionOffloadPolicy } from '../contracts/index.js';
6
+ /**
7
+ * Everything needed to (re)spawn the server. Kept after a cancel or a crash took the process down,
8
+ * so the next job brings it back without the app repeating the load; cleared only by an unload.
9
+ */
10
+ export interface ServerSpec {
11
+ /** Directory holding `sd-server`. */
12
+ binaryDir: string;
13
+ engine: DiffusionEngineId;
14
+ backend: DiffusionBackend;
15
+ backendId: string;
16
+ tag: string;
17
+ modelId: string;
18
+ family: string;
19
+ modality: DiffusionModality;
20
+ displayName: string;
21
+ files: DiffusionModelFiles;
22
+ defaults: DiffusionFamilyDefaults;
23
+ ranges: DiffusionFamilyRanges;
24
+ offload: DiffusionOffloadPolicy;
25
+ threads?: number;
26
+ /** Appended last: sd.cpp's argument parser is last-wins. */
27
+ extraArgs: string[];
28
+ startupTimeoutMs: number;
29
+ /** True once the ggml-abort recovery moved everything to the CPU backend. */
30
+ cpuFallback: boolean;
31
+ }
32
+ /** The engine's generation modes, as `supported_modes` names them. */
33
+ export type SdMode = 'img_gen' | 'vid_gen';
34
+ /** What `GET /sdcpp/v1/capabilities` said after the server came up. */
35
+ export interface ServerCapabilities {
36
+ /** `features_by_mode.img_gen.cancel_generating`. */
37
+ cancelGenerating: boolean;
38
+ imgGenDefaults?: unknown;
39
+ /** `supported_modes`; absent on builds that predate the field (image only). */
40
+ supportedModes?: SdMode[];
41
+ /** The `vid_gen` sections, present when the build reports that mode. */
42
+ vidGen?: {
43
+ cancelGenerating: boolean;
44
+ /** `output_formats_by_mode.vid_gen`; absent when the build does not list formats. */
45
+ outputFormats?: string[];
46
+ defaults?: unknown;
47
+ };
48
+ }
49
+ /** The mode a model of `modality` is served in. */
50
+ export declare const modeOf: (modality: DiffusionModality) => SdMode;
51
+ /** A request's images, already base64, so the argument builders stay free of I/O. */
52
+ export interface ResolvedInputs {
53
+ init?: string;
54
+ mask?: string;
55
+ /** For the reference workflows: the source first, then the extras. */
56
+ refs: string[];
57
+ /** Video: the last frame of an image-to-video request. */
58
+ end?: string;
59
+ }
60
+ export declare const DEFAULT_STARTUP_TIMEOUT_SECS = 600;
61
+ export declare const DEFAULT_IDLE_UNLOAD_SECS = 600;
62
+ export declare const MAX_BATCH = 4;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * State the diffusion module keeps for itself; nothing here crosses the wire. `state.rs` in
3
+ * `tauri-plugin-atomic-diffusion` (app commit `767ff6350`).
4
+ */
5
+ /** The mode a model of `modality` is served in. */
6
+ export const modeOf = (modality) => (modality === 'video' ? 'vid_gen' : 'img_gen');
7
+ export const DEFAULT_STARTUP_TIMEOUT_SECS = 600;
8
+ export const DEFAULT_IDLE_UNLOAD_SECS = 600;
9
+ export const MAX_BATCH = 4;
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/diffusion/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0DH,mDAAmD;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAA2B,EAAU,EAAE,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAY7G,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAA;AAC/C,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAA;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * What a generation request must satisfy before anything is spawned or evicted for it.
3
+ * `validate_request`, `check_source` and `strip_data_url` in `jobs.rs` of
4
+ * `tauri-plugin-atomic-diffusion` (app commit `ec1fd3ea7`); messages verbatim, checks in the same
5
+ * order, because the first failing one is what the user is shown.
6
+ */
7
+ import type { ImageGenerateRequest, VideoGenerateRequest } from '../contracts/index.js';
8
+ import type { ServerSpec } from './types.js';
9
+ export interface ValidateDeps {
10
+ /** Whether `path` is an existing regular file. */
11
+ isFile: (path: string) => Promise<boolean>;
12
+ }
13
+ /** `data:image/png;base64,....` → the base64 part. A plain payload is returned unchanged. */
14
+ export declare function stripDataUrl(value: string): string;
15
+ /**
16
+ * Canonical standard base64, which is what the plugin's decoder insisted on: the standard alphabet,
17
+ * no whitespace, padding present and exact, unused trailing bits zero. Checked without decoding,
18
+ * because a payload can be tens of megabytes.
19
+ */
20
+ export declare function isCanonicalBase64(payload: string): boolean;
21
+ export declare function validateRequest(request: ImageGenerateRequest, spec: ServerSpec, deps: ValidateDeps): Promise<void>;
22
+ /** How a family counts frames: valid counts are `k * step + offset`. */
23
+ export interface FrameRule {
24
+ step: number;
25
+ offset: number;
26
+ }
27
+ export declare function isValidFrameCount(frames: number, rule: FrameRule, range: [number, number]): boolean;
28
+ /** The largest valid frame count at most `wanted`; undefined when even the smallest is more. */
29
+ export declare function largestValidFrames(wanted: number, rule: FrameRule, range: [number, number]): number | undefined;
30
+ /** The valid frame count nearest to `wanted`, clamped into the range: what a length in seconds becomes. */
31
+ export declare function nearestValidFrames(wanted: number, rule: FrameRule, range: [number, number]): number;
32
+ /**
33
+ * A video request against the loaded video family: the image checks that apply, then the frame count
34
+ * on the family's lattice, the fixed frame rate, and the one workflow this build serves.
35
+ */
36
+ export declare function validateVideoRequest(request: VideoGenerateRequest, spec: ServerSpec, _deps: ValidateDeps): Promise<void>;
@@ -0,0 +1,166 @@
1
+ /**
2
+ * What a generation request must satisfy before anything is spawned or evicted for it.
3
+ * `validate_request`, `check_source` and `strip_data_url` in `jobs.rs` of
4
+ * `tauri-plugin-atomic-diffusion` (app commit `ec1fd3ea7`); messages verbatim, checks in the same
5
+ * order, because the first failing one is what the user is shown.
6
+ */
7
+ import { diffusionError } from './errors.js';
8
+ import { MAX_BATCH } from './types.js';
9
+ import { usesMask, usesReferences, videoWorkflowsForFamily, workflowOf, workflowsForSpec, } from './workflow.js';
10
+ /** `data:image/png;base64,....` → the base64 part. A plain payload is returned unchanged. */
11
+ export function stripDataUrl(value) {
12
+ if (!value.startsWith('data:'))
13
+ return value;
14
+ const rest = value.slice('data:'.length);
15
+ const comma = rest.indexOf(',');
16
+ return comma < 0 ? rest : rest.slice(comma + 1);
17
+ }
18
+ const BASE64_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
19
+ /**
20
+ * Canonical standard base64, which is what the plugin's decoder insisted on: the standard alphabet,
21
+ * no whitespace, padding present and exact, unused trailing bits zero. Checked without decoding,
22
+ * because a payload can be tens of megabytes.
23
+ */
24
+ export function isCanonicalBase64(payload) {
25
+ if (payload.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(payload))
26
+ return false;
27
+ const padding = payload.endsWith('==') ? 2 : payload.endsWith('=') ? 1 : 0;
28
+ if (padding === 0)
29
+ return true;
30
+ const last = BASE64_ALPHABET.indexOf(payload[payload.length - padding - 1]);
31
+ // Two padding characters leave 4 unused bits in the last sextet, one leaves 2.
32
+ return (last & (padding === 2 ? 0x0f : 0x03)) === 0;
33
+ }
34
+ /**
35
+ * A source must be present and usable: an existing file, or base64 that decodes. Refusing here
36
+ * keeps a bad input from evicting the chat model and spinning up the server for nothing.
37
+ */
38
+ async function checkSource(source, what, deps) {
39
+ if (source === undefined)
40
+ throw diffusionError('INVALID_REQUEST', `This workflow needs ${what}.`);
41
+ if ('path' in source) {
42
+ if (await deps.isFile(source.path))
43
+ return;
44
+ throw diffusionError('INVALID_REQUEST', 'The source image could not be found.', source.path);
45
+ }
46
+ const payload = stripDataUrl(source.base64);
47
+ if (payload === '' || !isCanonicalBase64(payload))
48
+ throw diffusionError('INVALID_REQUEST', 'The inline image is not valid base64.');
49
+ }
50
+ /** Width and height inside the family's range and on its grid; the message names the first offender. */
51
+ function checkDims(request, spec) {
52
+ const [minDim, maxDim] = spec.ranges.dims;
53
+ const multiple = Math.max(spec.ranges.dimMultiple, 1);
54
+ for (const [label, value] of [
55
+ ['width', request.width],
56
+ ['height', request.height],
57
+ ]) {
58
+ if (value < minDim || value > maxDim)
59
+ throw diffusionError('INVALID_DIMENSIONS', `${label} must be between ${minDim} and ${maxDim}.`, `${label}=${value}`);
60
+ if (value % multiple !== 0)
61
+ throw diffusionError('INVALID_DIMENSIONS', `${label} must be a multiple of ${multiple}.`, `${label}=${value}`);
62
+ }
63
+ }
64
+ function checkSteps(steps, spec) {
65
+ const [minSteps, maxSteps] = spec.ranges.steps;
66
+ if (steps < minSteps || steps > maxSteps)
67
+ throw diffusionError('INVALID_REQUEST', `Steps must be between ${minSteps} and ${maxSteps}.`, `steps=${steps}`);
68
+ }
69
+ export async function validateRequest(request, spec, deps) {
70
+ if (request.prompt.trim() === '')
71
+ throw diffusionError('INVALID_REQUEST', 'Enter a prompt.');
72
+ checkDims(request, spec);
73
+ // Qwen-Image past one megapixel faults the GPU on Metal instead of failing cleanly.
74
+ if (spec.backend === 'metal' &&
75
+ spec.family === 'qwen-image' &&
76
+ request.width * request.height > 1024 * 1024)
77
+ throw diffusionError('INVALID_DIMENSIONS', 'Qwen-Image is limited to about one megapixel on Apple GPUs. Choose a smaller resolution.', `${request.width}x${request.height} exceeds the Metal-safe pixel budget`);
78
+ checkSteps(request.steps, spec);
79
+ if (request.batchSize < 1 || request.batchSize > MAX_BATCH)
80
+ throw diffusionError('INVALID_REQUEST', `Batch size must be between 1 and ${MAX_BATCH}.`, `batchSize=${request.batchSize}`);
81
+ // Each image records `seed + index` as a double; past 2^53 that sum is rounded, and the recorded seed
82
+ // would no longer reproduce what sd.cpp (64-bit) generated. A negative seed asks for a random one.
83
+ if (request.seed !== undefined && request.seed >= 0) {
84
+ const highest = Number.MAX_SAFE_INTEGER - (request.batchSize - 1);
85
+ if (request.seed > highest)
86
+ throw diffusionError('INVALID_REQUEST', `The seed must be at most ${highest} for a batch of ${request.batchSize}.`, `seed=${request.seed}`);
87
+ }
88
+ if (!Number.isFinite(request.cfgScale) || request.cfgScale < 0)
89
+ throw diffusionError('INVALID_REQUEST', 'CFG scale must be a non-negative number.');
90
+ if (request.strength !== undefined && !(request.strength >= 0 && request.strength <= 1))
91
+ throw diffusionError('INVALID_REQUEST', 'Strength must be between 0 and 1.');
92
+ const workflow = workflowOf(request);
93
+ if (workflow === 'create')
94
+ return;
95
+ if (spec.family === 'qwen-image-2.1' && usesReferences(workflow) && spec.files.llmVision === undefined)
96
+ throw diffusionError('SIDE_FILE_MISSING', 'Qwen Image 2.1 editing needs its Qwen3-VL vision projector.', 'Load the model with llmVision so sd.cpp receives --llm_vision.');
97
+ if (!workflowsForSpec(spec).includes(workflow))
98
+ throw diffusionError('UNSUPPORTED_WORKFLOW', `This model cannot run the ${workflow} workflow.`, spec.family);
99
+ // Every workflow but Create starts from one source image; the reference workflows send it as the
100
+ // first reference.
101
+ await checkSource(request.initImage, 'a source image', deps);
102
+ if (usesMask(workflow))
103
+ await checkSource(request.maskImage, 'a mask', deps);
104
+ for (const extra of request.referenceImages ?? [])
105
+ await checkSource(extra, 'a reference image', deps);
106
+ }
107
+ export function isValidFrameCount(frames, rule, range) {
108
+ const [min, max] = range;
109
+ if (!Number.isInteger(frames) || frames < min || frames > max)
110
+ return false;
111
+ const step = Math.max(rule.step, 1);
112
+ return frames >= rule.offset && (frames - rule.offset) % step === 0;
113
+ }
114
+ /** The largest valid frame count at most `wanted`; undefined when even the smallest is more. */
115
+ export function largestValidFrames(wanted, rule, range) {
116
+ const [min, max] = range;
117
+ const step = Math.max(rule.step, 1);
118
+ const ceiling = Math.min(Math.floor(wanted), max);
119
+ if (ceiling < rule.offset)
120
+ return undefined;
121
+ const frames = rule.offset + Math.floor((ceiling - rule.offset) / step) * step;
122
+ return frames >= min ? frames : undefined;
123
+ }
124
+ /** The valid frame count nearest to `wanted`, clamped into the range: what a length in seconds becomes. */
125
+ export function nearestValidFrames(wanted, rule, range) {
126
+ const [min, max] = range;
127
+ const step = Math.max(rule.step, 1);
128
+ const k = Math.round((wanted - rule.offset) / step);
129
+ const frames = rule.offset + Math.max(k, 0) * step;
130
+ if (frames < min)
131
+ return min;
132
+ if (frames <= max)
133
+ return frames;
134
+ // Past the top: the highest lattice point under it.
135
+ return Math.max(rule.offset + Math.floor((max - rule.offset) / step) * step, min);
136
+ }
137
+ /**
138
+ * A video request against the loaded video family: the image checks that apply, then the frame count
139
+ * on the family's lattice, the fixed frame rate, and the one workflow this build serves.
140
+ */
141
+ export async function validateVideoRequest(request, spec, _deps) {
142
+ if (request.prompt.trim() === '')
143
+ throw diffusionError('INVALID_REQUEST', 'Enter a prompt.');
144
+ const video = spec.defaults.video;
145
+ const range = spec.ranges.frames;
146
+ if (video === undefined || range === undefined)
147
+ throw diffusionError('INTERNAL', 'The loaded model has no video defaults.', spec.modelId);
148
+ checkDims(request, spec);
149
+ checkSteps(request.steps, spec);
150
+ if (!Number.isFinite(request.cfgScale) || request.cfgScale < 0)
151
+ throw diffusionError('INVALID_REQUEST', 'CFG scale must be a non-negative number.');
152
+ // One clip per job: the recipe records the seed as is, so only the double's own limit applies.
153
+ if (request.seed !== undefined && request.seed > Number.MAX_SAFE_INTEGER)
154
+ throw diffusionError('INVALID_REQUEST', `The seed must be at most ${Number.MAX_SAFE_INTEGER}.`, `seed=${request.seed}`);
155
+ if (request.fps !== undefined && request.fps !== video.fps)
156
+ throw diffusionError('INVALID_REQUEST', `This model generates at ${video.fps} fps.`, `fps=${request.fps}`);
157
+ const frames = request.frames ?? video.frames;
158
+ if (!isValidFrameCount(frames, { step: video.frameStep, offset: video.frameOffset }, range))
159
+ throw diffusionError('INVALID_REQUEST', `Frames must be ${video.frameStep}k+${video.frameOffset} between ${range[0]} and ${range[1]}.`, `frames=${frames}`);
160
+ const workflow = request.workflow ?? 'create';
161
+ if (!videoWorkflowsForFamily(spec.family).includes(workflow))
162
+ throw diffusionError('UNSUPPORTED_WORKFLOW', 'Image-to-video is not available yet.', workflow);
163
+ if (request.initImage !== undefined || request.endImage !== undefined)
164
+ throw diffusionError('UNSUPPORTED_WORKFLOW', 'Image-to-video is not available yet.', 'initImage/endImage need the image-to-video workflow');
165
+ }
166
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/diffusion/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * The video gallery on disk: `<videoOutputDir>/<jobId>.webm` with its recipe as `<jobId>.json`
3
+ * beside it, a `<jobId>.thumb.png` poster once the app rendered one, and the same `.flags.json`
4
+ * as the image gallery, in its own folder. The core has no video decoder (AGENTS.md rule 8): it
5
+ * checks the container's magic, writes the bytes as they came, and reads everything it knows about
6
+ * a clip from the sidecar.
7
+ *
8
+ * A `.webm` without a parseable sidecar is somebody else's: it is never listed and never deleted,
9
+ * even when it sits in the folder under a name that looks like ours.
10
+ */
11
+ import type { GalleryFlags, GalleryListOptions, GalleryVideoItem, VideoGalleryPage, VideoRecipe } from '../contracts/index.js';
12
+ import type { GalleryLogger } from './gallery.js';
13
+ export declare const VIDEO_SUFFIX = ".webm";
14
+ export declare const POSTER_SUFFIX = ".thumb.png";
15
+ /** The app's poster is a small PNG; anything larger is not one. */
16
+ export declare const MAX_POSTER_BYTES: number;
17
+ /** The EBML header every WebM (and Matroska) file starts with. */
18
+ export declare const WEBM_MAGIC: Buffer<ArrayBuffer>;
19
+ /**
20
+ * Whether `bytes` are a WebM file: the EBML magic, then a `DocType` of `webm` inside the header.
21
+ * The only structural check the core can make without a codec; the app's player does the rest.
22
+ */
23
+ export declare function isWebm(bytes: Buffer): boolean;
24
+ /** The write messages of the video folder, for the atomic writer the image gallery shares. */
25
+ export declare const VIDEO_WRITE_MESSAGES: {
26
+ write: string;
27
+ finish: string;
28
+ };
29
+ /** `^[a-f0-9]{32}$`: the job id, which is also the file stem. */
30
+ export declare function isValidVideoId(id: string): boolean;
31
+ export declare function videoPath(dir: string, id: string): string;
32
+ export declare function videoRecipePath(dir: string, id: string): string;
33
+ export declare function videoPosterPath(dir: string, id: string): string;
34
+ /**
35
+ * The video gallery's operations. Like the image gallery, everything that touches the flags file
36
+ * goes through one lock; the clips have unique names and need none.
37
+ */
38
+ export declare class VideoGallery {
39
+ private readonly log;
40
+ private readonly flagsLock;
41
+ constructor(log?: GalleryLogger);
42
+ /** Write the sidecar, then the clip, and answer the item with the bytes (the facade streams them). */
43
+ save(dir: string, recipe: VideoRecipe, webm: Buffer): Promise<{
44
+ item: GalleryVideoItem;
45
+ bytes: Buffer;
46
+ }>;
47
+ /** The poster the app rendered from the first frame: a PNG with a readable header, kept as is. */
48
+ setPoster(dir: string, id: string, png: Buffer): Promise<GalleryVideoItem>;
49
+ get(dir: string, id: string): Promise<GalleryVideoItem | null>;
50
+ list(dir: string, options: GalleryListOptions): Promise<VideoGalleryPage>;
51
+ /** Remove each clip, its sidecar, its poster and its flags entry. Foreign clips are left alone. */
52
+ delete(dir: string, ids: readonly string[]): Promise<void>;
53
+ setFlags(dir: string, id: string, update: GalleryFlags): Promise<GalleryVideoItem>;
54
+ /** Byte-for-byte copy of the clip; the recipe stays behind with the gallery. */
55
+ export(dir: string, id: string, target: string): Promise<void>;
56
+ }
@@ -0,0 +1,252 @@
1
+ /**
2
+ * The video gallery on disk: `<videoOutputDir>/<jobId>.webm` with its recipe as `<jobId>.json`
3
+ * beside it, a `<jobId>.thumb.png` poster once the app rendered one, and the same `.flags.json`
4
+ * as the image gallery, in its own folder. The core has no video decoder (AGENTS.md rule 8): it
5
+ * checks the container's magic, writes the bytes as they came, and reads everything it knows about
6
+ * a clip from the sidecar.
7
+ *
8
+ * A `.webm` without a parseable sidecar is somebody else's: it is never listed and never deleted,
9
+ * even when it sits in the folder under a name that looks like ours.
10
+ */
11
+ import { copyFile, mkdir, readdir, readFile, rm, stat } from 'node:fs/promises';
12
+ import { dirname, join } from 'node:path';
13
+ import { isWithin } from './containment.js';
14
+ import { diffusionError, ioError } from './errors.js';
15
+ import { readFlags, writeAtomic, writeFlags } from './gallery.js';
16
+ import { AsyncMutex } from './mutex.js';
17
+ import { isPng, parseHeader } from './png.js';
18
+ import { parseVideoRecipe, RECIPE_SIDECAR_SUFFIX, serializeVideoRecipe } from './video-recipe.js';
19
+ export const VIDEO_SUFFIX = '.webm';
20
+ export const POSTER_SUFFIX = '.thumb.png';
21
+ /** The app's poster is a small PNG; anything larger is not one. */
22
+ export const MAX_POSTER_BYTES = 16 * 1024 * 1024;
23
+ /** How many sidecars a listing reads at once. */
24
+ const SCAN_CONCURRENCY = 16;
25
+ /** The EBML header every WebM (and Matroska) file starts with. */
26
+ export const WEBM_MAGIC = Buffer.from([0x1a, 0x45, 0xdf, 0xa3]);
27
+ /**
28
+ * Whether `bytes` are a WebM file: the EBML magic, then a `DocType` of `webm` inside the header.
29
+ * The only structural check the core can make without a codec; the app's player does the rest.
30
+ */
31
+ export function isWebm(bytes) {
32
+ if (bytes.length < 8 || !bytes.subarray(0, 4).equals(WEBM_MAGIC))
33
+ return false;
34
+ // The header is small; `DocType` (0x4282) carries its size in one byte for `webm`.
35
+ const window = bytes.subarray(4, Math.min(bytes.length, 256));
36
+ const at = window.indexOf(Buffer.from([0x42, 0x82]));
37
+ if (at < 0 || at + 2 >= window.length)
38
+ return false;
39
+ const size = window[at + 2];
40
+ if ((size & 0x80) === 0)
41
+ return false;
42
+ const length = size & 0x7f;
43
+ return window.subarray(at + 3, at + 3 + length).toString('latin1') === 'webm';
44
+ }
45
+ /** The write messages of the video folder, for the atomic writer the image gallery shares. */
46
+ export const VIDEO_WRITE_MESSAGES = {
47
+ write: 'Could not write to the videos folder.',
48
+ finish: 'Could not finish writing the video.',
49
+ };
50
+ /** `^[a-f0-9]{32}$`: the job id, which is also the file stem. */
51
+ export function isValidVideoId(id) {
52
+ return /^[a-f0-9]{32}$/.test(id);
53
+ }
54
+ export function videoPath(dir, id) {
55
+ return join(dir, `${id}${VIDEO_SUFFIX}`);
56
+ }
57
+ export function videoRecipePath(dir, id) {
58
+ return join(dir, `${id}${RECIPE_SIDECAR_SUFFIX}`);
59
+ }
60
+ export function videoPosterPath(dir, id) {
61
+ return join(dir, `${id}${POSTER_SUFFIX}`);
62
+ }
63
+ function checkedVideoPath(dir, id) {
64
+ if (!isValidVideoId(id))
65
+ throw diffusionError('INVALID_REQUEST', 'That is not a gallery video id.', id);
66
+ const path = videoPath(dir, id);
67
+ if (!isWithin(path, dir))
68
+ throw diffusionError('INVALID_REQUEST', 'That video is outside the videos folder.', id);
69
+ return path;
70
+ }
71
+ const isFile = (path) => stat(path).then((s) => s.isFile(), () => false);
72
+ async function readRecipe(dir, id) {
73
+ const text = await readFile(videoRecipePath(dir, id), 'utf8').catch(() => undefined);
74
+ return text === undefined ? undefined : parseVideoRecipe(text);
75
+ }
76
+ async function itemFromRecipe(dir, id, path, recipe, flags) {
77
+ const meta = await stat(path).catch(() => undefined);
78
+ if (!meta)
79
+ return undefined;
80
+ const poster = videoPosterPath(dir, id);
81
+ const flag = flags.get(id);
82
+ return {
83
+ id,
84
+ path,
85
+ posterPath: (await isFile(poster)) ? poster : null,
86
+ width: recipe.width,
87
+ height: recipe.height,
88
+ fps: recipe.fps,
89
+ frameCount: recipe.frameCount,
90
+ durationSecs: recipe.fps > 0 ? recipe.frameCount / recipe.fps : 0,
91
+ sizeBytes: meta.size,
92
+ createdAtMs: recipe.createdAtMs,
93
+ pinned: flag?.pinned ?? false,
94
+ archived: flag?.archived ?? false,
95
+ recipe,
96
+ };
97
+ }
98
+ async function itemFromPath(dir, id, path, flags) {
99
+ const recipe = await readRecipe(dir, id);
100
+ return recipe ? itemFromRecipe(dir, id, path, recipe, flags) : undefined;
101
+ }
102
+ /** Every owned clip, newest first. */
103
+ async function scan(dir, flags) {
104
+ const names = await readdir(dir).catch(() => []);
105
+ const ids = names
106
+ .filter((name) => name.endsWith(VIDEO_SUFFIX))
107
+ .map((name) => name.slice(0, -VIDEO_SUFFIX.length))
108
+ .filter(isValidVideoId);
109
+ const items = [];
110
+ for (let at = 0; at < ids.length; at += SCAN_CONCURRENCY) {
111
+ const batch = ids.slice(at, at + SCAN_CONCURRENCY);
112
+ const found = await Promise.all(batch.map((id) => itemFromPath(dir, id, videoPath(dir, id), flags)));
113
+ for (const item of found)
114
+ if (item)
115
+ items.push(item);
116
+ }
117
+ return items.sort((a, b) => b.createdAtMs - a.createdAtMs || (a.id < b.id ? 1 : a.id > b.id ? -1 : 0));
118
+ }
119
+ /**
120
+ * The video gallery's operations. Like the image gallery, everything that touches the flags file
121
+ * goes through one lock; the clips have unique names and need none.
122
+ */
123
+ export class VideoGallery {
124
+ log;
125
+ flagsLock = new AsyncMutex();
126
+ constructor(log = () => { }) {
127
+ this.log = log;
128
+ }
129
+ /** Write the sidecar, then the clip, and answer the item with the bytes (the facade streams them). */
130
+ async save(dir, recipe, webm) {
131
+ await mkdir(dir, { recursive: true }).catch((error) => {
132
+ throw ioError('Could not create the videos folder.', error);
133
+ });
134
+ const id = recipe.jobId;
135
+ const path = checkedVideoPath(dir, id);
136
+ if (!isWebm(webm))
137
+ throw diffusionError('INVALID_OUTPUT', 'The video engine returned something that is not a WebM.');
138
+ // The sidecar first: a clip without one is foreign, so a crash between the two leaves nothing listed.
139
+ await writeAtomic(videoRecipePath(dir, id), serializeVideoRecipe(recipe), VIDEO_WRITE_MESSAGES);
140
+ await writeAtomic(path, webm, VIDEO_WRITE_MESSAGES);
141
+ const flag = (await this.flagsLock.run(() => readFlags(dir))).get(id);
142
+ return {
143
+ item: {
144
+ id,
145
+ path,
146
+ posterPath: null,
147
+ width: recipe.width,
148
+ height: recipe.height,
149
+ fps: recipe.fps,
150
+ frameCount: recipe.frameCount,
151
+ durationSecs: recipe.fps > 0 ? recipe.frameCount / recipe.fps : 0,
152
+ sizeBytes: webm.length,
153
+ createdAtMs: recipe.createdAtMs,
154
+ pinned: flag?.pinned ?? false,
155
+ archived: flag?.archived ?? false,
156
+ recipe,
157
+ },
158
+ bytes: webm,
159
+ };
160
+ }
161
+ /** The poster the app rendered from the first frame: a PNG with a readable header, kept as is. */
162
+ async setPoster(dir, id, png) {
163
+ const path = checkedVideoPath(dir, id);
164
+ if (!(await isFile(path)) || (await readRecipe(dir, id)) === undefined)
165
+ throw diffusionError('JOB_NOT_FOUND', 'That video is no longer in the gallery.');
166
+ if (png.length > MAX_POSTER_BYTES)
167
+ throw diffusionError('INVALID_REQUEST', 'The poster is too large.', `${png.length} bytes`);
168
+ const header = isPng(png) ? parseHeader(png) : 'not-png';
169
+ if (header === 'not-png' || header.header === undefined)
170
+ throw diffusionError('INVALID_REQUEST', 'The poster is not a PNG.');
171
+ await writeAtomic(videoPosterPath(dir, id), png, VIDEO_WRITE_MESSAGES);
172
+ const flags = await this.flagsLock.run(() => readFlags(dir));
173
+ const item = await itemFromPath(dir, id, path, flags);
174
+ if (!item)
175
+ throw diffusionError('JOB_NOT_FOUND', 'That video is no longer in the gallery.');
176
+ return item;
177
+ }
178
+ async get(dir, id) {
179
+ const path = checkedVideoPath(dir, id);
180
+ if (!(await isFile(path)))
181
+ return null;
182
+ const flags = await this.flagsLock.run(() => readFlags(dir));
183
+ return (await itemFromPath(dir, id, path, flags)) ?? null;
184
+ }
185
+ async list(dir, options) {
186
+ const flags = await this.flagsLock.run(() => readFlags(dir));
187
+ const all = (await scan(dir, flags)).filter((item) => options.includeArchived === true || !item.archived);
188
+ const items = all.slice(options.offset, options.offset + Math.max(options.limit, 1));
189
+ return { items, hasMore: options.offset + items.length < all.length, total: all.length };
190
+ }
191
+ /** Remove each clip, its sidecar, its poster and its flags entry. Foreign clips are left alone. */
192
+ delete(dir, ids) {
193
+ return this.flagsLock.run(async () => {
194
+ const flags = await readFlags(dir);
195
+ let changed = false;
196
+ for (const id of ids) {
197
+ const path = checkedVideoPath(dir, id);
198
+ if (await isFile(path)) {
199
+ if ((await readRecipe(dir, id)) === undefined) {
200
+ this.log('warn', `refusing to delete foreign video ${id}`);
201
+ continue;
202
+ }
203
+ await rm(path).catch((error) => {
204
+ throw ioError('Could not delete the video.', error);
205
+ });
206
+ }
207
+ await rm(videoRecipePath(dir, id), { force: true }).catch(() => { });
208
+ await rm(videoPosterPath(dir, id), { force: true }).catch(() => { });
209
+ if (flags.delete(id))
210
+ changed = true;
211
+ }
212
+ if (changed)
213
+ await writeFlags(dir, flags);
214
+ });
215
+ }
216
+ setFlags(dir, id, update) {
217
+ return this.flagsLock.run(async () => {
218
+ const path = checkedVideoPath(dir, id);
219
+ if (!(await isFile(path)))
220
+ throw diffusionError('JOB_NOT_FOUND', 'That video is no longer in the gallery.');
221
+ const flags = await readFlags(dir);
222
+ const entry = { ...(flags.get(id) ?? { pinned: false, archived: false }) };
223
+ if (update.pinned !== undefined)
224
+ entry.pinned = update.pinned;
225
+ if (update.archived !== undefined)
226
+ entry.archived = update.archived;
227
+ // An entry with nothing set is not worth a line in the file.
228
+ if (entry.pinned || entry.archived)
229
+ flags.set(id, entry);
230
+ else
231
+ flags.delete(id);
232
+ await writeFlags(dir, flags);
233
+ const item = await itemFromPath(dir, id, path, flags);
234
+ if (!item)
235
+ throw diffusionError('JOB_NOT_FOUND', 'That video is not an Atomic Chat gallery video.');
236
+ return item;
237
+ });
238
+ }
239
+ /** Byte-for-byte copy of the clip; the recipe stays behind with the gallery. */
240
+ async export(dir, id, target) {
241
+ const path = checkedVideoPath(dir, id);
242
+ if (!(await isFile(path)))
243
+ throw diffusionError('JOB_NOT_FOUND', 'That video is no longer in the gallery.');
244
+ await mkdir(dirname(target), { recursive: true }).catch((error) => {
245
+ throw ioError('Could not create the destination folder.', error);
246
+ });
247
+ await copyFile(path, target).catch((error) => {
248
+ throw ioError('Could not export the video.', error);
249
+ });
250
+ }
251
+ }
252
+ //# sourceMappingURL=video-gallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-gallery.js","sourceRoot":"","sources":["../../src/diffusion/video-gallery.ts"],"names":[],"mappings":"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"}