@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,155 @@
1
+ /**
2
+ * Sessions another process owns — the desktop app's TurboQuant, MLX and Foundation Models engines,
3
+ * and its llama.cpp upstream engine while that runtime is still the app's — registered with the core
4
+ * so the Local API Server it serves can route to them (PLAN.md §4, stage 4d).
5
+ *
6
+ * The owner publishes its whole list as a snapshot with a generation, and keeps it alive with
7
+ * heartbeats. A snapshot from an older generation is refused, so a restarted app cannot be
8
+ * overwritten by a request its previous run left in flight. A registration that stops beating
9
+ * expires and its sessions vanish from routing: the core never kills a process it does not own, it
10
+ * only stops sending traffic to it.
11
+ *
12
+ * Growing a registered session's context is the owner's job — it holds the process and its settings.
13
+ * The core asks with an event carrying a request id and waits for the owner's answer, with the same
14
+ * 60-second limit the app's own proxy gives its extension.
15
+ */
16
+ import { randomUUID } from 'node:crypto';
17
+ import { AtomicCoreError } from '../../contracts/index.js';
18
+ export const EXTERNAL_SESSION_TTL_MS = 30_000;
19
+ export const EXTERNAL_CTX_TIMEOUT_MS = 60_000;
20
+ const PROVIDERS = new Set(['llamacpp', 'llamacpp-upstream', 'mlx', 'foundation-models']);
21
+ export class ExternalSessions {
22
+ options;
23
+ owners = new Map();
24
+ pendingCtx = new Map();
25
+ constructor(options) {
26
+ this.options = options;
27
+ }
28
+ now() {
29
+ return (this.options.now ?? Date.now)();
30
+ }
31
+ live() {
32
+ const now = this.now();
33
+ for (const [owner, registration] of this.owners) {
34
+ if (registration.expiresAt <= now)
35
+ this.drop(owner, 'expired');
36
+ }
37
+ return [...this.owners];
38
+ }
39
+ drop(owner, reason) {
40
+ if (!this.owners.delete(owner))
41
+ return;
42
+ // Anyone waiting for this owner's answer will not get one.
43
+ for (const [id, pending] of this.pendingCtx) {
44
+ if (pending.owner === owner) {
45
+ this.pendingCtx.delete(id);
46
+ pending.resolve({ ok: false, reason: 'owner_gone' });
47
+ }
48
+ }
49
+ this.options.emit('external-sessions:changed', { owner, sessions: 0, reason });
50
+ }
51
+ /** Replace an owner's snapshot. An older generation than the one held is a stale request: refused. */
52
+ publish(owner, generation, sessions) {
53
+ if (!owner)
54
+ throw new AtomicCoreError('INVALID_ARGUMENT', 'an external session registration needs an owner');
55
+ if (!Number.isSafeInteger(generation) || generation < 0)
56
+ throw new AtomicCoreError('INVALID_ARGUMENT', 'generation must be a non-negative integer');
57
+ const current = this.owners.get(owner);
58
+ if (current && generation < current.generation)
59
+ throw new AtomicCoreError('CORE_ALREADY_RUNNING', `stale registration for ${owner}: generation ${generation} is older than ${current.generation}`);
60
+ const parsed = parseSessions(sessions);
61
+ this.owners.set(owner, {
62
+ generation,
63
+ sessions: parsed,
64
+ expiresAt: this.now() + (this.options.ttlMs ?? EXTERNAL_SESSION_TTL_MS),
65
+ });
66
+ this.options.emit('external-sessions:changed', { owner, sessions: parsed.length, reason: 'published' });
67
+ return { generation, sessions: parsed.length };
68
+ }
69
+ /** Keep a registration alive. A heartbeat for a generation that is no longer held says so. */
70
+ heartbeat(owner, generation) {
71
+ this.live();
72
+ const current = this.owners.get(owner);
73
+ if (!current || current.generation !== generation)
74
+ return { alive: false };
75
+ current.expiresAt = this.now() + (this.options.ttlMs ?? EXTERNAL_SESSION_TTL_MS);
76
+ return { alive: true };
77
+ }
78
+ unregister(owner, generation) {
79
+ const current = this.owners.get(owner);
80
+ if (!current || (generation !== undefined && current.generation !== generation))
81
+ return false;
82
+ this.drop(owner, 'unregistered');
83
+ return true;
84
+ }
85
+ /** Every live registered session, owner attached. */
86
+ list() {
87
+ return this.live().flatMap(([owner, registration]) => registration.sessions.map((s) => ({ ...s, owner })));
88
+ }
89
+ find(provider, matches) {
90
+ return this.list().find((s) => s.provider === provider && matches(s.model_id));
91
+ }
92
+ /** Ask the owner to grow a session's context, and wait for its answer or the timeout. */
93
+ requestCtxIncrease(owner, provider, modelId, trigger) {
94
+ const requestId = randomUUID();
95
+ return new Promise((resolve) => {
96
+ const timer = setTimeout(() => {
97
+ if (this.pendingCtx.delete(requestId))
98
+ resolve({ ok: false, reason: 'timeout' });
99
+ }, this.options.ctxTimeoutMs ?? EXTERNAL_CTX_TIMEOUT_MS);
100
+ timer.unref?.();
101
+ this.pendingCtx.set(requestId, {
102
+ owner,
103
+ resolve: (outcome) => {
104
+ clearTimeout(timer);
105
+ resolve(outcome);
106
+ },
107
+ });
108
+ this.options.emit('external-sessions:ctx-requested', {
109
+ request_id: requestId,
110
+ owner,
111
+ provider,
112
+ model_id: modelId,
113
+ trigger,
114
+ });
115
+ });
116
+ }
117
+ /** The owner's answer. An unknown or already-answered request is not an error, only `false`. */
118
+ answerCtxIncrease(owner, requestId, outcome) {
119
+ const pending = this.pendingCtx.get(requestId);
120
+ if (!pending || pending.owner !== owner)
121
+ return false;
122
+ this.pendingCtx.delete(requestId);
123
+ const o = (outcome ?? {});
124
+ pending.resolve({
125
+ ok: o['ok'] === true,
126
+ ...(typeof o['new_ctx_len'] === 'number' ? { new_ctx_len: o['new_ctx_len'] } : {}),
127
+ ...(typeof o['reason'] === 'string' ? { reason: o['reason'] } : {}),
128
+ });
129
+ return true;
130
+ }
131
+ }
132
+ function parseSessions(raw) {
133
+ if (!Array.isArray(raw))
134
+ throw new AtomicCoreError('INVALID_ARGUMENT', 'sessions must be a list');
135
+ return raw.map((entry, index) => {
136
+ const s = (entry ?? {});
137
+ const provider = s['provider'];
138
+ const port = s['port'];
139
+ if (typeof provider !== 'string' || !PROVIDERS.has(provider))
140
+ throw new AtomicCoreError('INVALID_ARGUMENT', `sessions[${index}].provider is not a local provider`);
141
+ if (typeof s['model_id'] !== 'string' || s['model_id'] === '')
142
+ throw new AtomicCoreError('INVALID_ARGUMENT', `sessions[${index}].model_id is missing`);
143
+ if (typeof port !== 'number' || !Number.isInteger(port) || port <= 0 || port > 65535)
144
+ throw new AtomicCoreError('INVALID_ARGUMENT', `sessions[${index}].port is not a port`);
145
+ return {
146
+ provider: provider,
147
+ model_id: s['model_id'],
148
+ port,
149
+ api_key: typeof s['api_key'] === 'string' ? s['api_key'] : '',
150
+ is_embedding: s['is_embedding'] === true,
151
+ pid: typeof s['pid'] === 'number' ? s['pid'] : null,
152
+ };
153
+ });
154
+ }
155
+ //# sourceMappingURL=external-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-sessions.js","sourceRoot":"","sources":["../../../src/runtime/shared/external-sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Process mechanics shared by every local backend: environment (library/CUDA paths), path
3
+ * validation, ports and API keys, spawn/readiness/termination. `llamacpp/`, `mlx/` and
4
+ * `foundation-models/` build on it.
5
+ *
6
+ * Ported from: tauri-plugin-llamacpp-upstream/src/{commands,process,path}.rs, utils/src/{system,network}.rs.
7
+ * See PLAN.md §3.2.
8
+ */
9
+ export * from './env.js';
10
+ export * from './paths.js';
11
+ export * from './ports.js';
12
+ export * from './process.js';
13
+ export * from './load-cancel.js';
14
+ export * from './external-sessions.js';
15
+ export * from './local-runtime.js';
16
+ export * from './sidecar.js';
17
+ export * from './log-stream.js';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Process mechanics shared by every local backend: environment (library/CUDA paths), path
3
+ * validation, ports and API keys, spawn/readiness/termination. `llamacpp/`, `mlx/` and
4
+ * `foundation-models/` build on it.
5
+ *
6
+ * Ported from: tauri-plugin-llamacpp-upstream/src/{commands,process,path}.rs, utils/src/{system,network}.rs.
7
+ * See PLAN.md §3.2.
8
+ */
9
+ export * from './env.js';
10
+ export * from './paths.js';
11
+ export * from './ports.js';
12
+ export * from './process.js';
13
+ export * from './load-cancel.js';
14
+ export * from './external-sessions.js';
15
+ export * from './local-runtime.js';
16
+ export * from './sidecar.js';
17
+ export * from './log-stream.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/shared/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Cancelling a model load before its engine reports ready.
3
+ *
4
+ * A load only becomes a session — something `unload` can find — once the server says it is ready,
5
+ * which can be minutes for a large model over a cold page cache. Until then the child belongs to the
6
+ * load alone, so "stop this model" had nothing to act on.
7
+ *
8
+ * Ported from the app's `src-tauri/utils/src/load_cancel.rs` (image-generation line, `767ff6350`),
9
+ * with one deliberate difference. The Rust registry replaced a model's token on every new load. In
10
+ * the core, acquires of one model are serialized, so the newest registration is always a queued
11
+ * follower and a cancel aimed at it would miss the load that is actually spawning. Here every
12
+ * pending load of a key shares one entry, and a fresh one starts only after an abort — which keeps
13
+ * the Rust guarantees: a finished load never unregisters a newer one, and a new load never inherits
14
+ * an earlier cancel (ADR 2026-09-17-cancel-a-model-load-through-a-shared-registry).
15
+ */
16
+ import { AtomicCoreError } from '../../contracts/index.js';
17
+ /** The app's wording, verbatim: its UI treats this code as a user stop, not a failure. */
18
+ export declare const MODEL_LOAD_CANCELLED_MESSAGE = "The model load was cancelled.";
19
+ export declare function loadCancelledError(): AtomicCoreError;
20
+ /** Whether the load was cancelled. A caller with no way to cancel (the CLI, a reload) never is. */
21
+ export declare function isLoadCancelled(signal?: AbortSignal): boolean;
22
+ export declare function throwIfLoadCancelled(signal?: AbortSignal): void;
23
+ /**
24
+ * Settle with `work`, or reject with `MODEL_LOAD_CANCELLED` as soon as `signal` aborts — the
25
+ * `select!` arm of the Rust loads. The abandoned work keeps running; its outcome is swallowed so a
26
+ * later rejection is not an unhandled one.
27
+ */
28
+ export declare function raceLoadCancel<T>(work: Promise<T>, signal?: AbortSignal): Promise<T>;
29
+ /** A pending load's hold on its key: the signal to watch, and the release that ends the hold. */
30
+ export interface LoadCancelHandle {
31
+ signal: AbortSignal;
32
+ /** Idempotent. The entry goes once its last holder releases, unless a newer one replaced it. */
33
+ release: () => void;
34
+ }
35
+ export declare class LoadCancelRegistry {
36
+ private readonly loads;
37
+ /**
38
+ * Hold `key` for one pending load. Loads waiting on the same key share an entry, so one cancel
39
+ * reaches whichever of them is running; an entry that was already cancelled is replaced rather
40
+ * than joined, so the new load starts clean.
41
+ */
42
+ register(key: string): LoadCancelHandle;
43
+ /** Cancel the loads pending for `key`. `false` means nothing is in flight there. */
44
+ cancel(key: string): boolean;
45
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Cancelling a model load before its engine reports ready.
3
+ *
4
+ * A load only becomes a session — something `unload` can find — once the server says it is ready,
5
+ * which can be minutes for a large model over a cold page cache. Until then the child belongs to the
6
+ * load alone, so "stop this model" had nothing to act on.
7
+ *
8
+ * Ported from the app's `src-tauri/utils/src/load_cancel.rs` (image-generation line, `767ff6350`),
9
+ * with one deliberate difference. The Rust registry replaced a model's token on every new load. In
10
+ * the core, acquires of one model are serialized, so the newest registration is always a queued
11
+ * follower and a cancel aimed at it would miss the load that is actually spawning. Here every
12
+ * pending load of a key shares one entry, and a fresh one starts only after an abort — which keeps
13
+ * the Rust guarantees: a finished load never unregisters a newer one, and a new load never inherits
14
+ * an earlier cancel (ADR 2026-09-17-cancel-a-model-load-through-a-shared-registry).
15
+ */
16
+ import { AtomicCoreError } from '../../contracts/index.js';
17
+ /** The app's wording, verbatim: its UI treats this code as a user stop, not a failure. */
18
+ export const MODEL_LOAD_CANCELLED_MESSAGE = 'The model load was cancelled.';
19
+ export function loadCancelledError() {
20
+ return new AtomicCoreError('MODEL_LOAD_CANCELLED', MODEL_LOAD_CANCELLED_MESSAGE);
21
+ }
22
+ /** Whether the load was cancelled. A caller with no way to cancel (the CLI, a reload) never is. */
23
+ export function isLoadCancelled(signal) {
24
+ return signal?.aborted === true;
25
+ }
26
+ export function throwIfLoadCancelled(signal) {
27
+ if (isLoadCancelled(signal))
28
+ throw loadCancelledError();
29
+ }
30
+ /**
31
+ * Settle with `work`, or reject with `MODEL_LOAD_CANCELLED` as soon as `signal` aborts — the
32
+ * `select!` arm of the Rust loads. The abandoned work keeps running; its outcome is swallowed so a
33
+ * later rejection is not an unhandled one.
34
+ */
35
+ export function raceLoadCancel(work, signal) {
36
+ if (!signal)
37
+ return work;
38
+ if (signal.aborted) {
39
+ work.catch(() => { });
40
+ return Promise.reject(loadCancelledError());
41
+ }
42
+ return new Promise((resolve, reject) => {
43
+ const onAbort = () => {
44
+ work.catch(() => { });
45
+ reject(loadCancelledError());
46
+ };
47
+ signal.addEventListener('abort', onAbort, { once: true });
48
+ work.then((value) => {
49
+ signal.removeEventListener('abort', onAbort);
50
+ resolve(value);
51
+ }, (error) => {
52
+ signal.removeEventListener('abort', onAbort);
53
+ reject(error);
54
+ });
55
+ });
56
+ }
57
+ export class LoadCancelRegistry {
58
+ loads = new Map();
59
+ /**
60
+ * Hold `key` for one pending load. Loads waiting on the same key share an entry, so one cancel
61
+ * reaches whichever of them is running; an entry that was already cancelled is replaced rather
62
+ * than joined, so the new load starts clean.
63
+ */
64
+ register(key) {
65
+ let entry = this.loads.get(key);
66
+ if (!entry || entry.controller.signal.aborted) {
67
+ entry = { controller: new AbortController(), holders: 0 };
68
+ this.loads.set(key, entry);
69
+ }
70
+ entry.holders++;
71
+ const held = entry;
72
+ let released = false;
73
+ return {
74
+ signal: held.controller.signal,
75
+ release: () => {
76
+ if (released)
77
+ return;
78
+ released = true;
79
+ held.holders--;
80
+ // A newer load of the same key may have registered meanwhile; its entry is not ours to remove.
81
+ if (held.holders === 0 && this.loads.get(key) === held)
82
+ this.loads.delete(key);
83
+ },
84
+ };
85
+ }
86
+ /** Cancel the loads pending for `key`. `false` means nothing is in flight there. */
87
+ cancel(key) {
88
+ const entry = this.loads.get(key);
89
+ if (!entry)
90
+ return false;
91
+ entry.controller.abort();
92
+ return true;
93
+ }
94
+ }
95
+ //# sourceMappingURL=load-cancel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-cancel.js","sourceRoot":"","sources":["../../../src/runtime/shared/load-cancel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * What the owner asks of every local runtime — llama.cpp (both providers), MLX and Foundation
3
+ * Models — so the facade, the control API and the public server hold them in one table and never
4
+ * branch on which engine a session belongs to (PLAN.md §3.2, stage 5).
5
+ *
6
+ * The semantics are the core's, shared by every provider rather than copied from each extension:
7
+ * loading a model that is already loaded answers with its session (a second client attaching is not
8
+ * an error), and unloading one that is not loaded succeeds. The desktop extensions threw in both
9
+ * cases; their adapters keep that wording for the webview where it matters.
10
+ */
11
+ import type { LocalProviderId, SessionInfo, UnloadResult } from '../../contracts/index.js';
12
+ /** What `autoIncreaseCtx` did, or why it declined to do anything. */
13
+ export type CtxIncreaseResult = {
14
+ ok: true;
15
+ new_ctx_len: number;
16
+ session: SessionInfo;
17
+ } | {
18
+ ok: false;
19
+ /**
20
+ * `fit`: llama.cpp sizes the window itself. `at_max`: the model's trained context is reached.
21
+ * `unsupported`: the engine has no context setting to grow (Foundation Models).
22
+ */
23
+ reason: 'fit' | 'at_max' | 'not-loaded' | 'unsupported';
24
+ current_ctx_len?: number;
25
+ max_ctx_len?: number;
26
+ };
27
+ export type RecreateResult = {
28
+ ok: true;
29
+ session: SessionInfo;
30
+ } | {
31
+ ok: false;
32
+ reason: 'not-loaded';
33
+ };
34
+ /** Options every runtime understands; each one reads the keys of `overrides` that are its own. */
35
+ export interface LocalLoadOptions {
36
+ /** Per-model settings, canonical keys (the `settings` argument of an extension's `load()`). */
37
+ overrides?: Record<string, unknown>;
38
+ isEmbedding?: boolean;
39
+ /** Use this executable instead of resolving one (CLI `--bin`, or a resources folder). */
40
+ exePath?: string;
41
+ /** Readiness timeout in seconds. */
42
+ timeoutSecs?: number;
43
+ /** Append backend stdout/stderr to this path for the lifetime of the session. */
44
+ logPath?: string;
45
+ /** Relay backend stdout/stderr through `core:log` events. */
46
+ verbose?: boolean;
47
+ /** Bind the backend to this port instead of a random free one. */
48
+ port?: number;
49
+ /** Skip the auto-unload of other models of this provider. */
50
+ bypassAutoUnload?: boolean;
51
+ /**
52
+ * Aborted when the user cancels this load: the runtime kills what it started and rejects with
53
+ * `MODEL_LOAD_CANCELLED`. Owner shutdown has its own signal and keeps its own error.
54
+ */
55
+ signal?: AbortSignal;
56
+ }
57
+ export interface LocalRuntime {
58
+ list(): SessionInfo[];
59
+ findSession(modelId: string): SessionInfo | undefined;
60
+ getLoadedModels(): string[];
61
+ isLoading(modelId: string): boolean;
62
+ load(modelId: string, opts?: LocalLoadOptions): Promise<SessionInfo>;
63
+ unload(modelId: string): Promise<UnloadResult>;
64
+ autoIncreaseCtx(modelId: string, reason?: string): Promise<CtxIncreaseResult>;
65
+ recreateSession(modelId: string): Promise<RecreateResult>;
66
+ shutdown(): Promise<void>;
67
+ }
68
+ export type { LocalProviderId };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * What the owner asks of every local runtime — llama.cpp (both providers), MLX and Foundation
3
+ * Models — so the facade, the control API and the public server hold them in one table and never
4
+ * branch on which engine a session belongs to (PLAN.md §3.2, stage 5).
5
+ *
6
+ * The semantics are the core's, shared by every provider rather than copied from each extension:
7
+ * loading a model that is already loaded answers with its session (a second client attaching is not
8
+ * an error), and unloading one that is not loaded succeeds. The desktop extensions threw in both
9
+ * cases; their adapters keep that wording for the webview where it matters.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=local-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-runtime.js","sourceRoot":"","sources":["../../../src/runtime/shared/local-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,4 @@
1
+ /** The per-session backend log a CLI `--log` / `--detach` asks for, shared by every runtime. */
2
+ import type { WriteStream } from 'node:fs';
3
+ export declare function openLogStream(path: string, engine?: string): Promise<WriteStream>;
4
+ export declare function closeLogStream(stream: WriteStream | undefined): Promise<void>;
@@ -0,0 +1,28 @@
1
+ /** The per-session backend log a CLI `--log` / `--detach` asks for, shared by every runtime. */
2
+ import { createWriteStream } from 'node:fs';
3
+ import { mkdir } from 'node:fs/promises';
4
+ import { dirname } from 'node:path';
5
+ import { AtomicCoreError } from '../../contracts/index.js';
6
+ export async function openLogStream(path, engine = 'llama.cpp') {
7
+ try {
8
+ await mkdir(dirname(path), { recursive: true });
9
+ const stream = createWriteStream(path, { flags: 'a' });
10
+ await new Promise((resolve, reject) => {
11
+ stream.once('open', () => resolve());
12
+ stream.once('error', reject);
13
+ });
14
+ // A later disk error cannot retroactively fail a running model, but it must not become an
15
+ // unhandled EventEmitter error either.
16
+ stream.on('error', () => { });
17
+ return stream;
18
+ }
19
+ catch (error) {
20
+ throw new AtomicCoreError('IO_ERROR', `Cannot open ${engine} log file "${path}".`, error.message);
21
+ }
22
+ }
23
+ export function closeLogStream(stream) {
24
+ if (!stream || stream.closed)
25
+ return Promise.resolve();
26
+ return new Promise((resolve) => stream.end(resolve));
27
+ }
28
+ //# sourceMappingURL=log-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-stream.js","sourceRoot":"","sources":["../../../src/runtime/shared/log-stream.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAEhG,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,MAAM,GAAG,WAAW;IACpE,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACtD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;YACpC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;QACF,0FAA0F;QAC1F,uCAAuC;QACvC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC5B,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,eAAe,CACvB,UAAU,EACV,eAAe,MAAM,cAAc,IAAI,IAAI,EAC1C,KAAe,CAAC,OAAO,CACzB,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA+B;IAC5D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AACtD,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Path checks performed right before spawning. Port of
3
+ * `src-tauri/plugins/tauri-plugin-llamacpp-upstream/src/path.rs`.
4
+ *
5
+ * On Windows, non-ASCII model paths are passed as 8.3 short paths (llama.cpp opens files through
6
+ * ANSI APIs), except for split shards whose `-NNNNN-of-NNNNN` marker the mangling would destroy.
7
+ */
8
+ export interface PathDeps {
9
+ platform: NodeJS.Platform;
10
+ exists: (path: string) => Promise<boolean>;
11
+ /** 8.3 short path on Windows (`GetShortPathNameW`); `undefined` when unavailable. */
12
+ shortPath?: (path: string) => Promise<string | undefined>;
13
+ }
14
+ export declare function needsShortPath(path: string): boolean;
15
+ /** `*-NNNNN-of-NNNNN.gguf`, case-insensitive on the extension. */
16
+ export declare function isSplitGgufName(fileName: string): boolean;
17
+ export declare function validateBinaryPath(backendPath: string, deps: Pick<PathDeps, 'exists'>): Promise<string>;
18
+ /** Validate `-m <path>` in argv, rewrite it for the platform, return the validated path. */
19
+ export declare function validateModelArgs(args: string[], deps: PathDeps): Promise<string>;
20
+ /** Validate `--mmproj <path>` when present; `undefined` when the flag is absent. */
21
+ export declare function validateMmprojArgs(args: string[], deps: PathDeps): Promise<string | undefined>;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Path checks performed right before spawning. Port of
3
+ * `src-tauri/plugins/tauri-plugin-llamacpp-upstream/src/path.rs`.
4
+ *
5
+ * On Windows, non-ASCII model paths are passed as 8.3 short paths (llama.cpp opens files through
6
+ * ANSI APIs), except for split shards whose `-NNNNN-of-NNNNN` marker the mangling would destroy.
7
+ */
8
+ import { AtomicCoreError } from '../../contracts/index.js';
9
+ export function needsShortPath(path) {
10
+ // eslint-disable-next-line no-control-regex
11
+ return !/^[\x00-\x7F]*$/.test(path);
12
+ }
13
+ /** `*-NNNNN-of-NNNNN.gguf`, case-insensitive on the extension. */
14
+ export function isSplitGgufName(fileName) {
15
+ const lower = fileName.toLowerCase();
16
+ if (!lower.endsWith('.gguf'))
17
+ return false;
18
+ const stem = lower.slice(0, -'.gguf'.length);
19
+ if (stem.length < 15)
20
+ return false;
21
+ return /-\d{5}-of-\d{5}$/.test(stem);
22
+ }
23
+ export async function validateBinaryPath(backendPath, deps) {
24
+ if (!(await deps.exists(backendPath))) {
25
+ throw new AtomicCoreError('BINARY_NOT_FOUND', 'The llama.cpp server binary could not be found.', `Binary not found at ${JSON.stringify(backendPath)}`);
26
+ }
27
+ return backendPath;
28
+ }
29
+ async function platformPath(path, isSplit, deps) {
30
+ if (deps.platform !== 'win32' || isSplit || !needsShortPath(path) || !deps.shortPath)
31
+ return path;
32
+ return (await deps.shortPath(path)) ?? path;
33
+ }
34
+ /** Validate `-m <path>` in argv, rewrite it for the platform, return the validated path. */
35
+ export async function validateModelArgs(args, deps) {
36
+ const i = args.indexOf('-m');
37
+ if (i < 0)
38
+ throw new AtomicCoreError('MODEL_LOAD_FAILED', "Model path argument '-m' is missing.");
39
+ const modelPath = args[i + 1];
40
+ if (modelPath === undefined)
41
+ throw new AtomicCoreError('MODEL_LOAD_FAILED', "Model path was not provided after '-m' flag.");
42
+ if (!(await deps.exists(modelPath))) {
43
+ throw new AtomicCoreError('MODEL_FILE_NOT_FOUND', 'The specified model file does not exist or is not accessible.', `Invalid or inaccessible model path: ${modelPath}`);
44
+ }
45
+ const fileName = modelPath.split(/[\\/]/).pop() ?? '';
46
+ args[i + 1] = await platformPath(modelPath, isSplitGgufName(fileName), deps);
47
+ return modelPath;
48
+ }
49
+ /** Validate `--mmproj <path>` when present; `undefined` when the flag is absent. */
50
+ export async function validateMmprojArgs(args, deps) {
51
+ const i = args.indexOf('--mmproj');
52
+ if (i < 0)
53
+ return undefined;
54
+ const mmproj = args[i + 1];
55
+ if (mmproj === undefined)
56
+ throw new AtomicCoreError('MODEL_LOAD_FAILED', "Mmproj path was not provided after '--mmproj' flag.");
57
+ if (!(await deps.exists(mmproj))) {
58
+ throw new AtomicCoreError('MODEL_FILE_NOT_FOUND', 'The specified mmproj file does not exist or is not accessible.', `Invalid or inaccessible mmproj path: ${mmproj}`);
59
+ }
60
+ args[i + 1] = await platformPath(mmproj, false, deps);
61
+ return mmproj;
62
+ }
63
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/runtime/shared/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Session port selection and the per-session API key. Port of `generate_random_port` in
3
+ * `src-tauri/utils/src/network.rs` and `generate_api_key` in the plugin's `commands.rs`.
4
+ */
5
+ export declare const PORT_RANGE_MIN = 3000;
6
+ export declare const PORT_RANGE_MAX = 4000;
7
+ export declare const PORT_MAX_ATTEMPTS = 20000;
8
+ export declare const PORT_EXHAUSTED_MESSAGE = "Failed to find an available port for the model to load";
9
+ /** Bind-and-release probe on 127.0.0.1 (inherently racy, as in the original). */
10
+ export declare function isPortAvailable(port: number): Promise<boolean>;
11
+ export interface PortOptions {
12
+ min?: number;
13
+ max?: number;
14
+ attempts?: number;
15
+ random?: (min: number, max: number) => number;
16
+ isAvailable?: (port: number) => Promise<boolean>;
17
+ }
18
+ /** A random port in [3000, 4000) that no session uses and that binds. */
19
+ export declare function randomFreePort(usedPorts: Iterable<number>, opts?: PortOptions): Promise<number>;
20
+ /** Secret the extension has always used for session keys (`index.ts:531`). */
21
+ export declare const DEFAULT_API_SECRET = "JustAskNow";
22
+ /**
23
+ * base64(HMAC-SHA256(secret, modelId + port)) — what the process gets as `LLAMA_API_KEY`. The
24
+ * extension concatenates the port onto the model id before calling the Rust HMAC (`index.ts:3195`).
25
+ */
26
+ export declare function generateApiKey(modelId: string, port: number | string, secret?: string): string;