@qvac/sdk 0.8.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/LICENSE +24 -1
  2. package/README.md +191 -373
  3. package/dist/client/api/cancel.d.ts +4 -22
  4. package/dist/client/api/cancel.js +6 -25
  5. package/dist/client/api/completion-stream.d.ts +30 -24
  6. package/dist/client/api/completion-stream.js +69 -118
  7. package/dist/client/api/delete-cache.js +2 -3
  8. package/dist/client/api/download-asset.d.ts +5 -6
  9. package/dist/client/api/download-asset.js +20 -16
  10. package/dist/client/api/embed.d.ts +4 -21
  11. package/dist/client/api/embed.js +14 -4
  12. package/dist/client/api/index.d.ts +2 -6
  13. package/dist/client/api/index.js +2 -6
  14. package/dist/client/api/load-model.d.ts +21 -49
  15. package/dist/client/api/load-model.js +134 -40
  16. package/dist/client/api/logging-stream.d.ts +4 -7
  17. package/dist/client/api/logging-stream.js +5 -9
  18. package/dist/client/api/ping.d.ts +11 -0
  19. package/dist/client/api/ping.js +18 -0
  20. package/dist/client/api/provide.d.ts +1 -1
  21. package/dist/client/api/provide.js +3 -4
  22. package/dist/client/api/rag.d.ts +21 -216
  23. package/dist/client/api/rag.js +36 -396
  24. package/dist/client/api/stop-provider.d.ts +1 -1
  25. package/dist/client/api/stop-provider.js +3 -4
  26. package/dist/client/api/text-to-speech.d.ts +2 -2
  27. package/dist/client/api/text-to-speech.js +3 -3
  28. package/dist/client/api/transcribe.d.ts +5 -7
  29. package/dist/client/api/transcribe.js +9 -8
  30. package/dist/client/api/translate.d.ts +3 -3
  31. package/dist/client/api/translate.js +15 -15
  32. package/dist/client/api/unload-model.d.ts +1 -5
  33. package/dist/client/api/unload-model.js +4 -17
  34. package/dist/client/index.d.ts +1 -1
  35. package/dist/client/index.js +1 -1
  36. package/dist/client/logging-stream-registry.d.ts +1 -1
  37. package/dist/client/logging-stream-registry.js +13 -14
  38. package/dist/client/rpc/bare-client.d.ts +139 -3
  39. package/dist/client/rpc/bare-client.js +16 -117
  40. package/dist/client/rpc/bare-rpc-client.d.ts +4 -0
  41. package/dist/client/rpc/bare-rpc-client.js +87 -0
  42. package/dist/client/rpc/expo-rpc-client.d.ts +1 -2
  43. package/dist/client/rpc/expo-rpc-client.js +14 -57
  44. package/dist/client/rpc/node-rpc-client.d.ts +8 -3
  45. package/dist/client/rpc/node-rpc-client.js +62 -218
  46. package/dist/client/rpc/rpc-client.d.ts +2 -3
  47. package/dist/client/rpc/rpc-client.js +49 -184
  48. package/dist/constants/audio.d.ts +2 -1
  49. package/dist/constants/audio.js +17 -1
  50. package/dist/constants/index.d.ts +0 -1
  51. package/dist/constants/index.js +0 -1
  52. package/dist/examples/delegated-inference/consumer.js +2 -3
  53. package/dist/examples/download-with-cancel.js +4 -3
  54. package/dist/examples/embed-hyperdrive.d.ts +2 -0
  55. package/dist/examples/embed-hyperdrive.js +19 -0
  56. package/dist/examples/kv-cache-cleanup.js +2 -1
  57. package/dist/examples/kv-cache-custom-key.js +2 -16
  58. package/dist/examples/kv-cache-example.js +2 -1
  59. package/dist/examples/llamacpp-file-logging.d.ts +2 -0
  60. package/dist/examples/{logging-file-transport.js → llamacpp-file-logging.js} +8 -3
  61. package/dist/examples/llamacpp-filesystem.js +2 -2
  62. package/dist/examples/llamacpp-http.js +1 -0
  63. package/dist/examples/llamacpp-hyperdrive.d.ts +2 -0
  64. package/dist/examples/{llamacpp-p2p.js → llamacpp-hyperdrive.js} +2 -1
  65. package/dist/examples/llamacpp-multimodal.js +4 -3
  66. package/dist/examples/llamacpp-native-tools.js +30 -72
  67. package/dist/examples/multi-model-demo.js +3 -2
  68. package/dist/examples/parallel-download.js +14 -46
  69. package/dist/examples/rag/rag-chromadb.js +1 -0
  70. package/dist/examples/rag/rag-hyperdb-workspaces.d.ts +2 -0
  71. package/dist/examples/rag/rag-hyperdb-workspaces.js +107 -0
  72. package/dist/examples/rag/rag-hyperdb.d.ts +2 -0
  73. package/dist/examples/rag/{rag-hyperdb/ingest.js → rag-hyperdb.js} +5 -10
  74. package/dist/examples/rag/rag-lancedb.js +1 -0
  75. package/dist/examples/rag/rag-sqlite.js +1 -0
  76. package/dist/examples/seed-hyperdrive.d.ts +2 -0
  77. package/dist/examples/text-to-speech.d.ts +3 -0
  78. package/dist/examples/{tts/utils.js → text-to-speech.js} +63 -18
  79. package/dist/examples/translation/translation-indic.js +1 -4
  80. package/dist/examples/translation/translation-llm-context.js +1 -0
  81. package/dist/examples/translation/translation-llm.js +2 -2
  82. package/dist/examples/translation/translation-opus.js +3 -6
  83. package/dist/examples/translation/translation-stream.js +3 -3
  84. package/dist/examples/{transcription/whispercpp-filesystem.js → whispercpp-filesystem.js} +7 -2
  85. package/dist/examples/{transcription/whispercpp-microphone-record.js → whispercpp-microphone-record.js} +6 -1
  86. package/dist/examples/{transcription/whispercpp-prompt.js → whispercpp-prompt.js} +6 -2
  87. package/dist/expo/plugins/index.d.ts +0 -3
  88. package/dist/expo/plugins/index.js +0 -3
  89. package/dist/expo/plugins/withMobileBundle.d.ts +2 -5
  90. package/dist/expo/plugins/withMobileBundle.js +40 -121
  91. package/dist/expo/plugins/withQvacSDK.d.ts +0 -4
  92. package/dist/expo/plugins/withQvacSDK.js +1 -26
  93. package/dist/index.d.ts +4 -9
  94. package/dist/index.js +5 -11
  95. package/dist/logging/base-logger.js +16 -26
  96. package/dist/logging/index.d.ts +1 -7
  97. package/dist/logging/index.js +1 -7
  98. package/dist/logging/logger.d.ts +2 -0
  99. package/dist/logging/logger.js +6 -11
  100. package/dist/logging/stream-logger.d.ts +1 -1
  101. package/dist/logging/stream-logger.js +3 -6
  102. package/dist/logging/transport.js +2 -2
  103. package/dist/logging/types.d.ts +0 -2
  104. package/dist/logging/utils.d.ts +0 -2
  105. package/dist/logging/utils.js +0 -62
  106. package/dist/models/{registry → hyperdrive}/index.js +1 -1
  107. package/dist/models/hyperdrive/models.d.ts +795 -0
  108. package/dist/models/hyperdrive/models.js +891 -0
  109. package/dist/schemas/cancel.d.ts +0 -18
  110. package/dist/schemas/cancel.js +0 -7
  111. package/dist/schemas/common.d.ts +153 -2857
  112. package/dist/schemas/common.js +4 -27
  113. package/dist/schemas/completion-stream.d.ts +60 -31
  114. package/dist/schemas/completion-stream.js +44 -20
  115. package/dist/schemas/delegate.d.ts +0 -9
  116. package/dist/schemas/delegate.js +2 -6
  117. package/dist/schemas/download-asset.d.ts +3 -125
  118. package/dist/schemas/download-asset.js +5 -22
  119. package/dist/schemas/embed.d.ts +3 -3
  120. package/dist/schemas/embed.js +2 -9
  121. package/dist/schemas/index.d.ts +2 -20
  122. package/dist/schemas/index.js +2 -20
  123. package/dist/schemas/llamacpp-config.d.ts +12 -243
  124. package/dist/schemas/llamacpp-config.js +14 -50
  125. package/dist/schemas/load-model.d.ts +986 -14092
  126. package/dist/schemas/load-model.js +72 -325
  127. package/dist/schemas/logging-stream.d.ts +4 -11
  128. package/dist/schemas/logging-stream.js +3 -4
  129. package/dist/schemas/ping.d.ts +11 -0
  130. package/dist/schemas/ping.js +8 -0
  131. package/dist/schemas/rag.d.ts +52 -183
  132. package/dist/schemas/rag.js +23 -152
  133. package/dist/schemas/text-to-speech.d.ts +1 -692
  134. package/dist/schemas/text-to-speech.js +3 -35
  135. package/dist/schemas/translate.d.ts +23 -68
  136. package/dist/schemas/translate.js +11 -37
  137. package/dist/schemas/translation-config.d.ts +7 -810
  138. package/dist/schemas/translation-config.js +7 -113
  139. package/dist/schemas/unload-model.d.ts +0 -2
  140. package/dist/schemas/unload-model.js +0 -2
  141. package/dist/schemas/whispercpp-config.d.ts +74 -0
  142. package/dist/schemas/{transcription-config.js → whispercpp-config.js} +8 -31
  143. package/dist/server/bare/{ops → addons}/cancel.js +1 -2
  144. package/dist/server/bare/addons/index.d.ts +4 -0
  145. package/dist/server/bare/addons/index.js +3 -0
  146. package/dist/server/bare/addons/llamacpp/create-model.d.ts +5 -0
  147. package/dist/server/bare/addons/llamacpp/create-model.js +67 -0
  148. package/dist/server/bare/{plugins/llamacpp-completion/ops → addons/llamacpp/handlers}/completion-stream.d.ts +1 -2
  149. package/dist/server/bare/{plugins/llamacpp-completion/ops → addons/llamacpp/handlers}/completion-stream.js +49 -46
  150. package/dist/server/bare/addons/llamacpp/handlers/embed.d.ts +4 -0
  151. package/dist/server/bare/{ops → addons/llamacpp/handlers}/embed.js +7 -22
  152. package/dist/server/bare/addons/llamacpp/index.d.ts +4 -0
  153. package/dist/server/bare/addons/llamacpp/index.js +3 -0
  154. package/dist/server/bare/{ops → addons/llamacpp}/kv-cache-utils.d.ts +1 -4
  155. package/dist/server/bare/{ops → addons/llamacpp}/kv-cache-utils.js +19 -54
  156. package/dist/server/bare/addons/load-model.d.ts +3 -0
  157. package/dist/server/bare/addons/load-model.js +62 -0
  158. package/dist/server/bare/addons/translation/create-model.d.ts +4 -0
  159. package/dist/server/bare/addons/translation/create-model.js +45 -0
  160. package/dist/server/bare/addons/translation/handlers/translate.d.ts +3 -0
  161. package/dist/server/bare/{ops → addons/translation/handlers}/translate.js +14 -47
  162. package/dist/server/bare/addons/translation/index.d.ts +3 -0
  163. package/dist/server/bare/addons/translation/index.js +2 -0
  164. package/dist/server/bare/addons/tts/create-model.d.ts +6 -0
  165. package/dist/server/bare/addons/tts/create-model.js +40 -0
  166. package/dist/server/bare/{plugins/onnx-tts/ops → addons/tts/handlers}/text-to-speech.js +3 -25
  167. package/dist/server/bare/addons/tts/index.d.ts +3 -0
  168. package/dist/server/bare/addons/tts/index.js +2 -0
  169. package/dist/server/bare/addons/unload-model.js +20 -0
  170. package/dist/server/bare/addons/whispercpp/create-model.d.ts +6 -0
  171. package/dist/server/bare/addons/whispercpp/create-model.js +56 -0
  172. package/dist/server/bare/addons/whispercpp/handlers/transcribe-stream.d.ts +3 -0
  173. package/dist/server/bare/addons/whispercpp/handlers/transcribe-stream.js +62 -0
  174. package/dist/server/bare/addons/whispercpp/index.d.ts +3 -0
  175. package/dist/server/bare/addons/whispercpp/index.js +2 -0
  176. package/dist/server/bare/delegate-rpc-client.d.ts +0 -6
  177. package/dist/server/bare/delegate-rpc-client.js +45 -187
  178. package/dist/server/bare/hyperswarm.d.ts +0 -3
  179. package/dist/server/bare/hyperswarm.js +6 -29
  180. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.d.ts +1 -1
  181. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js +10 -9
  182. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.d.ts +4 -7
  183. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js +14 -13
  184. package/dist/server/bare/rag-hyperdb/handlers/search.js +10 -10
  185. package/dist/server/bare/rag-hyperdb/index.d.ts +1 -8
  186. package/dist/server/bare/rag-hyperdb/index.js +1 -8
  187. package/dist/server/bare/rag-hyperdb/rag-manager.d.ts +5 -0
  188. package/dist/server/bare/rag-hyperdb/rag-manager.js +65 -0
  189. package/dist/server/bare/registry/logging-stream-registry.d.ts +7 -24
  190. package/dist/server/bare/registry/logging-stream-registry.js +20 -99
  191. package/dist/server/bare/registry/model-registry.d.ts +26 -14
  192. package/dist/server/bare/registry/model-registry.js +15 -29
  193. package/dist/server/error-handlers.d.ts +2 -3
  194. package/dist/server/error-handlers.js +10 -15
  195. package/dist/server/http-server.d.ts +2 -0
  196. package/dist/server/http-server.js +189 -0
  197. package/dist/server/rpc/create-server.js +3 -5
  198. package/dist/server/rpc/handle-request.d.ts +9 -0
  199. package/dist/server/rpc/handle-request.js +242 -92
  200. package/dist/server/rpc/handlers/cancelHandler.js +3 -14
  201. package/dist/server/rpc/handlers/completion-stream-delegated.d.ts +1 -3
  202. package/dist/server/rpc/handlers/completion-stream-delegated.js +8 -20
  203. package/dist/server/rpc/handlers/completion-stream.js +43 -2
  204. package/dist/server/rpc/handlers/delete-cache.js +2 -4
  205. package/dist/server/rpc/handlers/download-asset.js +6 -59
  206. package/dist/server/rpc/handlers/embed.js +19 -2
  207. package/dist/server/rpc/handlers/index.d.ts +0 -13
  208. package/dist/server/rpc/handlers/index.js +0 -13
  209. package/dist/server/rpc/handlers/load-model/download-manager.d.ts +11 -12
  210. package/dist/server/rpc/handlers/load-model/download-manager.js +28 -43
  211. package/dist/server/rpc/handlers/load-model/http.d.ts +1 -2
  212. package/dist/server/rpc/handlers/load-model/http.js +59 -422
  213. package/dist/server/rpc/handlers/load-model/hyperdrive.d.ts +1 -2
  214. package/dist/server/rpc/handlers/load-model/hyperdrive.js +171 -364
  215. package/dist/server/rpc/handlers/load-model/index.d.ts +2 -2
  216. package/dist/server/rpc/handlers/load-model/index.js +2 -2
  217. package/dist/server/rpc/handlers/load-model/resolve.d.ts +1 -3
  218. package/dist/server/rpc/handlers/load-model/resolve.js +29 -110
  219. package/dist/server/rpc/handlers/load-model-delegated.d.ts +2 -6
  220. package/dist/server/rpc/handlers/load-model-delegated.js +20 -60
  221. package/dist/server/rpc/handlers/{load-model/handler.d.ts → load-model.d.ts} +2 -2
  222. package/dist/server/rpc/handlers/load-model.js +57 -0
  223. package/dist/server/rpc/handlers/logging-stream.js +4 -4
  224. package/dist/server/rpc/handlers/provideHandler/connection.js +10 -12
  225. package/dist/server/rpc/handlers/provideHandler/handler.js +17 -20
  226. package/dist/server/rpc/handlers/provideHandler/proxy.js +6 -8
  227. package/dist/server/rpc/handlers/rag.d.ts +2 -2
  228. package/dist/server/rpc/handlers/rag.js +43 -130
  229. package/dist/server/rpc/handlers/stopProvideHandler.js +2 -6
  230. package/dist/server/rpc/handlers/text-to-speech.js +5 -2
  231. package/dist/server/rpc/handlers/transcribe-stream.js +28 -2
  232. package/dist/server/rpc/handlers/translate.js +49 -2
  233. package/dist/server/rpc/handlers/unload-model.js +3 -12
  234. package/dist/server/rpc/index.d.ts +1 -1
  235. package/dist/server/utils/audio/decoder.d.ts +1 -2
  236. package/dist/server/utils/audio/decoder.js +12 -49
  237. package/dist/server/utils/cache.d.ts +8 -19
  238. package/dist/server/utils/cache.js +15 -100
  239. package/dist/server/utils/hash.d.ts +5 -0
  240. package/dist/server/utils/hash.js +11 -0
  241. package/dist/server/utils/index.d.ts +2 -7
  242. package/dist/server/utils/index.js +2 -7
  243. package/dist/server/worker.d.ts +5 -4
  244. package/dist/server/worker.js +89 -22
  245. package/package.json +41 -148
  246. package/NOTICE +0 -695
  247. package/bare-imports.json +0 -44
  248. package/dist/client/api/get-model-info.d.ts +0 -36
  249. package/dist/client/api/get-model-info.js +0 -14
  250. package/dist/client/api/heartbeat.d.ts +0 -30
  251. package/dist/client/api/heartbeat.js +0 -38
  252. package/dist/client/api/invoke-plugin.d.ts +0 -15
  253. package/dist/client/api/invoke-plugin.js +0 -38
  254. package/dist/client/api/ocr.d.ts +0 -31
  255. package/dist/client/api/ocr.js +0 -88
  256. package/dist/client/api/registry.d.ts +0 -14
  257. package/dist/client/api/registry.js +0 -37
  258. package/dist/client/config-loader/config-utils.d.ts +0 -5
  259. package/dist/client/config-loader/config-utils.js +0 -20
  260. package/dist/client/config-loader/resolve-config.bare.d.ts +0 -9
  261. package/dist/client/config-loader/resolve-config.bare.js +0 -87
  262. package/dist/client/config-loader/resolve-config.expo.d.ts +0 -11
  263. package/dist/client/config-loader/resolve-config.expo.js +0 -62
  264. package/dist/client/config-loader/resolve-config.node.d.ts +0 -10
  265. package/dist/client/config-loader/resolve-config.node.js +0 -145
  266. package/dist/client/init-hooks.d.ts +0 -21
  267. package/dist/client/init-hooks.js +0 -66
  268. package/dist/client/rpc/expo-device-info.d.ts +0 -6
  269. package/dist/client/rpc/expo-device-info.js +0 -32
  270. package/dist/client/rpc/profiling/index.d.ts +0 -2
  271. package/dist/client/rpc/profiling/index.js +0 -1
  272. package/dist/client/rpc/profiling/profiler.d.ts +0 -27
  273. package/dist/client/rpc/profiling/profiler.js +0 -139
  274. package/dist/constants/registry.d.ts +0 -2
  275. package/dist/constants/registry.js +0 -1
  276. package/dist/examples/cache-management.d.ts +0 -2
  277. package/dist/examples/cache-management.js +0 -97
  278. package/dist/examples/config/blind-relay/blind-relay.config.d.ts +0 -5
  279. package/dist/examples/config/blind-relay/blind-relay.config.js +0 -7
  280. package/dist/examples/config/default/default.config.d.ts +0 -8
  281. package/dist/examples/config/default/default.config.js +0 -6
  282. package/dist/examples/config/plugins/plugins.config.d.ts +0 -5
  283. package/dist/examples/config/plugins/plugins.config.js +0 -4
  284. package/dist/examples/config-reload.d.ts +0 -2
  285. package/dist/examples/config-reload.js +0 -49
  286. package/dist/examples/default-config-usage.d.ts +0 -17
  287. package/dist/examples/default-config-usage.js +0 -47
  288. package/dist/examples/delegated-inference/consumer-profiled.d.ts +0 -2
  289. package/dist/examples/delegated-inference/consumer-profiled.js +0 -67
  290. package/dist/examples/download-with-blind-relays.d.ts +0 -2
  291. package/dist/examples/download-with-blind-relays.js +0 -49
  292. package/dist/examples/embed-p2p.d.ts +0 -2
  293. package/dist/examples/embed-p2p.js +0 -54
  294. package/dist/examples/llamacpp-p2p.d.ts +0 -2
  295. package/dist/examples/llamacpp-sharded.d.ts +0 -2
  296. package/dist/examples/llamacpp-sharded.js +0 -53
  297. package/dist/examples/logging-file-transport.d.ts +0 -2
  298. package/dist/examples/logging-streaming.d.ts +0 -2
  299. package/dist/examples/logging-streaming.js +0 -75
  300. package/dist/examples/mcp-websearch.d.ts +0 -13
  301. package/dist/examples/mcp-websearch.js +0 -176
  302. package/dist/examples/ocr-fasttext.d.ts +0 -2
  303. package/dist/examples/ocr-fasttext.js +0 -52
  304. package/dist/examples/plugins.d.ts +0 -14
  305. package/dist/examples/plugins.js +0 -129
  306. package/dist/examples/profiling/basic.d.ts +0 -2
  307. package/dist/examples/profiling/basic.js +0 -71
  308. package/dist/examples/profiling/per-call.d.ts +0 -2
  309. package/dist/examples/profiling/per-call.js +0 -30
  310. package/dist/examples/quickstart.d.ts +0 -2
  311. package/dist/examples/quickstart.js +0 -28
  312. package/dist/examples/rag/rag-hyperdb/cancellation.d.ts +0 -2
  313. package/dist/examples/rag/rag-hyperdb/cancellation.js +0 -75
  314. package/dist/examples/rag/rag-hyperdb/ingest.d.ts +0 -2
  315. package/dist/examples/rag/rag-hyperdb/pipeline.d.ts +0 -2
  316. package/dist/examples/rag/rag-hyperdb/pipeline.js +0 -74
  317. package/dist/examples/rag/rag-hyperdb/workspaces.d.ts +0 -2
  318. package/dist/examples/rag/rag-hyperdb/workspaces.js +0 -178
  319. package/dist/examples/registry-query.d.ts +0 -2
  320. package/dist/examples/registry-query.js +0 -87
  321. package/dist/examples/seed-p2p.d.ts +0 -2
  322. package/dist/examples/transcription/parakeet-ctc-filesystem.d.ts +0 -2
  323. package/dist/examples/transcription/parakeet-ctc-filesystem.js +0 -40
  324. package/dist/examples/transcription/parakeet-microphone-record.d.ts +0 -2
  325. package/dist/examples/transcription/parakeet-microphone-record.js +0 -95
  326. package/dist/examples/transcription/parakeet-sortformer.d.ts +0 -2
  327. package/dist/examples/transcription/parakeet-sortformer.js +0 -115
  328. package/dist/examples/transcription/parakeet-tdt-filesystem.d.ts +0 -2
  329. package/dist/examples/transcription/parakeet-tdt-filesystem.js +0 -44
  330. package/dist/examples/translation/translation-bergamot-batch.d.ts +0 -2
  331. package/dist/examples/translation/translation-bergamot-batch.js +0 -49
  332. package/dist/examples/translation/translation-bergamot-pivot.d.ts +0 -2
  333. package/dist/examples/translation/translation-bergamot-pivot.js +0 -73
  334. package/dist/examples/translation/translation-bergamot.d.ts +0 -2
  335. package/dist/examples/translation/translation-bergamot.js +0 -39
  336. package/dist/examples/translation/translation-llm-afriquegemma.d.ts +0 -2
  337. package/dist/examples/translation/translation-llm-afriquegemma.js +0 -39
  338. package/dist/examples/tts/chatterbox.d.ts +0 -2
  339. package/dist/examples/tts/chatterbox.js +0 -59
  340. package/dist/examples/tts/supertonic.d.ts +0 -2
  341. package/dist/examples/tts/supertonic.js +0 -51
  342. package/dist/examples/tts/utils.d.ts +0 -17
  343. package/dist/expo/plugins/resolve-sdk-package-dir.d.ts +0 -15
  344. package/dist/expo/plugins/resolve-sdk-package-dir.js +0 -31
  345. package/dist/expo/plugins/withAndroidArchitecture.d.ts +0 -8
  346. package/dist/expo/plugins/withAndroidArchitecture.js +0 -52
  347. package/dist/expo/plugins/withAndroidNdkVersion.d.ts +0 -8
  348. package/dist/expo/plugins/withAndroidNdkVersion.js +0 -31
  349. package/dist/expo/plugins/withDeviceInfo.d.ts +0 -10
  350. package/dist/expo/plugins/withDeviceInfo.js +0 -48
  351. package/dist/logging/addon.d.ts +0 -6
  352. package/dist/logging/addon.js +0 -75
  353. package/dist/logging/client-logger.d.ts +0 -3
  354. package/dist/logging/client-logger.js +0 -24
  355. package/dist/logging/namespaces.d.ts +0 -6
  356. package/dist/logging/namespaces.js +0 -6
  357. package/dist/logging/registry.d.ts +0 -31
  358. package/dist/logging/registry.js +0 -62
  359. package/dist/logging/server-logger.d.ts +0 -3
  360. package/dist/logging/server-logger.js +0 -16
  361. package/dist/models/registry/models.d.ts +0 -10417
  362. package/dist/models/registry/models.js +0 -10757
  363. package/dist/models/update-models/codegen.d.ts +0 -3
  364. package/dist/models/update-models/codegen.js +0 -135
  365. package/dist/models/update-models/history.d.ts +0 -24
  366. package/dist/models/update-models/history.js +0 -107
  367. package/dist/models/update-models/index.d.ts +0 -2
  368. package/dist/models/update-models/index.js +0 -125
  369. package/dist/models/update-models/naming.d.ts +0 -4
  370. package/dist/models/update-models/naming.js +0 -370
  371. package/dist/models/update-models/processing.d.ts +0 -8
  372. package/dist/models/update-models/processing.js +0 -67
  373. package/dist/models/update-models/registry.d.ts +0 -4
  374. package/dist/models/update-models/registry.js +0 -67
  375. package/dist/models/update-models/shards.d.ts +0 -4
  376. package/dist/models/update-models/shards.js +0 -57
  377. package/dist/models/update-models/types.d.ts +0 -60
  378. package/dist/models/update-models/types.js +0 -1
  379. package/dist/models/update-models/utils.d.ts +0 -3
  380. package/dist/models/update-models/utils.js +0 -21
  381. package/dist/pear/pre.d.ts +0 -18
  382. package/dist/pear/pre.js +0 -433
  383. package/dist/profiling/aggregator.d.ts +0 -15
  384. package/dist/profiling/aggregator.js +0 -100
  385. package/dist/profiling/clock.d.ts +0 -12
  386. package/dist/profiling/clock.js +0 -51
  387. package/dist/profiling/controller.d.ts +0 -33
  388. package/dist/profiling/controller.js +0 -123
  389. package/dist/profiling/envelope.d.ts +0 -10
  390. package/dist/profiling/envelope.js +0 -36
  391. package/dist/profiling/events.d.ts +0 -20
  392. package/dist/profiling/events.js +0 -37
  393. package/dist/profiling/exporters.d.ts +0 -10
  394. package/dist/profiling/exporters.js +0 -236
  395. package/dist/profiling/index.d.ts +0 -36
  396. package/dist/profiling/index.js +0 -31
  397. package/dist/profiling/ring-buffer.d.ts +0 -19
  398. package/dist/profiling/ring-buffer.js +0 -83
  399. package/dist/profiling/types.d.ts +0 -47
  400. package/dist/profiling/types.js +0 -1
  401. package/dist/schemas/archive.d.ts +0 -9
  402. package/dist/schemas/archive.js +0 -17
  403. package/dist/schemas/engine-addon-map.d.ts +0 -5
  404. package/dist/schemas/engine-addon-map.js +0 -52
  405. package/dist/schemas/get-model-info.d.ts +0 -120
  406. package/dist/schemas/get-model-info.js +0 -58
  407. package/dist/schemas/heartbeat.d.ts +0 -17
  408. package/dist/schemas/heartbeat.js +0 -10
  409. package/dist/schemas/json-schema.d.ts +0 -16
  410. package/dist/schemas/json-schema.js +0 -2
  411. package/dist/schemas/mcp-adapter.d.ts +0 -47
  412. package/dist/schemas/mcp-adapter.js +0 -1
  413. package/dist/schemas/model-src-utils.d.ts +0 -148
  414. package/dist/schemas/model-src-utils.js +0 -35
  415. package/dist/schemas/model-types.d.ts +0 -183
  416. package/dist/schemas/model-types.js +0 -168
  417. package/dist/schemas/ocr.d.ts +0 -125
  418. package/dist/schemas/ocr.js +0 -57
  419. package/dist/schemas/path-validation.d.ts +0 -10
  420. package/dist/schemas/path-validation.js +0 -22
  421. package/dist/schemas/plugin.d.ts +0 -226
  422. package/dist/schemas/plugin.js +0 -158
  423. package/dist/schemas/profiling.d.ts +0 -105
  424. package/dist/schemas/profiling.js +0 -66
  425. package/dist/schemas/registry.d.ts +0 -356
  426. package/dist/schemas/registry.js +0 -93
  427. package/dist/schemas/reload-config.d.ts +0 -476
  428. package/dist/schemas/reload-config.js +0 -44
  429. package/dist/schemas/runtime-context.d.ts +0 -19
  430. package/dist/schemas/runtime-context.js +0 -7
  431. package/dist/schemas/sdk-config.d.ts +0 -2973
  432. package/dist/schemas/sdk-config.js +0 -136
  433. package/dist/schemas/sdk-errors-client.d.ts +0 -31
  434. package/dist/schemas/sdk-errors-client.js +0 -143
  435. package/dist/schemas/sdk-errors-registry.d.ts +0 -6
  436. package/dist/schemas/sdk-errors-registry.js +0 -8
  437. package/dist/schemas/sdk-errors-server.d.ts +0 -89
  438. package/dist/schemas/sdk-errors-server.js +0 -451
  439. package/dist/schemas/shard.d.ts +0 -21
  440. package/dist/schemas/shard.js +0 -17
  441. package/dist/schemas/tools.d.ts +0 -65
  442. package/dist/schemas/tools.js +0 -43
  443. package/dist/schemas/transcription-config.d.ts +0 -383
  444. package/dist/scripts/run-security-tests-bare.d.ts +0 -2
  445. package/dist/scripts/run-security-tests-bare.js +0 -78
  446. package/dist/scripts/run-security-tests.d.ts +0 -2
  447. package/dist/scripts/run-security-tests.js +0 -22
  448. package/dist/scripts/run-unit-tests.d.ts +0 -2
  449. package/dist/scripts/run-unit-tests.js +0 -17
  450. package/dist/server/bare/ops/embed.d.ts +0 -12
  451. package/dist/server/bare/ops/load-model.d.ts +0 -9
  452. package/dist/server/bare/ops/load-model.js +0 -85
  453. package/dist/server/bare/ops/transcribe.d.ts +0 -3
  454. package/dist/server/bare/ops/transcribe.js +0 -75
  455. package/dist/server/bare/ops/translate.d.ts +0 -5
  456. package/dist/server/bare/ops/unload-model.js +0 -41
  457. package/dist/server/bare/plugins/index.d.ts +0 -8
  458. package/dist/server/bare/plugins/index.js +0 -7
  459. package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.d.ts +0 -6
  460. package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js +0 -34
  461. package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +0 -220
  462. package/dist/server/bare/plugins/llamacpp-completion/plugin.js +0 -155
  463. package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +0 -54
  464. package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +0 -87
  465. package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +0 -367
  466. package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +0 -201
  467. package/dist/server/bare/plugins/onnx-ocr/ops/ocr-stream.d.ts +0 -10
  468. package/dist/server/bare/plugins/onnx-ocr/ops/ocr-stream.js +0 -110
  469. package/dist/server/bare/plugins/onnx-ocr/plugin.d.ts +0 -86
  470. package/dist/server/bare/plugins/onnx-ocr/plugin.js +0 -117
  471. package/dist/server/bare/plugins/onnx-tts/plugin.d.ts +0 -373
  472. package/dist/server/bare/plugins/onnx-tts/plugin.js +0 -182
  473. package/dist/server/bare/plugins/onnx-tts/wav-helper.d.ts +0 -14
  474. package/dist/server/bare/plugins/onnx-tts/wav-helper.js +0 -107
  475. package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +0 -317
  476. package/dist/server/bare/plugins/parakeet-transcription/plugin.js +0 -154
  477. package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +0 -237
  478. package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +0 -86
  479. package/dist/server/bare/rag-hyperdb/handlers/chunk.d.ts +0 -3
  480. package/dist/server/bare/rag-hyperdb/handlers/chunk.js +0 -7
  481. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.d.ts +0 -3
  482. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.js +0 -9
  483. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.d.ts +0 -3
  484. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js +0 -14
  485. package/dist/server/bare/rag-hyperdb/handlers/ingest.d.ts +0 -9
  486. package/dist/server/bare/rag-hyperdb/handlers/ingest.js +0 -18
  487. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.d.ts +0 -3
  488. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js +0 -4
  489. package/dist/server/bare/rag-hyperdb/handlers/reindex.d.ts +0 -9
  490. package/dist/server/bare/rag-hyperdb/handlers/reindex.js +0 -16
  491. package/dist/server/bare/rag-hyperdb/rag-operation-manager.d.ts +0 -7
  492. package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +0 -39
  493. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.d.ts +0 -15
  494. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +0 -136
  495. package/dist/server/bare/registry/config-registry.d.ts +0 -14
  496. package/dist/server/bare/registry/config-registry.js +0 -82
  497. package/dist/server/bare/registry/model-config-registry.d.ts +0 -4
  498. package/dist/server/bare/registry/model-config-registry.js +0 -15
  499. package/dist/server/bare/registry/model-config-utils.d.ts +0 -15
  500. package/dist/server/bare/registry/model-config-utils.js +0 -112
  501. package/dist/server/bare/registry/registry-client.d.ts +0 -5
  502. package/dist/server/bare/registry/registry-client.js +0 -37
  503. package/dist/server/bare/registry/runtime-context-registry.d.ts +0 -7
  504. package/dist/server/bare/registry/runtime-context-registry.js +0 -26
  505. package/dist/server/bare/utils/audio-input.d.ts +0 -10
  506. package/dist/server/bare/utils/audio-input.js +0 -33
  507. package/dist/server/bare/utils/loader-adapter.d.ts +0 -7
  508. package/dist/server/bare/utils/loader-adapter.js +0 -9
  509. package/dist/server/env.d.ts +0 -22
  510. package/dist/server/env.js +0 -57
  511. package/dist/server/plugins/index.d.ts +0 -2
  512. package/dist/server/plugins/index.js +0 -1
  513. package/dist/server/plugins/registry.d.ts +0 -9
  514. package/dist/server/plugins/registry.js +0 -79
  515. package/dist/server/rpc/delegate-transport.d.ts +0 -19
  516. package/dist/server/rpc/delegate-transport.js +0 -236
  517. package/dist/server/rpc/delegate-utils.d.ts +0 -2
  518. package/dist/server/rpc/delegate-utils.js +0 -5
  519. package/dist/server/rpc/handler-registry.d.ts +0 -3
  520. package/dist/server/rpc/handler-registry.js +0 -113
  521. package/dist/server/rpc/handler-utils.d.ts +0 -23
  522. package/dist/server/rpc/handler-utils.js +0 -170
  523. package/dist/server/rpc/handlers/cancel-delegated.d.ts +0 -4
  524. package/dist/server/rpc/handlers/cancel-delegated.js +0 -71
  525. package/dist/server/rpc/handlers/get-model-info.d.ts +0 -3
  526. package/dist/server/rpc/handlers/get-model-info.js +0 -164
  527. package/dist/server/rpc/handlers/heartbeat-delegated.d.ts +0 -4
  528. package/dist/server/rpc/handlers/heartbeat-delegated.js +0 -32
  529. package/dist/server/rpc/handlers/heartbeat.d.ts +0 -3
  530. package/dist/server/rpc/handlers/heartbeat.js +0 -3
  531. package/dist/server/rpc/handlers/load-model/download-stats.d.ts +0 -6
  532. package/dist/server/rpc/handlers/load-model/download-stats.js +0 -87
  533. package/dist/server/rpc/handlers/load-model/handler.js +0 -187
  534. package/dist/server/rpc/handlers/load-model/registry.d.ts +0 -11
  535. package/dist/server/rpc/handlers/load-model/registry.js +0 -548
  536. package/dist/server/rpc/handlers/load-model/types.d.ts +0 -29
  537. package/dist/server/rpc/handlers/load-model/types.js +0 -1
  538. package/dist/server/rpc/handlers/ocr-stream.d.ts +0 -3
  539. package/dist/server/rpc/handlers/ocr-stream.js +0 -4
  540. package/dist/server/rpc/handlers/plugin-dispatch.d.ts +0 -15
  541. package/dist/server/rpc/handlers/plugin-dispatch.js +0 -59
  542. package/dist/server/rpc/handlers/plugin-invoke.d.ts +0 -4
  543. package/dist/server/rpc/handlers/plugin-invoke.js +0 -92
  544. package/dist/server/rpc/handlers/registry.d.ts +0 -5
  545. package/dist/server/rpc/handlers/registry.js +0 -157
  546. package/dist/server/rpc/handlers/unload-model-delegated.d.ts +0 -3
  547. package/dist/server/rpc/handlers/unload-model-delegated.js +0 -32
  548. package/dist/server/rpc/profiling/context.d.ts +0 -18
  549. package/dist/server/rpc/profiling/context.js +0 -38
  550. package/dist/server/rpc/profiling/delegation-profiler.d.ts +0 -32
  551. package/dist/server/rpc/profiling/delegation-profiler.js +0 -154
  552. package/dist/server/rpc/profiling/index.d.ts +0 -5
  553. package/dist/server/rpc/profiling/index.js +0 -4
  554. package/dist/server/rpc/profiling/operation-metrics.d.ts +0 -25
  555. package/dist/server/rpc/profiling/operation-metrics.js +0 -199
  556. package/dist/server/rpc/profiling/operation-wrappers.d.ts +0 -18
  557. package/dist/server/rpc/profiling/operation-wrappers.js +0 -124
  558. package/dist/server/rpc/profiling/profiler.d.ts +0 -13
  559. package/dist/server/rpc/profiling/profiler.js +0 -97
  560. package/dist/server/utils/archive.d.ts +0 -4
  561. package/dist/server/utils/archive.js +0 -179
  562. package/dist/server/utils/checksum.d.ts +0 -4
  563. package/dist/server/utils/checksum.js +0 -31
  564. package/dist/server/utils/config-transform.d.ts +0 -3
  565. package/dist/server/utils/config-transform.js +0 -23
  566. package/dist/server/utils/formatting.d.ts +0 -19
  567. package/dist/server/utils/formatting.js +0 -61
  568. package/dist/server/utils/gguf-tensor-extractor.d.ts +0 -15
  569. package/dist/server/utils/gguf-tensor-extractor.js +0 -314
  570. package/dist/server/utils/path-security.d.ts +0 -12
  571. package/dist/server/utils/path-security.js +0 -25
  572. package/dist/server/utils/shard-utils.d.ts +0 -48
  573. package/dist/server/utils/shard-utils.js +0 -125
  574. package/dist/server/worker-core.d.ts +0 -6
  575. package/dist/server/worker-core.js +0 -88
  576. package/dist/utils/errors-base.d.ts +0 -3
  577. package/dist/utils/errors-base.js +0 -13
  578. package/dist/utils/errors-client.d.ts +0 -137
  579. package/dist/utils/errors-client.js +0 -240
  580. package/dist/utils/errors-server.d.ts +0 -236
  581. package/dist/utils/errors-server.js +0 -412
  582. package/dist/utils/global-singleton.d.ts +0 -2
  583. package/dist/utils/global-singleton.js +0 -10
  584. package/dist/utils/mcp-adapter.d.ts +0 -12
  585. package/dist/utils/mcp-adapter.js +0 -103
  586. package/dist/utils/object.d.ts +0 -2
  587. package/dist/utils/object.js +0 -3
  588. package/dist/utils/path-sanitize.d.ts +0 -17
  589. package/dist/utils/path-sanitize.js +0 -54
  590. package/dist/utils/tool-helpers.d.ts +0 -25
  591. package/dist/utils/tool-helpers.js +0 -112
  592. package/expo/plugins/patches/android-link.mjs +0 -63
  593. package/expo/plugins/patches/ios-link.mjs +0 -63
  594. /package/dist/examples/{seed-p2p.js → seed-hyperdrive.js} +0 -0
  595. /package/dist/examples/{transcription/whispercpp-filesystem.d.ts → whispercpp-filesystem.d.ts} +0 -0
  596. /package/dist/examples/{transcription/whispercpp-microphone-record.d.ts → whispercpp-microphone-record.d.ts} +0 -0
  597. /package/dist/examples/{transcription/whispercpp-prompt.d.ts → whispercpp-prompt.d.ts} +0 -0
  598. /package/dist/models/{registry → hyperdrive}/index.d.ts +0 -0
  599. /package/dist/server/bare/{ops → addons}/cancel.d.ts +0 -0
  600. /package/dist/server/bare/{plugins/onnx-tts/ops → addons/tts/handlers}/text-to-speech.d.ts +0 -0
  601. /package/dist/server/bare/{ops → addons}/unload-model.d.ts +0 -0
