@qvac/sdk 0.8.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/LICENSE +24 -1
  2. package/README.md +191 -373
  3. package/dist/client/api/cancel.d.ts +4 -22
  4. package/dist/client/api/cancel.js +6 -25
  5. package/dist/client/api/completion-stream.d.ts +30 -24
  6. package/dist/client/api/completion-stream.js +69 -118
  7. package/dist/client/api/delete-cache.js +2 -3
  8. package/dist/client/api/download-asset.d.ts +5 -6
  9. package/dist/client/api/download-asset.js +20 -16
  10. package/dist/client/api/embed.d.ts +4 -21
  11. package/dist/client/api/embed.js +14 -4
  12. package/dist/client/api/index.d.ts +2 -6
  13. package/dist/client/api/index.js +2 -6
  14. package/dist/client/api/load-model.d.ts +21 -49
  15. package/dist/client/api/load-model.js +134 -40
  16. package/dist/client/api/logging-stream.d.ts +4 -7
  17. package/dist/client/api/logging-stream.js +5 -9
  18. package/dist/client/api/ping.d.ts +11 -0
  19. package/dist/client/api/ping.js +18 -0
  20. package/dist/client/api/provide.d.ts +1 -1
  21. package/dist/client/api/provide.js +3 -4
  22. package/dist/client/api/rag.d.ts +21 -216
  23. package/dist/client/api/rag.js +36 -396
  24. package/dist/client/api/stop-provider.d.ts +1 -1
  25. package/dist/client/api/stop-provider.js +3 -4
  26. package/dist/client/api/text-to-speech.d.ts +2 -2
  27. package/dist/client/api/text-to-speech.js +3 -3
  28. package/dist/client/api/transcribe.d.ts +5 -7
  29. package/dist/client/api/transcribe.js +9 -8
  30. package/dist/client/api/translate.d.ts +3 -3
  31. package/dist/client/api/translate.js +15 -15
  32. package/dist/client/api/unload-model.d.ts +1 -5
  33. package/dist/client/api/unload-model.js +4 -17
  34. package/dist/client/index.d.ts +1 -1
  35. package/dist/client/index.js +1 -1
  36. package/dist/client/logging-stream-registry.d.ts +1 -1
  37. package/dist/client/logging-stream-registry.js +13 -14
  38. package/dist/client/rpc/bare-client.d.ts +139 -3
  39. package/dist/client/rpc/bare-client.js +16 -117
  40. package/dist/client/rpc/bare-rpc-client.d.ts +4 -0
  41. package/dist/client/rpc/bare-rpc-client.js +87 -0
  42. package/dist/client/rpc/expo-rpc-client.d.ts +1 -2
  43. package/dist/client/rpc/expo-rpc-client.js +14 -57
  44. package/dist/client/rpc/node-rpc-client.d.ts +8 -3
  45. package/dist/client/rpc/node-rpc-client.js +62 -218
  46. package/dist/client/rpc/rpc-client.d.ts +2 -3
  47. package/dist/client/rpc/rpc-client.js +49 -184
  48. package/dist/constants/audio.d.ts +2 -1
  49. package/dist/constants/audio.js +17 -1
  50. package/dist/constants/index.d.ts +0 -1
  51. package/dist/constants/index.js +0 -1
  52. package/dist/examples/delegated-inference/consumer.js +2 -3
  53. package/dist/examples/download-with-cancel.js +4 -3
  54. package/dist/examples/embed-hyperdrive.d.ts +2 -0
  55. package/dist/examples/embed-hyperdrive.js +19 -0
  56. package/dist/examples/kv-cache-cleanup.js +2 -1
  57. package/dist/examples/kv-cache-custom-key.js +2 -16
  58. package/dist/examples/kv-cache-example.js +2 -1
  59. package/dist/examples/llamacpp-file-logging.d.ts +2 -0
  60. package/dist/examples/{logging-file-transport.js → llamacpp-file-logging.js} +8 -3
  61. package/dist/examples/llamacpp-filesystem.js +2 -2
  62. package/dist/examples/llamacpp-http.js +1 -0
  63. package/dist/examples/llamacpp-hyperdrive.d.ts +2 -0
  64. package/dist/examples/{llamacpp-p2p.js → llamacpp-hyperdrive.js} +2 -1
  65. package/dist/examples/llamacpp-multimodal.js +4 -3
  66. package/dist/examples/llamacpp-native-tools.js +30 -72
  67. package/dist/examples/multi-model-demo.js +3 -2
  68. package/dist/examples/parallel-download.js +14 -46
  69. package/dist/examples/rag/rag-chromadb.js +1 -0
  70. package/dist/examples/rag/rag-hyperdb-workspaces.d.ts +2 -0
  71. package/dist/examples/rag/rag-hyperdb-workspaces.js +107 -0
  72. package/dist/examples/rag/rag-hyperdb.d.ts +2 -0
  73. package/dist/examples/rag/{rag-hyperdb/ingest.js → rag-hyperdb.js} +5 -10
  74. package/dist/examples/rag/rag-lancedb.js +1 -0
  75. package/dist/examples/rag/rag-sqlite.js +1 -0
  76. package/dist/examples/seed-hyperdrive.d.ts +2 -0
  77. package/dist/examples/text-to-speech.d.ts +3 -0
  78. package/dist/examples/{tts/utils.js → text-to-speech.js} +63 -18
  79. package/dist/examples/translation/translation-indic.js +1 -4
  80. package/dist/examples/translation/translation-llm-context.js +1 -0
  81. package/dist/examples/translation/translation-llm.js +2 -2
  82. package/dist/examples/translation/translation-opus.js +3 -6
  83. package/dist/examples/translation/translation-stream.js +3 -3
  84. package/dist/examples/{transcription/whispercpp-filesystem.js → whispercpp-filesystem.js} +7 -2
  85. package/dist/examples/{transcription/whispercpp-microphone-record.js → whispercpp-microphone-record.js} +6 -1
  86. package/dist/examples/{transcription/whispercpp-prompt.js → whispercpp-prompt.js} +6 -2
  87. package/dist/expo/plugins/index.d.ts +0 -3
  88. package/dist/expo/plugins/index.js +0 -3
  89. package/dist/expo/plugins/withMobileBundle.d.ts +2 -5
  90. package/dist/expo/plugins/withMobileBundle.js +40 -121
  91. package/dist/expo/plugins/withQvacSDK.d.ts +0 -4
  92. package/dist/expo/plugins/withQvacSDK.js +1 -26
  93. package/dist/index.d.ts +4 -9
  94. package/dist/index.js +5 -11
  95. package/dist/logging/base-logger.js +16 -26
  96. package/dist/logging/index.d.ts +1 -7
  97. package/dist/logging/index.js +1 -7
  98. package/dist/logging/logger.d.ts +2 -0
  99. package/dist/logging/logger.js +6 -11
  100. package/dist/logging/stream-logger.d.ts +1 -1
  101. package/dist/logging/stream-logger.js +3 -6
  102. package/dist/logging/transport.js +2 -2
  103. package/dist/logging/types.d.ts +0 -2
  104. package/dist/logging/utils.d.ts +0 -2
  105. package/dist/logging/utils.js +0 -62
  106. package/dist/models/{registry → hyperdrive}/index.js +1 -1
  107. package/dist/models/hyperdrive/models.d.ts +795 -0
  108. package/dist/models/hyperdrive/models.js +891 -0
  109. package/dist/schemas/cancel.d.ts +0 -18
  110. package/dist/schemas/cancel.js +0 -7
  111. package/dist/schemas/common.d.ts +153 -2857
  112. package/dist/schemas/common.js +4 -27
  113. package/dist/schemas/completion-stream.d.ts +60 -31
  114. package/dist/schemas/completion-stream.js +44 -20
  115. package/dist/schemas/delegate.d.ts +0 -9
  116. package/dist/schemas/delegate.js +2 -6
  117. package/dist/schemas/download-asset.d.ts +3 -125
  118. package/dist/schemas/download-asset.js +5 -22
  119. package/dist/schemas/embed.d.ts +3 -3
  120. package/dist/schemas/embed.js +2 -9
  121. package/dist/schemas/index.d.ts +2 -20
  122. package/dist/schemas/index.js +2 -20
  123. package/dist/schemas/llamacpp-config.d.ts +12 -243
  124. package/dist/schemas/llamacpp-config.js +14 -50
  125. package/dist/schemas/load-model.d.ts +986 -14092
  126. package/dist/schemas/load-model.js +72 -325
  127. package/dist/schemas/logging-stream.d.ts +4 -11
  128. package/dist/schemas/logging-stream.js +3 -4
  129. package/dist/schemas/ping.d.ts +11 -0
  130. package/dist/schemas/ping.js +8 -0
  131. package/dist/schemas/rag.d.ts +52 -183
  132. package/dist/schemas/rag.js +23 -152
  133. package/dist/schemas/text-to-speech.d.ts +1 -692
  134. package/dist/schemas/text-to-speech.js +3 -35
  135. package/dist/schemas/translate.d.ts +23 -68
  136. package/dist/schemas/translate.js +11 -37
  137. package/dist/schemas/translation-config.d.ts +7 -810
  138. package/dist/schemas/translation-config.js +7 -113
  139. package/dist/schemas/unload-model.d.ts +0 -2
  140. package/dist/schemas/unload-model.js +0 -2
  141. package/dist/schemas/whispercpp-config.d.ts +74 -0
  142. package/dist/schemas/{transcription-config.js → whispercpp-config.js} +8 -31
  143. package/dist/server/bare/{ops → addons}/cancel.js +1 -2
  144. package/dist/server/bare/addons/index.d.ts +4 -0
  145. package/dist/server/bare/addons/index.js +3 -0
  146. package/dist/server/bare/addons/llamacpp/create-model.d.ts +5 -0
  147. package/dist/server/bare/addons/llamacpp/create-model.js +67 -0
  148. package/dist/server/bare/{plugins/llamacpp-completion/ops → addons/llamacpp/handlers}/completion-stream.d.ts +1 -2
  149. package/dist/server/bare/{plugins/llamacpp-completion/ops → addons/llamacpp/handlers}/completion-stream.js +49 -46
  150. package/dist/server/bare/addons/llamacpp/handlers/embed.d.ts +4 -0
  151. package/dist/server/bare/{ops → addons/llamacpp/handlers}/embed.js +7 -22
  152. package/dist/server/bare/addons/llamacpp/index.d.ts +4 -0
  153. package/dist/server/bare/addons/llamacpp/index.js +3 -0
  154. package/dist/server/bare/{ops → addons/llamacpp}/kv-cache-utils.d.ts +1 -4
  155. package/dist/server/bare/{ops → addons/llamacpp}/kv-cache-utils.js +19 -54
  156. package/dist/server/bare/addons/load-model.d.ts +3 -0
  157. package/dist/server/bare/addons/load-model.js +62 -0
  158. package/dist/server/bare/addons/translation/create-model.d.ts +4 -0
  159. package/dist/server/bare/addons/translation/create-model.js +45 -0
  160. package/dist/server/bare/addons/translation/handlers/translate.d.ts +3 -0
  161. package/dist/server/bare/{ops → addons/translation/handlers}/translate.js +14 -47
  162. package/dist/server/bare/addons/translation/index.d.ts +3 -0
  163. package/dist/server/bare/addons/translation/index.js +2 -0
  164. package/dist/server/bare/addons/tts/create-model.d.ts +6 -0
  165. package/dist/server/bare/addons/tts/create-model.js +40 -0
  166. package/dist/server/bare/{plugins/onnx-tts/ops → addons/tts/handlers}/text-to-speech.js +3 -25
  167. package/dist/server/bare/addons/tts/index.d.ts +3 -0
  168. package/dist/server/bare/addons/tts/index.js +2 -0
  169. package/dist/server/bare/addons/unload-model.js +20 -0
  170. package/dist/server/bare/addons/whispercpp/create-model.d.ts +6 -0
  171. package/dist/server/bare/addons/whispercpp/create-model.js +56 -0
  172. package/dist/server/bare/addons/whispercpp/handlers/transcribe-stream.d.ts +3 -0
  173. package/dist/server/bare/addons/whispercpp/handlers/transcribe-stream.js +62 -0
  174. package/dist/server/bare/addons/whispercpp/index.d.ts +3 -0
  175. package/dist/server/bare/addons/whispercpp/index.js +2 -0
  176. package/dist/server/bare/delegate-rpc-client.d.ts +0 -6
  177. package/dist/server/bare/delegate-rpc-client.js +45 -187
  178. package/dist/server/bare/hyperswarm.d.ts +0 -3
  179. package/dist/server/bare/hyperswarm.js +6 -29
  180. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.d.ts +1 -1
  181. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js +10 -9
  182. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.d.ts +4 -7
  183. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js +14 -13
  184. package/dist/server/bare/rag-hyperdb/handlers/search.js +10 -10
  185. package/dist/server/bare/rag-hyperdb/index.d.ts +1 -8
  186. package/dist/server/bare/rag-hyperdb/index.js +1 -8
  187. package/dist/server/bare/rag-hyperdb/rag-manager.d.ts +5 -0
  188. package/dist/server/bare/rag-hyperdb/rag-manager.js +65 -0
  189. package/dist/server/bare/registry/logging-stream-registry.d.ts +7 -24
  190. package/dist/server/bare/registry/logging-stream-registry.js +20 -99
  191. package/dist/server/bare/registry/model-registry.d.ts +26 -14
  192. package/dist/server/bare/registry/model-registry.js +15 -29
  193. package/dist/server/error-handlers.d.ts +2 -3
  194. package/dist/server/error-handlers.js +10 -15
  195. package/dist/server/http-server.d.ts +2 -0
  196. package/dist/server/http-server.js +189 -0
  197. package/dist/server/rpc/create-server.js +3 -5
  198. package/dist/server/rpc/handle-request.d.ts +9 -0
  199. package/dist/server/rpc/handle-request.js +242 -92
  200. package/dist/server/rpc/handlers/cancelHandler.js +3 -14
  201. package/dist/server/rpc/handlers/completion-stream-delegated.d.ts +1 -3
  202. package/dist/server/rpc/handlers/completion-stream-delegated.js +8 -20
  203. package/dist/server/rpc/handlers/completion-stream.js +43 -2
  204. package/dist/server/rpc/handlers/delete-cache.js +2 -4
  205. package/dist/server/rpc/handlers/download-asset.js +6 -59
  206. package/dist/server/rpc/handlers/embed.js +19 -2
  207. package/dist/server/rpc/handlers/index.d.ts +0 -13
  208. package/dist/server/rpc/handlers/index.js +0 -13
  209. package/dist/server/rpc/handlers/load-model/download-manager.d.ts +11 -12
  210. package/dist/server/rpc/handlers/load-model/download-manager.js +28 -43
  211. package/dist/server/rpc/handlers/load-model/http.d.ts +1 -2
  212. package/dist/server/rpc/handlers/load-model/http.js +59 -422
  213. package/dist/server/rpc/handlers/load-model/hyperdrive.d.ts +1 -2
  214. package/dist/server/rpc/handlers/load-model/hyperdrive.js +171 -364
  215. package/dist/server/rpc/handlers/load-model/index.d.ts +2 -2
  216. package/dist/server/rpc/handlers/load-model/index.js +2 -2
  217. package/dist/server/rpc/handlers/load-model/resolve.d.ts +1 -3
  218. package/dist/server/rpc/handlers/load-model/resolve.js +29 -110
  219. package/dist/server/rpc/handlers/load-model-delegated.d.ts +2 -6
  220. package/dist/server/rpc/handlers/load-model-delegated.js +20 -60
  221. package/dist/server/rpc/handlers/{load-model/handler.d.ts → load-model.d.ts} +2 -2
  222. package/dist/server/rpc/handlers/load-model.js +57 -0
  223. package/dist/server/rpc/handlers/logging-stream.js +4 -4
  224. package/dist/server/rpc/handlers/provideHandler/connection.js +10 -12
  225. package/dist/server/rpc/handlers/provideHandler/handler.js +17 -20
  226. package/dist/server/rpc/handlers/provideHandler/proxy.js +6 -8
  227. package/dist/server/rpc/handlers/rag.d.ts +2 -2
  228. package/dist/server/rpc/handlers/rag.js +43 -130
  229. package/dist/server/rpc/handlers/stopProvideHandler.js +2 -6
  230. package/dist/server/rpc/handlers/text-to-speech.js +5 -2
  231. package/dist/server/rpc/handlers/transcribe-stream.js +28 -2
  232. package/dist/server/rpc/handlers/translate.js +49 -2
  233. package/dist/server/rpc/handlers/unload-model.js +3 -12
  234. package/dist/server/rpc/index.d.ts +1 -1
  235. package/dist/server/utils/audio/decoder.d.ts +1 -2
  236. package/dist/server/utils/audio/decoder.js +12 -49
  237. package/dist/server/utils/cache.d.ts +8 -19
  238. package/dist/server/utils/cache.js +15 -100
  239. package/dist/server/utils/hash.d.ts +5 -0
  240. package/dist/server/utils/hash.js +11 -0
  241. package/dist/server/utils/index.d.ts +2 -7
  242. package/dist/server/utils/index.js +2 -7
  243. package/dist/server/worker.d.ts +5 -4
  244. package/dist/server/worker.js +89 -22
  245. package/package.json +41 -148
  246. package/NOTICE +0 -695
  247. package/bare-imports.json +0 -44
  248. package/dist/client/api/get-model-info.d.ts +0 -36
  249. package/dist/client/api/get-model-info.js +0 -14
  250. package/dist/client/api/heartbeat.d.ts +0 -30
  251. package/dist/client/api/heartbeat.js +0 -38
  252. package/dist/client/api/invoke-plugin.d.ts +0 -15
  253. package/dist/client/api/invoke-plugin.js +0 -38
  254. package/dist/client/api/ocr.d.ts +0 -31
  255. package/dist/client/api/ocr.js +0 -88
  256. package/dist/client/api/registry.d.ts +0 -14
  257. package/dist/client/api/registry.js +0 -37
  258. package/dist/client/config-loader/config-utils.d.ts +0 -5
  259. package/dist/client/config-loader/config-utils.js +0 -20
  260. package/dist/client/config-loader/resolve-config.bare.d.ts +0 -9
  261. package/dist/client/config-loader/resolve-config.bare.js +0 -87
  262. package/dist/client/config-loader/resolve-config.expo.d.ts +0 -11
  263. package/dist/client/config-loader/resolve-config.expo.js +0 -62
  264. package/dist/client/config-loader/resolve-config.node.d.ts +0 -10
  265. package/dist/client/config-loader/resolve-config.node.js +0 -145
  266. package/dist/client/init-hooks.d.ts +0 -21
  267. package/dist/client/init-hooks.js +0 -66
  268. package/dist/client/rpc/expo-device-info.d.ts +0 -6
  269. package/dist/client/rpc/expo-device-info.js +0 -32
  270. package/dist/client/rpc/profiling/index.d.ts +0 -2
  271. package/dist/client/rpc/profiling/index.js +0 -1
  272. package/dist/client/rpc/profiling/profiler.d.ts +0 -27
  273. package/dist/client/rpc/profiling/profiler.js +0 -139
  274. package/dist/constants/registry.d.ts +0 -2
  275. package/dist/constants/registry.js +0 -1
  276. package/dist/examples/cache-management.d.ts +0 -2
  277. package/dist/examples/cache-management.js +0 -97
  278. package/dist/examples/config/blind-relay/blind-relay.config.d.ts +0 -5
  279. package/dist/examples/config/blind-relay/blind-relay.config.js +0 -7
  280. package/dist/examples/config/default/default.config.d.ts +0 -8
  281. package/dist/examples/config/default/default.config.js +0 -6
  282. package/dist/examples/config/plugins/plugins.config.d.ts +0 -5
  283. package/dist/examples/config/plugins/plugins.config.js +0 -4
  284. package/dist/examples/config-reload.d.ts +0 -2
  285. package/dist/examples/config-reload.js +0 -49
  286. package/dist/examples/default-config-usage.d.ts +0 -17
  287. package/dist/examples/default-config-usage.js +0 -47
  288. package/dist/examples/delegated-inference/consumer-profiled.d.ts +0 -2
  289. package/dist/examples/delegated-inference/consumer-profiled.js +0 -67
  290. package/dist/examples/download-with-blind-relays.d.ts +0 -2
  291. package/dist/examples/download-with-blind-relays.js +0 -49
  292. package/dist/examples/embed-p2p.d.ts +0 -2
  293. package/dist/examples/embed-p2p.js +0 -54
  294. package/dist/examples/llamacpp-p2p.d.ts +0 -2
  295. package/dist/examples/llamacpp-sharded.d.ts +0 -2
  296. package/dist/examples/llamacpp-sharded.js +0 -53
  297. package/dist/examples/logging-file-transport.d.ts +0 -2
  298. package/dist/examples/logging-streaming.d.ts +0 -2
  299. package/dist/examples/logging-streaming.js +0 -75
  300. package/dist/examples/mcp-websearch.d.ts +0 -13
  301. package/dist/examples/mcp-websearch.js +0 -176
  302. package/dist/examples/ocr-fasttext.d.ts +0 -2
  303. package/dist/examples/ocr-fasttext.js +0 -52
  304. package/dist/examples/plugins.d.ts +0 -14
  305. package/dist/examples/plugins.js +0 -129
  306. package/dist/examples/profiling/basic.d.ts +0 -2
  307. package/dist/examples/profiling/basic.js +0 -71
  308. package/dist/examples/profiling/per-call.d.ts +0 -2
  309. package/dist/examples/profiling/per-call.js +0 -30
  310. package/dist/examples/quickstart.d.ts +0 -2
  311. package/dist/examples/quickstart.js +0 -28
  312. package/dist/examples/rag/rag-hyperdb/cancellation.d.ts +0 -2
  313. package/dist/examples/rag/rag-hyperdb/cancellation.js +0 -75
  314. package/dist/examples/rag/rag-hyperdb/ingest.d.ts +0 -2
  315. package/dist/examples/rag/rag-hyperdb/pipeline.d.ts +0 -2
  316. package/dist/examples/rag/rag-hyperdb/pipeline.js +0 -74
  317. package/dist/examples/rag/rag-hyperdb/workspaces.d.ts +0 -2
  318. package/dist/examples/rag/rag-hyperdb/workspaces.js +0 -178
  319. package/dist/examples/registry-query.d.ts +0 -2
  320. package/dist/examples/registry-query.js +0 -87
  321. package/dist/examples/seed-p2p.d.ts +0 -2
  322. package/dist/examples/transcription/parakeet-ctc-filesystem.d.ts +0 -2
  323. package/dist/examples/transcription/parakeet-ctc-filesystem.js +0 -40
  324. package/dist/examples/transcription/parakeet-microphone-record.d.ts +0 -2
  325. package/dist/examples/transcription/parakeet-microphone-record.js +0 -95
  326. package/dist/examples/transcription/parakeet-sortformer.d.ts +0 -2
  327. package/dist/examples/transcription/parakeet-sortformer.js +0 -115
  328. package/dist/examples/transcription/parakeet-tdt-filesystem.d.ts +0 -2
  329. package/dist/examples/transcription/parakeet-tdt-filesystem.js +0 -44
  330. package/dist/examples/translation/translation-bergamot-batch.d.ts +0 -2
  331. package/dist/examples/translation/translation-bergamot-batch.js +0 -49
  332. package/dist/examples/translation/translation-bergamot-pivot.d.ts +0 -2
  333. package/dist/examples/translation/translation-bergamot-pivot.js +0 -73
  334. package/dist/examples/translation/translation-bergamot.d.ts +0 -2
  335. package/dist/examples/translation/translation-bergamot.js +0 -39
  336. package/dist/examples/translation/translation-llm-afriquegemma.d.ts +0 -2
  337. package/dist/examples/translation/translation-llm-afriquegemma.js +0 -39
  338. package/dist/examples/tts/chatterbox.d.ts +0 -2
  339. package/dist/examples/tts/chatterbox.js +0 -59
  340. package/dist/examples/tts/supertonic.d.ts +0 -2
  341. package/dist/examples/tts/supertonic.js +0 -51
  342. package/dist/examples/tts/utils.d.ts +0 -17
  343. package/dist/expo/plugins/resolve-sdk-package-dir.d.ts +0 -15
  344. package/dist/expo/plugins/resolve-sdk-package-dir.js +0 -31
  345. package/dist/expo/plugins/withAndroidArchitecture.d.ts +0 -8
  346. package/dist/expo/plugins/withAndroidArchitecture.js +0 -52
  347. package/dist/expo/plugins/withAndroidNdkVersion.d.ts +0 -8
  348. package/dist/expo/plugins/withAndroidNdkVersion.js +0 -31
  349. package/dist/expo/plugins/withDeviceInfo.d.ts +0 -10
  350. package/dist/expo/plugins/withDeviceInfo.js +0 -48
  351. package/dist/logging/addon.d.ts +0 -6
  352. package/dist/logging/addon.js +0 -75
  353. package/dist/logging/client-logger.d.ts +0 -3
  354. package/dist/logging/client-logger.js +0 -24
  355. package/dist/logging/namespaces.d.ts +0 -6
  356. package/dist/logging/namespaces.js +0 -6
  357. package/dist/logging/registry.d.ts +0 -31
  358. package/dist/logging/registry.js +0 -62
  359. package/dist/logging/server-logger.d.ts +0 -3
  360. package/dist/logging/server-logger.js +0 -16
  361. package/dist/models/registry/models.d.ts +0 -10417
  362. package/dist/models/registry/models.js +0 -10757
  363. package/dist/models/update-models/codegen.d.ts +0 -3
  364. package/dist/models/update-models/codegen.js +0 -135
  365. package/dist/models/update-models/history.d.ts +0 -24
  366. package/dist/models/update-models/history.js +0 -107
  367. package/dist/models/update-models/index.d.ts +0 -2
  368. package/dist/models/update-models/index.js +0 -125
  369. package/dist/models/update-models/naming.d.ts +0 -4
  370. package/dist/models/update-models/naming.js +0 -370
  371. package/dist/models/update-models/processing.d.ts +0 -8
  372. package/dist/models/update-models/processing.js +0 -67
  373. package/dist/models/update-models/registry.d.ts +0 -4
  374. package/dist/models/update-models/registry.js +0 -67
  375. package/dist/models/update-models/shards.d.ts +0 -4
  376. package/dist/models/update-models/shards.js +0 -57
  377. package/dist/models/update-models/types.d.ts +0 -60
  378. package/dist/models/update-models/types.js +0 -1
  379. package/dist/models/update-models/utils.d.ts +0 -3
  380. package/dist/models/update-models/utils.js +0 -21
  381. package/dist/pear/pre.d.ts +0 -18
  382. package/dist/pear/pre.js +0 -433
  383. package/dist/profiling/aggregator.d.ts +0 -15
  384. package/dist/profiling/aggregator.js +0 -100
  385. package/dist/profiling/clock.d.ts +0 -12
  386. package/dist/profiling/clock.js +0 -51
  387. package/dist/profiling/controller.d.ts +0 -33
  388. package/dist/profiling/controller.js +0 -123
  389. package/dist/profiling/envelope.d.ts +0 -10
  390. package/dist/profiling/envelope.js +0 -36
  391. package/dist/profiling/events.d.ts +0 -20
  392. package/dist/profiling/events.js +0 -37
  393. package/dist/profiling/exporters.d.ts +0 -10
  394. package/dist/profiling/exporters.js +0 -236
  395. package/dist/profiling/index.d.ts +0 -36
  396. package/dist/profiling/index.js +0 -31
  397. package/dist/profiling/ring-buffer.d.ts +0 -19
  398. package/dist/profiling/ring-buffer.js +0 -83
  399. package/dist/profiling/types.d.ts +0 -47
  400. package/dist/profiling/types.js +0 -1
  401. package/dist/schemas/archive.d.ts +0 -9
  402. package/dist/schemas/archive.js +0 -17
  403. package/dist/schemas/engine-addon-map.d.ts +0 -5
  404. package/dist/schemas/engine-addon-map.js +0 -52
  405. package/dist/schemas/get-model-info.d.ts +0 -120
  406. package/dist/schemas/get-model-info.js +0 -58
  407. package/dist/schemas/heartbeat.d.ts +0 -17
  408. package/dist/schemas/heartbeat.js +0 -10
  409. package/dist/schemas/json-schema.d.ts +0 -16
  410. package/dist/schemas/json-schema.js +0 -2
  411. package/dist/schemas/mcp-adapter.d.ts +0 -47
  412. package/dist/schemas/mcp-adapter.js +0 -1
  413. package/dist/schemas/model-src-utils.d.ts +0 -148
  414. package/dist/schemas/model-src-utils.js +0 -35
  415. package/dist/schemas/model-types.d.ts +0 -183
  416. package/dist/schemas/model-types.js +0 -168
  417. package/dist/schemas/ocr.d.ts +0 -125
  418. package/dist/schemas/ocr.js +0 -57
  419. package/dist/schemas/path-validation.d.ts +0 -10
  420. package/dist/schemas/path-validation.js +0 -22
  421. package/dist/schemas/plugin.d.ts +0 -226
  422. package/dist/schemas/plugin.js +0 -158
  423. package/dist/schemas/profiling.d.ts +0 -105
  424. package/dist/schemas/profiling.js +0 -66
  425. package/dist/schemas/registry.d.ts +0 -356
  426. package/dist/schemas/registry.js +0 -93
  427. package/dist/schemas/reload-config.d.ts +0 -476
  428. package/dist/schemas/reload-config.js +0 -44
  429. package/dist/schemas/runtime-context.d.ts +0 -19
  430. package/dist/schemas/runtime-context.js +0 -7
  431. package/dist/schemas/sdk-config.d.ts +0 -2973
  432. package/dist/schemas/sdk-config.js +0 -136
  433. package/dist/schemas/sdk-errors-client.d.ts +0 -31
  434. package/dist/schemas/sdk-errors-client.js +0 -143
  435. package/dist/schemas/sdk-errors-registry.d.ts +0 -6
  436. package/dist/schemas/sdk-errors-registry.js +0 -8
  437. package/dist/schemas/sdk-errors-server.d.ts +0 -89
  438. package/dist/schemas/sdk-errors-server.js +0 -451
  439. package/dist/schemas/shard.d.ts +0 -21
  440. package/dist/schemas/shard.js +0 -17
  441. package/dist/schemas/tools.d.ts +0 -65
  442. package/dist/schemas/tools.js +0 -43
  443. package/dist/schemas/transcription-config.d.ts +0 -383
  444. package/dist/scripts/run-security-tests-bare.d.ts +0 -2
  445. package/dist/scripts/run-security-tests-bare.js +0 -78
  446. package/dist/scripts/run-security-tests.d.ts +0 -2
  447. package/dist/scripts/run-security-tests.js +0 -22
  448. package/dist/scripts/run-unit-tests.d.ts +0 -2
  449. package/dist/scripts/run-unit-tests.js +0 -17
  450. package/dist/server/bare/ops/embed.d.ts +0 -12
  451. package/dist/server/bare/ops/load-model.d.ts +0 -9
  452. package/dist/server/bare/ops/load-model.js +0 -85
  453. package/dist/server/bare/ops/transcribe.d.ts +0 -3
  454. package/dist/server/bare/ops/transcribe.js +0 -75
  455. package/dist/server/bare/ops/translate.d.ts +0 -5
  456. package/dist/server/bare/ops/unload-model.js +0 -41
  457. package/dist/server/bare/plugins/index.d.ts +0 -8
  458. package/dist/server/bare/plugins/index.js +0 -7
  459. package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.d.ts +0 -6
  460. package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js +0 -34
  461. package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +0 -220
  462. package/dist/server/bare/plugins/llamacpp-completion/plugin.js +0 -155
  463. package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +0 -54
  464. package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +0 -87
  465. package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +0 -367
  466. package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +0 -201
  467. package/dist/server/bare/plugins/onnx-ocr/ops/ocr-stream.d.ts +0 -10
  468. package/dist/server/bare/plugins/onnx-ocr/ops/ocr-stream.js +0 -110
  469. package/dist/server/bare/plugins/onnx-ocr/plugin.d.ts +0 -86
  470. package/dist/server/bare/plugins/onnx-ocr/plugin.js +0 -117
  471. package/dist/server/bare/plugins/onnx-tts/plugin.d.ts +0 -373
  472. package/dist/server/bare/plugins/onnx-tts/plugin.js +0 -182
  473. package/dist/server/bare/plugins/onnx-tts/wav-helper.d.ts +0 -14
  474. package/dist/server/bare/plugins/onnx-tts/wav-helper.js +0 -107
  475. package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +0 -317
  476. package/dist/server/bare/plugins/parakeet-transcription/plugin.js +0 -154
  477. package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +0 -237
  478. package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +0 -86
  479. package/dist/server/bare/rag-hyperdb/handlers/chunk.d.ts +0 -3
  480. package/dist/server/bare/rag-hyperdb/handlers/chunk.js +0 -7
  481. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.d.ts +0 -3
  482. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.js +0 -9
  483. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.d.ts +0 -3
  484. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js +0 -14
  485. package/dist/server/bare/rag-hyperdb/handlers/ingest.d.ts +0 -9
  486. package/dist/server/bare/rag-hyperdb/handlers/ingest.js +0 -18
  487. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.d.ts +0 -3
  488. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js +0 -4
  489. package/dist/server/bare/rag-hyperdb/handlers/reindex.d.ts +0 -9
  490. package/dist/server/bare/rag-hyperdb/handlers/reindex.js +0 -16
  491. package/dist/server/bare/rag-hyperdb/rag-operation-manager.d.ts +0 -7
  492. package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +0 -39
  493. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.d.ts +0 -15
  494. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +0 -136
  495. package/dist/server/bare/registry/config-registry.d.ts +0 -14
  496. package/dist/server/bare/registry/config-registry.js +0 -82
  497. package/dist/server/bare/registry/model-config-registry.d.ts +0 -4
  498. package/dist/server/bare/registry/model-config-registry.js +0 -15
  499. package/dist/server/bare/registry/model-config-utils.d.ts +0 -15
  500. package/dist/server/bare/registry/model-config-utils.js +0 -112
  501. package/dist/server/bare/registry/registry-client.d.ts +0 -5
  502. package/dist/server/bare/registry/registry-client.js +0 -37
  503. package/dist/server/bare/registry/runtime-context-registry.d.ts +0 -7
  504. package/dist/server/bare/registry/runtime-context-registry.js +0 -26
  505. package/dist/server/bare/utils/audio-input.d.ts +0 -10
  506. package/dist/server/bare/utils/audio-input.js +0 -33
  507. package/dist/server/bare/utils/loader-adapter.d.ts +0 -7
  508. package/dist/server/bare/utils/loader-adapter.js +0 -9
  509. package/dist/server/env.d.ts +0 -22
  510. package/dist/server/env.js +0 -57
  511. package/dist/server/plugins/index.d.ts +0 -2
  512. package/dist/server/plugins/index.js +0 -1
  513. package/dist/server/plugins/registry.d.ts +0 -9
  514. package/dist/server/plugins/registry.js +0 -79
  515. package/dist/server/rpc/delegate-transport.d.ts +0 -19
  516. package/dist/server/rpc/delegate-transport.js +0 -236
  517. package/dist/server/rpc/delegate-utils.d.ts +0 -2
  518. package/dist/server/rpc/delegate-utils.js +0 -5
  519. package/dist/server/rpc/handler-registry.d.ts +0 -3
  520. package/dist/server/rpc/handler-registry.js +0 -113
  521. package/dist/server/rpc/handler-utils.d.ts +0 -23
  522. package/dist/server/rpc/handler-utils.js +0 -170
  523. package/dist/server/rpc/handlers/cancel-delegated.d.ts +0 -4
  524. package/dist/server/rpc/handlers/cancel-delegated.js +0 -71
  525. package/dist/server/rpc/handlers/get-model-info.d.ts +0 -3
  526. package/dist/server/rpc/handlers/get-model-info.js +0 -164
  527. package/dist/server/rpc/handlers/heartbeat-delegated.d.ts +0 -4
  528. package/dist/server/rpc/handlers/heartbeat-delegated.js +0 -32
  529. package/dist/server/rpc/handlers/heartbeat.d.ts +0 -3
  530. package/dist/server/rpc/handlers/heartbeat.js +0 -3
  531. package/dist/server/rpc/handlers/load-model/download-stats.d.ts +0 -6
  532. package/dist/server/rpc/handlers/load-model/download-stats.js +0 -87
  533. package/dist/server/rpc/handlers/load-model/handler.js +0 -187
  534. package/dist/server/rpc/handlers/load-model/registry.d.ts +0 -11
  535. package/dist/server/rpc/handlers/load-model/registry.js +0 -548
  536. package/dist/server/rpc/handlers/load-model/types.d.ts +0 -29
  537. package/dist/server/rpc/handlers/load-model/types.js +0 -1
  538. package/dist/server/rpc/handlers/ocr-stream.d.ts +0 -3
  539. package/dist/server/rpc/handlers/ocr-stream.js +0 -4
  540. package/dist/server/rpc/handlers/plugin-dispatch.d.ts +0 -15
  541. package/dist/server/rpc/handlers/plugin-dispatch.js +0 -59
  542. package/dist/server/rpc/handlers/plugin-invoke.d.ts +0 -4
  543. package/dist/server/rpc/handlers/plugin-invoke.js +0 -92
  544. package/dist/server/rpc/handlers/registry.d.ts +0 -5
  545. package/dist/server/rpc/handlers/registry.js +0 -157
  546. package/dist/server/rpc/handlers/unload-model-delegated.d.ts +0 -3
  547. package/dist/server/rpc/handlers/unload-model-delegated.js +0 -32
  548. package/dist/server/rpc/profiling/context.d.ts +0 -18
  549. package/dist/server/rpc/profiling/context.js +0 -38
  550. package/dist/server/rpc/profiling/delegation-profiler.d.ts +0 -32
  551. package/dist/server/rpc/profiling/delegation-profiler.js +0 -154
  552. package/dist/server/rpc/profiling/index.d.ts +0 -5
  553. package/dist/server/rpc/profiling/index.js +0 -4
  554. package/dist/server/rpc/profiling/operation-metrics.d.ts +0 -25
  555. package/dist/server/rpc/profiling/operation-metrics.js +0 -199
  556. package/dist/server/rpc/profiling/operation-wrappers.d.ts +0 -18
  557. package/dist/server/rpc/profiling/operation-wrappers.js +0 -124
  558. package/dist/server/rpc/profiling/profiler.d.ts +0 -13
  559. package/dist/server/rpc/profiling/profiler.js +0 -97
  560. package/dist/server/utils/archive.d.ts +0 -4
  561. package/dist/server/utils/archive.js +0 -179
  562. package/dist/server/utils/checksum.d.ts +0 -4
  563. package/dist/server/utils/checksum.js +0 -31
  564. package/dist/server/utils/config-transform.d.ts +0 -3
  565. package/dist/server/utils/config-transform.js +0 -23
  566. package/dist/server/utils/formatting.d.ts +0 -19
  567. package/dist/server/utils/formatting.js +0 -61
  568. package/dist/server/utils/gguf-tensor-extractor.d.ts +0 -15
  569. package/dist/server/utils/gguf-tensor-extractor.js +0 -314
  570. package/dist/server/utils/path-security.d.ts +0 -12
  571. package/dist/server/utils/path-security.js +0 -25
  572. package/dist/server/utils/shard-utils.d.ts +0 -48
  573. package/dist/server/utils/shard-utils.js +0 -125
  574. package/dist/server/worker-core.d.ts +0 -6
  575. package/dist/server/worker-core.js +0 -88
  576. package/dist/utils/errors-base.d.ts +0 -3
  577. package/dist/utils/errors-base.js +0 -13
  578. package/dist/utils/errors-client.d.ts +0 -137
  579. package/dist/utils/errors-client.js +0 -240
  580. package/dist/utils/errors-server.d.ts +0 -236
  581. package/dist/utils/errors-server.js +0 -412
  582. package/dist/utils/global-singleton.d.ts +0 -2
  583. package/dist/utils/global-singleton.js +0 -10
  584. package/dist/utils/mcp-adapter.d.ts +0 -12
  585. package/dist/utils/mcp-adapter.js +0 -103
  586. package/dist/utils/object.d.ts +0 -2
  587. package/dist/utils/object.js +0 -3
  588. package/dist/utils/path-sanitize.d.ts +0 -17
  589. package/dist/utils/path-sanitize.js +0 -54
  590. package/dist/utils/tool-helpers.d.ts +0 -25
  591. package/dist/utils/tool-helpers.js +0 -112
  592. package/expo/plugins/patches/android-link.mjs +0 -63
  593. package/expo/plugins/patches/ios-link.mjs +0 -63
  594. /package/dist/examples/{seed-p2p.js → seed-hyperdrive.js} +0 -0
  595. /package/dist/examples/{transcription/whispercpp-filesystem.d.ts → whispercpp-filesystem.d.ts} +0 -0
  596. /package/dist/examples/{transcription/whispercpp-microphone-record.d.ts → whispercpp-microphone-record.d.ts} +0 -0
  597. /package/dist/examples/{transcription/whispercpp-prompt.d.ts → whispercpp-prompt.d.ts} +0 -0
  598. /package/dist/models/{registry → hyperdrive}/index.d.ts +0 -0
  599. /package/dist/server/bare/{ops → addons}/cancel.d.ts +0 -0
  600. /package/dist/server/bare/{plugins/onnx-tts/ops → addons/tts/handlers}/text-to-speech.d.ts +0 -0
  601. /package/dist/server/bare/{ops → addons}/unload-model.d.ts +0 -0
