@qvac/sdk 0.8.1 → 1.0.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 (608) 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 +70 -121
  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 -9
  29. package/dist/client/api/transcribe.js +9 -11
  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/whispercpp-filesystem.js +43 -0
  85. package/dist/examples/{transcription/whispercpp-microphone-record.js → whispercpp-microphone-record.js} +9 -8
  86. package/dist/expo/plugins/index.d.ts +0 -3
  87. package/dist/expo/plugins/index.js +0 -3
  88. package/dist/expo/plugins/withMobileBundle.d.ts +2 -5
  89. package/dist/expo/plugins/withMobileBundle.js +40 -121
  90. package/dist/expo/plugins/withQvacSDK.d.ts +0 -4
  91. package/dist/expo/plugins/withQvacSDK.js +1 -26
  92. package/dist/index.d.ts +4 -9
  93. package/dist/index.js +5 -11
  94. package/dist/logging/base-logger.js +16 -26
  95. package/dist/logging/index.d.ts +1 -7
  96. package/dist/logging/index.js +1 -7
  97. package/dist/logging/logger.d.ts +2 -0
  98. package/dist/logging/logger.js +6 -11
  99. package/dist/logging/stream-logger.d.ts +1 -1
  100. package/dist/logging/stream-logger.js +3 -6
  101. package/dist/logging/transport.js +2 -2
  102. package/dist/logging/types.d.ts +0 -2
  103. package/dist/logging/utils.d.ts +0 -2
  104. package/dist/logging/utils.js +0 -62
  105. package/dist/models/{registry → hyperdrive}/index.js +1 -1
  106. package/dist/models/hyperdrive/models.d.ts +619 -0
  107. package/dist/models/hyperdrive/models.js +693 -0
  108. package/dist/schemas/cancel.d.ts +0 -18
  109. package/dist/schemas/cancel.js +0 -7
  110. package/dist/schemas/common.d.ts +166 -3012
  111. package/dist/schemas/common.js +4 -27
  112. package/dist/schemas/completion-stream.d.ts +60 -31
  113. package/dist/schemas/completion-stream.js +44 -20
  114. package/dist/schemas/delegate.d.ts +0 -9
  115. package/dist/schemas/delegate.js +2 -6
  116. package/dist/schemas/download-asset.d.ts +3 -125
  117. package/dist/schemas/download-asset.js +5 -22
  118. package/dist/schemas/embed.d.ts +3 -3
  119. package/dist/schemas/embed.js +2 -9
  120. package/dist/schemas/index.d.ts +2 -20
  121. package/dist/schemas/index.js +2 -20
  122. package/dist/schemas/llamacpp-config.d.ts +12 -243
  123. package/dist/schemas/llamacpp-config.js +14 -50
  124. package/dist/schemas/load-model.d.ts +893 -14471
  125. package/dist/schemas/load-model.js +72 -325
  126. package/dist/schemas/logging-stream.d.ts +4 -11
  127. package/dist/schemas/logging-stream.js +3 -4
  128. package/dist/schemas/ping.d.ts +11 -0
  129. package/dist/schemas/ping.js +8 -0
  130. package/dist/schemas/rag.d.ts +52 -183
  131. package/dist/schemas/rag.js +23 -152
  132. package/dist/schemas/text-to-speech.d.ts +1 -692
  133. package/dist/schemas/text-to-speech.js +3 -35
  134. package/dist/schemas/transcription.d.ts +0 -3
  135. package/dist/schemas/transcription.js +0 -1
  136. package/dist/schemas/translate.d.ts +23 -68
  137. package/dist/schemas/translate.js +11 -37
  138. package/dist/schemas/translation-config.d.ts +7 -810
  139. package/dist/schemas/translation-config.js +7 -113
  140. package/dist/schemas/unload-model.d.ts +0 -2
  141. package/dist/schemas/unload-model.js +0 -2
  142. package/dist/schemas/whispercpp-config.d.ts +25 -0
  143. package/dist/schemas/whispercpp-config.js +18 -0
  144. package/dist/server/bare/{ops → addons}/cancel.js +1 -2
  145. package/dist/server/bare/addons/index.d.ts +4 -0
  146. package/dist/server/bare/addons/index.js +3 -0
  147. package/dist/server/bare/addons/llamacpp/create-model.d.ts +5 -0
  148. package/dist/server/bare/addons/llamacpp/create-model.js +67 -0
  149. package/dist/server/bare/{plugins/llamacpp-completion/ops → addons/llamacpp/handlers}/completion-stream.d.ts +1 -2
  150. package/dist/server/bare/{plugins/llamacpp-completion/ops → addons/llamacpp/handlers}/completion-stream.js +87 -54
  151. package/dist/server/bare/addons/llamacpp/handlers/embed.d.ts +4 -0
  152. package/dist/server/bare/{ops → addons/llamacpp/handlers}/embed.js +7 -22
  153. package/dist/server/bare/addons/llamacpp/index.d.ts +4 -0
  154. package/dist/server/bare/addons/llamacpp/index.js +3 -0
  155. package/dist/server/bare/{ops → addons/llamacpp}/kv-cache-utils.d.ts +1 -4
  156. package/dist/server/bare/{ops → addons/llamacpp}/kv-cache-utils.js +19 -54
  157. package/dist/server/bare/addons/load-model.d.ts +3 -0
  158. package/dist/server/bare/addons/load-model.js +62 -0
  159. package/dist/server/bare/addons/translation/create-model.d.ts +4 -0
  160. package/dist/server/bare/addons/translation/create-model.js +45 -0
  161. package/dist/server/bare/addons/translation/handlers/translate.d.ts +3 -0
  162. package/dist/server/bare/{ops → addons/translation/handlers}/translate.js +14 -47
  163. package/dist/server/bare/addons/translation/index.d.ts +3 -0
  164. package/dist/server/bare/addons/translation/index.js +2 -0
  165. package/dist/server/bare/addons/tts/create-model.d.ts +6 -0
  166. package/dist/server/bare/addons/tts/create-model.js +40 -0
  167. package/dist/server/bare/{plugins/onnx-tts/ops → addons/tts/handlers}/text-to-speech.js +3 -25
  168. package/dist/server/bare/addons/tts/index.d.ts +3 -0
  169. package/dist/server/bare/addons/tts/index.js +2 -0
  170. package/dist/server/bare/addons/unload-model.js +20 -0
  171. package/dist/server/bare/addons/whispercpp/create-model.d.ts +6 -0
  172. package/dist/server/bare/addons/whispercpp/create-model.js +55 -0
  173. package/dist/server/bare/addons/whispercpp/handlers/transcribe-stream.d.ts +3 -0
  174. package/dist/server/bare/addons/whispercpp/handlers/transcribe-stream.js +48 -0
  175. package/dist/server/bare/addons/whispercpp/index.d.ts +3 -0
  176. package/dist/server/bare/addons/whispercpp/index.js +2 -0
  177. package/dist/server/bare/delegate-rpc-client.d.ts +0 -6
  178. package/dist/server/bare/delegate-rpc-client.js +45 -187
  179. package/dist/server/bare/hyperswarm.d.ts +0 -3
  180. package/dist/server/bare/hyperswarm.js +6 -29
  181. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.d.ts +1 -1
  182. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js +10 -9
  183. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.d.ts +4 -7
  184. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js +14 -13
  185. package/dist/server/bare/rag-hyperdb/handlers/search.js +10 -10
  186. package/dist/server/bare/rag-hyperdb/index.d.ts +1 -8
  187. package/dist/server/bare/rag-hyperdb/index.js +1 -8
  188. package/dist/server/bare/rag-hyperdb/rag-manager.d.ts +5 -0
  189. package/dist/server/bare/rag-hyperdb/rag-manager.js +65 -0
  190. package/dist/server/bare/registry/logging-stream-registry.d.ts +7 -24
  191. package/dist/server/bare/registry/logging-stream-registry.js +20 -99
  192. package/dist/server/bare/registry/model-registry.d.ts +26 -16
  193. package/dist/server/bare/registry/model-registry.js +13 -34
  194. package/dist/server/error-handlers.d.ts +2 -3
  195. package/dist/server/error-handlers.js +10 -15
  196. package/dist/server/http-server.d.ts +2 -0
  197. package/dist/server/http-server.js +189 -0
  198. package/dist/server/rpc/create-server.js +3 -5
  199. package/dist/server/rpc/handle-request.d.ts +9 -0
  200. package/dist/server/rpc/handle-request.js +242 -92
  201. package/dist/server/rpc/handlers/cancelHandler.js +3 -14
  202. package/dist/server/rpc/handlers/completion-stream-delegated.d.ts +1 -3
  203. package/dist/server/rpc/handlers/completion-stream-delegated.js +8 -20
  204. package/dist/server/rpc/handlers/completion-stream.js +41 -2
  205. package/dist/server/rpc/handlers/delete-cache.js +2 -4
  206. package/dist/server/rpc/handlers/download-asset.js +6 -59
  207. package/dist/server/rpc/handlers/embed.js +19 -2
  208. package/dist/server/rpc/handlers/index.d.ts +0 -13
  209. package/dist/server/rpc/handlers/index.js +0 -13
  210. package/dist/server/rpc/handlers/load-model/download-manager.d.ts +11 -12
  211. package/dist/server/rpc/handlers/load-model/download-manager.js +28 -43
  212. package/dist/server/rpc/handlers/load-model/http.d.ts +1 -2
  213. package/dist/server/rpc/handlers/load-model/http.js +55 -424
  214. package/dist/server/rpc/handlers/load-model/hyperdrive.d.ts +1 -2
  215. package/dist/server/rpc/handlers/load-model/hyperdrive.js +171 -364
  216. package/dist/server/rpc/handlers/load-model/index.d.ts +2 -2
  217. package/dist/server/rpc/handlers/load-model/index.js +2 -2
  218. package/dist/server/rpc/handlers/load-model/resolve.d.ts +1 -3
  219. package/dist/server/rpc/handlers/load-model/resolve.js +29 -110
  220. package/dist/server/rpc/handlers/load-model-delegated.d.ts +2 -6
  221. package/dist/server/rpc/handlers/load-model-delegated.js +20 -60
  222. package/dist/server/rpc/handlers/{load-model/handler.d.ts → load-model.d.ts} +2 -2
  223. package/dist/server/rpc/handlers/load-model.js +57 -0
  224. package/dist/server/rpc/handlers/logging-stream.js +4 -4
  225. package/dist/server/rpc/handlers/provideHandler/connection.js +10 -12
  226. package/dist/server/rpc/handlers/provideHandler/handler.js +17 -20
  227. package/dist/server/rpc/handlers/provideHandler/proxy.js +6 -8
  228. package/dist/server/rpc/handlers/rag.d.ts +2 -2
  229. package/dist/server/rpc/handlers/rag.js +43 -130
  230. package/dist/server/rpc/handlers/stopProvideHandler.js +2 -6
  231. package/dist/server/rpc/handlers/text-to-speech.js +5 -2
  232. package/dist/server/rpc/handlers/transcribe-stream.js +24 -2
  233. package/dist/server/rpc/handlers/translate.js +49 -2
  234. package/dist/server/rpc/handlers/unload-model.js +3 -12
  235. package/dist/server/rpc/index.d.ts +1 -1
  236. package/dist/server/utils/audio/decoder.d.ts +1 -2
  237. package/dist/server/utils/audio/decoder.js +12 -49
  238. package/dist/server/utils/cache.d.ts +8 -19
  239. package/dist/server/utils/cache.js +15 -100
  240. package/dist/server/utils/hash.d.ts +5 -0
  241. package/dist/server/utils/hash.js +11 -0
  242. package/dist/server/utils/index.d.ts +2 -7
  243. package/dist/server/utils/index.js +2 -7
  244. package/dist/server/utils/tool-parser.js +14 -28
  245. package/dist/server/worker.d.ts +5 -4
  246. package/dist/server/worker.js +89 -22
  247. package/package.json +41 -148
  248. package/NOTICE +0 -695
  249. package/bare-imports.json +0 -44
  250. package/dist/client/api/get-model-info.d.ts +0 -36
  251. package/dist/client/api/get-model-info.js +0 -14
  252. package/dist/client/api/heartbeat.d.ts +0 -30
  253. package/dist/client/api/heartbeat.js +0 -38
  254. package/dist/client/api/invoke-plugin.d.ts +0 -15
  255. package/dist/client/api/invoke-plugin.js +0 -38
  256. package/dist/client/api/ocr.d.ts +0 -31
  257. package/dist/client/api/ocr.js +0 -88
  258. package/dist/client/api/registry.d.ts +0 -14
  259. package/dist/client/api/registry.js +0 -37
  260. package/dist/client/config-loader/config-utils.d.ts +0 -5
  261. package/dist/client/config-loader/config-utils.js +0 -20
  262. package/dist/client/config-loader/resolve-config.bare.d.ts +0 -9
  263. package/dist/client/config-loader/resolve-config.bare.js +0 -87
  264. package/dist/client/config-loader/resolve-config.expo.d.ts +0 -11
  265. package/dist/client/config-loader/resolve-config.expo.js +0 -62
  266. package/dist/client/config-loader/resolve-config.node.d.ts +0 -10
  267. package/dist/client/config-loader/resolve-config.node.js +0 -145
  268. package/dist/client/init-hooks.d.ts +0 -21
  269. package/dist/client/init-hooks.js +0 -66
  270. package/dist/client/rpc/expo-device-info.d.ts +0 -6
  271. package/dist/client/rpc/expo-device-info.js +0 -32
  272. package/dist/client/rpc/profiling/index.d.ts +0 -2
  273. package/dist/client/rpc/profiling/index.js +0 -1
  274. package/dist/client/rpc/profiling/profiler.d.ts +0 -27
  275. package/dist/client/rpc/profiling/profiler.js +0 -139
  276. package/dist/constants/registry.d.ts +0 -2
  277. package/dist/constants/registry.js +0 -1
  278. package/dist/examples/cache-management.d.ts +0 -2
  279. package/dist/examples/cache-management.js +0 -97
  280. package/dist/examples/config/blind-relay/blind-relay.config.d.ts +0 -5
  281. package/dist/examples/config/blind-relay/blind-relay.config.js +0 -7
  282. package/dist/examples/config/default/default.config.d.ts +0 -8
  283. package/dist/examples/config/default/default.config.js +0 -6
  284. package/dist/examples/config/plugins/plugins.config.d.ts +0 -5
  285. package/dist/examples/config/plugins/plugins.config.js +0 -4
  286. package/dist/examples/config-reload.d.ts +0 -2
  287. package/dist/examples/config-reload.js +0 -49
  288. package/dist/examples/default-config-usage.d.ts +0 -17
  289. package/dist/examples/default-config-usage.js +0 -47
  290. package/dist/examples/delegated-inference/consumer-profiled.d.ts +0 -2
  291. package/dist/examples/delegated-inference/consumer-profiled.js +0 -67
  292. package/dist/examples/download-with-blind-relays.d.ts +0 -2
  293. package/dist/examples/download-with-blind-relays.js +0 -49
  294. package/dist/examples/embed-p2p.d.ts +0 -2
  295. package/dist/examples/embed-p2p.js +0 -54
  296. package/dist/examples/llamacpp-p2p.d.ts +0 -2
  297. package/dist/examples/llamacpp-sharded.d.ts +0 -2
  298. package/dist/examples/llamacpp-sharded.js +0 -53
  299. package/dist/examples/logging-file-transport.d.ts +0 -2
  300. package/dist/examples/logging-streaming.d.ts +0 -2
  301. package/dist/examples/logging-streaming.js +0 -75
  302. package/dist/examples/mcp-websearch.d.ts +0 -13
  303. package/dist/examples/mcp-websearch.js +0 -176
  304. package/dist/examples/ocr-fasttext.d.ts +0 -2
  305. package/dist/examples/ocr-fasttext.js +0 -52
  306. package/dist/examples/plugins.d.ts +0 -14
  307. package/dist/examples/plugins.js +0 -129
  308. package/dist/examples/profiling/basic.d.ts +0 -2
  309. package/dist/examples/profiling/basic.js +0 -71
  310. package/dist/examples/profiling/per-call.d.ts +0 -2
  311. package/dist/examples/profiling/per-call.js +0 -30
  312. package/dist/examples/quickstart.d.ts +0 -2
  313. package/dist/examples/quickstart.js +0 -28
  314. package/dist/examples/rag/rag-hyperdb/cancellation.d.ts +0 -2
  315. package/dist/examples/rag/rag-hyperdb/cancellation.js +0 -75
  316. package/dist/examples/rag/rag-hyperdb/ingest.d.ts +0 -2
  317. package/dist/examples/rag/rag-hyperdb/pipeline.d.ts +0 -2
  318. package/dist/examples/rag/rag-hyperdb/pipeline.js +0 -74
  319. package/dist/examples/rag/rag-hyperdb/workspaces.d.ts +0 -2
  320. package/dist/examples/rag/rag-hyperdb/workspaces.js +0 -178
  321. package/dist/examples/registry-query.d.ts +0 -2
  322. package/dist/examples/registry-query.js +0 -87
  323. package/dist/examples/seed-p2p.d.ts +0 -2
  324. package/dist/examples/transcription/parakeet-ctc-filesystem.d.ts +0 -2
  325. package/dist/examples/transcription/parakeet-ctc-filesystem.js +0 -40
  326. package/dist/examples/transcription/parakeet-microphone-record.d.ts +0 -2
  327. package/dist/examples/transcription/parakeet-microphone-record.js +0 -95
  328. package/dist/examples/transcription/parakeet-sortformer.d.ts +0 -2
  329. package/dist/examples/transcription/parakeet-sortformer.js +0 -115
  330. package/dist/examples/transcription/parakeet-tdt-filesystem.d.ts +0 -2
  331. package/dist/examples/transcription/parakeet-tdt-filesystem.js +0 -44
  332. package/dist/examples/transcription/whispercpp-filesystem.js +0 -69
  333. package/dist/examples/transcription/whispercpp-prompt.d.ts +0 -2
  334. package/dist/examples/transcription/whispercpp-prompt.js +0 -67
  335. package/dist/examples/translation/translation-bergamot-batch.d.ts +0 -2
  336. package/dist/examples/translation/translation-bergamot-batch.js +0 -49
  337. package/dist/examples/translation/translation-bergamot-pivot.d.ts +0 -2
  338. package/dist/examples/translation/translation-bergamot-pivot.js +0 -73
  339. package/dist/examples/translation/translation-bergamot.d.ts +0 -2
  340. package/dist/examples/translation/translation-bergamot.js +0 -39
  341. package/dist/examples/translation/translation-llm-afriquegemma.d.ts +0 -2
  342. package/dist/examples/translation/translation-llm-afriquegemma.js +0 -39
  343. package/dist/examples/tts/chatterbox.d.ts +0 -2
  344. package/dist/examples/tts/chatterbox.js +0 -59
  345. package/dist/examples/tts/supertonic.d.ts +0 -2
  346. package/dist/examples/tts/supertonic.js +0 -51
  347. package/dist/examples/tts/utils.d.ts +0 -17
  348. package/dist/expo/plugins/resolve-sdk-package-dir.d.ts +0 -15
  349. package/dist/expo/plugins/resolve-sdk-package-dir.js +0 -31
  350. package/dist/expo/plugins/withAndroidArchitecture.d.ts +0 -8
  351. package/dist/expo/plugins/withAndroidArchitecture.js +0 -52
  352. package/dist/expo/plugins/withAndroidNdkVersion.d.ts +0 -8
  353. package/dist/expo/plugins/withAndroidNdkVersion.js +0 -31
  354. package/dist/expo/plugins/withDeviceInfo.d.ts +0 -10
  355. package/dist/expo/plugins/withDeviceInfo.js +0 -48
  356. package/dist/logging/addon.d.ts +0 -6
  357. package/dist/logging/addon.js +0 -75
  358. package/dist/logging/client-logger.d.ts +0 -3
  359. package/dist/logging/client-logger.js +0 -24
  360. package/dist/logging/namespaces.d.ts +0 -6
  361. package/dist/logging/namespaces.js +0 -6
  362. package/dist/logging/registry.d.ts +0 -31
  363. package/dist/logging/registry.js +0 -62
  364. package/dist/logging/server-logger.d.ts +0 -3
  365. package/dist/logging/server-logger.js +0 -16
  366. package/dist/models/registry/models.d.ts +0 -10417
  367. package/dist/models/registry/models.js +0 -10757
  368. package/dist/models/update-models/codegen.d.ts +0 -3
  369. package/dist/models/update-models/codegen.js +0 -135
  370. package/dist/models/update-models/history.d.ts +0 -24
  371. package/dist/models/update-models/history.js +0 -107
  372. package/dist/models/update-models/index.d.ts +0 -2
  373. package/dist/models/update-models/index.js +0 -125
  374. package/dist/models/update-models/naming.d.ts +0 -4
  375. package/dist/models/update-models/naming.js +0 -370
  376. package/dist/models/update-models/processing.d.ts +0 -8
  377. package/dist/models/update-models/processing.js +0 -67
  378. package/dist/models/update-models/registry.d.ts +0 -4
  379. package/dist/models/update-models/registry.js +0 -67
  380. package/dist/models/update-models/shards.d.ts +0 -4
  381. package/dist/models/update-models/shards.js +0 -57
  382. package/dist/models/update-models/types.d.ts +0 -60
  383. package/dist/models/update-models/types.js +0 -1
  384. package/dist/models/update-models/utils.d.ts +0 -3
  385. package/dist/models/update-models/utils.js +0 -21
  386. package/dist/pear/pre.d.ts +0 -18
  387. package/dist/pear/pre.js +0 -433
  388. package/dist/profiling/aggregator.d.ts +0 -15
  389. package/dist/profiling/aggregator.js +0 -100
  390. package/dist/profiling/clock.d.ts +0 -12
  391. package/dist/profiling/clock.js +0 -51
  392. package/dist/profiling/controller.d.ts +0 -33
  393. package/dist/profiling/controller.js +0 -123
  394. package/dist/profiling/envelope.d.ts +0 -10
  395. package/dist/profiling/envelope.js +0 -36
  396. package/dist/profiling/events.d.ts +0 -20
  397. package/dist/profiling/events.js +0 -37
  398. package/dist/profiling/exporters.d.ts +0 -10
  399. package/dist/profiling/exporters.js +0 -236
  400. package/dist/profiling/index.d.ts +0 -36
  401. package/dist/profiling/index.js +0 -31
  402. package/dist/profiling/ring-buffer.d.ts +0 -19
  403. package/dist/profiling/ring-buffer.js +0 -83
  404. package/dist/profiling/types.d.ts +0 -47
  405. package/dist/profiling/types.js +0 -1
  406. package/dist/schemas/archive.d.ts +0 -9
  407. package/dist/schemas/archive.js +0 -17
  408. package/dist/schemas/engine-addon-map.d.ts +0 -5
  409. package/dist/schemas/engine-addon-map.js +0 -52
  410. package/dist/schemas/get-model-info.d.ts +0 -120
  411. package/dist/schemas/get-model-info.js +0 -58
  412. package/dist/schemas/heartbeat.d.ts +0 -17
  413. package/dist/schemas/heartbeat.js +0 -10
  414. package/dist/schemas/json-schema.d.ts +0 -16
  415. package/dist/schemas/json-schema.js +0 -2
  416. package/dist/schemas/mcp-adapter.d.ts +0 -47
  417. package/dist/schemas/mcp-adapter.js +0 -1
  418. package/dist/schemas/model-src-utils.d.ts +0 -148
  419. package/dist/schemas/model-src-utils.js +0 -35
  420. package/dist/schemas/model-types.d.ts +0 -183
  421. package/dist/schemas/model-types.js +0 -168
  422. package/dist/schemas/ocr.d.ts +0 -125
  423. package/dist/schemas/ocr.js +0 -57
  424. package/dist/schemas/path-validation.d.ts +0 -10
  425. package/dist/schemas/path-validation.js +0 -22
  426. package/dist/schemas/plugin.d.ts +0 -226
  427. package/dist/schemas/plugin.js +0 -158
  428. package/dist/schemas/profiling.d.ts +0 -105
  429. package/dist/schemas/profiling.js +0 -66
  430. package/dist/schemas/registry.d.ts +0 -356
  431. package/dist/schemas/registry.js +0 -93
  432. package/dist/schemas/reload-config.d.ts +0 -476
  433. package/dist/schemas/reload-config.js +0 -44
  434. package/dist/schemas/runtime-context.d.ts +0 -19
  435. package/dist/schemas/runtime-context.js +0 -7
  436. package/dist/schemas/sdk-config.d.ts +0 -2973
  437. package/dist/schemas/sdk-config.js +0 -136
  438. package/dist/schemas/sdk-errors-client.d.ts +0 -31
  439. package/dist/schemas/sdk-errors-client.js +0 -143
  440. package/dist/schemas/sdk-errors-registry.d.ts +0 -6
  441. package/dist/schemas/sdk-errors-registry.js +0 -8
  442. package/dist/schemas/sdk-errors-server.d.ts +0 -89
  443. package/dist/schemas/sdk-errors-server.js +0 -451
  444. package/dist/schemas/shard.d.ts +0 -21
  445. package/dist/schemas/shard.js +0 -17
  446. package/dist/schemas/tools.d.ts +0 -65
  447. package/dist/schemas/tools.js +0 -43
  448. package/dist/schemas/transcription-config.d.ts +0 -383
  449. package/dist/schemas/transcription-config.js +0 -95
  450. package/dist/scripts/run-security-tests-bare.d.ts +0 -2
  451. package/dist/scripts/run-security-tests-bare.js +0 -78
  452. package/dist/scripts/run-security-tests.d.ts +0 -2
  453. package/dist/scripts/run-security-tests.js +0 -22
  454. package/dist/scripts/run-unit-tests.d.ts +0 -2
  455. package/dist/scripts/run-unit-tests.js +0 -17
  456. package/dist/server/bare/ops/embed.d.ts +0 -12
  457. package/dist/server/bare/ops/load-model.d.ts +0 -9
  458. package/dist/server/bare/ops/load-model.js +0 -85
  459. package/dist/server/bare/ops/transcribe.d.ts +0 -3
  460. package/dist/server/bare/ops/transcribe.js +0 -75
  461. package/dist/server/bare/ops/translate.d.ts +0 -5
  462. package/dist/server/bare/ops/unload-model.js +0 -41
  463. package/dist/server/bare/plugins/index.d.ts +0 -8
  464. package/dist/server/bare/plugins/index.js +0 -7
  465. package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.d.ts +0 -6
  466. package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js +0 -34
  467. package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +0 -220
  468. package/dist/server/bare/plugins/llamacpp-completion/plugin.js +0 -155
  469. package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +0 -54
  470. package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +0 -87
  471. package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +0 -367
  472. package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +0 -201
  473. package/dist/server/bare/plugins/onnx-ocr/ops/ocr-stream.d.ts +0 -10
  474. package/dist/server/bare/plugins/onnx-ocr/ops/ocr-stream.js +0 -110
  475. package/dist/server/bare/plugins/onnx-ocr/plugin.d.ts +0 -86
  476. package/dist/server/bare/plugins/onnx-ocr/plugin.js +0 -117
  477. package/dist/server/bare/plugins/onnx-tts/plugin.d.ts +0 -373
  478. package/dist/server/bare/plugins/onnx-tts/plugin.js +0 -182
  479. package/dist/server/bare/plugins/onnx-tts/wav-helper.d.ts +0 -14
  480. package/dist/server/bare/plugins/onnx-tts/wav-helper.js +0 -107
  481. package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +0 -317
  482. package/dist/server/bare/plugins/parakeet-transcription/plugin.js +0 -154
  483. package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +0 -237
  484. package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +0 -86
  485. package/dist/server/bare/rag-hyperdb/handlers/chunk.d.ts +0 -3
  486. package/dist/server/bare/rag-hyperdb/handlers/chunk.js +0 -7
  487. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.d.ts +0 -3
  488. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.js +0 -9
  489. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.d.ts +0 -3
  490. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js +0 -14
  491. package/dist/server/bare/rag-hyperdb/handlers/ingest.d.ts +0 -9
  492. package/dist/server/bare/rag-hyperdb/handlers/ingest.js +0 -18
  493. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.d.ts +0 -3
  494. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js +0 -4
  495. package/dist/server/bare/rag-hyperdb/handlers/reindex.d.ts +0 -9
  496. package/dist/server/bare/rag-hyperdb/handlers/reindex.js +0 -16
  497. package/dist/server/bare/rag-hyperdb/rag-operation-manager.d.ts +0 -7
  498. package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +0 -39
  499. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.d.ts +0 -15
  500. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +0 -136
  501. package/dist/server/bare/registry/config-registry.d.ts +0 -14
  502. package/dist/server/bare/registry/config-registry.js +0 -82
  503. package/dist/server/bare/registry/model-config-registry.d.ts +0 -4
  504. package/dist/server/bare/registry/model-config-registry.js +0 -15
  505. package/dist/server/bare/registry/model-config-utils.d.ts +0 -15
  506. package/dist/server/bare/registry/model-config-utils.js +0 -112
  507. package/dist/server/bare/registry/registry-client.d.ts +0 -5
  508. package/dist/server/bare/registry/registry-client.js +0 -37
  509. package/dist/server/bare/registry/runtime-context-registry.d.ts +0 -7
  510. package/dist/server/bare/registry/runtime-context-registry.js +0 -26
  511. package/dist/server/bare/utils/audio-input.d.ts +0 -10
  512. package/dist/server/bare/utils/audio-input.js +0 -33
  513. package/dist/server/bare/utils/loader-adapter.d.ts +0 -7
  514. package/dist/server/bare/utils/loader-adapter.js +0 -9
  515. package/dist/server/env.d.ts +0 -22
  516. package/dist/server/env.js +0 -57
  517. package/dist/server/plugins/index.d.ts +0 -2
  518. package/dist/server/plugins/index.js +0 -1
  519. package/dist/server/plugins/registry.d.ts +0 -9
  520. package/dist/server/plugins/registry.js +0 -79
  521. package/dist/server/rpc/delegate-transport.d.ts +0 -19
  522. package/dist/server/rpc/delegate-transport.js +0 -236
  523. package/dist/server/rpc/delegate-utils.d.ts +0 -2
  524. package/dist/server/rpc/delegate-utils.js +0 -5
  525. package/dist/server/rpc/handler-registry.d.ts +0 -3
  526. package/dist/server/rpc/handler-registry.js +0 -113
  527. package/dist/server/rpc/handler-utils.d.ts +0 -23
  528. package/dist/server/rpc/handler-utils.js +0 -170
  529. package/dist/server/rpc/handlers/cancel-delegated.d.ts +0 -4
  530. package/dist/server/rpc/handlers/cancel-delegated.js +0 -71
  531. package/dist/server/rpc/handlers/get-model-info.d.ts +0 -3
  532. package/dist/server/rpc/handlers/get-model-info.js +0 -164
  533. package/dist/server/rpc/handlers/heartbeat-delegated.d.ts +0 -4
  534. package/dist/server/rpc/handlers/heartbeat-delegated.js +0 -32
  535. package/dist/server/rpc/handlers/heartbeat.d.ts +0 -3
  536. package/dist/server/rpc/handlers/heartbeat.js +0 -3
  537. package/dist/server/rpc/handlers/load-model/download-stats.d.ts +0 -6
  538. package/dist/server/rpc/handlers/load-model/download-stats.js +0 -87
  539. package/dist/server/rpc/handlers/load-model/handler.js +0 -187
  540. package/dist/server/rpc/handlers/load-model/registry.d.ts +0 -11
  541. package/dist/server/rpc/handlers/load-model/registry.js +0 -548
  542. package/dist/server/rpc/handlers/load-model/types.d.ts +0 -29
  543. package/dist/server/rpc/handlers/load-model/types.js +0 -1
  544. package/dist/server/rpc/handlers/ocr-stream.d.ts +0 -3
  545. package/dist/server/rpc/handlers/ocr-stream.js +0 -4
  546. package/dist/server/rpc/handlers/plugin-dispatch.d.ts +0 -15
  547. package/dist/server/rpc/handlers/plugin-dispatch.js +0 -59
  548. package/dist/server/rpc/handlers/plugin-invoke.d.ts +0 -4
  549. package/dist/server/rpc/handlers/plugin-invoke.js +0 -92
  550. package/dist/server/rpc/handlers/registry.d.ts +0 -5
  551. package/dist/server/rpc/handlers/registry.js +0 -157
  552. package/dist/server/rpc/handlers/unload-model-delegated.d.ts +0 -3
  553. package/dist/server/rpc/handlers/unload-model-delegated.js +0 -32
  554. package/dist/server/rpc/profiling/context.d.ts +0 -18
  555. package/dist/server/rpc/profiling/context.js +0 -38
  556. package/dist/server/rpc/profiling/delegation-profiler.d.ts +0 -32
  557. package/dist/server/rpc/profiling/delegation-profiler.js +0 -154
  558. package/dist/server/rpc/profiling/index.d.ts +0 -5
  559. package/dist/server/rpc/profiling/index.js +0 -4
  560. package/dist/server/rpc/profiling/operation-metrics.d.ts +0 -25
  561. package/dist/server/rpc/profiling/operation-metrics.js +0 -199
  562. package/dist/server/rpc/profiling/operation-wrappers.d.ts +0 -18
  563. package/dist/server/rpc/profiling/operation-wrappers.js +0 -124
  564. package/dist/server/rpc/profiling/profiler.d.ts +0 -13
  565. package/dist/server/rpc/profiling/profiler.js +0 -97
  566. package/dist/server/utils/archive.d.ts +0 -4
  567. package/dist/server/utils/archive.js +0 -179
  568. package/dist/server/utils/checksum.d.ts +0 -4
  569. package/dist/server/utils/checksum.js +0 -31
  570. package/dist/server/utils/config-transform.d.ts +0 -3
  571. package/dist/server/utils/config-transform.js +0 -23
  572. package/dist/server/utils/formatting.d.ts +0 -19
  573. package/dist/server/utils/formatting.js +0 -61
  574. package/dist/server/utils/gguf-tensor-extractor.d.ts +0 -15
  575. package/dist/server/utils/gguf-tensor-extractor.js +0 -314
  576. package/dist/server/utils/path-security.d.ts +0 -12
  577. package/dist/server/utils/path-security.js +0 -25
  578. package/dist/server/utils/shard-utils.d.ts +0 -48
  579. package/dist/server/utils/shard-utils.js +0 -125
  580. package/dist/server/utils/tool-integration.d.ts +0 -13
  581. package/dist/server/utils/tool-integration.js +0 -43
  582. package/dist/server/worker-core.d.ts +0 -6
  583. package/dist/server/worker-core.js +0 -88
  584. package/dist/utils/errors-base.d.ts +0 -3
  585. package/dist/utils/errors-base.js +0 -13
  586. package/dist/utils/errors-client.d.ts +0 -137
  587. package/dist/utils/errors-client.js +0 -240
  588. package/dist/utils/errors-server.d.ts +0 -236
  589. package/dist/utils/errors-server.js +0 -412
  590. package/dist/utils/global-singleton.d.ts +0 -2
  591. package/dist/utils/global-singleton.js +0 -10
  592. package/dist/utils/mcp-adapter.d.ts +0 -12
  593. package/dist/utils/mcp-adapter.js +0 -103
  594. package/dist/utils/object.d.ts +0 -2
  595. package/dist/utils/object.js +0 -3
  596. package/dist/utils/path-sanitize.d.ts +0 -17
  597. package/dist/utils/path-sanitize.js +0 -54
  598. package/dist/utils/tool-helpers.d.ts +0 -25
  599. package/dist/utils/tool-helpers.js +0 -112
  600. package/expo/plugins/patches/android-link.mjs +0 -63
  601. package/expo/plugins/patches/ios-link.mjs +0 -63
  602. /package/dist/examples/{seed-p2p.js → seed-hyperdrive.js} +0 -0
  603. /package/dist/examples/{transcription/whispercpp-filesystem.d.ts → whispercpp-filesystem.d.ts} +0 -0
  604. /package/dist/examples/{transcription/whispercpp-microphone-record.d.ts → whispercpp-microphone-record.d.ts} +0 -0
  605. /package/dist/models/{registry → hyperdrive}/index.d.ts +0 -0
  606. /package/dist/server/bare/{ops → addons}/cancel.d.ts +0 -0
  607. /package/dist/server/bare/{plugins/onnx-tts/ops → addons/tts/handlers}/text-to-speech.d.ts +0 -0
  608. /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";