@@ -1,41 +1,42 @@
1
1
  import fs, { promises as fsPromises } from "bare-fs";
2
2
  import path from "bare-path";
3
+ import crypto from "bare-crypto";
3
4
  import Corestore from "corestore";
4
5
  import Hyperswarm, {} from "hyperswarm";
5
6
  import Hyperdrive from "hyperdrive";
6
7
  import {} from "bare-stream";
7
8
  import { AbortController } from "bare-abort-controller";
8
- import { getEnv } from "../../../env.js";
9
- import { getModelsCacheDir, generateShortHash, detectShardedModel, getShardedModelCacheDir, getShardPath, checkShardCompleteness, measureChecksum, extractTensorsFromShards, calculatePercentage, } from "../../../utils/index.js";
10
- import { getModelBySrc } from "../../../../models/registry/index.js";
9
+ import { getEnv } from "../../../worker.js";
10
+ import { getModelsCacheDir, generateShortHash } from "../../../utils/index.js";
11
+ import { getModelBySrc } from "../../../../models/hyperdrive/index.js";
11
12
  import { getActiveDownload, registerDownload, unregisterDownload, createHyperdriveDownloadKey, shouldClearCache, clearClearCacheFlag, } from "./download-manager.js";
12
- import { getSDKConfig } from "../../../bare/registry/config-registry.js";
13
- import { FileNotFoundError, ChecksumValidationFailedError, DownloadCancelledError, HyperdriveDownloadFailedError, ModelLoadFailedError, NoBlobFoundError, } from "../../../../utils/errors-server.js";
14
- import { getServerLogger } from "../../../../logging/index.js";
15
- const logger = getServerLogger();
16
- function getCorestoreDir(hyperdriveKey) {
17
- return path.join(getEnv().HOME_DIR, ".qvac", "corestore", hyperdriveKey);
13
+ function createProgressHandler(blob, progressCallback, downloadKey, initialBytes = 0) {
14
+ let downloadedBytes = initialBytes;
15
+ return (index, bytes) => {
16
+ if (index >= blob.blockOffset &&
17
+ index < blob.blockOffset + blob.blockLength) {
18
+ downloadedBytes += bytes;
19
+ if (progressCallback && downloadKey) {
20
+ progressCallback({
21
+ type: "modelProgress",
22
+ downloaded: downloadedBytes,
23
+ total: blob.byteLength,
24
+ percentage: blob.byteLength > 0 ? (downloadedBytes / blob.byteLength) * 100 : 0,
25
+ downloadKey,
26
+ });
27
+ }
28
+ }
29
+ };
18
30
  }
19
31
  async function setupHyperdrive(hyperdriveKey, corestoreDir) {
20
32
  const corestore = new Corestore(corestoreDir);
21
33
  await corestore.ready();
22
34
  const drive = new Hyperdrive(corestore, Buffer.from(hyperdriveKey, "hex"));
23
35
  await drive.ready();
24
- const getRelays = () => {
25
- const config = getSDKConfig();
26
- const relayPublicKeys = config.swarmRelays;
27
- if (!relayPublicKeys || relayPublicKeys.length === 0) {
28
- return null;
29
- }
30
- return relayPublicKeys.map((key) => Buffer.from(key, "hex"));
31
- };
32
- const swarmOptions = {
33
- relayThrough: getRelays,
34
- };
35
- const swarm = new Hyperswarm(swarmOptions);
36
+ const swarm = new Hyperswarm();
36
37
  const doneFindingPeers = drive.findingPeers();
37
38
  swarm.on("connection", (connection) => {
38
- logger.debug(`🤝 Connected to peer for hyperdrive download`);
39
+ console.log(`🤝 Connected to peer for hyperdrive download`);
39
40
  drive.replicate(connection);
40
41
  });
41
42
  swarm.join(drive.discoveryKey, { server: false, client: true });
@@ -43,7 +44,7 @@ async function setupHyperdrive(hyperdriveKey, corestoreDir) {
43
44
  return { corestore, drive, swarm, corestoreDir };
44
45
  }
45
46
  async function cleanupHyperdrive(setup) {
46
- logger.debug("🧹 Cleaning up hyperdrive setup");
47
+ console.log("🧹 Cleaning up hyperdrive setup");
47
48
  if (!setup.swarm.suspended) {
48
49
  try {
49
50
  await setup.swarm.suspend();
@@ -57,12 +58,12 @@ async function cleanupHyperdrive(setup) {
57
58
  await setup.corestore.close();
58
59
  }
59
60
  export async function deleteCorestoreDirectory(corestoreDir) {
60
- logger.info(`🗑️ DELETING corestore directory... ${corestoreDir}`);
61
+ console.log(`🗑️ DELETING corestore directory... ${corestoreDir}`);
61
62
  try {
62
63
  await fsPromises.rm(corestoreDir, { recursive: true, force: true });
63
64
  }
64
65
  catch (e) {
65
- logger.error(`Error deleting corestore directory: ${e instanceof Error ? e.message : String(e)}`);
66
+ console.error(`Error deleting corestore directory: ${e instanceof Error ? e.message : String(e)}`);
66
67
  }
67
68
  }
68
69
  async function findFileInHyperdrive(drive, modelFileName) {
@@ -102,7 +103,7 @@ async function findFileInHyperdrive(drive, modelFileName) {
102
103
  const filesInfo = availableFiles.length > 0
103
104
  ? `Available files: ${availableFiles.join(", ")}`
104
105
  : "Could not list available files";
105
- throw new FileNotFoundError(`${modelFileName} in hyperdrive. ${filesInfo}`);
106
+ throw new Error(`File ${modelFileName} not found in hyperdrive. ${filesInfo}`);
106
107
  }
107
108
  async function checkFileDownloaded(drive, entry) {
108
109
  const blobs = await drive.getBlobs();
@@ -142,7 +143,40 @@ async function validateFileExistence(drive, file) {
142
143
  totalBytes,
143
144
  };
144
145
  }
145
- async function validateCachedFile(modelPath, modelFileName, expectedSize, expectedChecksum, hooks) {
146
+ async function validateFileChecksum(filePath, expectedChecksum) {
147
+ console.log(`🔍 Validating SHA256 checksum...`);
148
+ return new Promise((resolve) => {
149
+ try {
150
+ const hash = crypto.createHash("sha256");
151
+ const stream = fs.createReadStream(filePath);
152
+ stream.on("data", (chunk) => {
153
+ hash.update(chunk);
154
+ });
155
+ stream.on("end", () => {
156
+ const actualChecksum = hash.digest("hex");
157
+ console.log(`Expected: ${String(expectedChecksum)}`);
158
+ console.log(`Actual: ${String(actualChecksum)}`);
159
+ const isValid = actualChecksum === expectedChecksum;
160
+ if (isValid) {
161
+ console.log(`✅ Checksum validation passed!`);
162
+ }
163
+ else {
164
+ console.log(`❌ Checksum validation FAILED! File may be corrupted.`);
165
+ }
166
+ resolve(isValid);
167
+ });
168
+ stream.on("error", (error) => {
169
+ console.error(`❌ Error validating checksum: ${error.message}`);
170
+ resolve(false);
171
+ });
172
+ }
173
+ catch (error) {
174
+ console.error(`❌ Error validating checksum: ${error instanceof Error ? error.message : String(error)}`);
175
+ resolve(false);
176
+ }
177
+ });
178
+ }
179
+ async function validateCachedFile(modelPath, modelFileName, expectedSize, expectedChecksum) {
146
180
  try {
147
181
  await fsPromises.access(modelPath);
148
182
  const localStats = await fsPromises.stat(modelPath);
@@ -150,16 +184,21 @@ async function validateCachedFile(modelPath, modelFileName, expectedSize, expect
150
184
  // For hyperdrive: only validate if file is complete
151
185
  // Partial files are ignored - corestore state is the source of truth for resume
152
186
  if (localSize === expectedSize) {
153
- logger.info(`✅ Model cached with correct size: ${modelPath}`);
187
+ console.log(`✅ Model cached with correct size: ${modelPath}`);
154
188
  // Always validate checksum if provided, even when size matches
155
189
  if (expectedChecksum && expectedChecksum.length === 64) {
156
- const checksum = await measureChecksum(modelPath, hooks);
157
- if (checksum !== expectedChecksum) {
158
- throw new ChecksumValidationFailedError(`${modelFileName}. Expected: ${expectedChecksum}. Actual: ${checksum}. File may be corrupted`);
190
+ const isValid = await validateFileChecksum(modelPath, expectedChecksum);
191
+ if (isValid) {
192
+ return modelPath;
193
+ }
194
+ else {
195
+ throw new Error(`File ${modelFileName} is fully downloaded but checksum validation failed. Expected: ${expectedChecksum}. File may be corrupted.`);
159
196
  }
160
197
  }
161
- logger.info(`✅ Model already cached and size validated: ${modelPath}`);
162
- return modelPath;
198
+ else {
199
+ console.log(`✅ Model already cached and size validated: ${modelPath}`);
200
+ return modelPath;
201
+ }
163
202
  }
164
203
  // File exists but incomplete - will be overwritten during download
165
204
  // Resume state will be determined by corestore blocks, not file size
@@ -170,66 +209,91 @@ async function validateCachedFile(modelPath, modelFileName, expectedSize, expect
170
209
  return null;
171
210
  }
172
211
  }
173
- async function downloadSingleFileToFilesystem(modelPath, modelFileName, hyperdriveKey, corestoreDir, downloadKey, expectedChecksum, progressCallback, seed, signal, hooks) {
212
+ async function performHyperdriveDownload(modelPath, modelFileName, hyperdriveKey, corestoreDir, downloadKey, progressCallback, seed, signal) {
174
213
  // Check if already aborted
175
214
  if (signal?.aborted) {
176
- throw new DownloadCancelledError();
215
+ throw new Error("Download cancelled");
177
216
  }
178
- logger.info(`Downloading model from hyperdrive ${hyperdriveKey} to ${modelPath}`);
217
+ console.log(`Downloading model from hyperdrive ${hyperdriveKey} to ${modelPath}`);
179
218
  const setup = await setupHyperdrive(hyperdriveKey, corestoreDir);
219
+ // Set up abort handler
220
+ let readStream;
221
+ let writeStream;
180
222
  const cleanup = () => {
181
- logger.info("🛑 Aborting hyperdrive download...");
223
+ console.log("🛑 Aborting hyperdrive download...");
182
224
  setup.swarm.suspended = true;
183
225
  setup.swarm.suspend().catch(() => {
184
226
  // Ignore errors during emergency suspend
185
227
  });
228
+ // Destroy streams if they exist
229
+ if (readStream) {
230
+ readStream.destroy();
231
+ }
232
+ if (writeStream) {
233
+ writeStream.destroy();
234
+ }
186
235
  };
187
236
  signal?.addEventListener("abort", cleanup);
188
- let downloadSucceeded = false;
237
+ let downloadHandler;
189
238
  try {
190
- const progressContext = progressCallback
191
- ? {
192
- downloadKey,
193
- callback: progressCallback,
194
- }
195
- : undefined;
196
- await downloadAndValidateFile(setup.drive, modelFileName, modelPath, 0, // Size will be determined from drive
197
- expectedChecksum, progressContext, signal, hooks);
198
- logger.info(`✅ Model downloaded successfully to ${modelPath}`);
199
- // Send final 100% progress update
200
- if (progressCallback) {
201
- try {
202
- const stats = await fsPromises.stat(modelPath);
203
- progressCallback({
204
- type: "modelProgress",
205
- downloaded: stats.size,
206
- total: stats.size,
207
- percentage: 100,
208
- downloadKey,
209
- });
210
- }
211
- catch {
212
- // Ignore stat errors
213
- }
239
+ const { entry, blobs, targetPath, blocksDownloaded, totalBlocks, totalBytes, } = await validateFileExistence(setup.drive, modelFileName);
240
+ const blob = entry?.value?.blob;
241
+ if (!blob) {
242
+ throw new Error(`No blob found for ${modelFileName}`);
243
+ }
244
+ // Calculate already downloaded bytes for resuming
245
+ const bytesPerBlock = totalBlocks > 0 ? totalBytes / totalBlocks : 0;
246
+ const initialBytes = Math.floor(blocksDownloaded * bytesPerBlock);
247
+ // Track only downloads for blocks within our file's blob range
248
+ downloadHandler = createProgressHandler(blob, progressCallback, downloadKey, initialBytes);
249
+ blobs.core.on("download", downloadHandler);
250
+ // Check if aborted before starting streams
251
+ if (signal?.aborted) {
252
+ throw new Error("Download cancelled");
253
+ }
254
+ // Trigger download for this file (hyperdrive will only download missing blocks)
255
+ setup.drive.download(targetPath);
256
+ readStream = setup.drive.createReadStream(targetPath);
257
+ writeStream = fs.createWriteStream(modelPath);
258
+ // Pipe the streams
259
+ readStream.pipe(writeStream);
260
+ // Wait for download to complete
261
+ await new Promise((resolve, reject) => {
262
+ writeStream.on("finish", resolve);
263
+ writeStream.on("error", reject);
264
+ readStream.on("error", reject);
265
+ // Also reject on abort
266
+ signal?.addEventListener("abort", () => {
267
+ reject(new Error("Download cancelled"));
268
+ }, { once: true });
269
+ });
270
+ console.log(`✅ Model downloaded successfully to ${modelPath}`);
271
+ // Delete corestore directory after successful download (only when not seeding, to save space)
272
+ if (!seed) {
273
+ await deleteCorestoreDirectory(setup.corestoreDir);
214
274
  }
215
- downloadSucceeded = true;
216
275
  }
217
276
  catch (error) {
218
- logger.error("❌ Error during hyperdrive download:", error instanceof Error ? error.message : String(error));
277
+ console.error("❌ Error during hyperdrive download:", error instanceof Error ? error.message : String(error));
219
278
  // Preserve cancellation errors
220
279
  if (error instanceof Error && error.message === "Download cancelled") {
221
280
  throw error;
222
281
  }
223
- throw new HyperdriveDownloadFailedError(`Download failed for ${modelFileName} from hyperdrive: ${hyperdriveKey}`, error);
282
+ throw new Error(`Download failed for ${modelFileName} from hyperdrive: ${hyperdriveKey}`);
224
283
  }
225
284
  finally {
226
285
  signal?.removeEventListener("abort", cleanup);
286
+ if (downloadHandler) {
287
+ try {
288
+ const { blobs } = await validateFileExistence(setup.drive, modelFileName);
289
+ blobs.core.off("download", downloadHandler);
290
+ }
291
+ catch {
292
+ // If we can't get blobs, setup is already closed
293
+ }
294
+ }
227
295
  if (!seed) {
228
296
  await cleanupHyperdrive(setup);
229
- // Delete only after close - Windows EBUSY on LOCK if deleted before corestore.close()
230
- if (downloadSucceeded) {
231
- await deleteCorestoreDirectory(corestoreDir);
232
- }
233
297
  }
234
298
  // Only delete corestore and partial file if user explicitly requested clearCache
235
299
  if (signal?.aborted && shouldClearCache(downloadKey)) {
@@ -244,110 +308,56 @@ async function downloadSingleFileToFilesystem(modelPath, modelFileName, hyperdri
244
308
  clearClearCacheFlag(downloadKey);
245
309
  }
246
310
  }
247
- async function downloadAndValidateFile(drive, sourceFileName, targetFilePath, expectedSize, expectedChecksum, progressContext, signal, hooks) {
248
- const { entry, blobs, targetPath, blocksDownloaded, totalBlocks, totalBytes, } = await validateFileExistence(drive, sourceFileName);
249
- const blob = entry?.value?.blob;
250
- if (!blob) {
251
- throw new NoBlobFoundError(sourceFileName);
311
+ export async function downloadModelFromHyperdrive(hyperdriveKey, modelFileName, seed, progressCallback, expectedChecksum) {
312
+ const downloadKey = createHyperdriveDownloadKey(hyperdriveKey, modelFileName);
313
+ // Check if already downloading
314
+ const existing = getActiveDownload(downloadKey);
315
+ if (existing) {
316
+ return existing.promise;
252
317
  }
253
- // Use actual file size from drive if expectedSize is 0
254
- const fileSizeToValidate = expectedSize || totalBytes;
255
- // Setup progress tracking
256
- let downloadedBytes = 0;
257
- const bytesPerBlock = totalBlocks > 0 ? totalBytes / totalBlocks : 0;
258
- const initialBytes = Math.floor(blocksDownloaded * bytesPerBlock);
259
- downloadedBytes = initialBytes;
260
- const progressHandler = (index, bytes) => {
261
- if (index >= blob.blockOffset &&
262
- index < blob.blockOffset + blob.blockLength) {
263
- downloadedBytes += bytes;
264
- const cappedDownloaded = Math.min(downloadedBytes, totalBytes);
265
- if (progressContext) {
266
- const baseProgress = {
267
- type: "modelProgress",
268
- downloaded: cappedDownloaded,
269
- total: totalBytes,
270
- percentage: calculatePercentage(cappedDownloaded, totalBytes),
271
- downloadKey: progressContext.downloadKey,
272
- };
273
- if (progressContext.shardInfo) {
274
- const currentOverall = progressContext.shardInfo.overallDownloaded + cappedDownloaded;
275
- progressContext.callback({
276
- ...baseProgress,
277
- shardInfo: {
278
- currentShard: progressContext.shardInfo.currentShard,
279
- totalShards: progressContext.shardInfo.totalShards,
280
- shardName: progressContext.shardInfo.shardName,
281
- overallDownloaded: currentOverall,
282
- overallTotal: progressContext.shardInfo.overallTotal,
283
- overallPercentage: progressContext.shardInfo.overallTotal > 0
284
- ? (currentOverall / progressContext.shardInfo.overallTotal) *
285
- 100
286
- : 0,
287
- },
288
- });
289
- }
290
- else {
291
- progressContext.callback(baseProgress);
292
- }
293
- }
294
- }
295
- };
296
- blobs.core.on("download", progressHandler);
297
- let readStream;
298
- let writeStream;
299
- try {
300
- // Download blocks and stream to file
301
- drive.download(targetPath);
302
- readStream = drive.createReadStream(targetPath);
303
- writeStream = fs.createWriteStream(targetFilePath);
304
- readStream.pipe(writeStream);
305
- await new Promise((resolve, reject) => {
306
- writeStream.on("finish", resolve);
307
- writeStream.on("error", reject);
308
- readStream.on("error", reject);
309
- signal?.addEventListener("abort", () => reject(new Error("Download cancelled")), { once: true });
310
- });
311
- blobs.core.off("download", progressHandler);
312
- // Validate file size
313
- const stats = await fsPromises.stat(targetFilePath);
314
- if (stats.size !== fileSizeToValidate) {
315
- throw new ChecksumValidationFailedError(`${path.basename(targetFilePath)}. File size mismatch: expected ${fileSizeToValidate}, got ${stats.size}`);
316
- }
317
- // Validate checksum
318
- if (expectedChecksum && expectedChecksum.length === 64) {
319
- const checksum = await measureChecksum(targetFilePath, hooks);
320
- if (checksum !== expectedChecksum) {
321
- await fsPromises.unlink(targetFilePath);
322
- throw new ChecksumValidationFailedError(`${path.basename(targetFilePath)}. Expected: ${expectedChecksum}. Actual: ${checksum}`);
318
+ const corestoreDir = path.join(getEnv().HOME_DIR, ".qvac", "corestore", hyperdriveKey);
319
+ const cacheDir = getModelsCacheDir();
320
+ const sourceHash = generateShortHash(`${hyperdriveKey}/${modelFileName}`);
321
+ const modelPath = path.join(cacheDir, `${sourceHash}_${modelFileName}`);
322
+ // Get model definition to get expected size (if it's a known model)
323
+ const model = getModelBySrc(modelFileName, hyperdriveKey);
324
+ // First, check if we already have a valid cached file (only if we have model metadata)
325
+ if (model) {
326
+ const cachedPath = await validateCachedFile(modelPath, modelFileName, model.expectedSize, expectedChecksum || model.sha256Checksum);
327
+ if (cachedPath) {
328
+ // Delete any leftover corestore directory from previous runs (only when not seeding)
329
+ if (!seed) {
330
+ await deleteCorestoreDirectory(corestoreDir);
323
331
  }
332
+ return cachedPath;
324
333
  }
325
- else if (!expectedChecksum) {
326
- logger.warn(`⚠️ No checksum available for validation`);
327
- }
328
- }
329
- catch (error) {
330
- if (readStream) {
331
- readStream.destroy();
332
- }
333
- if (writeStream) {
334
- writeStream.destroy();
335
- }
336
- blobs.core.off("download", progressHandler);
337
- throw error;
338
334
  }
339
- }
340
- function createManagedDownload(downloadKey, hyperdriveKey, modelFileName, downloadFn, progressCallback) {
335
+ // Create managed download with AbortController
341
336
  const abortController = new AbortController();
342
337
  const downloadPromise = (async () => {
343
338
  try {
344
- return await downloadFn(abortController.signal);
339
+ // Download the file from hyperdrive
340
+ await performHyperdriveDownload(modelPath, modelFileName, hyperdriveKey, corestoreDir, downloadKey, progressCallback, seed, abortController.signal);
341
+ // Validate checksum using provided checksum or model's checksum (if available)
342
+ const checksumToValidate = expectedChecksum || model?.sha256Checksum;
343
+ if (checksumToValidate && checksumToValidate.length === 64) {
344
+ const isValid = await validateFileChecksum(modelPath, checksumToValidate);
345
+ if (!isValid) {
346
+ await fsPromises.unlink(modelPath);
347
+ throw new Error(`Checksum validation failed for ${modelFileName}`);
348
+ }
349
+ }
350
+ else {
351
+ console.log(`⚠️ No valid checksum available for validation`);
352
+ }
353
+ return modelPath;
345
354
  }
346
355
  finally {
356
+ // Cleanup from download manager
347
357
  unregisterDownload(downloadKey);
348
- clearClearCacheFlag(downloadKey);
349
358
  }
350
359
  })();
360
+ // Register download
351
361
  const downloadEntry = {
352
362
  key: downloadKey,
353
363
  promise: downloadPromise,
@@ -361,206 +371,3 @@ function createManagedDownload(downloadKey, hyperdriveKey, modelFileName, downlo
361
371
  registerDownload(downloadKey, downloadEntry);
362
372
  return downloadPromise;
363
373
  }
364
- async function downloadShardedFilesToFilesystem(hyperdriveKey, firstShardFileName, shardMetadata, progressCallback, seed, signal, hooks) {
365
- if (signal?.aborted) {
366
- throw new DownloadCancelledError();
367
- }
368
- const shardInfo = detectShardedModel(firstShardFileName);
369
- if (!shardInfo.isSharded || !shardInfo.totalShards) {
370
- throw new ModelLoadFailedError(`Not a sharded model: ${firstShardFileName}`);
371
- }
372
- const shardDir = getShardedModelCacheDir(hyperdriveKey);
373
- const allFiles = shardMetadata.map((s) => s.filename);
374
- const numberedShardCount = shardInfo.totalShards;
375
- logger.info(`Downloading sharded model with ${numberedShardCount} numbered shards + ${allFiles.length - numberedShardCount} companion files to ${shardDir}`);
376
- // Check which files need to be downloaded
377
- const invalidIndices = await checkShardCompleteness(hyperdriveKey, allFiles, shardMetadata, hooks ? (ms) => hooks.addChecksumValidationTimeMs(ms) : undefined);
378
- if (invalidIndices.length === 0) {
379
- logger.info(`✅ All ${allFiles.length} files already downloaded and validated`);
380
- hooks?.markCacheHit();
381
- if (progressCallback) {
382
- const overallTotal = shardMetadata.reduce((sum, shard) => sum + shard.expectedSize, 0);
383
- const lastFile = allFiles[allFiles.length - 1];
384
- progressCallback({
385
- type: "modelProgress",
386
- downloaded: overallTotal,
387
- total: overallTotal,
388
- percentage: 100,
389
- downloadKey: createHyperdriveDownloadKey(hyperdriveKey, firstShardFileName),
390
- shardInfo: {
391
- currentShard: allFiles.length,
392
- totalShards: allFiles.length,
393
- shardName: lastFile,
394
- overallDownloaded: overallTotal,
395
- overallTotal,
396
- overallPercentage: 100,
397
- },
398
- });
399
- }
400
- await extractTensorsFromShards(shardDir, firstShardFileName);
401
- return getShardPath(hyperdriveKey, allFiles[0]);
402
- }
403
- logger.info(`📥 Need to download ${invalidIndices.length} of ${allFiles.length} files`);
404
- hooks?.markCacheMiss();
405
- // Setup hyperdrive once for all shards
406
- const corestoreDir = getCorestoreDir(hyperdriveKey);
407
- const setup = await setupHyperdrive(hyperdriveKey, corestoreDir);
408
- const cleanup = () => {
409
- logger.info("🛑 Aborting sharded hyperdrive download...");
410
- setup.swarm.suspended = true;
411
- setup.swarm.suspend().catch(() => {
412
- // Ignore errors during emergency suspend
413
- });
414
- };
415
- signal?.addEventListener("abort", cleanup);
416
- let downloadSucceeded = false;
417
- try {
418
- // Calculate overall progress
419
- const overallTotal = shardMetadata.reduce((sum, shard) => sum + shard.expectedSize, 0);
420
- let overallDownloaded = 0;
421
- // Download each file sequentially
422
- for (let i = 0; i < allFiles.length; i++) {
423
- if (signal?.aborted) {
424
- throw new DownloadCancelledError();
425
- }
426
- const file = allFiles[i];
427
- const fileMeta = shardMetadata[i];
428
- const filePath = getShardPath(hyperdriveKey, file);
429
- // Skip if already valid
430
- if (!invalidIndices.includes(i)) {
431
- logger.debug(`✅ File ${i + 1}/${allFiles.length} already valid: ${file}`);
432
- overallDownloaded += fileMeta.expectedSize;
433
- // Report progress for skipped files
434
- if (progressCallback) {
435
- progressCallback({
436
- type: "modelProgress",
437
- downloaded: fileMeta.expectedSize,
438
- total: fileMeta.expectedSize,
439
- percentage: 100,
440
- downloadKey: createHyperdriveDownloadKey(hyperdriveKey, firstShardFileName),
441
- shardInfo: {
442
- currentShard: i + 1,
443
- totalShards: allFiles.length,
444
- shardName: file,
445
- overallDownloaded,
446
- overallTotal,
447
- overallPercentage: calculatePercentage(overallDownloaded, overallTotal),
448
- },
449
- });
450
- }
451
- continue;
452
- }
453
- logger.info(`📥 Downloading file ${i + 1}/${allFiles.length}: ${file}`);
454
- const progressContext = progressCallback
455
- ? {
456
- downloadKey: createHyperdriveDownloadKey(hyperdriveKey, firstShardFileName),
457
- callback: progressCallback,
458
- shardInfo: {
459
- currentShard: i + 1,
460
- totalShards: allFiles.length,
461
- shardName: file,
462
- overallDownloaded,
463
- overallTotal,
464
- },
465
- }
466
- : undefined;
467
- await downloadAndValidateFile(setup.drive, file, filePath, fileMeta.expectedSize, fileMeta.sha256Checksum, progressContext, signal, hooks);
468
- if (signal?.aborted) {
469
- throw new DownloadCancelledError();
470
- }
471
- logger.info(`✅ File ${i + 1}/${allFiles.length} downloaded and validated`);
472
- overallDownloaded += fileMeta.expectedSize;
473
- }
474
- if (progressCallback && overallDownloaded === overallTotal) {
475
- const lastFile = allFiles[allFiles.length - 1];
476
- progressCallback({
477
- type: "modelProgress",
478
- downloaded: overallTotal,
479
- total: overallTotal,
480
- percentage: 100,
481
- downloadKey: createHyperdriveDownloadKey(hyperdriveKey, firstShardFileName),
482
- shardInfo: {
483
- currentShard: allFiles.length,
484
- totalShards: allFiles.length,
485
- shardName: lastFile,
486
- overallDownloaded,
487
- overallTotal,
488
- overallPercentage: 100,
489
- },
490
- });
491
- }
492
- await extractTensorsFromShards(shardDir, firstShardFileName);
493
- downloadSucceeded = true;
494
- }
495
- catch (error) {
496
- logger.error("❌ Error during sharded hyperdrive download:", error instanceof Error ? error.message : String(error));
497
- // Preserve cancellation errors
498
- if (error instanceof Error && error.message === "Download cancelled") {
499
- throw error;
500
- }
501
- throw new HyperdriveDownloadFailedError(`Sharded download failed for ${firstShardFileName} from hyperdrive: ${hyperdriveKey}`, error);
502
- }
503
- finally {
504
- signal?.removeEventListener("abort", cleanup);
505
- if (!seed) {
506
- await cleanupHyperdrive(setup);
507
- // Delete only after close - Windows EBUSY on LOCK if deleted before corestore.close()
508
- if (downloadSucceeded) {
509
- await deleteCorestoreDirectory(corestoreDir);
510
- }
511
- }
512
- // Only delete corestore and partial files if user explicitly requested clearCache
513
- const downloadKey = createHyperdriveDownloadKey(hyperdriveKey, firstShardFileName);
514
- if (signal?.aborted && shouldClearCache(downloadKey)) {
515
- await deleteCorestoreDirectory(corestoreDir);
516
- }
517
- clearClearCacheFlag(downloadKey);
518
- }
519
- return getShardPath(hyperdriveKey, allFiles[0]);
520
- }
521
- export async function downloadModelFromHyperdrive(hyperdriveKey, modelFileName, seed, progressCallback, hooks, expectedChecksum) {
522
- const downloadKey = createHyperdriveDownloadKey(hyperdriveKey, modelFileName);
523
- // Check if already downloading
524
- const existing = getActiveDownload(downloadKey);
525
- if (existing) {
526
- hooks?.markCacheMiss();
527
- return existing.promise;
528
- }
529
- const shardInfo = detectShardedModel(modelFileName);
530
- const model = getModelBySrc(modelFileName, hyperdriveKey);
531
- if (shardInfo.isSharded && model?.shardMetadata) {
532
- return createManagedDownload(downloadKey, hyperdriveKey, modelFileName, (signal) => downloadShardedFilesToFilesystem(hyperdriveKey, modelFileName, model.shardMetadata, progressCallback, seed, signal, hooks), progressCallback);
533
- }
534
- // Non-sharded model download
535
- const corestoreDir = getCorestoreDir(hyperdriveKey);
536
- const cacheDir = getModelsCacheDir();
537
- const sourceHash = generateShortHash(`${hyperdriveKey}/${modelFileName}`);
538
- const modelPath = path.join(cacheDir, `${sourceHash}_${modelFileName}`);
539
- // First, check if we already have a valid cached file (only if we have model metadata)
540
- if (model) {
541
- const cachedPath = await validateCachedFile(modelPath, modelFileName, model.expectedSize, expectedChecksum || model.sha256Checksum, hooks);
542
- if (cachedPath) {
543
- hooks?.markCacheHit();
544
- if (progressCallback) {
545
- progressCallback({
546
- type: "modelProgress",
547
- downloaded: model.expectedSize,
548
- total: model.expectedSize,
549
- percentage: 100,
550
- downloadKey,
551
- });
552
- }
553
- // Delete any leftover corestore directory from previous runs (only when not seeding)
554
- if (!seed) {
555
- await deleteCorestoreDirectory(corestoreDir);
556
- }
557
- return cachedPath;
558
- }
559
- }
560
- hooks?.markCacheMiss();
561
- return createManagedDownload(downloadKey, hyperdriveKey, modelFileName, async (signal) => {
562
- const checksumToValidate = expectedChecksum || model?.sha256Checksum || "";
563
- await downloadSingleFileToFilesystem(modelPath, modelFileName, hyperdriveKey, corestoreDir, downloadKey, checksumToValidate, progressCallback, seed, signal, hooks);
564
- return modelPath;
565
- }, progressCallback);
566
- }
@@ -1,4 +1,4 @@
1
- export { handleLoadModel } from "./handler";
1
+ export { handleLoadModel } from "../load-model";
2
+ export { downloadModelFromHyperdrive } from "./hyperdrive";
2
3
  export { resolveModelPath } from "./resolve";
3
- export { createCancelFunction } from "./download-manager";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export { handleLoadModel } from "./handler.js";
1
+ export { handleLoadModel } from "../load-model";
2
+ export { downloadModelFromHyperdrive } from "./hyperdrive.js";
2
3
  export { resolveModelPath } from "./resolve.js";
3
- export { createCancelFunction } from "./download-manager.js";