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