@@ -1,77 +1,52 @@
1
1
  import fs, { promises as fsPromises } from "bare-fs";
2
- import path from "bare-path";
3
2
  import { Readable } from "bare-stream";
4
3
  import fetch from "bare-fetch";
5
4
  import { AbortController } from "bare-abort-controller";
6
- import { withTimeout } from "../../../../utils/withTimeout.js";
7
- import { getModelsCacheDir, getShardedModelCacheDir, generateShortHash, detectShardedModel, parsePatternBasedShardUrl, extractTensorsFromShards, calculatePercentage, isArchiveUrl, sanitizePathComponent, extractAndValidateShardedArchive, validateShardedModelCache, checkAllShardsExist, generateShardFilenames, hasValidGGUFHeader, } from "../../../utils/index.js";
8
- import { getSDKConfig } from "../../../bare/registry/config-registry.js";
5
+ import { getModelsCacheDir, generateShortHash } from "../../../utils/index.js";
9
6
  import { getActiveDownload, registerDownload, unregisterDownload, createHttpDownloadKey, shouldClearCache, clearClearCacheFlag, } from "./download-manager.js";
10
- import { DownloadCancelledError, HTTPError, NoResponseBodyError, PartialDownloadOfflineError, ResponseBodyNotReadableError, } from "../../../../utils/errors-server.js";
11
- import { getServerLogger } from "../../../../logging/index.js";
12
- const logger = getServerLogger();
13
- const DEFAULT_CONCURRENCY = 3;
14
- const DEFAULT_HTTP_CONNECTION_TIMEOUT_MS = 10_000;
15
7
  function extractFilenameFromUrl(url) {
16
8
  // Parse URL to get the filename from the path
17
9
  const urlParts = url.split("/");
18
10
  const filename = urlParts[urlParts.length - 1] || "model.gguf";
19
11
  // Remove query parameters if present
20
12
  const cleanFilename = filename.split("?")[0] || "model.gguf";
21
- // Sanitize to prevent path traversal via crafted URLs
22
- return sanitizePathComponent(cleanFilename);
13
+ return cleanFilename;
23
14
  }
