@qvac/sdk 0.18.2 → 0.19.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.
- package/NOTICE +12 -1
- package/README.md +46 -10
- package/bare-imports.json +2 -3
- package/dist/examples/abot-world.d.ts +2 -0
- package/dist/examples/abot-world.js +124 -0
- package/dist/examples/asr/parakeet-unified-filesystem.d.ts +2 -0
- package/dist/examples/asr/parakeet-unified-filesystem.js +50 -0
- package/dist/examples/assess-model-fit.d.ts +14 -0
- package/dist/examples/assess-model-fit.js +71 -0
- package/dist/examples/audiogen/generate-cover.js +2 -1
- package/dist/examples/audiogen/generate-music-minimax.d.ts +2 -0
- package/dist/examples/audiogen/generate-music-minimax.js +117 -0
- package/dist/examples/audiogen/generate-music.js +2 -1
- package/dist/examples/cache-management.js +1 -2
- package/dist/examples/classification/classify-image.js +1 -3
- package/dist/examples/config-reload.js +1 -1
- package/dist/examples/diffusion-ic-lora-ltx.d.ts +2 -0
- package/dist/examples/diffusion-ic-lora-ltx.js +76 -0
- package/dist/examples/mcp-websearch.js +1 -3
- package/dist/examples/model-fit-ui/server.d.ts +24 -0
- package/dist/examples/model-fit-ui/server.js +192 -0
- package/dist/examples/multi-job-completion.d.ts +2 -3
- package/dist/examples/multi-job-completion.js +2 -3
- package/dist/examples/parallel-download.js +4 -4
- package/dist/examples/plugins.js +1 -1
- package/dist/examples/profiling/basic.js +0 -1
- package/dist/examples/system-resources.js +2 -0
- package/dist/examples/translation/translation-bergamot-batch-stream.d.ts +2 -0
- package/dist/examples/translation/translation-bergamot-batch-stream.js +43 -0
- package/dist/examples/translation/translation-bergamot-batch.js +2 -5
- package/dist/examples/vla-groot.js +1 -1
- package/dist/scripts/check-resource-collectors-packaging.d.ts +2 -2
- package/dist/scripts/check-resource-collectors-packaging.js +3 -3
- package/dist/scripts/contract/build-contract.d.ts +1 -1
- package/dist/scripts/contract/build-contract.js +5 -5
- package/dist/scripts/contract/build-error-codes.js +3 -3
- package/dist/scripts/contract/build-model-type-maps.js +1 -2
- package/dist/scripts/contract/build-models-registry.d.ts +2 -2
- package/dist/scripts/contract/build-models-registry.js +2 -2
- package/dist/scripts/contract/constants-registry.d.ts +86 -0
- package/dist/scripts/contract/constants-registry.js +62 -0
- package/dist/scripts/contract/method-shapes.d.ts +53 -0
- package/dist/scripts/contract/method-shapes.js +50 -0
- package/dist/scripts/contract/plugin-contract.d.ts +1 -1
- package/dist/scripts/contract/plugin-contract.js +1 -1
- package/dist/scripts/enforce-inference-peer-dependencies.d.ts +2 -0
- package/dist/scripts/enforce-inference-peer-dependencies.js +39 -0
- package/dist/scripts/export-contract.js +1 -1
- package/dist/scripts/export-plugin-contract.js +1 -1
- package/dist/scripts/run-unit-tests.js +6 -1
- package/dist/src/client/api/assess-model-fit.d.ts +17 -0
- package/dist/src/client/api/assess-model-fit.js +38 -0
- package/dist/src/client/api/audio-gen-result.d.ts +4 -0
- package/dist/src/client/api/audio-gen-result.js +143 -0
- package/dist/src/client/api/audio-gen.d.ts +66 -0
- package/dist/src/client/api/audio-gen.js +68 -0
- package/dist/src/client/api/batch-completion.d.ts +28 -0
- package/dist/src/client/api/batch-completion.js +345 -0
- package/dist/src/client/api/bci-transcribe.d.ts +57 -0
- package/dist/src/client/api/bci-transcribe.js +173 -0
- package/dist/src/client/api/cancel.d.ts +35 -0
- package/dist/src/client/api/cancel.js +83 -0
- package/dist/src/client/api/classify.d.ts +25 -0
- package/dist/src/client/api/classify.js +48 -0
- package/dist/src/client/api/completion-stream.d.ts +107 -0
- package/dist/src/client/api/completion-stream.js +351 -0
- package/dist/src/client/api/delete-cache.js +49 -0
- package/dist/src/client/api/diffusion.d.ts +93 -0
- package/dist/src/client/api/diffusion.js +177 -0
- package/dist/src/client/api/download-asset.d.ts +52 -0
- package/dist/src/client/api/download-asset.js +89 -0
- package/dist/src/client/api/embed.d.ts +42 -0
- package/dist/src/client/api/embed.js +30 -0
- package/dist/src/client/api/finetune.d.ts +92 -0
- package/dist/src/client/api/finetune.js +144 -0
- package/dist/src/client/api/get-loaded-model-info.d.ts +26 -0
- package/dist/src/client/api/get-loaded-model-info.js +37 -0
- package/dist/src/client/api/get-model-info.d.ts +11 -0
- package/dist/src/client/api/get-model-info.js +22 -0
- package/dist/src/client/api/get-system-resources.d.ts +3 -0
- package/dist/src/client/api/get-system-resources.js +17 -0
- package/dist/src/client/api/heartbeat.d.ts +13 -0
- package/dist/src/client/api/heartbeat.js +21 -0
- package/dist/src/client/api/index.d.ts +37 -0
- package/dist/src/client/api/index.js +36 -0
- package/dist/src/client/api/invoke-plugin.d.ts +31 -0
- package/dist/src/client/api/invoke-plugin.js +54 -0
- package/dist/src/client/api/load-model.d.ts +184 -0
- package/dist/src/client/api/load-model.js +128 -0
- package/dist/src/client/api/logging-stream.d.ts +24 -0
- package/dist/src/client/api/logging-stream.js +36 -0
- package/dist/src/client/api/ocr.d.ts +40 -0
- package/dist/src/client/api/ocr.js +97 -0
- package/dist/src/client/api/rag.d.ts +257 -0
- package/dist/src/client/api/rag.js +490 -0
- package/dist/src/client/api/registry.d.ts +40 -0
- package/dist/src/client/api/registry.js +63 -0
- package/dist/src/client/api/resume.d.ts +27 -0
- package/dist/src/client/api/resume.js +33 -0
- package/dist/src/client/api/state.d.ts +23 -0
- package/dist/src/client/api/state.js +29 -0
- package/dist/src/client/api/subscribe-logs.d.ts +28 -0
- package/dist/src/client/api/suspend.d.ts +27 -0
- package/dist/src/client/api/suspend.js +33 -0
- package/dist/src/client/api/text-to-speech.d.ts +74 -0
- package/dist/src/client/api/text-to-speech.js +463 -0
- package/dist/src/client/api/transcribe.d.ts +93 -0
- package/dist/src/client/api/transcribe.js +295 -0
- package/dist/src/client/api/translate.d.ts +51 -0
- package/dist/src/client/api/translate.js +133 -0
- package/dist/src/client/api/unload-model.d.ts +18 -0
- package/dist/src/client/api/unload-model.js +42 -0
- package/dist/src/client/api/upscale.d.ts +45 -0
- package/dist/src/client/api/upscale.js +99 -0
- package/dist/src/client/api/video-request.d.ts +208 -0
- package/dist/src/client/api/video-request.js +18 -0
- package/dist/src/client/api/video.d.ts +107 -0
- package/dist/src/client/api/video.js +187 -0
- package/dist/src/client/api/vla-helpers.d.ts +59 -0
- package/dist/src/client/api/vla-helpers.js +139 -0
- package/dist/src/client/api/vla.d.ts +114 -0
- package/dist/src/client/api/vla.js +166 -0
- package/dist/src/client/api/world-result.d.ts +72 -0
- package/dist/src/client/api/world-result.js +296 -0
- package/dist/src/client/api/world.d.ts +144 -0
- package/dist/src/client/api/world.js +71 -0
- package/dist/src/client/config-loader/config-utils.d.ts +5 -0
- package/dist/src/client/config-loader/config-utils.js +18 -0
- package/dist/src/client/config-loader/resolve-config.expo.js +60 -0
- package/dist/src/client/config-loader/resolve-config.node.js +198 -0
- package/dist/src/client/init-hooks.d.ts +21 -0
- package/dist/src/client/init-hooks.js +62 -0
- package/dist/src/client/plugins-factory.d.ts +7 -0
- package/dist/src/client/plugins-factory.js +9 -0
- package/dist/src/client/rpc/bare-client.d.ts +6 -0
- package/dist/src/client/rpc/bare-client.js +21 -0
- package/dist/src/client/rpc/expo-rpc-client.js +195 -0
- package/dist/src/client/rpc/init-timeout.d.ts +26 -0
- package/dist/src/client/rpc/init-timeout.js +25 -0
- package/dist/src/client/rpc/node-rpc-client.js +525 -0
- package/dist/src/client/rpc/profiling/profiler.d.ts +27 -0
- package/dist/src/client/rpc/profiling/profiler.js +134 -0
- package/dist/src/client/rpc/rpc-client.d.ts +19 -0
- package/dist/src/client/rpc/rpc-client.js +550 -0
- package/dist/src/client/rpc/rpc-error.d.ts +28 -0
- package/dist/src/client/rpc/rpc-error.js +159 -0
- package/dist/src/client/rpc/worker-startup-error.d.ts +12 -0
- package/dist/src/client/rpc/worker-startup-error.js +13 -0
- package/dist/src/commands/bundle/entry-gen.js +54 -0
- package/dist/src/commands/bundle/index.js +148 -0
- package/dist/src/commands/bundle/plugins.d.ts +9 -0
- package/dist/src/commands/bundle/plugins.js +51 -0
- package/dist/src/commands/bundle/resolve-sdk-import.js +58 -0
- package/dist/src/commands/index.d.ts +5 -0
- package/dist/src/commands/index.js +2 -0
- package/dist/src/commands/verify/abi.d.ts +52 -0
- package/dist/src/commands/verify/abi.js +125 -0
- package/dist/src/commands/verify/bundle-source.d.ts +12 -0
- package/dist/src/commands/verify/bundle-source.js +53 -0
- package/dist/src/commands/verify/index.d.ts +59 -0
- package/dist/src/commands/verify/index.js +372 -0
- package/dist/src/commands/verify/node-modules-source.d.ts +11 -0
- package/dist/src/commands/verify/node-modules-source.js +76 -0
- package/dist/src/commands/verify/prebuilds.d.ts +16 -0
- package/dist/src/commands/verify/prebuilds.js +36 -0
- package/dist/src/commands/verify/resource-collectors.js +261 -0
- package/dist/src/deprecate.d.ts +2 -0
- package/dist/src/deprecate.js +9 -0
- package/dist/src/expo/plugins/withAndroidNdkVersion.js +31 -0
- package/dist/src/expo/plugins/withDeviceInfo.js +49 -0
- package/dist/src/expo/plugins/withMobileBundle.d.ts +24 -0
- package/dist/src/expo/plugins/withMobileBundle.js +152 -0
- package/dist/src/index.d.ts +20 -0
- package/dist/src/index.js +59 -0
- package/dist/src/logging/addon.d.ts +6 -0
- package/dist/src/logging/logging-stream-registry.js +137 -0
- package/dist/src/logging/namespaces.d.ts +7 -0
- package/dist/src/logging/namespaces.js +8 -0
- package/dist/src/logging/registry.d.ts +31 -0
- package/dist/src/logging/registry.js +62 -0
- package/dist/src/logging/stream-logger.js +12 -0
- package/dist/src/logging/utils.d.ts +6 -0
- package/dist/src/models/registry/index.d.ts +2 -0
- package/dist/src/models/registry/index.js +4 -0
- package/dist/src/pear/pre.js +446 -0
- package/dist/src/plugin-ids.d.ts +14 -0
- package/dist/src/plugin-ids.js +27 -0
- package/dist/src/plugin-utils.d.ts +2 -0
- package/dist/src/plugin-utils.js +4 -0
- package/dist/src/schemas/public.d.ts +3 -0
- package/dist/src/schemas/public.js +11 -0
- package/dist/src/schemas/sdk-errors-client.d.ts +41 -0
- package/dist/src/schemas/sdk-errors-client.js +192 -0
- package/dist/src/schemas/sdk-errors-server.d.ts +101 -0
- package/dist/src/schemas/sdk-errors-server.js +540 -0
- package/dist/src/server/error-handlers.js +32 -0
- package/dist/src/server/plugins/index.d.ts +2 -0
- package/dist/src/server/plugins/index.js +1 -0
- package/dist/src/server/rpc/profiling/context.d.ts +17 -0
- package/dist/src/server/rpc/profiling/context.js +31 -0
- package/dist/src/server/rpc/profiling/index.d.ts +2 -0
- package/dist/src/server/rpc/profiling/index.js +1 -0
- package/dist/src/server/rpc/profiling/profiler.d.ts +13 -0
- package/dist/src/server/rpc/profiling/profiler.js +78 -0
- package/dist/src/server/rpc/rpc-utils.d.ts +5 -0
- package/dist/src/server/utils/qvac-paths.js +5 -0
- package/dist/src/server/utils/worker-lock.js +67 -0
- package/dist/src/utils/aggregate-events.d.ts +26 -0
- package/dist/src/utils/aggregate-events.js +73 -0
- package/dist/src/utils/errors-client.d.ts +181 -0
- package/dist/src/utils/errors-client.js +305 -0
- package/dist/src/utils/errors-server.d.ts +380 -0
- package/dist/src/utils/errors-server.js +621 -0
- package/dist/src/utils/load-model-validation.js +17 -0
- package/dist/src/utils/mcp-adapter.d.ts +12 -0
- package/dist/src/utils/mcp-adapter.js +96 -0
- package/dist/src/utils/tool-helpers.d.ts +25 -0
- package/dist/src/utils/tool-helpers.js +111 -0
- package/dist/src/worker/create-server.js +46 -0
- package/dist/src/worker/handle-request.js +180 -0
- package/dist/src/worker/handler-utils.d.ts +16 -0
- package/dist/src/worker/handler-utils.js +41 -0
- package/dist/src/worker/index.d.ts +5 -0
- package/dist/src/worker/index.js +45 -0
- package/dist/src/worker/legacy-worker-entry.d.ts +2 -0
- package/dist/src/worker/legacy-worker-entry.js +3 -0
- package/dist/src/worker/lifecycle.d.ts +23 -0
- package/dist/src/worker/lifecycle.js +141 -0
- package/dist/src/worker/plugins/audiogen-ggml.d.ts +2 -0
- package/dist/src/worker/plugins/audiogen-ggml.js +1 -0
- package/dist/src/worker/plugins/bci-whispercpp-transcription.d.ts +2 -0
- package/dist/src/worker/plugins/bci-whispercpp-transcription.js +1 -0
- package/dist/src/worker/plugins/ggml-classification.d.ts +2 -0
- package/dist/src/worker/plugins/ggml-classification.js +1 -0
- package/dist/src/worker/plugins/ggml-ocr.d.ts +2 -0
- package/dist/src/worker/plugins/ggml-ocr.js +1 -0
- package/dist/src/worker/plugins/ggml-vla.d.ts +2 -0
- package/dist/src/worker/plugins/ggml-vla.js +1 -0
- package/dist/src/worker/plugins/llamacpp-completion.d.ts +2 -0
- package/dist/src/worker/plugins/llamacpp-completion.js +1 -0
- package/dist/src/worker/plugins/llamacpp-embedding.d.ts +2 -0
- package/dist/src/worker/plugins/llamacpp-embedding.js +1 -0
- package/dist/src/worker/plugins/nmtcpp-translation.d.ts +2 -0
- package/dist/src/worker/plugins/nmtcpp-translation.js +1 -0
- package/dist/src/worker/plugins/parakeet-transcription.d.ts +2 -0
- package/dist/src/worker/plugins/parakeet-transcription.js +1 -0
- package/dist/src/worker/plugins/sdcpp-generation.d.ts +2 -0
- package/dist/src/worker/plugins/sdcpp-generation.js +1 -0
- package/dist/src/worker/plugins/tts-ggml.d.ts +2 -0
- package/dist/src/worker/plugins/tts-ggml.js +1 -0
- package/dist/src/worker/plugins/whispercpp-transcription.d.ts +2 -0
- package/dist/src/worker/plugins/whispercpp-transcription.js +1 -0
- package/dist/src/worker/worker-core.d.ts +7 -0
- package/dist/src/worker/worker-core.js +8 -0
- package/docs/system-resources-support-matrix.md +46 -27
- package/package.json +82 -87
- package/dist/client/api/audio-gen-result.d.ts +0 -4
- package/dist/client/api/audio-gen-result.js +0 -132
- package/dist/client/api/audio-gen.d.ts +0 -46
- package/dist/client/api/audio-gen.js +0 -48
- package/dist/client/api/batch-completion.d.ts +0 -15
- package/dist/client/api/batch-completion.js +0 -332
- package/dist/client/api/bci-transcribe.d.ts +0 -57
- package/dist/client/api/bci-transcribe.js +0 -173
- package/dist/client/api/cancel.d.ts +0 -35
- package/dist/client/api/cancel.js +0 -83
- package/dist/client/api/classify.d.ts +0 -23
- package/dist/client/api/classify.js +0 -46
- package/dist/client/api/completion-stream.d.ts +0 -107
- package/dist/client/api/completion-stream.js +0 -351
- package/dist/client/api/delete-cache.js +0 -49
- package/dist/client/api/diffusion.d.ts +0 -93
- package/dist/client/api/diffusion.js +0 -175
- package/dist/client/api/download-asset.d.ts +0 -50
- package/dist/client/api/download-asset.js +0 -87
- package/dist/client/api/embed.d.ts +0 -42
- package/dist/client/api/embed.js +0 -30
- package/dist/client/api/finetune.d.ts +0 -92
- package/dist/client/api/finetune.js +0 -144
- package/dist/client/api/get-loaded-model-info.d.ts +0 -25
- package/dist/client/api/get-loaded-model-info.js +0 -36
- package/dist/client/api/get-model-info.d.ts +0 -44
- package/dist/client/api/get-model-info.js +0 -22
- package/dist/client/api/get-system-resources.d.ts +0 -3
- package/dist/client/api/get-system-resources.js +0 -16
- package/dist/client/api/heartbeat.d.ts +0 -30
- package/dist/client/api/heartbeat.js +0 -38
- package/dist/client/api/index.d.ts +0 -36
- package/dist/client/api/index.js +0 -35
- package/dist/client/api/invoke-plugin.d.ts +0 -31
- package/dist/client/api/invoke-plugin.js +0 -54
- package/dist/client/api/load-model.d.ts +0 -178
- package/dist/client/api/load-model.js +0 -130
- package/dist/client/api/logging-stream.d.ts +0 -24
- package/dist/client/api/logging-stream.js +0 -36
- package/dist/client/api/ocr.d.ts +0 -40
- package/dist/client/api/ocr.js +0 -97
- package/dist/client/api/provide.d.ts +0 -24
- package/dist/client/api/provide.js +0 -33
- package/dist/client/api/rag.d.ts +0 -252
- package/dist/client/api/rag.js +0 -485
- package/dist/client/api/registry.d.ts +0 -40
- package/dist/client/api/registry.js +0 -63
- package/dist/client/api/resume.d.ts +0 -30
- package/dist/client/api/resume.js +0 -36
- package/dist/client/api/state.d.ts +0 -23
- package/dist/client/api/state.js +0 -29
- package/dist/client/api/stop-provider.d.ts +0 -21
- package/dist/client/api/stop-provider.js +0 -31
- package/dist/client/api/subscribe-logs.d.ts +0 -28
- package/dist/client/api/suspend.d.ts +0 -31
- package/dist/client/api/suspend.js +0 -37
- package/dist/client/api/text-to-speech.d.ts +0 -66
- package/dist/client/api/text-to-speech.js +0 -455
- package/dist/client/api/transcribe.d.ts +0 -93
- package/dist/client/api/transcribe.js +0 -295
- package/dist/client/api/translate.d.ts +0 -49
- package/dist/client/api/translate.js +0 -125
- package/dist/client/api/unload-model.d.ts +0 -18
- package/dist/client/api/unload-model.js +0 -44
- package/dist/client/api/upscale.d.ts +0 -45
- package/dist/client/api/upscale.js +0 -99
- package/dist/client/api/video.d.ts +0 -87
- package/dist/client/api/video.js +0 -175
- package/dist/client/api/vla-helpers.d.ts +0 -45
- package/dist/client/api/vla-helpers.js +0 -125
- package/dist/client/api/vla.d.ts +0 -114
- package/dist/client/api/vla.js +0 -166
- package/dist/client/config-loader/config-utils.d.ts +0 -5
- package/dist/client/config-loader/config-utils.js +0 -18
- package/dist/client/config-loader/resolve-config.bare.d.ts +0 -9
- package/dist/client/config-loader/resolve-config.bare.js +0 -74
- package/dist/client/config-loader/resolve-config.expo.js +0 -62
- package/dist/client/config-loader/resolve-config.node.js +0 -199
- package/dist/client/init-hooks.d.ts +0 -21
- package/dist/client/init-hooks.js +0 -66
- package/dist/client/plugins-factory.d.ts +0 -8
- package/dist/client/plugins-factory.js +0 -10
- package/dist/client/rpc/bare-client.d.ts +0 -17
- package/dist/client/rpc/bare-client.js +0 -251
- package/dist/client/rpc/expo-rpc-client.js +0 -196
- package/dist/client/rpc/node-rpc-client.js +0 -505
- package/dist/client/rpc/profiling/profiler.d.ts +0 -27
- package/dist/client/rpc/profiling/profiler.js +0 -140
- package/dist/client/rpc/rpc-client.d.ts +0 -19
- package/dist/client/rpc/rpc-client.js +0 -551
- package/dist/client/rpc/rpc-error.d.ts +0 -28
- package/dist/client/rpc/rpc-error.js +0 -150
- package/dist/commands/bundle/entry-gen.js +0 -54
- package/dist/commands/bundle/index.js +0 -148
- package/dist/commands/bundle/plugins.d.ts +0 -9
- package/dist/commands/bundle/plugins.js +0 -51
- package/dist/commands/bundle/resolve-sdk-import.js +0 -53
- package/dist/commands/index.d.ts +0 -5
- package/dist/commands/index.js +0 -2
- package/dist/commands/verify/abi.d.ts +0 -52
- package/dist/commands/verify/abi.js +0 -125
- package/dist/commands/verify/bundle-source.d.ts +0 -12
- package/dist/commands/verify/bundle-source.js +0 -53
- package/dist/commands/verify/index.d.ts +0 -59
- package/dist/commands/verify/index.js +0 -372
- package/dist/commands/verify/node-modules-source.d.ts +0 -11
- package/dist/commands/verify/node-modules-source.js +0 -76
- package/dist/commands/verify/prebuilds.d.ts +0 -16
- package/dist/commands/verify/prebuilds.js +0 -36
- package/dist/commands/verify/resource-collectors.js +0 -261
- package/dist/constants/audio.d.ts +0 -2
- package/dist/constants/audio.js +0 -1
- package/dist/constants/index.d.ts +0 -3
- package/dist/constants/index.js +0 -2
- package/dist/constants/registry.d.ts +0 -2
- package/dist/constants/registry.js +0 -1
- package/dist/examples/delegated-inference/composite.d.ts +0 -2
- package/dist/examples/delegated-inference/composite.js +0 -96
- package/dist/examples/delegated-inference/consumer-profiled.d.ts +0 -2
- package/dist/examples/delegated-inference/consumer-profiled.js +0 -59
- package/dist/examples/delegated-inference/consumer.d.ts +0 -2
- package/dist/examples/delegated-inference/consumer.js +0 -55
- package/dist/examples/delegated-inference/provider.d.ts +0 -2
- package/dist/examples/delegated-inference/provider.js +0 -52
- package/dist/examples/quickstart.bare.d.ts +0 -2
- package/dist/examples/quickstart.bare.js +0 -16
- package/dist/expo/plugins/withAndroidNdkVersion.js +0 -31
- package/dist/expo/plugins/withDeviceInfo.js +0 -49
- package/dist/expo/plugins/withMobileBundle.d.ts +0 -12
- package/dist/expo/plugins/withMobileBundle.js +0 -117
- package/dist/index.d.ts +0 -17
- package/dist/index.js +0 -44
- package/dist/logging/addon.d.ts +0 -6
- package/dist/logging/namespaces.d.ts +0 -7
- package/dist/logging/namespaces.js +0 -8
- package/dist/logging/registry.d.ts +0 -31
- package/dist/logging/registry.js +0 -62
- package/dist/logging/stream-logger.js +0 -12
- package/dist/logging/utils.d.ts +0 -6
- package/dist/models/registry/index.d.ts +0 -19
- package/dist/models/registry/index.js +0 -21
- package/dist/models/registry/models.d.ts +0 -23457
- package/dist/models/registry/models.js +0 -24713
- package/dist/pear/pre.js +0 -446
- package/dist/profiling/aggregator.d.ts +0 -15
- package/dist/profiling/aggregator.js +0 -100
- package/dist/profiling/backend-diagnostics.d.ts +0 -8
- package/dist/profiling/backend-diagnostics.js +0 -21
- package/dist/profiling/clock.d.ts +0 -12
- package/dist/profiling/clock.js +0 -51
- package/dist/profiling/controller.d.ts +0 -35
- package/dist/profiling/controller.js +0 -130
- package/dist/profiling/envelope.d.ts +0 -11
- package/dist/profiling/envelope.js +0 -45
- package/dist/profiling/events.d.ts +0 -20
- package/dist/profiling/events.js +0 -35
- package/dist/profiling/exporters.d.ts +0 -10
- package/dist/profiling/exporters.js +0 -243
- package/dist/profiling/index.d.ts +0 -86
- package/dist/profiling/index.js +0 -81
- package/dist/profiling/model-execution.d.ts +0 -16
- package/dist/profiling/model-execution.js +0 -34
- package/dist/profiling/ring-buffer.d.ts +0 -19
- package/dist/profiling/ring-buffer.js +0 -83
- package/dist/profiling/types.d.ts +0 -53
- package/dist/profiling/types.js +0 -1
- package/dist/schemas/archive.d.ts +0 -9
- package/dist/schemas/archive.js +0 -11
- package/dist/schemas/audio-gen.d.ts +0 -356
- package/dist/schemas/audio-gen.js +0 -200
- package/dist/schemas/batch-completion-stream.d.ts +0 -468
- package/dist/schemas/batch-completion-stream.js +0 -124
- package/dist/schemas/bci-config.d.ts +0 -75
- package/dist/schemas/bci-config.js +0 -58
- package/dist/schemas/bci.d.ts +0 -179
- package/dist/schemas/bci.js +0 -89
- package/dist/schemas/cancel.d.ts +0 -209
- package/dist/schemas/cancel.js +0 -140
- package/dist/schemas/classification.d.ts +0 -53
- package/dist/schemas/classification.js +0 -33
- package/dist/schemas/common.d.ts +0 -6960
- package/dist/schemas/common.js +0 -138
- package/dist/schemas/completion-event.d.ts +0 -249
- package/dist/schemas/completion-event.js +0 -94
- package/dist/schemas/completion-stream.d.ts +0 -476
- package/dist/schemas/completion-stream.js +0 -236
- package/dist/schemas/constants-registry.d.ts +0 -83
- package/dist/schemas/constants-registry.js +0 -65
- package/dist/schemas/delegate.d.ts +0 -16
- package/dist/schemas/delegate.js +0 -32
- package/dist/schemas/delete-cache.d.ts +0 -17
- package/dist/schemas/delete-cache.js +0 -21
- package/dist/schemas/download-asset.d.ts +0 -225
- package/dist/schemas/download-asset.js +0 -71
- package/dist/schemas/embed.d.ts +0 -42
- package/dist/schemas/embed.js +0 -35
- package/dist/schemas/engine-addon-map.d.ts +0 -21
- package/dist/schemas/engine-addon-map.js +0 -78
- package/dist/schemas/error.d.ts +0 -44
- package/dist/schemas/error.js +0 -67
- package/dist/schemas/finetune.d.ts +0 -622
- package/dist/schemas/finetune.js +0 -163
- package/dist/schemas/get-loaded-model-info.d.ts +0 -70
- package/dist/schemas/get-loaded-model-info.js +0 -52
- package/dist/schemas/get-model-info.d.ts +0 -130
- package/dist/schemas/get-model-info.js +0 -91
- package/dist/schemas/heartbeat.d.ts +0 -16
- package/dist/schemas/heartbeat.js +0 -10
- package/dist/schemas/index.d.ts +0 -55
- package/dist/schemas/index.js +0 -55
- package/dist/schemas/json-schema.d.ts +0 -16
- package/dist/schemas/json-schema.js +0 -2
- package/dist/schemas/llamacpp-config.d.ts +0 -404
- package/dist/schemas/llamacpp-config.js +0 -219
- package/dist/schemas/load-model.d.ts +0 -28991
- package/dist/schemas/load-model.js +0 -647
- package/dist/schemas/logging-stream.d.ts +0 -34
- package/dist/schemas/logging-stream.js +0 -17
- package/dist/schemas/mcp-adapter.d.ts +0 -47
- package/dist/schemas/mcp-adapter.js +0 -1
- package/dist/schemas/model-src-utils.d.ts +0 -193
- package/dist/schemas/model-src-utils.js +0 -61
- package/dist/schemas/model-types.d.ts +0 -276
- package/dist/schemas/model-types.js +0 -223
- package/dist/schemas/ocr.d.ts +0 -138
- package/dist/schemas/ocr.js +0 -59
- package/dist/schemas/path-validation.d.ts +0 -10
- package/dist/schemas/path-validation.js +0 -22
- package/dist/schemas/plugin.d.ts +0 -342
- package/dist/schemas/plugin.js +0 -242
- package/dist/schemas/profiling.d.ts +0 -696
- package/dist/schemas/profiling.js +0 -100
- package/dist/schemas/provide.d.ts +0 -41
- package/dist/schemas/provide.js +0 -22
- package/dist/schemas/public.d.ts +0 -3
- package/dist/schemas/public.js +0 -6
- package/dist/schemas/rag.d.ts +0 -302
- package/dist/schemas/rag.js +0 -212
- package/dist/schemas/registry.d.ts +0 -454
- package/dist/schemas/registry.js +0 -104
- package/dist/schemas/reload-config.d.ts +0 -586
- package/dist/schemas/reload-config.js +0 -42
- package/dist/schemas/resume.d.ts +0 -10
- package/dist/schemas/resume.js +0 -7
- package/dist/schemas/runtime-context.d.ts +0 -19
- package/dist/schemas/runtime-context.js +0 -7
- package/dist/schemas/sdcpp-config.d.ts +0 -1127
- package/dist/schemas/sdcpp-config.js +0 -748
- package/dist/schemas/sdk-config.d.ts +0 -5059
- package/dist/schemas/sdk-config.js +0 -167
- package/dist/schemas/sdk-errors-client.d.ts +0 -44
- package/dist/schemas/sdk-errors-client.js +0 -208
- package/dist/schemas/sdk-errors-registry.d.ts +0 -6
- package/dist/schemas/sdk-errors-registry.js +0 -8
- package/dist/schemas/sdk-errors-server.d.ts +0 -102
- package/dist/schemas/sdk-errors-server.js +0 -534
- package/dist/schemas/shard.d.ts +0 -21
- package/dist/schemas/shard.js +0 -17
- package/dist/schemas/state.d.ts +0 -23
- package/dist/schemas/state.js +0 -9
- package/dist/schemas/stop-provide.d.ts +0 -12
- package/dist/schemas/stop-provide.js +0 -11
- package/dist/schemas/suspend.d.ts +0 -10
- package/dist/schemas/suspend.js +0 -7
- package/dist/schemas/system-resources.d.ts +0 -3967
- package/dist/schemas/system-resources.js +0 -149
- package/dist/schemas/text-to-speech.d.ts +0 -2329
- package/dist/schemas/text-to-speech.js +0 -554
- package/dist/schemas/tools.d.ts +0 -65
- package/dist/schemas/tools.js +0 -37
- package/dist/schemas/transcription-config.d.ts +0 -164
- package/dist/schemas/transcription-config.js +0 -162
- package/dist/schemas/transcription.d.ts +0 -264
- package/dist/schemas/transcription.js +0 -145
- package/dist/schemas/translate.d.ts +0 -139
- package/dist/schemas/translate.js +0 -103
- package/dist/schemas/translation-config.d.ts +0 -1032
- package/dist/schemas/translation-config.js +0 -170
- package/dist/schemas/unload-model.d.ts +0 -22
- package/dist/schemas/unload-model.js +0 -18
- package/dist/schemas/vla.d.ts +0 -194
- package/dist/schemas/vla.js +0 -254
- package/dist/scripts/run-security-tests.d.ts +0 -2
- package/dist/scripts/run-security-tests.js +0 -21
- package/dist/server/bare/delegate-connect-diagnostics.d.ts +0 -9
- package/dist/server/bare/delegate-connect-diagnostics.js +0 -38
- package/dist/server/bare/delegate-rpc-client.d.ts +0 -10
- package/dist/server/bare/delegate-rpc-client.js +0 -219
- package/dist/server/bare/hyperswarm.d.ts +0 -10
- package/dist/server/bare/hyperswarm.js +0 -103
- package/dist/server/bare/ops/bci-transcribe.d.ts +0 -13
- package/dist/server/bare/ops/bci-transcribe.js +0 -248
- package/dist/server/bare/ops/cancel.d.ts +0 -29
- package/dist/server/bare/ops/cancel.js +0 -46
- package/dist/server/bare/ops/embed.d.ts +0 -16
- package/dist/server/bare/ops/embed.js +0 -193
- package/dist/server/bare/ops/kv-cache-retention.d.ts +0 -12
- package/dist/server/bare/ops/kv-cache-retention.js +0 -132
- package/dist/server/bare/ops/kv-cache-utils.d.ts +0 -22
- package/dist/server/bare/ops/kv-cache-utils.js +0 -148
- package/dist/server/bare/ops/load-model.d.ts +0 -9
- package/dist/server/bare/ops/load-model.js +0 -82
- package/dist/server/bare/ops/transcribe.d.ts +0 -20
- package/dist/server/bare/ops/transcribe.js +0 -349
- package/dist/server/bare/ops/translate-stats.d.ts +0 -5
- package/dist/server/bare/ops/translate-stats.js +0 -11
- package/dist/server/bare/ops/translate.d.ts +0 -8
- package/dist/server/bare/ops/translate.js +0 -284
- package/dist/server/bare/ops/unload-model.d.ts +0 -3
- package/dist/server/bare/ops/unload-model.js +0 -51
- package/dist/server/bare/plugins/asr-ggml/config.d.ts +0 -32
- package/dist/server/bare/plugins/asr-ggml/config.js +0 -46
- package/dist/server/bare/plugins/asr-ggml/logging.d.ts +0 -11
- package/dist/server/bare/plugins/asr-ggml/logging.js +0 -12
- package/dist/server/bare/plugins/audiogen-ggml/config.d.ts +0 -18
- package/dist/server/bare/plugins/audiogen-ggml/config.js +0 -23
- package/dist/server/bare/plugins/audiogen-ggml/ops/audio-gen-input.d.ts +0 -20
- package/dist/server/bare/plugins/audiogen-ggml/ops/audio-gen-input.js +0 -153
- package/dist/server/bare/plugins/audiogen-ggml/ops/audio-gen-stream.d.ts +0 -3
- package/dist/server/bare/plugins/audiogen-ggml/ops/audio-gen-stream.js +0 -213
- package/dist/server/bare/plugins/audiogen-ggml/plugin.d.ts +0 -241
- package/dist/server/bare/plugins/audiogen-ggml/plugin.js +0 -58
- package/dist/server/bare/plugins/bci-whispercpp-transcription/args.d.ts +0 -3
- package/dist/server/bare/plugins/bci-whispercpp-transcription/args.js +0 -13
- package/dist/server/bare/plugins/bci-whispercpp-transcription/plugin.d.ts +0 -174
- package/dist/server/bare/plugins/bci-whispercpp-transcription/plugin.js +0 -111
- package/dist/server/bare/plugins/bci-whispercpp-transcription/resolve-config.d.ts +0 -75
- package/dist/server/bare/plugins/bci-whispercpp-transcription/resolve-config.js +0 -11
- package/dist/server/bare/plugins/ggml-classification/ops/classify.d.ts +0 -6
- package/dist/server/bare/plugins/ggml-classification/ops/classify.js +0 -30
- package/dist/server/bare/plugins/ggml-classification/plugin.d.ts +0 -32
- package/dist/server/bare/plugins/ggml-classification/plugin.js +0 -55
- package/dist/server/bare/plugins/ggml-ocr/ops/ocr-stream.d.ts +0 -8
- package/dist/server/bare/plugins/ggml-ocr/ops/ocr-stream.js +0 -119
- package/dist/server/bare/plugins/ggml-ocr/plugin.d.ts +0 -103
- package/dist/server/bare/plugins/ggml-ocr/plugin.js +0 -112
- package/dist/server/bare/plugins/ggml-ocr/resolve-config.d.ts +0 -6
- package/dist/server/bare/plugins/ggml-ocr/resolve-config.js +0 -73
- package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.d.ts +0 -3
- package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.js +0 -12
- package/dist/server/bare/plugins/ggml-vla/ops/vla-run.d.ts +0 -3
- package/dist/server/bare/plugins/ggml-vla/ops/vla-run.js +0 -79
- package/dist/server/bare/plugins/ggml-vla/ops/vla-set-embodiment.d.ts +0 -3
- package/dist/server/bare/plugins/ggml-vla/ops/vla-set-embodiment.js +0 -9
- package/dist/server/bare/plugins/ggml-vla/plugin.d.ts +0 -103
- package/dist/server/bare/plugins/ggml-vla/plugin.js +0 -74
- package/dist/server/bare/plugins/index.d.ts +0 -13
- package/dist/server/bare/plugins/index.js +0 -12
- package/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.d.ts +0 -32
- package/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.js +0 -100
- package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.d.ts +0 -7
- package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js +0 -36
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.d.ts +0 -27
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.js +0 -58
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.d.ts +0 -47
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js +0 -382
- package/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.d.ts +0 -29
- package/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.js +0 -65
- package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.d.ts +0 -11
- package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js +0 -299
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.d.ts +0 -190
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js +0 -746
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.d.ts +0 -58
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js +0 -58
- package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +0 -672
- package/dist/server/bare/plugins/llamacpp-completion/plugin.js +0 -503
- package/dist/server/bare/plugins/llamacpp-completion/transform.d.ts +0 -10
- package/dist/server/bare/plugins/llamacpp-completion/transform.js +0 -28
- package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +0 -77
- package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +0 -100
- package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +0 -458
- package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +0 -144
- package/dist/server/bare/plugins/nmtcpp-translation/resolve-vocab.d.ts +0 -32
- package/dist/server/bare/plugins/nmtcpp-translation/resolve-vocab.js +0 -114
- package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +0 -134
- package/dist/server/bare/plugins/parakeet-transcription/plugin.js +0 -141
- package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.d.ts +0 -3
- package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.js +0 -63
- package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.d.ts +0 -3
- package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.js +0 -40
- package/dist/server/bare/plugins/sdcpp-generation/ops/video.d.ts +0 -6
- package/dist/server/bare/plugins/sdcpp-generation/ops/video.js +0 -238
- package/dist/server/bare/plugins/sdcpp-generation/plugin.d.ts +0 -758
- package/dist/server/bare/plugins/sdcpp-generation/plugin.js +0 -310
- package/dist/server/bare/plugins/tts-ggml/ops/parler-options.d.ts +0 -7
- package/dist/server/bare/plugins/tts-ggml/ops/parler-options.js +0 -50
- package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech-stream.d.ts +0 -7
- package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech-stream.js +0 -104
- package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech.d.ts +0 -7
- package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech.js +0 -89
- package/dist/server/bare/plugins/tts-ggml/plugin.d.ts +0 -495
- package/dist/server/bare/plugins/tts-ggml/plugin.js +0 -436
- package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +0 -347
- package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +0 -178
- package/dist/server/bare/rag-hyperdb/handlers/chunk.d.ts +0 -3
- package/dist/server/bare/rag-hyperdb/handlers/chunk.js +0 -7
- package/dist/server/bare/rag-hyperdb/handlers/close-workspace.d.ts +0 -3
- package/dist/server/bare/rag-hyperdb/handlers/close-workspace.js +0 -9
- package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.d.ts +0 -3
- package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js +0 -11
- package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.d.ts +0 -3
- package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js +0 -14
- package/dist/server/bare/rag-hyperdb/handlers/ingest.d.ts +0 -9
- package/dist/server/bare/rag-hyperdb/handlers/ingest.js +0 -19
- package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.d.ts +0 -3
- package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js +0 -4
- package/dist/server/bare/rag-hyperdb/handlers/reindex.d.ts +0 -9
- package/dist/server/bare/rag-hyperdb/handlers/reindex.js +0 -16
- package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.d.ts +0 -9
- package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js +0 -15
- package/dist/server/bare/rag-hyperdb/handlers/search.d.ts +0 -3
- package/dist/server/bare/rag-hyperdb/handlers/search.js +0 -16
- package/dist/server/bare/rag-hyperdb/index.d.ts +0 -12
- package/dist/server/bare/rag-hyperdb/index.js +0 -11
- package/dist/server/bare/rag-hyperdb/rag-operation-manager.d.ts +0 -29
- package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +0 -76
- package/dist/server/bare/rag-hyperdb/rag-workspace-manager.d.ts +0 -15
- package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +0 -143
- package/dist/server/bare/registry/config-registry.d.ts +0 -14
- package/dist/server/bare/registry/config-registry.js +0 -90
- package/dist/server/bare/registry/logging-stream-registry.js +0 -137
- package/dist/server/bare/registry/model-config-registry.d.ts +0 -4
- package/dist/server/bare/registry/model-config-registry.js +0 -15
- package/dist/server/bare/registry/model-config-utils.d.ts +0 -15
- package/dist/server/bare/registry/model-config-utils.js +0 -128
- package/dist/server/bare/registry/model-registry.d.ts +0 -76
- package/dist/server/bare/registry/model-registry.js +0 -130
- package/dist/server/bare/registry/registry-client.d.ts +0 -5
- package/dist/server/bare/registry/registry-client.js +0 -118
- package/dist/server/bare/registry/runtime-context-registry.d.ts +0 -7
- package/dist/server/bare/registry/runtime-context-registry.js +0 -26
- package/dist/server/bare/resources/collector.d.ts +0 -644
- package/dist/server/bare/resources/collector.js +0 -226
- package/dist/server/bare/resources/native.d.ts +0 -3
- package/dist/server/bare/resources/native.js +0 -35
- package/dist/server/bare/resources/normalize.d.ts +0 -13
- package/dist/server/bare/resources/normalize.js +0 -73
- package/dist/server/bare/resources/types.d.ts +0 -66
- package/dist/server/bare/resources/types.js +0 -1
- package/dist/server/bare/resources/worker-collector.d.ts +0 -5
- package/dist/server/bare/resources/worker-collector.js +0 -15
- package/dist/server/bare/runtime/disposable-scope.d.ts +0 -36
- package/dist/server/bare/runtime/disposable-scope.js +0 -69
- package/dist/server/bare/runtime/index.d.ts +0 -8
- package/dist/server/bare/runtime/index.js +0 -3
- package/dist/server/bare/runtime/request-context.d.ts +0 -49
- package/dist/server/bare/runtime/request-context.js +0 -1
- package/dist/server/bare/runtime/request-id.d.ts +0 -12
- package/dist/server/bare/runtime/request-id.js +0 -14
- package/dist/server/bare/runtime/request-registry-singleton.d.ts +0 -4
- package/dist/server/bare/runtime/request-registry-singleton.js +0 -77
- package/dist/server/bare/runtime/request-registry.d.ts +0 -222
- package/dist/server/bare/runtime/request-registry.js +0 -715
- package/dist/server/bare/runtime/with-request-context.d.ts +0 -22
- package/dist/server/bare/runtime/with-request-context.js +0 -53
- package/dist/server/bare/runtime-lifecycle.d.ts +0 -38
- package/dist/server/bare/runtime-lifecycle.js +0 -163
- package/dist/server/bare/types/addon-responses.d.ts +0 -51
- package/dist/server/bare/types/addon-responses.js +0 -1
- package/dist/server/bare/utils/asr-events.d.ts +0 -15
- package/dist/server/bare/utils/asr-events.js +0 -30
- package/dist/server/bare/utils/audio-input.d.ts +0 -10
- package/dist/server/bare/utils/audio-input.js +0 -33
- package/dist/server/bare/utils/transcribe-metadata.d.ts +0 -21
- package/dist/server/bare/utils/transcribe-metadata.js +0 -28
- package/dist/server/bare/utils/tts-stats.d.ts +0 -26
- package/dist/server/bare/utils/tts-stats.js +0 -16
- package/dist/server/error-handlers.js +0 -32
- package/dist/server/plugins/index.d.ts +0 -2
- package/dist/server/plugins/index.js +0 -1
- package/dist/server/plugins/registry.d.ts +0 -10
- package/dist/server/plugins/registry.js +0 -107
- package/dist/server/rpc/create-server.js +0 -46
- package/dist/server/rpc/delegate-transport.d.ts +0 -19
- package/dist/server/rpc/delegate-transport.js +0 -237
- package/dist/server/rpc/handle-request.js +0 -172
- package/dist/server/rpc/handler-registry.d.ts +0 -3
- package/dist/server/rpc/handler-registry.js +0 -179
- package/dist/server/rpc/handler-selection.d.ts +0 -9
- package/dist/server/rpc/handler-selection.js +0 -14
- package/dist/server/rpc/handler-utils.d.ts +0 -30
- package/dist/server/rpc/handler-utils.js +0 -183
- package/dist/server/rpc/handlers/audio-gen-stream.d.ts +0 -3
- package/dist/server/rpc/handlers/audio-gen-stream.js +0 -4
- package/dist/server/rpc/handlers/batch-completion-stream.d.ts +0 -80
- package/dist/server/rpc/handlers/batch-completion-stream.js +0 -4
- package/dist/server/rpc/handlers/bci-transcribe-stream.d.ts +0 -3
- package/dist/server/rpc/handlers/bci-transcribe-stream.js +0 -4
- package/dist/server/rpc/handlers/bci-transcribe.d.ts +0 -3
- package/dist/server/rpc/handlers/bci-transcribe.js +0 -4
- package/dist/server/rpc/handlers/cancel-delegated.d.ts +0 -4
- package/dist/server/rpc/handlers/cancel-delegated.js +0 -66
- package/dist/server/rpc/handlers/cancelHandler.d.ts +0 -32
- package/dist/server/rpc/handlers/cancelHandler.js +0 -69
- package/dist/server/rpc/handlers/classify.d.ts +0 -3
- package/dist/server/rpc/handlers/classify.js +0 -4
- package/dist/server/rpc/handlers/completion-orchestrate.d.ts +0 -42
- package/dist/server/rpc/handlers/completion-orchestrate.js +0 -190
- package/dist/server/rpc/handlers/completion-stream-delegated.d.ts +0 -5
- package/dist/server/rpc/handlers/completion-stream-delegated.js +0 -51
- package/dist/server/rpc/handlers/completion-stream.d.ts +0 -3
- package/dist/server/rpc/handlers/completion-stream.js +0 -4
- package/dist/server/rpc/handlers/delete-cache.d.ts +0 -12
- package/dist/server/rpc/handlers/delete-cache.js +0 -37
- package/dist/server/rpc/handlers/diffusion-stream.d.ts +0 -3
- package/dist/server/rpc/handlers/diffusion-stream.js +0 -4
- package/dist/server/rpc/handlers/download-asset.d.ts +0 -3
- package/dist/server/rpc/handlers/download-asset.js +0 -146
- package/dist/server/rpc/handlers/embed.d.ts +0 -3
- package/dist/server/rpc/handlers/embed.js +0 -4
- package/dist/server/rpc/handlers/finetune.d.ts +0 -3
- package/dist/server/rpc/handlers/finetune.js +0 -18
- package/dist/server/rpc/handlers/get-loaded-model-info.d.ts +0 -3
- package/dist/server/rpc/handlers/get-loaded-model-info.js +0 -45
- package/dist/server/rpc/handlers/get-model-info.d.ts +0 -3
- package/dist/server/rpc/handlers/get-model-info.js +0 -173
- package/dist/server/rpc/handlers/get-system-resources.d.ts +0 -3
- package/dist/server/rpc/handlers/get-system-resources.js +0 -53
- package/dist/server/rpc/handlers/heartbeat-delegated.d.ts +0 -4
- package/dist/server/rpc/handlers/heartbeat-delegated.js +0 -32
- package/dist/server/rpc/handlers/heartbeat.d.ts +0 -3
- package/dist/server/rpc/handlers/heartbeat.js +0 -3
- package/dist/server/rpc/handlers/index.d.ts +0 -76
- package/dist/server/rpc/handlers/index.js +0 -75
- package/dist/server/rpc/handlers/load-model/download-manager.d.ts +0 -98
- package/dist/server/rpc/handlers/load-model/download-manager.js +0 -308
- package/dist/server/rpc/handlers/load-model/download-stats.d.ts +0 -8
- package/dist/server/rpc/handlers/load-model/download-stats.js +0 -126
- package/dist/server/rpc/handlers/load-model/handler.d.ts +0 -3
- package/dist/server/rpc/handlers/load-model/handler.js +0 -287
- package/dist/server/rpc/handlers/load-model/http.d.ts +0 -4
- package/dist/server/rpc/handlers/load-model/http.js +0 -856
- package/dist/server/rpc/handlers/load-model/hyperdrive.d.ts +0 -5
- package/dist/server/rpc/handlers/load-model/hyperdrive.js +0 -561
- package/dist/server/rpc/handlers/load-model/index.d.ts +0 -3
- package/dist/server/rpc/handlers/load-model/index.js +0 -2
- package/dist/server/rpc/handlers/load-model/registry-client-options.d.ts +0 -27
- package/dist/server/rpc/handlers/load-model/registry-client-options.js +0 -18
- package/dist/server/rpc/handlers/load-model/registry-companion-set.d.ts +0 -23
- package/dist/server/rpc/handlers/load-model/registry-companion-set.js +0 -206
- package/dist/server/rpc/handlers/load-model/registry-download-utils.d.ts +0 -24
- package/dist/server/rpc/handlers/load-model/registry-download-utils.js +0 -112
- package/dist/server/rpc/handlers/load-model/registry-metadata.d.ts +0 -11
- package/dist/server/rpc/handlers/load-model/registry-metadata.js +0 -23
- package/dist/server/rpc/handlers/load-model/registry.d.ts +0 -5
- package/dist/server/rpc/handlers/load-model/registry.js +0 -298
- package/dist/server/rpc/handlers/load-model/resolve-session.d.ts +0 -34
- package/dist/server/rpc/handlers/load-model/resolve-session.js +0 -62
- package/dist/server/rpc/handlers/load-model/resolve.d.ts +0 -16
- package/dist/server/rpc/handlers/load-model/resolve.js +0 -237
- package/dist/server/rpc/handlers/load-model/types.d.ts +0 -60
- package/dist/server/rpc/handlers/load-model/types.js +0 -28
- package/dist/server/rpc/handlers/load-model-delegated.d.ts +0 -7
- package/dist/server/rpc/handlers/load-model-delegated.js +0 -132
- package/dist/server/rpc/handlers/logging-stream.d.ts +0 -3
- package/dist/server/rpc/handlers/logging-stream.js +0 -39
- package/dist/server/rpc/handlers/ocr-stream.d.ts +0 -3
- package/dist/server/rpc/handlers/ocr-stream.js +0 -4
- package/dist/server/rpc/handlers/plugin-dispatch.d.ts +0 -3
- package/dist/server/rpc/handlers/plugin-dispatch.js +0 -63
- package/dist/server/rpc/handlers/plugin-invoke.d.ts +0 -4
- package/dist/server/rpc/handlers/plugin-invoke.js +0 -81
- package/dist/server/rpc/handlers/provideHandler/connection.d.ts +0 -3
- package/dist/server/rpc/handlers/provideHandler/connection.js +0 -38
- package/dist/server/rpc/handlers/provideHandler/handler.d.ts +0 -3
- package/dist/server/rpc/handlers/provideHandler/handler.js +0 -66
- package/dist/server/rpc/handlers/provideHandler/proxy.d.ts +0 -3
- package/dist/server/rpc/handlers/provideHandler/proxy.js +0 -24
- package/dist/server/rpc/handlers/provideHandler.d.ts +0 -2
- package/dist/server/rpc/handlers/provideHandler.js +0 -2
- package/dist/server/rpc/handlers/rag.d.ts +0 -3
- package/dist/server/rpc/handlers/rag.js +0 -272
- package/dist/server/rpc/handlers/registry.d.ts +0 -5
- package/dist/server/rpc/handlers/registry.js +0 -155
- package/dist/server/rpc/handlers/resume.d.ts +0 -3
- package/dist/server/rpc/handlers/resume.js +0 -11
- package/dist/server/rpc/handlers/state.d.ts +0 -3
- package/dist/server/rpc/handlers/state.js +0 -7
- package/dist/server/rpc/handlers/stopProvideHandler.d.ts +0 -3
- package/dist/server/rpc/handlers/stopProvideHandler.js +0 -29
- package/dist/server/rpc/handlers/suspend.d.ts +0 -3
- package/dist/server/rpc/handlers/suspend.js +0 -11
- package/dist/server/rpc/handlers/text-to-speech-stream.d.ts +0 -3
- package/dist/server/rpc/handlers/text-to-speech-stream.js +0 -4
- package/dist/server/rpc/handlers/text-to-speech.d.ts +0 -3
- package/dist/server/rpc/handlers/text-to-speech.js +0 -4
- package/dist/server/rpc/handlers/transcribe-stream.d.ts +0 -3
- package/dist/server/rpc/handlers/transcribe-stream.js +0 -4
- package/dist/server/rpc/handlers/transcribe.d.ts +0 -3
- package/dist/server/rpc/handlers/transcribe.js +0 -4
- package/dist/server/rpc/handlers/translate.d.ts +0 -3
- package/dist/server/rpc/handlers/translate.js +0 -4
- package/dist/server/rpc/handlers/unload-model-delegated.d.ts +0 -3
- package/dist/server/rpc/handlers/unload-model-delegated.js +0 -32
- package/dist/server/rpc/handlers/unload-model.d.ts +0 -3
- package/dist/server/rpc/handlers/unload-model.js +0 -29
- package/dist/server/rpc/handlers/upscale-stream.d.ts +0 -3
- package/dist/server/rpc/handlers/upscale-stream.js +0 -4
- package/dist/server/rpc/handlers/video-stream.d.ts +0 -3
- package/dist/server/rpc/handlers/video-stream.js +0 -4
- package/dist/server/rpc/index.d.ts +0 -3
- package/dist/server/rpc/index.js +0 -2
- package/dist/server/rpc/method-shapes.d.ts +0 -53
- package/dist/server/rpc/method-shapes.js +0 -50
- package/dist/server/rpc/profiling/backend-diagnostics.d.ts +0 -3
- package/dist/server/rpc/profiling/backend-diagnostics.js +0 -16
- package/dist/server/rpc/profiling/context.d.ts +0 -18
- package/dist/server/rpc/profiling/context.js +0 -37
- package/dist/server/rpc/profiling/delegation-profiler.d.ts +0 -32
- package/dist/server/rpc/profiling/delegation-profiler.js +0 -153
- package/dist/server/rpc/profiling/index.d.ts +0 -5
- package/dist/server/rpc/profiling/index.js +0 -4
- package/dist/server/rpc/profiling/operation-metrics.d.ts +0 -25
- package/dist/server/rpc/profiling/operation-metrics.js +0 -361
- package/dist/server/rpc/profiling/operation-wrappers.d.ts +0 -18
- package/dist/server/rpc/profiling/operation-wrappers.js +0 -196
- package/dist/server/rpc/profiling/profiler.d.ts +0 -13
- package/dist/server/rpc/profiling/profiler.js +0 -93
- package/dist/server/rpc/rpc-utils.d.ts +0 -5
- package/dist/server/rpc/transport-selector.d.ts +0 -3
- package/dist/server/rpc/transport-selector.js +0 -18
- package/dist/server/utils/archive.d.ts +0 -4
- package/dist/server/utils/archive.js +0 -177
- package/dist/server/utils/audio/decoder.d.ts +0 -41
- package/dist/server/utils/audio/decoder.js +0 -108
- package/dist/server/utils/cache/auto-history.d.ts +0 -4
- package/dist/server/utils/cache/auto-history.js +0 -26
- package/dist/server/utils/cache/paths.d.ts +0 -43
- package/dist/server/utils/cache/paths.js +0 -133
- package/dist/server/utils/cache/types.d.ts +0 -8
- package/dist/server/utils/cache/types.js +0 -1
- package/dist/server/utils/checksum.d.ts +0 -4
- package/dist/server/utils/checksum.js +0 -30
- package/dist/server/utils/clear-storage.d.ts +0 -5
- package/dist/server/utils/clear-storage.js +0 -14
- package/dist/server/utils/completion-normalizer.d.ts +0 -18
- package/dist/server/utils/completion-normalizer.js +0 -453
- package/dist/server/utils/config-transform.d.ts +0 -6
- package/dist/server/utils/config-transform.js +0 -27
- package/dist/server/utils/formatting.d.ts +0 -19
- package/dist/server/utils/formatting.js +0 -56
- package/dist/server/utils/gguf-tensor-extractor.d.ts +0 -15
- package/dist/server/utils/gguf-tensor-extractor.js +0 -310
- package/dist/server/utils/index.d.ts +0 -11
- package/dist/server/utils/index.js +0 -10
- package/dist/server/utils/multi-gpu-mobile.d.ts +0 -5
- package/dist/server/utils/multi-gpu-mobile.js +0 -10
- package/dist/server/utils/path-security.d.ts +0 -12
- package/dist/server/utils/path-security.js +0 -25
- package/dist/server/utils/qvac-paths.js +0 -5
- package/dist/server/utils/response-format.d.ts +0 -3
- package/dist/server/utils/response-format.js +0 -20
- package/dist/server/utils/shard-utils.d.ts +0 -49
- package/dist/server/utils/shard-utils.js +0 -137
- package/dist/server/utils/tool-integration.d.ts +0 -17
- package/dist/server/utils/tool-integration.js +0 -20
- package/dist/server/utils/tools/dialect.d.ts +0 -8
- package/dist/server/utils/tools/dialect.js +0 -20
- package/dist/server/utils/tools/index.d.ts +0 -3
- package/dist/server/utils/tools/index.js +0 -2
- package/dist/server/utils/tools/parser.d.ts +0 -6
- package/dist/server/utils/tools/parser.js +0 -69
- package/dist/server/utils/tools/parsers/dsml.d.ts +0 -4
- package/dist/server/utils/tools/parsers/dsml.js +0 -176
- package/dist/server/utils/tools/parsers/gemma4native.d.ts +0 -4
- package/dist/server/utils/tools/parsers/gemma4native.js +0 -65
- package/dist/server/utils/tools/parsers/harmony.d.ts +0 -4
- package/dist/server/utils/tools/parsers/harmony.js +0 -57
- package/dist/server/utils/tools/parsers/hermes.d.ts +0 -4
- package/dist/server/utils/tools/parsers/hermes.js +0 -122
- package/dist/server/utils/tools/parsers/json.d.ts +0 -6
- package/dist/server/utils/tools/parsers/json.js +0 -115
- package/dist/server/utils/tools/parsers/pythonic.d.ts +0 -4
- package/dist/server/utils/tools/parsers/pythonic.js +0 -267
- package/dist/server/utils/tools/parsers/qwen35.d.ts +0 -4
- package/dist/server/utils/tools/parsers/qwen35.js +0 -124
- package/dist/server/utils/tools/shared.d.ts +0 -18
- package/dist/server/utils/tools/shared.js +0 -52
- package/dist/server/utils/worker-lock.js +0 -67
- package/dist/server/worker-core.d.ts +0 -23
- package/dist/server/worker-core.js +0 -206
- package/dist/server/worker.d.ts +0 -5
- package/dist/server/worker.js +0 -34
- package/dist/utils/aggregate-events.d.ts +0 -26
- package/dist/utils/aggregate-events.js +0 -73
- package/dist/utils/errors-client.d.ts +0 -178
- package/dist/utils/errors-client.js +0 -310
- package/dist/utils/errors-server.d.ts +0 -376
- package/dist/utils/errors-server.js +0 -610
- package/dist/utils/load-model-validation.js +0 -18
- package/dist/utils/mcp-adapter.d.ts +0 -12
- package/dist/utils/mcp-adapter.js +0 -96
- package/dist/utils/tool-helpers.d.ts +0 -25
- package/dist/utils/tool-helpers.js +0 -111
- /package/dist/{client → src/client}/api/client-request-id.d.ts +0 -0
- /package/dist/{client → src/client}/api/client-request-id.js +0 -0
- /package/dist/{client → src/client}/api/delete-cache.d.ts +0 -0
- /package/dist/{client → src/client}/api/subscribe-logs.js +0 -0
- /package/dist/{client → src/client}/config-loader/resolve-config.expo.d.ts +0 -0
- /package/dist/{client → src/client}/config-loader/resolve-config.node.d.ts +0 -0
- /package/dist/{client → src/client}/index.d.ts +0 -0
- /package/dist/{client → src/client}/index.js +0 -0
- /package/dist/{client → src/client}/logging-stream-registry.d.ts +0 -0
- /package/dist/{client → src/client}/logging-stream-registry.js +0 -0
- /package/dist/{client → src/client}/parse-input.d.ts +0 -0
- /package/dist/{client → src/client}/parse-input.js +0 -0
- /package/dist/{client → src/client}/rpc/ensure-worker-ready.d.ts +0 -0
- /package/dist/{client → src/client}/rpc/ensure-worker-ready.js +0 -0
- /package/dist/{client → src/client}/rpc/expo-device-info.d.ts +0 -0
- /package/dist/{client → src/client}/rpc/expo-device-info.js +0 -0
- /package/dist/{client → src/client}/rpc/expo-rpc-client.d.ts +0 -0
- /package/dist/{client → src/client}/rpc/node-rpc-client.d.ts +0 -0
- /package/dist/{client → src/client}/rpc/profiling/index.d.ts +0 -0
- /package/dist/{client → src/client}/rpc/profiling/index.js +0 -0
- /package/dist/{commands → src/commands}/bundle/bare-pack.d.ts +0 -0
- /package/dist/{commands → src/commands}/bundle/bare-pack.js +0 -0
- /package/dist/{commands → src/commands}/bundle/constants.d.ts +0 -0
- /package/dist/{commands → src/commands}/bundle/constants.js +0 -0
- /package/dist/{commands → src/commands}/bundle/entry-gen.d.ts +0 -0
- /package/dist/{commands → src/commands}/bundle/index.d.ts +0 -0
- /package/dist/{commands → src/commands}/bundle/manifest.d.ts +0 -0
- /package/dist/{commands → src/commands}/bundle/manifest.js +0 -0
- /package/dist/{commands → src/commands}/bundle/resolve-sdk-import.d.ts +0 -0
- /package/dist/{commands → src/commands}/verify/addon-source.d.ts +0 -0
- /package/dist/{commands → src/commands}/verify/addon-source.js +0 -0
- /package/dist/{commands → src/commands}/verify/resource-collectors.d.ts +0 -0
- /package/dist/{expo → src/expo}/plugins/find-in-ancestor-node-modules.d.ts +0 -0
- /package/dist/{expo → src/expo}/plugins/find-in-ancestor-node-modules.js +0 -0
- /package/dist/{expo → src/expo}/plugins/get-project-root.d.ts +0 -0
- /package/dist/{expo → src/expo}/plugins/get-project-root.js +0 -0
- /package/dist/{expo → src/expo}/plugins/index.d.ts +0 -0
- /package/dist/{expo → src/expo}/plugins/index.js +0 -0
- /package/dist/{expo → src/expo}/plugins/resolve-sdk-package-dir.d.ts +0 -0
- /package/dist/{expo → src/expo}/plugins/resolve-sdk-package-dir.js +0 -0
- /package/dist/{expo → src/expo}/plugins/withAndroidArchitecture.d.ts +0 -0
- /package/dist/{expo → src/expo}/plugins/withAndroidArchitecture.js +0 -0
- /package/dist/{expo → src/expo}/plugins/withAndroidNdkVersion.d.ts +0 -0
- /package/dist/{expo → src/expo}/plugins/withDeviceInfo.d.ts +0 -0
- /package/dist/{expo → src/expo}/plugins/withOpenCL.d.ts +0 -0
- /package/dist/{expo → src/expo}/plugins/withOpenCL.js +0 -0
- /package/dist/{expo → src/expo}/plugins/withQvacSDK.d.ts +0 -0
- /package/dist/{expo → src/expo}/plugins/withQvacSDK.js +0 -0
- /package/dist/{logging → src/logging}/addon.js +0 -0
- /package/dist/{logging → src/logging}/base-logger.d.ts +0 -0
- /package/dist/{logging → src/logging}/base-logger.js +0 -0
- /package/dist/{logging → src/logging}/client-logger.d.ts +0 -0
- /package/dist/{logging → src/logging}/client-logger.js +0 -0
- /package/dist/{logging → src/logging}/index.d.ts +0 -0
- /package/dist/{logging → src/logging}/index.js +0 -0
- /package/dist/{logging → src/logging}/logger.d.ts +0 -0
- /package/dist/{logging → src/logging}/logger.js +0 -0
- /package/dist/{server/bare/registry → src/logging}/logging-stream-registry.d.ts +0 -0
- /package/dist/{logging → src/logging}/server-logger.d.ts +0 -0
- /package/dist/{logging → src/logging}/server-logger.js +0 -0
- /package/dist/{logging → src/logging}/stream-logger.d.ts +0 -0
- /package/dist/{logging → src/logging}/transport.d.ts +0 -0
- /package/dist/{logging → src/logging}/transport.js +0 -0
- /package/dist/{logging → src/logging}/types.d.ts +0 -0
- /package/dist/{logging → src/logging}/types.js +0 -0
- /package/dist/{logging → src/logging}/utils.js +0 -0
- /package/dist/{pear → src/pear}/pre.d.ts +0 -0
- /package/dist/{server → src/server}/env.d.ts +0 -0
- /package/dist/{server → src/server}/env.js +0 -0
- /package/dist/{server → src/server}/error-handlers.d.ts +0 -0
- /package/dist/{server → src/server}/rpc/progress-throttle.d.ts +0 -0
- /package/dist/{server → src/server}/rpc/progress-throttle.js +0 -0
- /package/dist/{server → src/server}/rpc/rpc-utils.js +0 -0
- /package/dist/{server → src/server}/utils/qvac-paths.d.ts +0 -0
- /package/dist/{server → src/server}/utils/worker-lock.d.ts +0 -0
- /package/dist/{utils → src/utils}/cache-normalize.d.ts +0 -0
- /package/dist/{utils → src/utils}/cache-normalize.js +0 -0
- /package/dist/{utils → src/utils}/decorate-promise.d.ts +0 -0
- /package/dist/{utils → src/utils}/decorate-promise.js +0 -0
- /package/dist/{utils → src/utils}/encoding.d.ts +0 -0
- /package/dist/{utils → src/utils}/encoding.js +0 -0
- /package/dist/{utils → src/utils}/errors-base.d.ts +0 -0
- /package/dist/{utils → src/utils}/errors-base.js +0 -0
- /package/dist/{utils → src/utils}/global-singleton.d.ts +0 -0
- /package/dist/{utils → src/utils}/global-singleton.js +0 -0
- /package/dist/{utils → src/utils}/load-model-validation.d.ts +0 -0
- /package/dist/{utils → src/utils}/object.d.ts +0 -0
- /package/dist/{utils → src/utils}/object.js +0 -0
- /package/dist/{utils → src/utils}/path-sanitize.d.ts +0 -0
- /package/dist/{utils → src/utils}/path-sanitize.js +0 -0
- /package/dist/{utils → src/utils}/withTimeout.d.ts +0 -0
- /package/dist/{utils → src/utils}/withTimeout.js +0 -0
- /package/dist/{utils → src/utils}/zod-error.d.ts +0 -0
- /package/dist/{utils → src/utils}/zod-error.js +0 -0
- /package/dist/{server/rpc → src/worker}/create-server.d.ts +0 -0
- /package/dist/{server/rpc → src/worker}/handle-request.d.ts +0 -0
- /package/{electron-forge → src/electron-forge}/index.cjs +0 -0
- /package/{expo → src/expo}/plugins/patches/android-link.mjs +0 -0
- /package/{expo → src/expo}/plugins/patches/ios-link.mjs +0 -0
|
@@ -1,856 +0,0 @@
|
|
|
1
|
-
import fs, { promises as fsPromises } from 'bare-fs';
|
|
2
|
-
import path from 'bare-path';
|
|
3
|
-
import { Readable } from 'bare-stream';
|
|
4
|
-
import fetch, { Headers } from 'bare-fetch';
|
|
5
|
-
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 '../../../../server/utils/index.js';
|
|
8
|
-
import { getSDKConfig } from '../../../../server/bare/registry/config-registry.js';
|
|
9
|
-
import { getLifecycleState, onResume } from '../../../../server/bare/runtime-lifecycle.js';
|
|
10
|
-
import { createHttpDownloadKey, startOrJoinDownload, applyJoinedDownloadStats } from '../../../../server/rpc/handlers/load-model/download-manager.js';
|
|
11
|
-
import { DownloadCancelledError, HTTPError, NoResponseBodyError, PartialDownloadOfflineError, ResponseBodyNotReadableError } from '../../../../utils/errors-server.js';
|
|
12
|
-
import { getServerLogger } from '../../../../logging/index.js';
|
|
13
|
-
const logger = getServerLogger();
|
|
14
|
-
const DEFAULT_CONCURRENCY = 3;
|
|
15
|
-
const DEFAULT_HTTP_CONNECTION_TIMEOUT_MS = 10_000;
|
|
16
|
-
// If no bytes arrive for this long mid-stream, treat the transfer as stalled
|
|
17
|
-
// (dead socket after a suspend or network drop that didn't surface an error)
|
|
18
|
-
// and abort so the caller can resume from the partial via a Range request.
|
|
19
|
-
const HTTP_STREAM_STALL_TIMEOUT_MS = 10_000;
|
|
20
|
-
function extractFilenameFromUrl(url) {
|
|
21
|
-
// Parse URL to get the filename from the path
|
|
22
|
-
const urlParts = url.split('/');
|
|
23
|
-
const filename = urlParts[urlParts.length - 1] || 'model.gguf';
|
|
24
|
-
// Remove query parameters if present
|
|
25
|
-
const cleanFilename = filename.split('?')[0] || 'model.gguf';
|
|
26
|
-
// Sanitize to prevent path traversal via crafted URLs
|
|
27
|
-
return sanitizePathComponent(cleanFilename);
|
|
28
|
-
}
|
|
29
|
-
async function validateCachedFile(modelPath, url, signal) {
|
|
30
|
-
try {
|
|
31
|
-
await fsPromises.access(modelPath);
|
|
32
|
-
const localStats = await fsPromises.stat(modelPath);
|
|
33
|
-
const localSize = localStats.size;
|
|
34
|
-
const config = getSDKConfig();
|
|
35
|
-
const connectionTimeout = config.httpConnectionTimeoutMs ?? DEFAULT_HTTP_CONNECTION_TIMEOUT_MS;
|
|
36
|
-
let expectedSize = 0;
|
|
37
|
-
try {
|
|
38
|
-
const response = await withTimeout(fetch(url, {
|
|
39
|
-
method: 'HEAD',
|
|
40
|
-
...(signal && { signal })
|
|
41
|
-
}), connectionTimeout);
|
|
42
|
-
expectedSize = parseInt(response.headers.get('content-length') || '0');
|
|
43
|
-
}
|
|
44
|
-
catch (headError) {
|
|
45
|
-
logger.warn(`⚠️ HEAD request failed: ${headError instanceof Error ? headError.message : String(headError)}`);
|
|
46
|
-
logger.info(`📴 Falling back to GGUF header validation...`);
|
|
47
|
-
const hasValidHeader = await hasValidGGUFHeader(modelPath);
|
|
48
|
-
if (hasValidHeader) {
|
|
49
|
-
logger.info(`✅ Offline - GGUF header valid, using cached file: ${modelPath}`);
|
|
50
|
-
return modelPath;
|
|
51
|
-
}
|
|
52
|
-
if (localSize > 0) {
|
|
53
|
-
logger.error(`❌ Offline with partial download (${localSize} bytes). Cannot resume without network.`);
|
|
54
|
-
throw new PartialDownloadOfflineError(url, localSize);
|
|
55
|
-
}
|
|
56
|
-
logger.warn(`⚠️ Offline and GGUF validation failed - file may be incomplete`);
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
if (localSize !== expectedSize) {
|
|
60
|
-
logger.info(`📥 Cached file size mismatch. Expected: ${expectedSize}, Found: ${localSize}. Re-downloading...`);
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
logger.info(`✅ Using cached HTTP model: ${modelPath}`);
|
|
64
|
-
return modelPath;
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
// Re-throw PartialDownloadOfflineError
|
|
68
|
-
if (error instanceof PartialDownloadOfflineError) {
|
|
69
|
-
throw error;
|
|
70
|
-
}
|
|
71
|
-
// File doesn't exist or other access error
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
async function performHttpDownload(url, modelPath, downloadKey, progressCallback, signal) {
|
|
76
|
-
if (signal?.aborted) {
|
|
77
|
-
throw new DownloadCancelledError();
|
|
78
|
-
}
|
|
79
|
-
logger.info(`📥 Downloading model from HTTP: ${url}`);
|
|
80
|
-
// Check if file exists for resuming
|
|
81
|
-
let startOffset = 0;
|
|
82
|
-
let downloadedBytes = 0;
|
|
83
|
-
try {
|
|
84
|
-
const existingStats = await fsPromises.stat(modelPath);
|
|
85
|
-
startOffset = existingStats.size;
|
|
86
|
-
downloadedBytes = startOffset;
|
|
87
|
-
logger.info(`📥 Resuming download from byte ${startOffset}`);
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
logger.info(`📥 Starting fresh download`);
|
|
91
|
-
}
|
|
92
|
-
// Prepare headers for resume if needed
|
|
93
|
-
const headers = new Headers({
|
|
94
|
-
'User-Agent': 'qvac-sdk'
|
|
95
|
-
});
|
|
96
|
-
if (startOffset > 0) {
|
|
97
|
-
headers.append('Range', `bytes=${startOffset}-`);
|
|
98
|
-
}
|
|
99
|
-
const config = getSDKConfig();
|
|
100
|
-
const connectionTimeout = config.httpConnectionTimeoutMs ?? DEFAULT_HTTP_CONNECTION_TIMEOUT_MS;
|
|
101
|
-
let response;
|
|
102
|
-
try {
|
|
103
|
-
response = await withTimeout(fetch(url, {
|
|
104
|
-
method: 'GET',
|
|
105
|
-
headers,
|
|
106
|
-
...(signal && { signal })
|
|
107
|
-
}), connectionTimeout);
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
// Check if it was parent abort
|
|
111
|
-
if (signal?.aborted) {
|
|
112
|
-
throw new DownloadCancelledError();
|
|
113
|
-
}
|
|
114
|
-
// Connection timeout or network error
|
|
115
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
116
|
-
logger.error(`❌ Connection failed: ${errorMsg}. URL: ${url}`);
|
|
117
|
-
throw new HTTPError(0, `Connection failed: ${errorMsg}`, error);
|
|
118
|
-
}
|
|
119
|
-
if (!response.ok) {
|
|
120
|
-
// Check if it's a 416 (Range Not Satisfiable) - file already complete
|
|
121
|
-
if (response.status === 416 && startOffset > 0) {
|
|
122
|
-
logger.info(`✅ File already completely downloaded`);
|
|
123
|
-
// Send 100% progress for already complete file
|
|
124
|
-
if (progressCallback) {
|
|
125
|
-
progressCallback({
|
|
126
|
-
type: 'modelProgress',
|
|
127
|
-
downloaded: startOffset,
|
|
128
|
-
total: startOffset,
|
|
129
|
-
percentage: 100,
|
|
130
|
-
downloadKey
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
// Check if server doesn't support range requests
|
|
136
|
-
if (response.status === 200 && startOffset > 0) {
|
|
137
|
-
logger.warn(`⚠️ Server doesn't support resume, starting fresh download`);
|
|
138
|
-
startOffset = 0;
|
|
139
|
-
downloadedBytes = 0;
|
|
140
|
-
// Retry without Range header
|
|
141
|
-
response = await fetch(url, {
|
|
142
|
-
method: 'GET',
|
|
143
|
-
headers: new Headers({
|
|
144
|
-
'User-Agent': 'qvac-sdk'
|
|
145
|
-
}),
|
|
146
|
-
...(signal && { signal })
|
|
147
|
-
});
|
|
148
|
-
if (!response.ok) {
|
|
149
|
-
throw new HTTPError(response.status, response.statusText);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
else if (response.status !== 206) {
|
|
153
|
-
// 206 is Partial Content (successful resume)
|
|
154
|
-
throw new HTTPError(response.status, response.statusText);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
// Get total size from headers
|
|
158
|
-
let totalBytes = 0;
|
|
159
|
-
const contentLength = response.headers.get('content-length');
|
|
160
|
-
if (response.status === 206) {
|
|
161
|
-
// For resumed downloads, parse Content-Range header
|
|
162
|
-
const contentRange = response.headers.get('content-range');
|
|
163
|
-
if (contentRange) {
|
|
164
|
-
const match = contentRange.match(/bytes \d+-\d+\/(\d+)/);
|
|
165
|
-
if (match && match[1]) {
|
|
166
|
-
totalBytes = parseInt(match[1]);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
// For fresh downloads
|
|
172
|
-
totalBytes = contentLength ? parseInt(contentLength) : 0;
|
|
173
|
-
}
|
|
174
|
-
logger.info(`📏 Total size: ${totalBytes} bytes (${(totalBytes / 1024 / 1024).toFixed(2)} MB)`);
|
|
175
|
-
// Create write stream (append if resuming)
|
|
176
|
-
const writeStreamOptions = startOffset > 0 && response.status === 206 ? { flags: 'a' } : {};
|
|
177
|
-
const writeStream = fs.createWriteStream(modelPath, writeStreamOptions);
|
|
178
|
-
// Get the response body
|
|
179
|
-
const body = response.body;
|
|
180
|
-
if (!body) {
|
|
181
|
-
throw new NoResponseBodyError();
|
|
182
|
-
}
|
|
183
|
-
try {
|
|
184
|
-
// Check if body has pipe method (it's a Node/Bare stream)
|
|
185
|
-
const isReadable = body instanceof Readable ||
|
|
186
|
-
(typeof body.pipe === 'function' &&
|
|
187
|
-
typeof body.on === 'function');
|
|
188
|
-
if (isReadable) {
|
|
189
|
-
// Wait for download to complete
|
|
190
|
-
await new Promise((resolve, reject) => {
|
|
191
|
-
let stallTimer;
|
|
192
|
-
const clearStall = () => {
|
|
193
|
-
if (stallTimer) {
|
|
194
|
-
clearTimeout(stallTimer);
|
|
195
|
-
stallTimer = undefined;
|
|
196
|
-
}
|
|
197
|
-
};
|
|
198
|
-
// Reset on every chunk; if it ever fires, the socket went quiet
|
|
199
|
-
// mid-stream (suspend/drop) — abort so the caller resumes via Range.
|
|
200
|
-
const armStall = () => {
|
|
201
|
-
clearStall();
|
|
202
|
-
stallTimer = setTimeout(() => {
|
|
203
|
-
;
|
|
204
|
-
body.destroy();
|
|
205
|
-
writeStream.destroy();
|
|
206
|
-
reject(new Error(`HTTP stream stalled: no data for ${HTTP_STREAM_STALL_TIMEOUT_MS}ms`));
|
|
207
|
-
}, HTTP_STREAM_STALL_TIMEOUT_MS);
|
|
208
|
-
};
|
|
209
|
-
const abortHandler = () => {
|
|
210
|
-
clearStall();
|
|
211
|
-
body.destroy();
|
|
212
|
-
writeStream.destroy();
|
|
213
|
-
reject(new DownloadCancelledError());
|
|
214
|
-
};
|
|
215
|
-
if (signal) {
|
|
216
|
-
if (signal.aborted) {
|
|
217
|
-
abortHandler();
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
signal.addEventListener('abort', abortHandler);
|
|
221
|
-
}
|
|
222
|
-
// Track progress + keep the stall watchdog fed
|
|
223
|
-
;
|
|
224
|
-
body.on('data', (chunk) => {
|
|
225
|
-
armStall();
|
|
226
|
-
downloadedBytes += chunk.length;
|
|
227
|
-
if (progressCallback) {
|
|
228
|
-
progressCallback({
|
|
229
|
-
type: 'modelProgress',
|
|
230
|
-
downloaded: downloadedBytes,
|
|
231
|
-
total: totalBytes,
|
|
232
|
-
percentage: calculatePercentage(downloadedBytes, totalBytes),
|
|
233
|
-
downloadKey
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
body.pipe(writeStream);
|
|
238
|
-
armStall();
|
|
239
|
-
writeStream.on('finish', () => {
|
|
240
|
-
clearStall();
|
|
241
|
-
logger.info(`✅ Model downloaded successfully to ${modelPath}`);
|
|
242
|
-
if (signal) {
|
|
243
|
-
signal.removeEventListener('abort', abortHandler);
|
|
244
|
-
}
|
|
245
|
-
resolve(undefined);
|
|
246
|
-
});
|
|
247
|
-
writeStream.on('error', (error) => {
|
|
248
|
-
clearStall();
|
|
249
|
-
reject(error);
|
|
250
|
-
});
|
|
251
|
-
body.on('error', (error) => {
|
|
252
|
-
clearStall();
|
|
253
|
-
reject(error);
|
|
254
|
-
});
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
else if (body[Symbol.asyncIterator]) {
|
|
258
|
-
// Body is an async iterable. Drive the iterator manually so each pull can
|
|
259
|
-
// race a stall timeout: a dead socket after suspend/drop produces neither
|
|
260
|
-
// a chunk nor an error, so the timeout converts it into a retriable
|
|
261
|
-
// failure and we abandon the iterator (which cancels the stream).
|
|
262
|
-
const iterator = body[Symbol.asyncIterator]();
|
|
263
|
-
let stalled = false;
|
|
264
|
-
try {
|
|
265
|
-
for (;;) {
|
|
266
|
-
let stallTimer;
|
|
267
|
-
const nextPromise = iterator.next();
|
|
268
|
-
nextPromise.catch(() => { });
|
|
269
|
-
let step;
|
|
270
|
-
try {
|
|
271
|
-
step = await Promise.race([
|
|
272
|
-
nextPromise,
|
|
273
|
-
new Promise((_, reject) => {
|
|
274
|
-
stallTimer = setTimeout(() => {
|
|
275
|
-
stalled = true;
|
|
276
|
-
reject(new Error(`HTTP stream stalled: no data for ${HTTP_STREAM_STALL_TIMEOUT_MS}ms`));
|
|
277
|
-
}, HTTP_STREAM_STALL_TIMEOUT_MS);
|
|
278
|
-
})
|
|
279
|
-
]);
|
|
280
|
-
}
|
|
281
|
-
finally {
|
|
282
|
-
if (stallTimer)
|
|
283
|
-
clearTimeout(stallTimer);
|
|
284
|
-
}
|
|
285
|
-
if (step.done)
|
|
286
|
-
break;
|
|
287
|
-
if (signal?.aborted) {
|
|
288
|
-
writeStream.destroy();
|
|
289
|
-
throw new DownloadCancelledError();
|
|
290
|
-
}
|
|
291
|
-
const buffer = Buffer.isBuffer(step.value) ? step.value : Buffer.from(step.value);
|
|
292
|
-
downloadedBytes += buffer.length;
|
|
293
|
-
if (progressCallback) {
|
|
294
|
-
progressCallback({
|
|
295
|
-
type: 'modelProgress',
|
|
296
|
-
downloaded: downloadedBytes,
|
|
297
|
-
total: totalBytes,
|
|
298
|
-
percentage: calculatePercentage(downloadedBytes, totalBytes),
|
|
299
|
-
downloadKey
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
// Write chunk to file
|
|
303
|
-
await new Promise((resolve, reject) => {
|
|
304
|
-
writeStream.write(buffer, (err) => {
|
|
305
|
-
if (err)
|
|
306
|
-
reject(new Error(err instanceof Error ? err.message : String(err)));
|
|
307
|
-
else
|
|
308
|
-
resolve();
|
|
309
|
-
});
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
finally {
|
|
314
|
-
if (stalled) {
|
|
315
|
-
try {
|
|
316
|
-
await iterator.return?.();
|
|
317
|
-
}
|
|
318
|
-
catch {
|
|
319
|
-
/* best effort: free the dead socket */
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
// Close the write stream
|
|
324
|
-
await new Promise((resolve, reject) => {
|
|
325
|
-
writeStream.end(() => {
|
|
326
|
-
logger.info(`✅ Model downloaded successfully to ${modelPath}`);
|
|
327
|
-
resolve();
|
|
328
|
-
});
|
|
329
|
-
writeStream.on('error', reject);
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
else {
|
|
333
|
-
// Fallback: getReader() for a WHATWG ReadableStream (bare-fetch body).
|
|
334
|
-
const readableStreamBody = body;
|
|
335
|
-
const reader = readableStreamBody.getReader ? readableStreamBody.getReader() : null;
|
|
336
|
-
if (reader) {
|
|
337
|
-
let cancelled = false;
|
|
338
|
-
try {
|
|
339
|
-
for (;;) {
|
|
340
|
-
// Race each read against a stall timeout. A dead socket after a
|
|
341
|
-
// suspend/drop yields no data and no error; the timeout converts
|
|
342
|
-
// that into a retriable failure so the caller resumes via Range.
|
|
343
|
-
let stallTimer;
|
|
344
|
-
const readPromise = reader.read();
|
|
345
|
-
// Avoid an unhandled rejection if the read loses the race.
|
|
346
|
-
readPromise.catch(() => { });
|
|
347
|
-
let result;
|
|
348
|
-
try {
|
|
349
|
-
result = await Promise.race([
|
|
350
|
-
readPromise,
|
|
351
|
-
new Promise((_, reject) => {
|
|
352
|
-
stallTimer = setTimeout(() => {
|
|
353
|
-
cancelled = true;
|
|
354
|
-
reject(new Error(`HTTP stream stalled: no data for ${HTTP_STREAM_STALL_TIMEOUT_MS}ms`));
|
|
355
|
-
}, HTTP_STREAM_STALL_TIMEOUT_MS);
|
|
356
|
-
})
|
|
357
|
-
]);
|
|
358
|
-
}
|
|
359
|
-
finally {
|
|
360
|
-
if (stallTimer)
|
|
361
|
-
clearTimeout(stallTimer);
|
|
362
|
-
}
|
|
363
|
-
const { done, value } = result;
|
|
364
|
-
if (done)
|
|
365
|
-
break;
|
|
366
|
-
if (signal?.aborted) {
|
|
367
|
-
cancelled = true;
|
|
368
|
-
throw new DownloadCancelledError();
|
|
369
|
-
}
|
|
370
|
-
const buffer = Buffer.from(value);
|
|
371
|
-
downloadedBytes += buffer.length;
|
|
372
|
-
if (progressCallback) {
|
|
373
|
-
progressCallback({
|
|
374
|
-
type: 'modelProgress',
|
|
375
|
-
downloaded: downloadedBytes,
|
|
376
|
-
total: totalBytes,
|
|
377
|
-
percentage: calculatePercentage(downloadedBytes, totalBytes),
|
|
378
|
-
downloadKey
|
|
379
|
-
});
|
|
380
|
-
}
|
|
381
|
-
// Write chunk to file
|
|
382
|
-
await new Promise((resolve, reject) => {
|
|
383
|
-
writeStream.write(buffer, (err) => {
|
|
384
|
-
if (err)
|
|
385
|
-
reject(new Error(err instanceof Error ? err.message : String(err)));
|
|
386
|
-
else
|
|
387
|
-
resolve();
|
|
388
|
-
});
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
finally {
|
|
393
|
-
if (cancelled) {
|
|
394
|
-
try {
|
|
395
|
-
await reader.cancel();
|
|
396
|
-
}
|
|
397
|
-
catch {
|
|
398
|
-
/* best effort: free the dead socket */
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
reader.releaseLock();
|
|
402
|
-
}
|
|
403
|
-
// Close the write stream
|
|
404
|
-
await new Promise((resolve, reject) => {
|
|
405
|
-
writeStream.end(() => {
|
|
406
|
-
logger.info(`✅ Model downloaded successfully to ${modelPath}`);
|
|
407
|
-
resolve();
|
|
408
|
-
});
|
|
409
|
-
writeStream.on('error', reject);
|
|
410
|
-
});
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
413
|
-
throw new ResponseBodyNotReadableError();
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
catch (error) {
|
|
418
|
-
writeStream.destroy();
|
|
419
|
-
logger.error('Error during download:', error instanceof Error ? error.message : String(error));
|
|
420
|
-
throw error instanceof Error ? error : new Error(String(error));
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
const DEFAULT_HTTP_DOWNLOAD_MAX_RETRIES = 5;
|
|
424
|
-
const HTTP_RETRY_BASE_DELAY_MS = 500;
|
|
425
|
-
const LIFECYCLE_WAIT_POLL_MS = 200;
|
|
426
|
-
const LIFECYCLE_WAIT_MAX_MS = 5 * 60_000;
|
|
427
|
-
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
428
|
-
/**
|
|
429
|
-
* A mid-stream socket/body error, a connection failure (HTTP status 0, no
|
|
430
|
-
* response), or our own resume-triggered abort is recoverable by resuming from
|
|
431
|
-
* the partial. A real HTTP status (4xx/5xx) or a missing/unreadable body is not.
|
|
432
|
-
*
|
|
433
|
-
* `DownloadCancelledError` is intentionally NOT excluded here: this is only
|
|
434
|
-
* reached after the caller's consumer-cancel gate, so a cancellation at this
|
|
435
|
-
* point is our per-attempt abort (resume interrupt), which must be retried.
|
|
436
|
-
*/
|
|
437
|
-
function isResumableTransferError(error) {
|
|
438
|
-
if (error instanceof NoResponseBodyError ||
|
|
439
|
-
error instanceof ResponseBodyNotReadableError ||
|
|
440
|
-
error instanceof PartialDownloadOfflineError) {
|
|
441
|
-
return false;
|
|
442
|
-
}
|
|
443
|
-
if (error instanceof HTTPError)
|
|
444
|
-
return error.httpStatus === 0;
|
|
445
|
-
return error instanceof Error;
|
|
446
|
-
}
|
|
447
|
-
/**
|
|
448
|
-
* Block until the runtime is active again before retrying. After a suspend the
|
|
449
|
-
* socket is dead and the process can't service the transfer; resuming the fetch
|
|
450
|
-
* only makes sense once `resume()` has run. Bounded and abort-aware.
|
|
451
|
-
*/
|
|
452
|
-
async function waitForLifecycleActive(signal) {
|
|
453
|
-
if (getLifecycleState() === 'active')
|
|
454
|
-
return;
|
|
455
|
-
const start = Date.now();
|
|
456
|
-
while (getLifecycleState() !== 'active') {
|
|
457
|
-
if (signal?.aborted)
|
|
458
|
-
throw new DownloadCancelledError();
|
|
459
|
-
if (Date.now() - start > LIFECYCLE_WAIT_MAX_MS)
|
|
460
|
-
return;
|
|
461
|
-
await sleep(LIFECYCLE_WAIT_POLL_MS);
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
/**
|
|
465
|
-
* Run `performHttpDownload` with bounded retry. On a recoverable interruption
|
|
466
|
-
* (mid-stream socket drop, or a dead socket after suspend/network loss) it
|
|
467
|
-
* waits for the runtime to be active and re-issues the request, which resumes
|
|
468
|
-
* from the on-disk partial via a Range header. No consumer-side babysitting.
|
|
469
|
-
*
|
|
470
|
-
* Each attempt runs on its own AbortController that is aborted either by the
|
|
471
|
-
* consumer `signal` (a real cancel — terminal) or by `resume()` (a proactive
|
|
472
|
-
* recovery — the in-flight socket is dead after a background, so abort and
|
|
473
|
-
* range-resume immediately instead of waiting for the stall watchdog).
|
|
474
|
-
*/
|
|
475
|
-
async function performHttpDownloadWithResume(url, modelPath, downloadKey, progressCallback, signal) {
|
|
476
|
-
const maxRetries = DEFAULT_HTTP_DOWNLOAD_MAX_RETRIES;
|
|
477
|
-
let attempt = 0;
|
|
478
|
-
for (;;) {
|
|
479
|
-
const attemptController = new AbortController();
|
|
480
|
-
const forwardCancel = () => attemptController.abort();
|
|
481
|
-
if (signal) {
|
|
482
|
-
if (signal.aborted)
|
|
483
|
-
attemptController.abort();
|
|
484
|
-
else
|
|
485
|
-
signal.addEventListener('abort', forwardCancel, { once: true });
|
|
486
|
-
}
|
|
487
|
-
// resume() → abort this attempt so it range-resumes now, not after the stall.
|
|
488
|
-
const offResume = onResume(() => attemptController.abort());
|
|
489
|
-
try {
|
|
490
|
-
await performHttpDownload(url, modelPath, downloadKey, progressCallback, attemptController.signal);
|
|
491
|
-
return;
|
|
492
|
-
}
|
|
493
|
-
catch (error) {
|
|
494
|
-
// A real consumer cancel is terminal; anything else (resume abort, stall,
|
|
495
|
-
// network error) is recoverable from the partial.
|
|
496
|
-
if (signal?.aborted) {
|
|
497
|
-
throw error instanceof DownloadCancelledError ? error : new DownloadCancelledError();
|
|
498
|
-
}
|
|
499
|
-
attempt++;
|
|
500
|
-
if (attempt > maxRetries || !isResumableTransferError(error))
|
|
501
|
-
throw error;
|
|
502
|
-
logger.warn(`⚠️ HTTP download interrupted (attempt ${attempt}/${maxRetries}), resuming from partial: ${error instanceof Error ? error.message : String(error)}`);
|
|
503
|
-
await waitForLifecycleActive(signal);
|
|
504
|
-
await sleep(HTTP_RETRY_BASE_DELAY_MS * attempt);
|
|
505
|
-
}
|
|
506
|
-
finally {
|
|
507
|
-
if (signal)
|
|
508
|
-
signal.removeEventListener('abort', forwardCancel);
|
|
509
|
-
offResume();
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
export async function downloadModelFromHttp(url, progressCallback, hooks) {
|
|
514
|
-
const filename = extractFilenameFromUrl(url);
|
|
515
|
-
if (isArchiveUrl(url)) {
|
|
516
|
-
return downloadShardedModelFromArchive(url, progressCallback, hooks);
|
|
517
|
-
}
|
|
518
|
-
const shardInfo = detectShardedModel(filename);
|
|
519
|
-
if (shardInfo.isSharded && shardInfo.totalShards) {
|
|
520
|
-
return downloadShardedModelFromHttp(url, progressCallback, hooks);
|
|
521
|
-
}
|
|
522
|
-
const downloadKey = createHttpDownloadKey(url);
|
|
523
|
-
hooks?.onDownloadKey?.(downloadKey);
|
|
524
|
-
const cacheDir = getModelsCacheDir();
|
|
525
|
-
const sourceHash = generateShortHash(url);
|
|
526
|
-
const modelPath = `${cacheDir}/${sourceHash}_${filename}`;
|
|
527
|
-
const result = startOrJoinDownload(downloadKey, async (ctx) => {
|
|
528
|
-
try {
|
|
529
|
-
// Check if already cached
|
|
530
|
-
const cachedPath = await validateCachedFile(modelPath, url, ctx.signal);
|
|
531
|
-
if (cachedPath) {
|
|
532
|
-
hooks?.markCacheHit?.();
|
|
533
|
-
ctx.setCacheHit(true);
|
|
534
|
-
try {
|
|
535
|
-
const stats = await fsPromises.stat(cachedPath);
|
|
536
|
-
ctx.broadcastProgress({
|
|
537
|
-
type: 'modelProgress',
|
|
538
|
-
downloaded: stats.size,
|
|
539
|
-
total: stats.size,
|
|
540
|
-
percentage: 100,
|
|
541
|
-
downloadKey
|
|
542
|
-
});
|
|
543
|
-
}
|
|
544
|
-
catch (error) {
|
|
545
|
-
logger.debug('Failed to get file stats for progress callback', {
|
|
546
|
-
path: cachedPath,
|
|
547
|
-
error
|
|
548
|
-
});
|
|
549
|
-
}
|
|
550
|
-
return cachedPath;
|
|
551
|
-
}
|
|
552
|
-
// Download the file
|
|
553
|
-
hooks?.markCacheMiss?.();
|
|
554
|
-
ctx.setCacheHit(false);
|
|
555
|
-
await performHttpDownloadWithResume(url, modelPath, downloadKey, ctx.broadcastProgress, ctx.signal);
|
|
556
|
-
try {
|
|
557
|
-
const stats = await fsPromises.stat(modelPath);
|
|
558
|
-
ctx.broadcastProgress({
|
|
559
|
-
type: 'modelProgress',
|
|
560
|
-
downloaded: stats.size,
|
|
561
|
-
total: stats.size,
|
|
562
|
-
percentage: 100,
|
|
563
|
-
downloadKey
|
|
564
|
-
});
|
|
565
|
-
}
|
|
566
|
-
catch (error) {
|
|
567
|
-
logger.debug('Failed to get file stats for final progress update', {
|
|
568
|
-
path: modelPath,
|
|
569
|
-
error
|
|
570
|
-
});
|
|
571
|
-
}
|
|
572
|
-
return modelPath;
|
|
573
|
-
}
|
|
574
|
-
catch (error) {
|
|
575
|
-
logger.error('❌ Error downloading model:', error instanceof Error ? error.message : String(error));
|
|
576
|
-
// Check if we should delete the partial file (clearCache was requested)
|
|
577
|
-
if (error instanceof DownloadCancelledError) {
|
|
578
|
-
if (ctx.shouldClearCache()) {
|
|
579
|
-
logger.info('🗑️ Clearing cache - deleting partial file');
|
|
580
|
-
try {
|
|
581
|
-
await fsPromises.unlink(modelPath);
|
|
582
|
-
logger.info(`✅ Deleted partial file: ${modelPath}`);
|
|
583
|
-
}
|
|
584
|
-
catch (error) {
|
|
585
|
-
logger.debug('Failed to delete partial file during cleanup', {
|
|
586
|
-
path: modelPath,
|
|
587
|
-
error
|
|
588
|
-
});
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
else {
|
|
592
|
-
logger.info('📥 Download paused - partial file preserved for resume');
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
const errorToThrow = error instanceof Error ? error : new Error(String(error));
|
|
596
|
-
throw errorToThrow;
|
|
597
|
-
}
|
|
598
|
-
}, progressCallback, hooks?.requestBinding);
|
|
599
|
-
return applyJoinedDownloadStats(result, hooks);
|
|
600
|
-
}
|
|
601
|
-
async function downloadShardedModelFromHttp(shardUrl, progressCallback, hooks) {
|
|
602
|
-
const config = getSDKConfig();
|
|
603
|
-
const concurrency = config.httpDownloadConcurrency ?? DEFAULT_CONCURRENCY;
|
|
604
|
-
const { shardUrls: shardInfos, cacheKey } = parsePatternBasedShardUrl(shardUrl);
|
|
605
|
-
const downloadKey = `http-sharded:${cacheKey}`;
|
|
606
|
-
hooks?.onDownloadKey?.(downloadKey);
|
|
607
|
-
logger.info(`📥 HTTP sharded download: ${shardInfos.length} shards detected from ${shardUrl}`);
|
|
608
|
-
const shardDir = getShardedModelCacheDir(cacheKey);
|
|
609
|
-
const result = startOrJoinDownload(downloadKey, async (ctx) => {
|
|
610
|
-
try {
|
|
611
|
-
const shardStates = await Promise.all(shardInfos.map(async (shard, index) => {
|
|
612
|
-
const shardPath = path.join(shardDir, shard.filename);
|
|
613
|
-
let expectedSize = 0;
|
|
614
|
-
try {
|
|
615
|
-
const response = await fetch(shard.url, {
|
|
616
|
-
method: 'HEAD',
|
|
617
|
-
signal: ctx.signal
|
|
618
|
-
});
|
|
619
|
-
expectedSize = parseInt(response.headers.get('content-length') || '0');
|
|
620
|
-
}
|
|
621
|
-
catch (error) {
|
|
622
|
-
logger.warn('Failed to get shard size via HEAD request', {
|
|
623
|
-
url: shard.url,
|
|
624
|
-
error
|
|
625
|
-
});
|
|
626
|
-
}
|
|
627
|
-
return {
|
|
628
|
-
index,
|
|
629
|
-
shard,
|
|
630
|
-
shardPath,
|
|
631
|
-
expectedSize,
|
|
632
|
-
downloadedBytes: 0,
|
|
633
|
-
isComplete: false
|
|
634
|
-
};
|
|
635
|
-
}));
|
|
636
|
-
const overallTotal = shardStates.reduce((sum, s) => sum + s.expectedSize, 0);
|
|
637
|
-
logger.info(`📏 Total size: ${overallTotal} bytes (${(overallTotal / 1024 / 1024).toFixed(2)} MB)`);
|
|
638
|
-
const cacheChecks = await Promise.all(shardStates.map(async (state) => {
|
|
639
|
-
const cached = await validateCachedFile(state.shardPath, state.shard.url, ctx.signal);
|
|
640
|
-
return { state, isCached: cached !== null };
|
|
641
|
-
}));
|
|
642
|
-
const shardsToDownload = cacheChecks.filter((c) => !c.isCached).map((c) => c.state);
|
|
643
|
-
for (const check of cacheChecks) {
|
|
644
|
-
if (check.isCached) {
|
|
645
|
-
check.state.isComplete = true;
|
|
646
|
-
check.state.downloadedBytes = check.state.expectedSize;
|
|
647
|
-
}
|
|
648
|
-
}
|
|
649
|
-
logger.info(`📥 ${shardsToDownload.length} of ${shardInfos.length} shards need downloading`);
|
|
650
|
-
if (shardsToDownload.length === 0) {
|
|
651
|
-
hooks?.markCacheHit?.();
|
|
652
|
-
ctx.setCacheHit(true);
|
|
653
|
-
}
|
|
654
|
-
else {
|
|
655
|
-
hooks?.markCacheMiss?.();
|
|
656
|
-
ctx.setCacheHit(false);
|
|
657
|
-
}
|
|
658
|
-
await downloadShardsWithConcurrency(shardsToDownload, shardStates, concurrency, ctx.signal, downloadKey, overallTotal, ctx.broadcastProgress);
|
|
659
|
-
logger.info(`✅ All ${shardInfos.length} shards downloaded successfully`);
|
|
660
|
-
await extractTensorsFromShards(shardDir, shardInfos[0].filename);
|
|
661
|
-
return path.join(shardDir, shardInfos[0].filename);
|
|
662
|
-
}
|
|
663
|
-
catch (error) {
|
|
664
|
-
logger.error('❌ Error during sharded download:', error instanceof Error ? error.message : String(error));
|
|
665
|
-
if (error instanceof DownloadCancelledError) {
|
|
666
|
-
if (ctx.shouldClearCache()) {
|
|
667
|
-
logger.info('🗑️ Clearing cache - deleting partial shard files');
|
|
668
|
-
try {
|
|
669
|
-
await fsPromises.rm(shardDir, { recursive: true, force: true });
|
|
670
|
-
logger.info(`✅ Deleted shard directory: ${shardDir}`);
|
|
671
|
-
}
|
|
672
|
-
catch (cleanupError) {
|
|
673
|
-
logger.debug('Failed to delete shard directory during cleanup', {
|
|
674
|
-
path: shardDir,
|
|
675
|
-
error: cleanupError
|
|
676
|
-
});
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
throw error;
|
|
681
|
-
}
|
|
682
|
-
}, progressCallback, hooks?.requestBinding);
|
|
683
|
-
return applyJoinedDownloadStats(result, hooks);
|
|
684
|
-
}
|
|
685
|
-
async function downloadShardedModelFromArchive(archiveUrl, progressCallback, hooks) {
|
|
686
|
-
const filename = extractFilenameFromUrl(archiveUrl);
|
|
687
|
-
const sourceHash = generateShortHash(archiveUrl);
|
|
688
|
-
const downloadKey = `http-archive:${sourceHash}`;
|
|
689
|
-
hooks?.onDownloadKey?.(downloadKey);
|
|
690
|
-
logger.info(`📦 HTTP archive download: ${filename}`);
|
|
691
|
-
const extractDir = getShardedModelCacheDir(sourceHash);
|
|
692
|
-
const archivePath = path.join(extractDir, `${sourceHash}_${filename}`);
|
|
693
|
-
const result = startOrJoinDownload(downloadKey, async (ctx) => {
|
|
694
|
-
try {
|
|
695
|
-
await fsPromises.mkdir(extractDir, { recursive: true });
|
|
696
|
-
const files = await fsPromises.readdir(extractDir);
|
|
697
|
-
const shardedFile = files.find((f) => detectShardedModel(String(f)).isSharded);
|
|
698
|
-
if (!shardedFile) {
|
|
699
|
-
hooks?.markCacheMiss?.();
|
|
700
|
-
ctx.setCacheHit(false);
|
|
701
|
-
return downloadAndExtractArchive();
|
|
702
|
-
}
|
|
703
|
-
const shardFilename = String(shardedFile);
|
|
704
|
-
const allShardsExist = await checkAllShardsExist(extractDir, shardFilename);
|
|
705
|
-
if (!allShardsExist) {
|
|
706
|
-
logger.warn(`⚠️ Incomplete shards found, re-downloading archive`);
|
|
707
|
-
hooks?.markCacheMiss?.();
|
|
708
|
-
ctx.setCacheHit(false);
|
|
709
|
-
return downloadAndExtractArchive();
|
|
710
|
-
}
|
|
711
|
-
const shardFilenames = generateShardFilenames(shardFilename);
|
|
712
|
-
const firstShard = path.join(extractDir, shardFilenames[0]);
|
|
713
|
-
const isComplete = await validateShardedModelCache(extractDir, shardFilename);
|
|
714
|
-
if (isComplete) {
|
|
715
|
-
logger.info(`✅ Archive already extracted: ${extractDir}`);
|
|
716
|
-
hooks?.markCacheHit?.();
|
|
717
|
-
ctx.setCacheHit(true);
|
|
718
|
-
ctx.broadcastProgress({
|
|
719
|
-
type: 'modelProgress',
|
|
720
|
-
downloaded: 1,
|
|
721
|
-
total: 1,
|
|
722
|
-
percentage: 100,
|
|
723
|
-
downloadKey
|
|
724
|
-
});
|
|
725
|
-
return firstShard;
|
|
726
|
-
}
|
|
727
|
-
logger.info(`📝 All shards present but tensors.txt missing, extracting tensors...`);
|
|
728
|
-
try {
|
|
729
|
-
await extractTensorsFromShards(extractDir, shardFilename);
|
|
730
|
-
logger.info(`✅ Tensors extracted successfully`);
|
|
731
|
-
hooks?.markCacheHit?.();
|
|
732
|
-
ctx.setCacheHit(true);
|
|
733
|
-
ctx.broadcastProgress({
|
|
734
|
-
type: 'modelProgress',
|
|
735
|
-
downloaded: 1,
|
|
736
|
-
total: 1,
|
|
737
|
-
percentage: 100,
|
|
738
|
-
downloadKey
|
|
739
|
-
});
|
|
740
|
-
return firstShard;
|
|
741
|
-
}
|
|
742
|
-
catch (error) {
|
|
743
|
-
logger.warn(`Failed to extract tensors, will re-download archive`, {
|
|
744
|
-
error
|
|
745
|
-
});
|
|
746
|
-
hooks?.markCacheMiss?.();
|
|
747
|
-
ctx.setCacheHit(false);
|
|
748
|
-
return downloadAndExtractArchive();
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
catch (error) {
|
|
752
|
-
logger.error('❌ Error downloading/extracting archive:', error);
|
|
753
|
-
if (error instanceof DownloadCancelledError) {
|
|
754
|
-
if (ctx.shouldClearCache()) {
|
|
755
|
-
logger.info('🗑️ Clearing cache - deleting archive extract directory');
|
|
756
|
-
try {
|
|
757
|
-
await fsPromises.rm(extractDir, {
|
|
758
|
-
recursive: true,
|
|
759
|
-
force: true
|
|
760
|
-
});
|
|
761
|
-
logger.info(`✅ Deleted extract directory: ${extractDir}`);
|
|
762
|
-
}
|
|
763
|
-
catch (cleanupError) {
|
|
764
|
-
logger.debug('Failed to delete extract directory during cleanup', {
|
|
765
|
-
path: extractDir,
|
|
766
|
-
error: cleanupError
|
|
767
|
-
});
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
throw error;
|
|
772
|
-
}
|
|
773
|
-
async function downloadAndExtractArchive() {
|
|
774
|
-
await performHttpDownloadWithResume(archiveUrl, archivePath, downloadKey, ctx.broadcastProgress, ctx.signal);
|
|
775
|
-
logger.info(`✅ Archive downloaded, extracting to: ${extractDir}`);
|
|
776
|
-
const firstShardPath = await extractAndValidateShardedArchive(archivePath, extractDir, ctx.signal);
|
|
777
|
-
try {
|
|
778
|
-
await fsPromises.unlink(archivePath);
|
|
779
|
-
logger.info(`🗑️ Cleaned up archive file: ${archivePath}`);
|
|
780
|
-
}
|
|
781
|
-
catch (cleanupError) {
|
|
782
|
-
logger.debug('Failed to delete archive file during cleanup', {
|
|
783
|
-
path: archivePath,
|
|
784
|
-
error: cleanupError
|
|
785
|
-
});
|
|
786
|
-
}
|
|
787
|
-
return firstShardPath;
|
|
788
|
-
}
|
|
789
|
-
}, progressCallback, hooks?.requestBinding);
|
|
790
|
-
return applyJoinedDownloadStats(result, hooks);
|
|
791
|
-
}
|
|
792
|
-
async function downloadShardsWithConcurrency(shardsToDownload, allShards, concurrency, signal, downloadKey, overallTotal, progressCallback) {
|
|
793
|
-
const queue = [...shardsToDownload];
|
|
794
|
-
const inFlight = new Set();
|
|
795
|
-
while (queue.length > 0 || inFlight.size > 0) {
|
|
796
|
-
if (signal.aborted) {
|
|
797
|
-
throw new DownloadCancelledError();
|
|
798
|
-
}
|
|
799
|
-
while (queue.length > 0 && inFlight.size < concurrency) {
|
|
800
|
-
const state = queue.shift();
|
|
801
|
-
const downloadPromise = (async () => {
|
|
802
|
-
logger.info(`📥 Downloading shard ${state.index + 1}: ${state.shard.filename}`);
|
|
803
|
-
await performHttpDownloadWithResume(state.shard.url, state.shardPath, downloadKey, (progress) => {
|
|
804
|
-
state.downloadedBytes = progress.downloaded;
|
|
805
|
-
if (progressCallback) {
|
|
806
|
-
const overallDownloaded = allShards.reduce((sum, s) => sum + s.downloadedBytes, 0);
|
|
807
|
-
progressCallback({
|
|
808
|
-
type: 'modelProgress',
|
|
809
|
-
downloaded: state.downloadedBytes,
|
|
810
|
-
total: state.expectedSize,
|
|
811
|
-
percentage: calculatePercentage(state.downloadedBytes, state.expectedSize),
|
|
812
|
-
downloadKey,
|
|
813
|
-
shardInfo: {
|
|
814
|
-
currentShard: state.index + 1,
|
|
815
|
-
totalShards: allShards.length,
|
|
816
|
-
shardName: state.shard.filename,
|
|
817
|
-
overallDownloaded,
|
|
818
|
-
overallTotal,
|
|
819
|
-
overallPercentage: calculatePercentage(overallDownloaded, overallTotal)
|
|
820
|
-
}
|
|
821
|
-
});
|
|
822
|
-
}
|
|
823
|
-
}, signal);
|
|
824
|
-
logger.info(`✅ Shard ${state.index + 1} complete: ${state.shard.filename}`);
|
|
825
|
-
})().finally(() => {
|
|
826
|
-
inFlight.delete(downloadPromise);
|
|
827
|
-
});
|
|
828
|
-
inFlight.add(downloadPromise);
|
|
829
|
-
}
|
|
830
|
-
if (inFlight.size > 0) {
|
|
831
|
-
await Promise.race(inFlight);
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
// Mark all downloaded shards as complete
|
|
835
|
-
for (const state of shardsToDownload) {
|
|
836
|
-
state.isComplete = true;
|
|
837
|
-
state.downloadedBytes = state.expectedSize;
|
|
838
|
-
}
|
|
839
|
-
if (progressCallback) {
|
|
840
|
-
progressCallback({
|
|
841
|
-
type: 'modelProgress',
|
|
842
|
-
downloaded: overallTotal,
|
|
843
|
-
total: overallTotal,
|
|
844
|
-
percentage: 100,
|
|
845
|
-
downloadKey,
|
|
846
|
-
shardInfo: {
|
|
847
|
-
currentShard: allShards.length,
|
|
848
|
-
totalShards: allShards.length,
|
|
849
|
-
shardName: allShards[allShards.length - 1].shard.filename,
|
|
850
|
-
overallDownloaded: overallTotal,
|
|
851
|
-
overallTotal,
|
|
852
|
-
overallPercentage: 100
|
|
853
|
-
}
|
|
854
|
-
});
|
|
855
|
-
}
|
|
856
|
-
}
|