24
15
  async function validateCachedFile(modelPath, url, signal) {
25
16
  try {
26
17
  await fsPromises.access(modelPath);
27
18
  const localStats = await fsPromises.stat(modelPath);
28
19
  const localSize = localStats.size;
29
- const config = getSDKConfig();
30
- const connectionTimeout = config.httpConnectionTimeoutMs ?? DEFAULT_HTTP_CONNECTION_TIMEOUT_MS;
20
+ // Get expected size from HEAD request
31
21
  let expectedSize = 0;
32
22
  try {
33
- const response = await withTimeout(fetch(url, {
23
+ const response = await fetch(url, {
34
24
  method: "HEAD",
35
25
  ...(signal && { signal }),
36
- }), connectionTimeout);
26
+ });
37
27
  expectedSize = parseInt(response.headers.get("content-length") || "0");
38
28
  }
39
- catch (headError) {
40
- logger.warn(`⚠️ HEAD request failed: ${headError instanceof Error ? headError.message : String(headError)}`);
41
- logger.info(`📴 Falling back to GGUF header validation...`);
42
- const hasValidHeader = await hasValidGGUFHeader(modelPath);
43
- if (hasValidHeader) {
44
- logger.info(`✅ Offline - GGUF header valid, using cached file: ${modelPath}`);
45
- return modelPath;
46
- }
47
- if (localSize > 0) {
48
- logger.error(`❌ Offline with partial download (${localSize} bytes). Cannot resume without network.`);
49
- throw new PartialDownloadOfflineError(url, localSize);
50
- }
51
- logger.warn(`⚠️ Offline and GGUF validation failed - file may be incomplete`);
29
+ catch (error) {
30
+ console.log(`⚠️ Could not get expected file size from HEAD request, will re-download: ${String(error)}`);
52
31
  return null;
53
32
  }
54
33
  if (localSize !== expectedSize) {
55
- logger.info(`📥 Cached file size mismatch. Expected: ${expectedSize}, Found: ${localSize}. Re-downloading...`);
34
+ console.log(`📥 Cached file size mismatch. Expected: ${expectedSize}, Found: ${localSize}. Re-downloading...`);
56
35
  return null;
57
36
  }
58
- logger.info(`✅ Using cached HTTP model: ${modelPath}`);
37
+ console.log(`✅ Using cached HTTP model: ${modelPath}`);
59
38
  return modelPath;
60
39
  }
61
- catch (error) {
62
- // Re-throw PartialDownloadOfflineError
63
- if (error instanceof PartialDownloadOfflineError) {
64
- throw error;
65
- }
66
- // File doesn't exist or other access error
40
+ catch {
41
+ // File doesn't exist
67
42
  return null;
68
43
  }
69
44
  }
70
45
  async function performHttpDownload(url, modelPath, downloadKey, progressCallback, signal) {
71
46
  if (signal?.aborted) {
72
- throw new DownloadCancelledError();
47
+ throw new Error("Download cancelled");
73
48
  }
74
- logger.info(`📥 Downloading model from HTTP: ${url}`);
49
+ console.log(`📥 Downloading model from HTTP: ${url}`);
75
50
  // Check if file exists for resuming
76
51
  let startOffset = 0;
77
52
  let downloadedBytes = 0;
@@ -79,74 +54,60 @@ async function performHttpDownload(url, modelPath, downloadKey, progressCallback
79
54
  const existingStats = await fsPromises.stat(modelPath);
80
55
  startOffset = existingStats.size;
81
56
  downloadedBytes = startOffset;
82
- logger.info(`📥 Resuming download from byte ${startOffset}`);
57
+ console.log(`📥 Resuming download from byte ${startOffset}`);
83
58
  }
84
59
  catch {
85
- logger.info(`📥 Starting fresh download`);
60
+ console.log(`📥 Starting fresh download`);
86
61
  }
87
62
  // Prepare headers for resume if needed
88
63
  const headers = {
89
64
  "User-Agent": "qvac-sdk",
90
65
  };
66
+ const isPresignedUrl = url.includes("X-Amz-") || // AWS S3
67
+ url.includes("X-Goog-") || // Google Cloud Storage
68
+ (url.includes("sig=") && url.includes("se=")); // Azure Blob Storage SAS
69
+ if (isPresignedUrl) {
70
+ const urlObj = new URL(url);
71
+ headers["host"] = urlObj.hostname; // Override to prevent :443 from being appended
72
+ }
91
73
  if (startOffset > 0) {
92
74
  headers["Range"] = `bytes=${startOffset}-`;
93
75
  }
94
- const config = getSDKConfig();
95
- const connectionTimeout = config.httpConnectionTimeoutMs ?? DEFAULT_HTTP_CONNECTION_TIMEOUT_MS;
96
- let response;
97
- try {
98
- response = await withTimeout(fetch(url, {
99
- method: "GET",
100
- headers,
101
- ...(signal && { signal }),
102
- }), connectionTimeout);
103
- }
104
- catch (error) {
105
- // Check if it was parent abort
106
- if (signal?.aborted) {
107
- throw new DownloadCancelledError();
108
- }
109
- // Connection timeout or network error
110
- const errorMsg = error instanceof Error ? error.message : String(error);
111
- logger.error(`❌ Connection failed: ${errorMsg}. URL: ${url}`);
112
- throw new HTTPError(0, `Connection failed: ${errorMsg}`, error);
113
- }
76
+ // Make the fetch request
77
+ const response = await fetch(url, {
78
+ method: "GET",
79
+ headers,
80
+ ...(signal && { signal }),
81
+ // bare-fetch automatically follows redirects
82
+ });
114
83
  if (!response.ok) {
115
84
  // Check if it's a 416 (Range Not Satisfiable) - file already complete
116
85
  if (response.status === 416 && startOffset > 0) {
117
- logger.info(`✅ File already completely downloaded`);
118
- // Send 100% progress for already complete file
119
- if (progressCallback) {
120
- progressCallback({
121
- type: "modelProgress",
122
- downloaded: startOffset,
123
- total: startOffset,
124
- percentage: 100,
125
- downloadKey,
126
- });
127
- }
86
+ console.log(`✅ File already completely downloaded`);
128
87
  return;
129
88
  }
130
89
  // Check if server doesn't support range requests
131
90
  if (response.status === 200 && startOffset > 0) {
132
- logger.warn(`⚠️ Server doesn't support resume, starting fresh download`);
91
+ console.log(`⚠️ Server doesn't support resume, starting fresh download`);
133
92
  startOffset = 0;
134
93
  downloadedBytes = 0;
135
94
  // Retry without Range header
136
- response = await fetch(url, {
95
+ const freshResponse = await fetch(url, {
137
96
  method: "GET",
138
97
  headers: {
139
- "User-Agent": "qvac-sdk",
98
+ "User-Agent": "qvac-sdk/1.0",
140
99
  },
141
100
  ...(signal && { signal }),
142
101
  });
143
- if (!response.ok) {
144
- throw new HTTPError(response.status, response.statusText);
102
+ if (!freshResponse.ok) {
103
+ throw new Error(`HTTP error: ${freshResponse.status} ${freshResponse.statusText}`);
145
104
  }
105
+ // Use the fresh response
106
+ Object.assign(response, freshResponse);
146
107
  }
147
108
  else if (response.status !== 206) {
148
109
  // 206 is Partial Content (successful resume)
149
- throw new HTTPError(response.status, response.statusText);
110
+ throw new Error(`HTTP error: ${response.status} ${response.statusText}`);
150
111
  }
151
112
  }
152
113
  // Get total size from headers
@@ -166,14 +127,14 @@ async function performHttpDownload(url, modelPath, downloadKey, progressCallback
166
127
  // For fresh downloads
167
128
  totalBytes = contentLength ? parseInt(contentLength) : 0;
168
129
  }
169
- logger.info(`📏 Total size: ${totalBytes} bytes (${(totalBytes / 1024 / 1024).toFixed(2)} MB)`);
130
+ console.log(`📏 Total size: ${totalBytes} bytes (${(totalBytes / 1024 / 1024).toFixed(2)} MB)`);
170
131
  // Create write stream (append if resuming)
171
132
  const writeStreamOptions = startOffset > 0 && response.status === 206 ? { flags: "a" } : {};
172
133
  const writeStream = fs.createWriteStream(modelPath, writeStreamOptions);
173
134
  // Get the response body
174
135
  const body = response.body;
175
136
  if (!body) {
176
- throw new NoResponseBodyError();
137
+ throw new Error("No response body received");
177
138
  }
178
139
  try {
179
140
  // Check if body has pipe method (it's a Node/Bare stream)
@@ -189,7 +150,7 @@ async function performHttpDownload(url, modelPath, downloadKey, progressCallback
189
150
  type: "modelProgress",
190
151
  downloaded: downloadedBytes,
191
152
  total: totalBytes,
192
- percentage: calculatePercentage(downloadedBytes, totalBytes),
153
+ percentage: totalBytes > 0 ? (downloadedBytes / totalBytes) * 100 : 0,
193
154
  downloadKey,
194
155
  });
195
156
  }
@@ -209,7 +170,7 @@ async function performHttpDownload(url, modelPath, downloadKey, progressCallback
209
170
  signal.addEventListener("abort", abortHandler);
210
171
  }
211
172
  writeStream.on("finish", () => {
212
- logger.info(`✅ Model downloaded successfully to ${modelPath}`);
173
+ console.log(`✅ Model downloaded successfully to ${modelPath}`);
213
174
  if (signal) {
214
175
  signal.removeEventListener("abort", abortHandler);
215
176
  }
@@ -225,7 +186,7 @@ async function performHttpDownload(url, modelPath, downloadKey, progressCallback
225
186
  // Check if abort signal is triggered
226
187
  if (signal && signal.aborted) {
227
188
  writeStream.destroy();
228
- throw new DownloadCancelledError();
189
+ throw new Error("Download cancelled");
229
190
  }
230
191
  const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
231
192
  downloadedBytes += buffer.length;
@@ -234,7 +195,7 @@ async function performHttpDownload(url, modelPath, downloadKey, progressCallback
234
195
  type: "modelProgress",
235
196
  downloaded: downloadedBytes,
236
197
  total: totalBytes,
237
- percentage: calculatePercentage(downloadedBytes, totalBytes),
198
+ percentage: totalBytes > 0 ? (downloadedBytes / totalBytes) * 100 : 0,
238
199
  downloadKey,
239
200
  });
240
201
  }
@@ -251,7 +212,7 @@ async function performHttpDownload(url, modelPath, downloadKey, progressCallback
251
212
  // Close the write stream
252
213
  await new Promise((resolve, reject) => {
253
214
  writeStream.end(() => {
254
- logger.info(`✅ Model downloaded successfully to ${modelPath}`);
215
+ console.log(`✅ Model downloaded successfully to ${modelPath}`);
255
216
  resolve();
256
217
  });
257
218
  writeStream.on("error", reject);
@@ -276,7 +237,7 @@ async function performHttpDownload(url, modelPath, downloadKey, progressCallback
276
237
  type: "modelProgress",
277
238
  downloaded: downloadedBytes,
278
239
  total: totalBytes,
279
- percentage: calculatePercentage(downloadedBytes, totalBytes),
240
+ percentage: totalBytes > 0 ? (downloadedBytes / totalBytes) * 100 : 0,
280
241
  downloadKey,
281
242
  });
282
243
  }
@@ -297,41 +258,34 @@ async function performHttpDownload(url, modelPath, downloadKey, progressCallback
297
258
  // Close the write stream
298
259
  await new Promise((resolve, reject) => {
299
260
  writeStream.end(() => {
300
- logger.info(`✅ Model downloaded successfully to ${modelPath}`);
261
+ console.log(`✅ Model downloaded successfully to ${modelPath}`);
301
262
  resolve();
302
263
  });
303
264
  writeStream.on("error", reject);
304
265
  });
305
266
  }
306
267
  else {
307
- throw new ResponseBodyNotReadableError();
268
+ throw new Error("Response body is not readable");
308
269
  }
309
270
  }
310
271
  }
311
272
  catch (error) {
312
273
  writeStream.destroy();
313
- logger.error("Error during download:", error instanceof Error ? error.message : String(error));
274
+ console.error("Error during download:", error instanceof Error ? error.message : String(error));
314
275
  throw error instanceof Error ? error : new Error(String(error));
315
276
  }
316
277
  }
317
- export async function downloadModelFromHttp(url, progressCallback, hooks) {
318
- const filename = extractFilenameFromUrl(url);
319
- if (isArchiveUrl(url)) {
320
- return downloadShardedModelFromArchive(url, progressCallback, hooks);
321
- }
322
- const shardInfo = detectShardedModel(filename);
323
- if (shardInfo.isSharded && shardInfo.totalShards) {
324
- return downloadShardedModelFromHttp(url, progressCallback, hooks);
325
- }
278
+ export async function downloadModelFromHttp(url, progressCallback) {
326
279
  const downloadKey = createHttpDownloadKey(url);
280
+ // Check if already downloading
327
281
  const existing = getActiveDownload(downloadKey);
328
282
  if (existing) {
329
- logger.info(`📥 Reusing existing download for: ${downloadKey}`);
330
- hooks?.markCacheMiss();
283
+ console.log(`📥 Reusing existing download for: ${downloadKey}`);
331
284
  return existing.promise;
332
285
  }
333
286
  const cacheDir = getModelsCacheDir();
334
287
  const sourceHash = generateShortHash(url);
288
+ const filename = extractFilenameFromUrl(url);
335
289
  const modelPath = `${cacheDir}/${sourceHash}_${filename}`;
336
290
  // Create managed download with AbortController
337
291
  const abortController = new AbortController();
@@ -340,70 +294,28 @@ export async function downloadModelFromHttp(url, progressCallback, hooks) {
340
294
  // Check if already cached
341
295
  const cachedPath = await validateCachedFile(modelPath, url, abortController.signal);
342
296
  if (cachedPath) {
343
- hooks?.markCacheHit();
344
- if (progressCallback) {
345
- try {
346
- const stats = await fsPromises.stat(cachedPath);
347
- progressCallback({
348
- type: "modelProgress",
349
- downloaded: stats.size,
350
- total: stats.size,
351
- percentage: 100,
352
- downloadKey,
353
- });
354
- }
355
- catch (error) {
356
- logger.debug("Failed to get file stats for progress callback", {
357
- path: cachedPath,
358
- error,
359
- });
360
- }
361
- }
362
297
  return cachedPath;
363
298
  }
364
299
  // Download the file
365
- hooks?.markCacheMiss();
366
300
  await performHttpDownload(url, modelPath, downloadKey, progressCallback, abortController.signal);
367
- // Send final 100% progress update
368
- if (progressCallback) {
369
- try {
370
- const stats = await fsPromises.stat(modelPath);
371
- progressCallback({
372
- type: "modelProgress",
373
- downloaded: stats.size,
374
- total: stats.size,
375
- percentage: 100,
376
- downloadKey,
377
- });
378
- }
379
- catch (error) {
380
- logger.debug("Failed to get file stats for final progress update", {
381
- path: modelPath,
382
- error,
383
- });
384
- }
385
- }
386
301
  return modelPath;
387
302
  }
388
303
  catch (error) {
389
- logger.error("❌ Error downloading model:", error instanceof Error ? error.message : String(error));
304
+ console.error("❌ Error downloading model:", error instanceof Error ? error.message : String(error));
390
305
  // Check if we should delete the partial file (clearCache was requested)
391
306
  if (error instanceof Error && error.message === "Download cancelled") {
392
307
  if (shouldClearCache(downloadKey)) {
393
- logger.info("🗑️ Clearing cache - deleting partial file");
308
+ console.log("🗑️ Clearing cache - deleting partial file");
394
309
  try {
395
310
  await fsPromises.unlink(modelPath);
396
- logger.info(`✅ Deleted partial file: ${modelPath}`);
311
+ console.log(`✅ Deleted partial file: ${modelPath}`);
397
312
  }
398
- catch (error) {
399
- logger.debug("Failed to delete partial file during cleanup", {
400
- path: modelPath,
401
- error,
402
- });
313
+ catch {
314
+ // Ignore cleanup errors
403
315
  }
404
316
  }
405
317
  else {
406
- logger.info("📥 Download paused - partial file preserved for resume");
318
+ console.log("📥 Download paused - partial file preserved for resume");
407
319
  }
408
320
  clearClearCacheFlag(downloadKey);
409
321
  }
@@ -429,278 +341,3 @@ export async function downloadModelFromHttp(url, progressCallback, hooks) {
429
341
  registerDownload(downloadKey, downloadEntry);
430
342
  return downloadPromise;
431
343
  }
432
- async function downloadShardedModelFromHttp(shardUrl, progressCallback, hooks) {
433
- const config = getSDKConfig();
434
- const concurrency = config.httpDownloadConcurrency ?? DEFAULT_CONCURRENCY;
435
- const { shardUrls: shardInfos, cacheKey } = parsePatternBasedShardUrl(shardUrl);
436
- const downloadKey = `http-sharded:${cacheKey}`;
437
- logger.info(`📥 HTTP sharded download: ${shardInfos.length} shards detected from ${shardUrl}`);
438
- const existing = getActiveDownload(downloadKey);
439
- if (existing) {
440
- logger.info(`📥 Reusing existing sharded download for: ${downloadKey}`);
441
- hooks?.markCacheMiss();
442
- return existing.promise;
443
- }
444
- const abortController = new AbortController();
445
- const shardDir = getShardedModelCacheDir(cacheKey);
446
- const downloadPromise = (async () => {
447
- try {
448
- const shardStates = await Promise.all(shardInfos.map(async (shard, index) => {
449
- const shardPath = path.join(shardDir, shard.filename);
450
- let expectedSize = 0;
451
- try {
452
- const response = await fetch(shard.url, {
453
- method: "HEAD",
454
- signal: abortController.signal,
455
- });
456
- expectedSize = parseInt(response.headers.get("content-length") || "0");
457
- }
458
- catch (error) {
459
- logger.warn("Failed to get shard size via HEAD request", {
460
- url: shard.url,
461
- error,
462
- });
463
- // expectedSize remains 0, progress percentage will be 0
464
- }
465
- return {
466
- index,
467
- shard,
468
- shardPath,
469
- expectedSize,
470
- downloadedBytes: 0,
471
- isComplete: false,
472
- };
473
- }));
474
- const overallTotal = shardStates.reduce((sum, s) => sum + s.expectedSize, 0);
475
- logger.info(`📏 Total size: ${overallTotal} bytes (${(overallTotal / 1024 / 1024).toFixed(2)} MB)`);
476
- const cacheChecks = await Promise.all(shardStates.map(async (state) => {
477
- const cached = await validateCachedFile(state.shardPath, state.shard.url, abortController.signal);
478
- return { state, isCached: cached !== null };
479
- }));
480
- const shardsToDownload = cacheChecks
481
- .filter((c) => !c.isCached)
482
- .map((c) => c.state);
483
- for (const check of cacheChecks) {
484
- if (check.isCached) {
485
- check.state.isComplete = true;
486
- check.state.downloadedBytes = check.state.expectedSize;
487
- }
488
- }
489
- logger.info(`📥 ${shardsToDownload.length} of ${shardInfos.length} shards need downloading`);
490
- if (shardsToDownload.length === 0) {
491
- hooks?.markCacheHit();
492
- }
493
- else {
494
- hooks?.markCacheMiss();
495
- }
496
- await downloadShardsWithConcurrency(shardsToDownload, shardStates, concurrency, abortController.signal, downloadKey, overallTotal, progressCallback);
497
- logger.info(`✅ All ${shardInfos.length} shards downloaded successfully`);
498
- await extractTensorsFromShards(shardDir, shardInfos[0].filename);
499
- return path.join(shardDir, shardInfos[0].filename);
500
- }
501
- catch (error) {
502
- logger.error("❌ Error during sharded download:", error instanceof Error ? error.message : String(error));
503
- if (error instanceof Error && error.message === "Download cancelled") {
504
- if (shouldClearCache(downloadKey)) {
505
- logger.info("🗑️ Clearing cache - deleting partial shard files");
506
- try {
507
- await fsPromises.rm(shardDir, { recursive: true, force: true });
508
- logger.info(`✅ Deleted shard directory: ${shardDir}`);
509
- }
510
- catch (cleanupError) {
511
- logger.debug("Failed to delete shard directory during cleanup", {
512
- path: shardDir,
513
- error: cleanupError,
514
- });
515
- }
516
- }
517
- }
518
- throw error;
519
- }
520
- finally {
521
- unregisterDownload(downloadKey);
522
- clearClearCacheFlag(downloadKey);
523
- }
524
- })();
525
- registerDownload(downloadKey, {
526
- key: downloadKey,
527
- promise: downloadPromise,
528
- abortController,
529
- startTime: Date.now(),
530
- type: "http",
531
- url: shardUrl,
532
- modelPath: shardDir,
533
- });
534
- return downloadPromise;
535
- }
536
- async function downloadShardedModelFromArchive(archiveUrl, progressCallback, hooks) {
537
- const filename = extractFilenameFromUrl(archiveUrl);
538
- const sourceHash = generateShortHash(archiveUrl);
539
- const downloadKey = `http-archive:${sourceHash}`;
540
- logger.info(`📦 HTTP archive download: ${filename}`);
541
- const existing = getActiveDownload(downloadKey);
542
- if (existing) {
543
- logger.info(`📥 Reusing existing archive download for: ${downloadKey}`);
544
- hooks?.markCacheMiss();
545
- return existing.promise;
546
- }
547
- const abortController = new AbortController();
548
- const extractDir = getShardedModelCacheDir(sourceHash);
549
- const archivePath = path.join(extractDir, `${sourceHash}_${filename}`);
550
- const downloadPromise = (async () => {
551
- try {
552
- await fsPromises.mkdir(extractDir, { recursive: true });
553
- const files = await fsPromises.readdir(extractDir);
554
- const shardedFile = files.find((f) => detectShardedModel(String(f)).isSharded);
555
- if (!shardedFile) {
556
- hooks?.markCacheMiss();
557
- return downloadAndExtractArchive();
558
- }
559
- const shardFilename = String(shardedFile);
560
- const allShardsExist = await checkAllShardsExist(extractDir, shardFilename);
561
- if (!allShardsExist) {
562
- logger.warn(`⚠️ Incomplete shards found, re-downloading archive`);
563
- hooks?.markCacheMiss();
564
- return downloadAndExtractArchive();
565
- }
566
- const shardFilenames = generateShardFilenames(shardFilename);
567
- const firstShard = path.join(extractDir, shardFilenames[0]);
568
- const isComplete = await validateShardedModelCache(extractDir, shardFilename);
569
- if (isComplete) {
570
- logger.info(`✅ Archive already extracted: ${extractDir}`);
571
- hooks?.markCacheHit();
572
- if (progressCallback) {
573
- progressCallback({
574
- type: "modelProgress",
575
- downloaded: 1,
576
- total: 1,
577
- percentage: 100,
578
- downloadKey,
579
- });
580
- }
581
- return firstShard;
582
- }
583
- logger.info(`📝 All shards present but tensors.txt missing, extracting tensors...`);
584
- try {
585
- await extractTensorsFromShards(extractDir, shardFilename);
586
- logger.info(`✅ Tensors extracted successfully`);
587
- hooks?.markCacheHit();
588
- if (progressCallback) {
589
- progressCallback({
590
- type: "modelProgress",
591
- downloaded: 1,
592
- total: 1,
593
- percentage: 100,
594
- downloadKey,
595
- });
596
- }
597
- return firstShard;
598
- }
599
- catch (error) {
600
- logger.warn(`Failed to extract tensors, will re-download archive`, {
601
- error,
602
- });
603
- hooks?.markCacheMiss();
604
- return downloadAndExtractArchive();
605
- }
606
- }
607
- catch (error) {
608
- logger.error("❌ Error downloading/extracting archive:", error);
609
- throw error;
610
- }
611
- finally {
612
- unregisterDownload(downloadKey);
613
- }
614
- async function downloadAndExtractArchive() {
615
- await performHttpDownload(archiveUrl, archivePath, downloadKey, progressCallback, abortController.signal);
616
- logger.info(`✅ Archive downloaded, extracting to: ${extractDir}`);
617
- const firstShardPath = await extractAndValidateShardedArchive(archivePath, extractDir, abortController.signal);
618
- try {
619
- await fsPromises.unlink(archivePath);
620
- logger.info(`🗑️ Cleaned up archive file: ${archivePath}`);
621
- }
622
- catch (cleanupError) {
623
- logger.debug("Failed to delete archive file during cleanup", {
624
- path: archivePath,
625
- error: cleanupError,
626
- });
627
- }
628
- return firstShardPath;
629
- }
630
- })();
631
- registerDownload(downloadKey, {
632
- key: downloadKey,
633
- promise: downloadPromise,
634
- abortController,
635
- startTime: Date.now(),
636
- type: "http",
637
- url: archiveUrl,
638
- modelPath: archivePath,
639
- });
640
- return downloadPromise;
641
- }
642
- async function downloadShardsWithConcurrency(shardsToDownload, allShards, concurrency, signal, downloadKey, overallTotal, progressCallback) {
643
- const queue = [...shardsToDownload];
644
- const inFlight = new Set();
645
- while (queue.length > 0 || inFlight.size > 0) {
646
- if (signal.aborted) {
647
- throw new DownloadCancelledError();
648
- }
649
- while (queue.length > 0 && inFlight.size < concurrency) {
650
- const state = queue.shift();
651
- const downloadPromise = (async () => {
652
- logger.info(`📥 Downloading shard ${state.index + 1}: ${state.shard.filename}`);
653
- await performHttpDownload(state.shard.url, state.shardPath, downloadKey, (progress) => {
654
- state.downloadedBytes = progress.downloaded;
655
- if (progressCallback) {
656
- const overallDownloaded = allShards.reduce((sum, s) => sum + s.downloadedBytes, 0);
657
- progressCallback({
658
- type: "modelProgress",
659
- downloaded: state.downloadedBytes,
660
- total: state.expectedSize,
661
- percentage: calculatePercentage(state.downloadedBytes, state.expectedSize),
662
- downloadKey,
663
- shardInfo: {
664
- currentShard: state.index + 1,
665
- totalShards: allShards.length,
666
- shardName: state.shard.filename,
667
- overallDownloaded,
668
- overallTotal,
669
- overallPercentage: calculatePercentage(overallDownloaded, overallTotal),
670
- },
671
- });
672
- }
673
- }, signal);
674
- logger.info(`✅ Shard ${state.index + 1} complete: ${state.shard.filename}`);
675
- })().finally(() => {
676
- inFlight.delete(downloadPromise);
677
- });
678
- inFlight.add(downloadPromise);
679
- }
680
- if (inFlight.size > 0) {
681
- await Promise.race(inFlight);
682
- }
683
- }
684
- // Mark all downloaded shards as complete
685
- for (const state of shardsToDownload) {
686
- state.isComplete = true;
687
- state.downloadedBytes = state.expectedSize;
688
- }
689
- if (progressCallback) {
690
- progressCallback({
691
- type: "modelProgress",
692
- downloaded: overallTotal,
693
- total: overallTotal,
694
- percentage: 100,
695
- downloadKey,
696
- shardInfo: {
697
- currentShard: allShards.length,
698
- totalShards: allShards.length,
699
- shardName: allShards[allShards.length - 1].shard.filename,
700
- overallDownloaded: overallTotal,
701
- overallTotal,
702
- overallPercentage: 100,
703
- },
704
- });
705
- }
706
- }
@@ -1,5 +1,4 @@
1
1
  import type { ModelProgressUpdate } from "../../../../schemas/index";
2
- import type { DownloadMetricsHooks } from "./types";
3
2
  export declare function deleteCorestoreDirectory(corestoreDir: string): Promise<void>;
4
- export declare function downloadModelFromHyperdrive(hyperdriveKey: string, modelFileName: string, seed?: boolean, progressCallback?: (progress: ModelProgressUpdate) => void, hooks?: DownloadMetricsHooks, expectedChecksum?: string): Promise<string>;
3
+ export declare function downloadModelFromHyperdrive(hyperdriveKey: string, modelFileName: string, seed?: boolean, progressCallback?: (progress: ModelProgressUpdate) => void, expectedChecksum?: string): Promise<string>;
5
4
  //# sourceMappingURL=hyperdrive.d.ts.map