@qvac/sdk 0.8.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +24 -1
- package/README.md +191 -373
- package/dist/client/api/cancel.d.ts +4 -22
- package/dist/client/api/cancel.js +6 -25
- package/dist/client/api/completion-stream.d.ts +30 -24
- package/dist/client/api/completion-stream.js +70 -121
- package/dist/client/api/delete-cache.js +2 -3
- package/dist/client/api/download-asset.d.ts +5 -6
- package/dist/client/api/download-asset.js +20 -16
- package/dist/client/api/embed.d.ts +4 -21
- package/dist/client/api/embed.js +14 -4
- package/dist/client/api/index.d.ts +2 -6
- package/dist/client/api/index.js +2 -6
- package/dist/client/api/load-model.d.ts +21 -49
- package/dist/client/api/load-model.js +134 -40
- package/dist/client/api/logging-stream.d.ts +4 -7
- package/dist/client/api/logging-stream.js +5 -9
- package/dist/client/api/ping.d.ts +11 -0
- package/dist/client/api/ping.js +18 -0
- package/dist/client/api/provide.d.ts +1 -1
- package/dist/client/api/provide.js +3 -4
- package/dist/client/api/rag.d.ts +21 -216
- package/dist/client/api/rag.js +36 -396
- package/dist/client/api/stop-provider.d.ts +1 -1
- package/dist/client/api/stop-provider.js +3 -4
- package/dist/client/api/text-to-speech.d.ts +2 -2
- package/dist/client/api/text-to-speech.js +3 -3
- package/dist/client/api/transcribe.d.ts +5 -9
- package/dist/client/api/transcribe.js +9 -11
- package/dist/client/api/translate.d.ts +3 -3
- package/dist/client/api/translate.js +15 -15
- package/dist/client/api/unload-model.d.ts +1 -5
- package/dist/client/api/unload-model.js +4 -17
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/logging-stream-registry.d.ts +1 -1
- package/dist/client/logging-stream-registry.js +13 -14
- package/dist/client/rpc/bare-client.d.ts +139 -3
- package/dist/client/rpc/bare-client.js +16 -117
- package/dist/client/rpc/bare-rpc-client.d.ts +4 -0
- package/dist/client/rpc/bare-rpc-client.js +87 -0
- package/dist/client/rpc/expo-rpc-client.d.ts +1 -2
- package/dist/client/rpc/expo-rpc-client.js +14 -57
- package/dist/client/rpc/node-rpc-client.d.ts +8 -3
- package/dist/client/rpc/node-rpc-client.js +62 -218
- package/dist/client/rpc/rpc-client.d.ts +2 -3
- package/dist/client/rpc/rpc-client.js +49 -184
- package/dist/constants/audio.d.ts +2 -1
- package/dist/constants/audio.js +17 -1
- package/dist/constants/index.d.ts +0 -1
- package/dist/constants/index.js +0 -1
- package/dist/examples/delegated-inference/consumer.js +2 -3
- package/dist/examples/download-with-cancel.js +4 -3
- package/dist/examples/embed-hyperdrive.d.ts +2 -0
- package/dist/examples/embed-hyperdrive.js +19 -0
- package/dist/examples/kv-cache-cleanup.js +2 -1
- package/dist/examples/kv-cache-custom-key.js +2 -16
- package/dist/examples/kv-cache-example.js +2 -1
- package/dist/examples/llamacpp-file-logging.d.ts +2 -0
- package/dist/examples/{logging-file-transport.js → llamacpp-file-logging.js} +8 -3
- package/dist/examples/llamacpp-filesystem.js +2 -2
- package/dist/examples/llamacpp-http.js +1 -0
- package/dist/examples/llamacpp-hyperdrive.d.ts +2 -0
- package/dist/examples/{llamacpp-p2p.js → llamacpp-hyperdrive.js} +2 -1
- package/dist/examples/llamacpp-multimodal.js +4 -3
- package/dist/examples/llamacpp-native-tools.js +30 -72
- package/dist/examples/multi-model-demo.js +3 -2
- package/dist/examples/parallel-download.js +14 -46
- package/dist/examples/rag/rag-chromadb.js +1 -0
- package/dist/examples/rag/rag-hyperdb-workspaces.d.ts +2 -0
- package/dist/examples/rag/rag-hyperdb-workspaces.js +107 -0
- package/dist/examples/rag/rag-hyperdb.d.ts +2 -0
- package/dist/examples/rag/{rag-hyperdb/ingest.js → rag-hyperdb.js} +5 -10
- package/dist/examples/rag/rag-lancedb.js +1 -0
- package/dist/examples/rag/rag-sqlite.js +1 -0
- package/dist/examples/seed-hyperdrive.d.ts +2 -0
- package/dist/examples/text-to-speech.d.ts +3 -0
- package/dist/examples/{tts/utils.js → text-to-speech.js} +63 -18
- package/dist/examples/translation/translation-indic.js +1 -4
- package/dist/examples/translation/translation-llm-context.js +1 -0
- package/dist/examples/translation/translation-llm.js +2 -2
- package/dist/examples/translation/translation-opus.js +3 -6
- package/dist/examples/translation/translation-stream.js +3 -3
- package/dist/examples/whispercpp-filesystem.js +43 -0
- package/dist/examples/{transcription/whispercpp-microphone-record.js → whispercpp-microphone-record.js} +9 -8
- package/dist/expo/plugins/index.d.ts +0 -3
- package/dist/expo/plugins/index.js +0 -3
- package/dist/expo/plugins/withMobileBundle.d.ts +2 -5
- package/dist/expo/plugins/withMobileBundle.js +40 -121
- package/dist/expo/plugins/withQvacSDK.d.ts +0 -4
- package/dist/expo/plugins/withQvacSDK.js +1 -26
- package/dist/index.d.ts +4 -9
- package/dist/index.js +5 -11
- package/dist/logging/base-logger.js +16 -26
- package/dist/logging/index.d.ts +1 -7
- package/dist/logging/index.js +1 -7
- package/dist/logging/logger.d.ts +2 -0
- package/dist/logging/logger.js +6 -11
- package/dist/logging/stream-logger.d.ts +1 -1
- package/dist/logging/stream-logger.js +3 -6
- package/dist/logging/transport.js +2 -2
- package/dist/logging/types.d.ts +0 -2
- package/dist/logging/utils.d.ts +0 -2
- package/dist/logging/utils.js +0 -62
- package/dist/models/{registry → hyperdrive}/index.js +1 -1
- package/dist/models/hyperdrive/models.d.ts +619 -0
- package/dist/models/hyperdrive/models.js +693 -0
- package/dist/schemas/cancel.d.ts +0 -18
- package/dist/schemas/cancel.js +0 -7
- package/dist/schemas/common.d.ts +166 -3012
- package/dist/schemas/common.js +4 -27
- package/dist/schemas/completion-stream.d.ts +60 -31
- package/dist/schemas/completion-stream.js +44 -20
- package/dist/schemas/delegate.d.ts +0 -9
- package/dist/schemas/delegate.js +2 -6
- package/dist/schemas/download-asset.d.ts +3 -125
- package/dist/schemas/download-asset.js +5 -22
- package/dist/schemas/embed.d.ts +3 -3
- package/dist/schemas/embed.js +2 -9
- package/dist/schemas/index.d.ts +2 -20
- package/dist/schemas/index.js +2 -20
- package/dist/schemas/llamacpp-config.d.ts +12 -243
- package/dist/schemas/llamacpp-config.js +14 -50
- package/dist/schemas/load-model.d.ts +893 -14471
- package/dist/schemas/load-model.js +72 -325
- package/dist/schemas/logging-stream.d.ts +4 -11
- package/dist/schemas/logging-stream.js +3 -4
- package/dist/schemas/ping.d.ts +11 -0
- package/dist/schemas/ping.js +8 -0
- package/dist/schemas/rag.d.ts +52 -183
- package/dist/schemas/rag.js +23 -152
- package/dist/schemas/text-to-speech.d.ts +1 -692
- package/dist/schemas/text-to-speech.js +3 -35
- package/dist/schemas/transcription.d.ts +0 -3
- package/dist/schemas/transcription.js +0 -1
- package/dist/schemas/translate.d.ts +23 -68
- package/dist/schemas/translate.js +11 -37
- package/dist/schemas/translation-config.d.ts +7 -810
- package/dist/schemas/translation-config.js +7 -113
- package/dist/schemas/unload-model.d.ts +0 -2
- package/dist/schemas/unload-model.js +0 -2
- package/dist/schemas/whispercpp-config.d.ts +25 -0
- package/dist/schemas/whispercpp-config.js +18 -0
- package/dist/server/bare/{ops → addons}/cancel.js +1 -2
- package/dist/server/bare/addons/index.d.ts +4 -0
- package/dist/server/bare/addons/index.js +3 -0
- package/dist/server/bare/addons/llamacpp/create-model.d.ts +5 -0
- package/dist/server/bare/addons/llamacpp/create-model.js +67 -0
- package/dist/server/bare/{plugins/llamacpp-completion/ops → addons/llamacpp/handlers}/completion-stream.d.ts +1 -2
- package/dist/server/bare/{plugins/llamacpp-completion/ops → addons/llamacpp/handlers}/completion-stream.js +87 -54
- package/dist/server/bare/addons/llamacpp/handlers/embed.d.ts +4 -0
- package/dist/server/bare/{ops → addons/llamacpp/handlers}/embed.js +7 -22
- package/dist/server/bare/addons/llamacpp/index.d.ts +4 -0
- package/dist/server/bare/addons/llamacpp/index.js +3 -0
- package/dist/server/bare/{ops → addons/llamacpp}/kv-cache-utils.d.ts +1 -4
- package/dist/server/bare/{ops → addons/llamacpp}/kv-cache-utils.js +19 -54
- package/dist/server/bare/addons/load-model.d.ts +3 -0
- package/dist/server/bare/addons/load-model.js +62 -0
- package/dist/server/bare/addons/translation/create-model.d.ts +4 -0
- package/dist/server/bare/addons/translation/create-model.js +45 -0
- package/dist/server/bare/addons/translation/handlers/translate.d.ts +3 -0
- package/dist/server/bare/{ops → addons/translation/handlers}/translate.js +14 -47
- package/dist/server/bare/addons/translation/index.d.ts +3 -0
- package/dist/server/bare/addons/translation/index.js +2 -0
- package/dist/server/bare/addons/tts/create-model.d.ts +6 -0
- package/dist/server/bare/addons/tts/create-model.js +40 -0
- package/dist/server/bare/{plugins/onnx-tts/ops → addons/tts/handlers}/text-to-speech.js +3 -25
- package/dist/server/bare/addons/tts/index.d.ts +3 -0
- package/dist/server/bare/addons/tts/index.js +2 -0
- package/dist/server/bare/addons/unload-model.js +20 -0
- package/dist/server/bare/addons/whispercpp/create-model.d.ts +6 -0
- package/dist/server/bare/addons/whispercpp/create-model.js +55 -0
- package/dist/server/bare/addons/whispercpp/handlers/transcribe-stream.d.ts +3 -0
- package/dist/server/bare/addons/whispercpp/handlers/transcribe-stream.js +48 -0
- package/dist/server/bare/addons/whispercpp/index.d.ts +3 -0
- package/dist/server/bare/addons/whispercpp/index.js +2 -0
- package/dist/server/bare/delegate-rpc-client.d.ts +0 -6
- package/dist/server/bare/delegate-rpc-client.js +45 -187
- package/dist/server/bare/hyperswarm.d.ts +0 -3
- package/dist/server/bare/hyperswarm.js +6 -29
- package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.d.ts +1 -1
- package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js +10 -9
- package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.d.ts +4 -7
- package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js +14 -13
- package/dist/server/bare/rag-hyperdb/handlers/search.js +10 -10
- package/dist/server/bare/rag-hyperdb/index.d.ts +1 -8
- package/dist/server/bare/rag-hyperdb/index.js +1 -8
- package/dist/server/bare/rag-hyperdb/rag-manager.d.ts +5 -0
- package/dist/server/bare/rag-hyperdb/rag-manager.js +65 -0
- package/dist/server/bare/registry/logging-stream-registry.d.ts +7 -24
- package/dist/server/bare/registry/logging-stream-registry.js +20 -99
- package/dist/server/bare/registry/model-registry.d.ts +26 -16
- package/dist/server/bare/registry/model-registry.js +13 -34
- package/dist/server/error-handlers.d.ts +2 -3
- package/dist/server/error-handlers.js +10 -15
- package/dist/server/http-server.d.ts +2 -0
- package/dist/server/http-server.js +189 -0
- package/dist/server/rpc/create-server.js +3 -5
- package/dist/server/rpc/handle-request.d.ts +9 -0
- package/dist/server/rpc/handle-request.js +242 -92
- package/dist/server/rpc/handlers/cancelHandler.js +3 -14
- package/dist/server/rpc/handlers/completion-stream-delegated.d.ts +1 -3
- package/dist/server/rpc/handlers/completion-stream-delegated.js +8 -20
- package/dist/server/rpc/handlers/completion-stream.js +41 -2
- package/dist/server/rpc/handlers/delete-cache.js +2 -4
- package/dist/server/rpc/handlers/download-asset.js +6 -59
- package/dist/server/rpc/handlers/embed.js +19 -2
- package/dist/server/rpc/handlers/index.d.ts +0 -13
- package/dist/server/rpc/handlers/index.js +0 -13
- package/dist/server/rpc/handlers/load-model/download-manager.d.ts +11 -12
- package/dist/server/rpc/handlers/load-model/download-manager.js +28 -43
- package/dist/server/rpc/handlers/load-model/http.d.ts +1 -2
- package/dist/server/rpc/handlers/load-model/http.js +55 -424
- package/dist/server/rpc/handlers/load-model/hyperdrive.d.ts +1 -2
- package/dist/server/rpc/handlers/load-model/hyperdrive.js +171 -364
- package/dist/server/rpc/handlers/load-model/index.d.ts +2 -2
- package/dist/server/rpc/handlers/load-model/index.js +2 -2
- package/dist/server/rpc/handlers/load-model/resolve.d.ts +1 -3
- package/dist/server/rpc/handlers/load-model/resolve.js +29 -110
- package/dist/server/rpc/handlers/load-model-delegated.d.ts +2 -6
- package/dist/server/rpc/handlers/load-model-delegated.js +20 -60
- package/dist/server/rpc/handlers/{load-model/handler.d.ts → load-model.d.ts} +2 -2
- package/dist/server/rpc/handlers/load-model.js +57 -0
- package/dist/server/rpc/handlers/logging-stream.js +4 -4
- package/dist/server/rpc/handlers/provideHandler/connection.js +10 -12
- package/dist/server/rpc/handlers/provideHandler/handler.js +17 -20
- package/dist/server/rpc/handlers/provideHandler/proxy.js +6 -8
- package/dist/server/rpc/handlers/rag.d.ts +2 -2
- package/dist/server/rpc/handlers/rag.js +43 -130
- package/dist/server/rpc/handlers/stopProvideHandler.js +2 -6
- package/dist/server/rpc/handlers/text-to-speech.js +5 -2
- package/dist/server/rpc/handlers/transcribe-stream.js +24 -2
- package/dist/server/rpc/handlers/translate.js +49 -2
- package/dist/server/rpc/handlers/unload-model.js +3 -12
- package/dist/server/rpc/index.d.ts +1 -1
- package/dist/server/utils/audio/decoder.d.ts +1 -2
- package/dist/server/utils/audio/decoder.js +12 -49
- package/dist/server/utils/cache.d.ts +8 -19
- package/dist/server/utils/cache.js +15 -100
- package/dist/server/utils/hash.d.ts +5 -0
- package/dist/server/utils/hash.js +11 -0
- package/dist/server/utils/index.d.ts +2 -7
- package/dist/server/utils/index.js +2 -7
- package/dist/server/utils/tool-parser.js +14 -28
- package/dist/server/worker.d.ts +5 -4
- package/dist/server/worker.js +89 -22
- package/package.json +41 -148
- package/NOTICE +0 -695
- package/bare-imports.json +0 -44
- package/dist/client/api/get-model-info.d.ts +0 -36
- package/dist/client/api/get-model-info.js +0 -14
- package/dist/client/api/heartbeat.d.ts +0 -30
- package/dist/client/api/heartbeat.js +0 -38
- package/dist/client/api/invoke-plugin.d.ts +0 -15
- package/dist/client/api/invoke-plugin.js +0 -38
- package/dist/client/api/ocr.d.ts +0 -31
- package/dist/client/api/ocr.js +0 -88
- package/dist/client/api/registry.d.ts +0 -14
- package/dist/client/api/registry.js +0 -37
- package/dist/client/config-loader/config-utils.d.ts +0 -5
- package/dist/client/config-loader/config-utils.js +0 -20
- package/dist/client/config-loader/resolve-config.bare.d.ts +0 -9
- package/dist/client/config-loader/resolve-config.bare.js +0 -87
- package/dist/client/config-loader/resolve-config.expo.d.ts +0 -11
- package/dist/client/config-loader/resolve-config.expo.js +0 -62
- package/dist/client/config-loader/resolve-config.node.d.ts +0 -10
- package/dist/client/config-loader/resolve-config.node.js +0 -145
- package/dist/client/init-hooks.d.ts +0 -21
- package/dist/client/init-hooks.js +0 -66
- package/dist/client/rpc/expo-device-info.d.ts +0 -6
- package/dist/client/rpc/expo-device-info.js +0 -32
- package/dist/client/rpc/profiling/index.d.ts +0 -2
- package/dist/client/rpc/profiling/index.js +0 -1
- package/dist/client/rpc/profiling/profiler.d.ts +0 -27
- package/dist/client/rpc/profiling/profiler.js +0 -139
- package/dist/constants/registry.d.ts +0 -2
- package/dist/constants/registry.js +0 -1
- package/dist/examples/cache-management.d.ts +0 -2
- package/dist/examples/cache-management.js +0 -97
- package/dist/examples/config/blind-relay/blind-relay.config.d.ts +0 -5
- package/dist/examples/config/blind-relay/blind-relay.config.js +0 -7
- package/dist/examples/config/default/default.config.d.ts +0 -8
- package/dist/examples/config/default/default.config.js +0 -6
- package/dist/examples/config/plugins/plugins.config.d.ts +0 -5
- package/dist/examples/config/plugins/plugins.config.js +0 -4
- package/dist/examples/config-reload.d.ts +0 -2
- package/dist/examples/config-reload.js +0 -49
- package/dist/examples/default-config-usage.d.ts +0 -17
- package/dist/examples/default-config-usage.js +0 -47
- package/dist/examples/delegated-inference/consumer-profiled.d.ts +0 -2
- package/dist/examples/delegated-inference/consumer-profiled.js +0 -67
- package/dist/examples/download-with-blind-relays.d.ts +0 -2
- package/dist/examples/download-with-blind-relays.js +0 -49
- package/dist/examples/embed-p2p.d.ts +0 -2
- package/dist/examples/embed-p2p.js +0 -54
- package/dist/examples/llamacpp-p2p.d.ts +0 -2
- package/dist/examples/llamacpp-sharded.d.ts +0 -2
- package/dist/examples/llamacpp-sharded.js +0 -53
- package/dist/examples/logging-file-transport.d.ts +0 -2
- package/dist/examples/logging-streaming.d.ts +0 -2
- package/dist/examples/logging-streaming.js +0 -75
- package/dist/examples/mcp-websearch.d.ts +0 -13
- package/dist/examples/mcp-websearch.js +0 -176
- package/dist/examples/ocr-fasttext.d.ts +0 -2
- package/dist/examples/ocr-fasttext.js +0 -52
- package/dist/examples/plugins.d.ts +0 -14
- package/dist/examples/plugins.js +0 -129
- package/dist/examples/profiling/basic.d.ts +0 -2
- package/dist/examples/profiling/basic.js +0 -71
- package/dist/examples/profiling/per-call.d.ts +0 -2
- package/dist/examples/profiling/per-call.js +0 -30
- package/dist/examples/quickstart.d.ts +0 -2
- package/dist/examples/quickstart.js +0 -28
- package/dist/examples/rag/rag-hyperdb/cancellation.d.ts +0 -2
- package/dist/examples/rag/rag-hyperdb/cancellation.js +0 -75
- package/dist/examples/rag/rag-hyperdb/ingest.d.ts +0 -2
- package/dist/examples/rag/rag-hyperdb/pipeline.d.ts +0 -2
- package/dist/examples/rag/rag-hyperdb/pipeline.js +0 -74
- package/dist/examples/rag/rag-hyperdb/workspaces.d.ts +0 -2
- package/dist/examples/rag/rag-hyperdb/workspaces.js +0 -178
- package/dist/examples/registry-query.d.ts +0 -2
- package/dist/examples/registry-query.js +0 -87
- package/dist/examples/seed-p2p.d.ts +0 -2
- package/dist/examples/transcription/parakeet-ctc-filesystem.d.ts +0 -2
- package/dist/examples/transcription/parakeet-ctc-filesystem.js +0 -40
- package/dist/examples/transcription/parakeet-microphone-record.d.ts +0 -2
- package/dist/examples/transcription/parakeet-microphone-record.js +0 -95
- package/dist/examples/transcription/parakeet-sortformer.d.ts +0 -2
- package/dist/examples/transcription/parakeet-sortformer.js +0 -115
- package/dist/examples/transcription/parakeet-tdt-filesystem.d.ts +0 -2
- package/dist/examples/transcription/parakeet-tdt-filesystem.js +0 -44
- package/dist/examples/transcription/whispercpp-filesystem.js +0 -69
- package/dist/examples/transcription/whispercpp-prompt.d.ts +0 -2
- package/dist/examples/transcription/whispercpp-prompt.js +0 -67
- package/dist/examples/translation/translation-bergamot-batch.d.ts +0 -2
- package/dist/examples/translation/translation-bergamot-batch.js +0 -49
- package/dist/examples/translation/translation-bergamot-pivot.d.ts +0 -2
- package/dist/examples/translation/translation-bergamot-pivot.js +0 -73
- package/dist/examples/translation/translation-bergamot.d.ts +0 -2
- package/dist/examples/translation/translation-bergamot.js +0 -39
- package/dist/examples/translation/translation-llm-afriquegemma.d.ts +0 -2
- package/dist/examples/translation/translation-llm-afriquegemma.js +0 -39
- package/dist/examples/tts/chatterbox.d.ts +0 -2
- package/dist/examples/tts/chatterbox.js +0 -59
- package/dist/examples/tts/supertonic.d.ts +0 -2
- package/dist/examples/tts/supertonic.js +0 -51
- package/dist/examples/tts/utils.d.ts +0 -17
- package/dist/expo/plugins/resolve-sdk-package-dir.d.ts +0 -15
- package/dist/expo/plugins/resolve-sdk-package-dir.js +0 -31
- package/dist/expo/plugins/withAndroidArchitecture.d.ts +0 -8
- package/dist/expo/plugins/withAndroidArchitecture.js +0 -52
- package/dist/expo/plugins/withAndroidNdkVersion.d.ts +0 -8
- package/dist/expo/plugins/withAndroidNdkVersion.js +0 -31
- package/dist/expo/plugins/withDeviceInfo.d.ts +0 -10
- package/dist/expo/plugins/withDeviceInfo.js +0 -48
- package/dist/logging/addon.d.ts +0 -6
- package/dist/logging/addon.js +0 -75
- package/dist/logging/client-logger.d.ts +0 -3
- package/dist/logging/client-logger.js +0 -24
- package/dist/logging/namespaces.d.ts +0 -6
- package/dist/logging/namespaces.js +0 -6
- package/dist/logging/registry.d.ts +0 -31
- package/dist/logging/registry.js +0 -62
- package/dist/logging/server-logger.d.ts +0 -3
- package/dist/logging/server-logger.js +0 -16
- package/dist/models/registry/models.d.ts +0 -10417
- package/dist/models/registry/models.js +0 -10757
- package/dist/models/update-models/codegen.d.ts +0 -3
- package/dist/models/update-models/codegen.js +0 -135
- package/dist/models/update-models/history.d.ts +0 -24
- package/dist/models/update-models/history.js +0 -107
- package/dist/models/update-models/index.d.ts +0 -2
- package/dist/models/update-models/index.js +0 -125
- package/dist/models/update-models/naming.d.ts +0 -4
- package/dist/models/update-models/naming.js +0 -370
- package/dist/models/update-models/processing.d.ts +0 -8
- package/dist/models/update-models/processing.js +0 -67
- package/dist/models/update-models/registry.d.ts +0 -4
- package/dist/models/update-models/registry.js +0 -67
- package/dist/models/update-models/shards.d.ts +0 -4
- package/dist/models/update-models/shards.js +0 -57
- package/dist/models/update-models/types.d.ts +0 -60
- package/dist/models/update-models/types.js +0 -1
- package/dist/models/update-models/utils.d.ts +0 -3
- package/dist/models/update-models/utils.js +0 -21
- package/dist/pear/pre.d.ts +0 -18
- package/dist/pear/pre.js +0 -433
- package/dist/profiling/aggregator.d.ts +0 -15
- package/dist/profiling/aggregator.js +0 -100
- package/dist/profiling/clock.d.ts +0 -12
- package/dist/profiling/clock.js +0 -51
- package/dist/profiling/controller.d.ts +0 -33
- package/dist/profiling/controller.js +0 -123
- package/dist/profiling/envelope.d.ts +0 -10
- package/dist/profiling/envelope.js +0 -36
- package/dist/profiling/events.d.ts +0 -20
- package/dist/profiling/events.js +0 -37
- package/dist/profiling/exporters.d.ts +0 -10
- package/dist/profiling/exporters.js +0 -236
- package/dist/profiling/index.d.ts +0 -36
- package/dist/profiling/index.js +0 -31
- package/dist/profiling/ring-buffer.d.ts +0 -19
- package/dist/profiling/ring-buffer.js +0 -83
- package/dist/profiling/types.d.ts +0 -47
- package/dist/profiling/types.js +0 -1
- package/dist/schemas/archive.d.ts +0 -9
- package/dist/schemas/archive.js +0 -17
- package/dist/schemas/engine-addon-map.d.ts +0 -5
- package/dist/schemas/engine-addon-map.js +0 -52
- package/dist/schemas/get-model-info.d.ts +0 -120
- package/dist/schemas/get-model-info.js +0 -58
- package/dist/schemas/heartbeat.d.ts +0 -17
- package/dist/schemas/heartbeat.js +0 -10
- package/dist/schemas/json-schema.d.ts +0 -16
- package/dist/schemas/json-schema.js +0 -2
- 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 -148
- package/dist/schemas/model-src-utils.js +0 -35
- package/dist/schemas/model-types.d.ts +0 -183
- package/dist/schemas/model-types.js +0 -168
- package/dist/schemas/ocr.d.ts +0 -125
- package/dist/schemas/ocr.js +0 -57
- package/dist/schemas/path-validation.d.ts +0 -10
- package/dist/schemas/path-validation.js +0 -22
- package/dist/schemas/plugin.d.ts +0 -226
- package/dist/schemas/plugin.js +0 -158
- package/dist/schemas/profiling.d.ts +0 -105
- package/dist/schemas/profiling.js +0 -66
- package/dist/schemas/registry.d.ts +0 -356
- package/dist/schemas/registry.js +0 -93
- package/dist/schemas/reload-config.d.ts +0 -476
- package/dist/schemas/reload-config.js +0 -44
- package/dist/schemas/runtime-context.d.ts +0 -19
- package/dist/schemas/runtime-context.js +0 -7
- package/dist/schemas/sdk-config.d.ts +0 -2973
- package/dist/schemas/sdk-config.js +0 -136
- package/dist/schemas/sdk-errors-client.d.ts +0 -31
- package/dist/schemas/sdk-errors-client.js +0 -143
- 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 -89
- package/dist/schemas/sdk-errors-server.js +0 -451
- package/dist/schemas/shard.d.ts +0 -21
- package/dist/schemas/shard.js +0 -17
- package/dist/schemas/tools.d.ts +0 -65
- package/dist/schemas/tools.js +0 -43
- package/dist/schemas/transcription-config.d.ts +0 -383
- package/dist/schemas/transcription-config.js +0 -95
- package/dist/scripts/run-security-tests-bare.d.ts +0 -2
- package/dist/scripts/run-security-tests-bare.js +0 -78
- package/dist/scripts/run-security-tests.d.ts +0 -2
- package/dist/scripts/run-security-tests.js +0 -22
- package/dist/scripts/run-unit-tests.d.ts +0 -2
- package/dist/scripts/run-unit-tests.js +0 -17
- package/dist/server/bare/ops/embed.d.ts +0 -12
- package/dist/server/bare/ops/load-model.d.ts +0 -9
- package/dist/server/bare/ops/load-model.js +0 -85
- package/dist/server/bare/ops/transcribe.d.ts +0 -3
- package/dist/server/bare/ops/transcribe.js +0 -75
- package/dist/server/bare/ops/translate.d.ts +0 -5
- package/dist/server/bare/ops/unload-model.js +0 -41
- package/dist/server/bare/plugins/index.d.ts +0 -8
- package/dist/server/bare/plugins/index.js +0 -7
- package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.d.ts +0 -6
- package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js +0 -34
- package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +0 -220
- package/dist/server/bare/plugins/llamacpp-completion/plugin.js +0 -155
- package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +0 -54
- package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +0 -87
- package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +0 -367
- package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +0 -201
- package/dist/server/bare/plugins/onnx-ocr/ops/ocr-stream.d.ts +0 -10
- package/dist/server/bare/plugins/onnx-ocr/ops/ocr-stream.js +0 -110
- package/dist/server/bare/plugins/onnx-ocr/plugin.d.ts +0 -86
- package/dist/server/bare/plugins/onnx-ocr/plugin.js +0 -117
- package/dist/server/bare/plugins/onnx-tts/plugin.d.ts +0 -373
- package/dist/server/bare/plugins/onnx-tts/plugin.js +0 -182
- package/dist/server/bare/plugins/onnx-tts/wav-helper.d.ts +0 -14
- package/dist/server/bare/plugins/onnx-tts/wav-helper.js +0 -107
- package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +0 -317
- package/dist/server/bare/plugins/parakeet-transcription/plugin.js +0 -154
- package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +0 -237
- package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +0 -86
- 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-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 -18
- 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/rag-operation-manager.d.ts +0 -7
- package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +0 -39
- package/dist/server/bare/rag-hyperdb/rag-workspace-manager.d.ts +0 -15
- package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +0 -136
- package/dist/server/bare/registry/config-registry.d.ts +0 -14
- package/dist/server/bare/registry/config-registry.js +0 -82
- 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 -112
- package/dist/server/bare/registry/registry-client.d.ts +0 -5
- package/dist/server/bare/registry/registry-client.js +0 -37
- 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/utils/audio-input.d.ts +0 -10
- package/dist/server/bare/utils/audio-input.js +0 -33
- package/dist/server/bare/utils/loader-adapter.d.ts +0 -7
- package/dist/server/bare/utils/loader-adapter.js +0 -9
- package/dist/server/env.d.ts +0 -22
- package/dist/server/env.js +0 -57
- 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 -9
- package/dist/server/plugins/registry.js +0 -79
- package/dist/server/rpc/delegate-transport.d.ts +0 -19
- package/dist/server/rpc/delegate-transport.js +0 -236
- package/dist/server/rpc/delegate-utils.d.ts +0 -2
- package/dist/server/rpc/delegate-utils.js +0 -5
- package/dist/server/rpc/handler-registry.d.ts +0 -3
- package/dist/server/rpc/handler-registry.js +0 -113
- package/dist/server/rpc/handler-utils.d.ts +0 -23
- package/dist/server/rpc/handler-utils.js +0 -170
- package/dist/server/rpc/handlers/cancel-delegated.d.ts +0 -4
- package/dist/server/rpc/handlers/cancel-delegated.js +0 -71
- package/dist/server/rpc/handlers/get-model-info.d.ts +0 -3
- package/dist/server/rpc/handlers/get-model-info.js +0 -164
- 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/load-model/download-stats.d.ts +0 -6
- package/dist/server/rpc/handlers/load-model/download-stats.js +0 -87
- package/dist/server/rpc/handlers/load-model/handler.js +0 -187
- package/dist/server/rpc/handlers/load-model/registry.d.ts +0 -11
- package/dist/server/rpc/handlers/load-model/registry.js +0 -548
- package/dist/server/rpc/handlers/load-model/types.d.ts +0 -29
- package/dist/server/rpc/handlers/load-model/types.js +0 -1
- 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 -15
- package/dist/server/rpc/handlers/plugin-dispatch.js +0 -59
- package/dist/server/rpc/handlers/plugin-invoke.d.ts +0 -4
- package/dist/server/rpc/handlers/plugin-invoke.js +0 -92
- package/dist/server/rpc/handlers/registry.d.ts +0 -5
- package/dist/server/rpc/handlers/registry.js +0 -157
- 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/profiling/context.d.ts +0 -18
- package/dist/server/rpc/profiling/context.js +0 -38
- package/dist/server/rpc/profiling/delegation-profiler.d.ts +0 -32
- package/dist/server/rpc/profiling/delegation-profiler.js +0 -154
- 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 -199
- package/dist/server/rpc/profiling/operation-wrappers.d.ts +0 -18
- package/dist/server/rpc/profiling/operation-wrappers.js +0 -124
- package/dist/server/rpc/profiling/profiler.d.ts +0 -13
- package/dist/server/rpc/profiling/profiler.js +0 -97
- package/dist/server/utils/archive.d.ts +0 -4
- package/dist/server/utils/archive.js +0 -179
- package/dist/server/utils/checksum.d.ts +0 -4
- package/dist/server/utils/checksum.js +0 -31
- package/dist/server/utils/config-transform.d.ts +0 -3
- package/dist/server/utils/config-transform.js +0 -23
- package/dist/server/utils/formatting.d.ts +0 -19
- package/dist/server/utils/formatting.js +0 -61
- package/dist/server/utils/gguf-tensor-extractor.d.ts +0 -15
- package/dist/server/utils/gguf-tensor-extractor.js +0 -314
- package/dist/server/utils/path-security.d.ts +0 -12
- package/dist/server/utils/path-security.js +0 -25
- package/dist/server/utils/shard-utils.d.ts +0 -48
- package/dist/server/utils/shard-utils.js +0 -125
- package/dist/server/utils/tool-integration.d.ts +0 -13
- package/dist/server/utils/tool-integration.js +0 -43
- package/dist/server/worker-core.d.ts +0 -6
- package/dist/server/worker-core.js +0 -88
- package/dist/utils/errors-base.d.ts +0 -3
- package/dist/utils/errors-base.js +0 -13
- package/dist/utils/errors-client.d.ts +0 -137
- package/dist/utils/errors-client.js +0 -240
- package/dist/utils/errors-server.d.ts +0 -236
- package/dist/utils/errors-server.js +0 -412
- package/dist/utils/global-singleton.d.ts +0 -2
- package/dist/utils/global-singleton.js +0 -10
- package/dist/utils/mcp-adapter.d.ts +0 -12
- package/dist/utils/mcp-adapter.js +0 -103
- package/dist/utils/object.d.ts +0 -2
- package/dist/utils/object.js +0 -3
- package/dist/utils/path-sanitize.d.ts +0 -17
- package/dist/utils/path-sanitize.js +0 -54
- package/dist/utils/tool-helpers.d.ts +0 -25
- package/dist/utils/tool-helpers.js +0 -112
- package/expo/plugins/patches/android-link.mjs +0 -63
- package/expo/plugins/patches/ios-link.mjs +0 -63
- /package/dist/examples/{seed-p2p.js → seed-hyperdrive.js} +0 -0
- /package/dist/examples/{transcription/whispercpp-filesystem.d.ts → whispercpp-filesystem.d.ts} +0 -0
- /package/dist/examples/{transcription/whispercpp-microphone-record.d.ts → whispercpp-microphone-record.d.ts} +0 -0
- /package/dist/models/{registry → hyperdrive}/index.d.ts +0 -0
- /package/dist/server/bare/{ops → addons}/cancel.d.ts +0 -0
- /package/dist/server/bare/{plugins/onnx-tts/ops → addons/tts/handlers}/text-to-speech.d.ts +0 -0
- /package/dist/server/bare/{ops → addons}/unload-model.d.ts +0 -0
|
@@ -1,548 +0,0 @@
|
|
|
1
|
-
import { promises as fsPromises } from "bare-fs";
|
|
2
|
-
import path from "bare-path";
|
|
3
|
-
import { AbortController } from "bare-abort-controller";
|
|
4
|
-
import { getModelsCacheDir, generateShortHash, detectShardedModel, getShardedModelCacheDir, getShardPath, getOnnxModelPath, measureChecksum, extractTensorsFromShards, calculatePercentage, } from "../../../utils/index.js";
|
|
5
|
-
import { getModelByPath } from "../../../../models/registry/index.js";
|
|
6
|
-
import { getRegistryClient } from "../../../bare/registry/registry-client.js";
|
|
7
|
-
import { getActiveDownload, registerDownload, unregisterDownload, createRegistryDownloadKey, clearClearCacheFlag, } from "./download-manager.js";
|
|
8
|
-
import { ChecksumValidationFailedError, DownloadCancelledError, ModelNotFoundError, RegistryDownloadFailedError, } from "../../../../utils/errors-server.js";
|
|
9
|
-
import { getServerLogger } from "../../../../logging/index.js";
|
|
10
|
-
const logger = getServerLogger();
|
|
11
|
-
const REGISTRY_STREAM_TIMEOUT_MS = 60_000;
|
|
12
|
-
function buildBlobBinding(meta) {
|
|
13
|
-
return {
|
|
14
|
-
coreKey: meta.blobCoreKey,
|
|
15
|
-
blockOffset: meta.blobBlockOffset,
|
|
16
|
-
blockLength: meta.blobBlockLength,
|
|
17
|
-
byteOffset: meta.blobByteOffset,
|
|
18
|
-
byteLength: meta.expectedSize,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Validate a cached file against expected size and checksum.
|
|
23
|
-
*/
|
|
24
|
-
async function validateCachedFile(modelPath, modelFileName, expectedSize, expectedChecksum, hooks) {
|
|
25
|
-
try {
|
|
26
|
-
await fsPromises.access(modelPath);
|
|
27
|
-
const localStats = await fsPromises.stat(modelPath);
|
|
28
|
-
const localSize = localStats.size;
|
|
29
|
-
if (localSize === expectedSize) {
|
|
30
|
-
logger.info(`✅ Model cached with correct size: ${modelPath}`);
|
|
31
|
-
// Validate checksum if provided
|
|
32
|
-
if (expectedChecksum && expectedChecksum.length === 64) {
|
|
33
|
-
const checksum = await measureChecksum(modelPath, hooks);
|
|
34
|
-
if (checksum !== expectedChecksum) {
|
|
35
|
-
throw new ChecksumValidationFailedError(`${modelFileName}. Expected: ${expectedChecksum}. Actual: ${checksum}. File may be corrupted`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
logger.info(`✅ Model already cached and validated: ${modelPath}`);
|
|
39
|
-
return modelPath;
|
|
40
|
-
}
|
|
41
|
-
// File exists but wrong size (incomplete/corrupted) - remove it
|
|
42
|
-
logger.warn(`🗑️ Removing incomplete cached file (expected ${expectedSize}, got ${localSize}): ${modelPath}`);
|
|
43
|
-
await fsPromises.unlink(modelPath);
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
if (error instanceof ChecksumValidationFailedError) {
|
|
48
|
-
// Corrupted file - remove it so next download starts fresh
|
|
49
|
-
logger.warn(`🗑️ Removing corrupted cached file: ${modelPath}`);
|
|
50
|
-
await fsPromises.unlink(modelPath).catch(() => { });
|
|
51
|
-
}
|
|
52
|
-
// File doesn't exist or was cleaned up - need to download
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Download a single file from the registry to filesystem.
|
|
58
|
-
* When blobBinding is provided, uses direct blob download (skips metadata sync).
|
|
59
|
-
* Otherwise falls back to metadata-based downloadModel.
|
|
60
|
-
*/
|
|
61
|
-
async function downloadSingleFileFromRegistry(registryPath, registrySource, modelPath, modelFileName, downloadKey, expectedSize, expectedChecksum, progressCallback, signal, blobBinding, hooks) {
|
|
62
|
-
if (signal?.aborted) {
|
|
63
|
-
throw new DownloadCancelledError();
|
|
64
|
-
}
|
|
65
|
-
const client = await getRegistryClient();
|
|
66
|
-
const dir = path.dirname(modelPath);
|
|
67
|
-
await fsPromises.mkdir(dir, { recursive: true });
|
|
68
|
-
// Adapt registry client's core.on("download") progress to SDK ModelProgressUpdate.
|
|
69
|
-
// This reports network-layer bytes, decoupled from disk I/O backpressure.
|
|
70
|
-
const onProgress = progressCallback
|
|
71
|
-
? (progress) => {
|
|
72
|
-
const total = progress.total || expectedSize || progress.downloaded;
|
|
73
|
-
progressCallback({
|
|
74
|
-
type: "modelProgress",
|
|
75
|
-
downloaded: progress.downloaded,
|
|
76
|
-
total,
|
|
77
|
-
percentage: total > 0
|
|
78
|
-
? calculatePercentage(progress.downloaded, total)
|
|
79
|
-
: 0,
|
|
80
|
-
downloadKey,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
: undefined;
|
|
84
|
-
const clientOptions = {
|
|
85
|
-
timeout: REGISTRY_STREAM_TIMEOUT_MS,
|
|
86
|
-
outputFile: modelPath,
|
|
87
|
-
...(onProgress && { onProgress }),
|
|
88
|
-
...(signal && { signal: signal }),
|
|
89
|
-
};
|
|
90
|
-
if (blobBinding) {
|
|
91
|
-
logger.info(`📥 Downloading blob directly: ${modelFileName}`);
|
|
92
|
-
await client.downloadBlob(blobBinding, clientOptions);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
logger.info(`📥 Downloading from registry: ${registryPath}`);
|
|
96
|
-
await client.downloadModel(registryPath, registrySource, clientOptions);
|
|
97
|
-
}
|
|
98
|
-
logger.info(`✅ Downloaded to ${modelPath}`);
|
|
99
|
-
const stats = await fsPromises.stat(modelPath);
|
|
100
|
-
if (expectedSize && stats.size !== expectedSize) {
|
|
101
|
-
await fsPromises.unlink(modelPath).catch(() => { });
|
|
102
|
-
throw new ChecksumValidationFailedError(`${modelFileName}. File size mismatch: expected ${expectedSize}, got ${stats.size}`);
|
|
103
|
-
}
|
|
104
|
-
if (expectedChecksum && expectedChecksum.length === 64) {
|
|
105
|
-
const checksum = await measureChecksum(modelPath, hooks);
|
|
106
|
-
if (checksum !== expectedChecksum) {
|
|
107
|
-
await fsPromises.unlink(modelPath);
|
|
108
|
-
throw new ChecksumValidationFailedError(`${modelFileName}. Expected: ${expectedChecksum}. Actual: ${checksum}`);
|
|
109
|
-
}
|
|
110
|
-
logger.info(`✅ Checksum validated for ${modelFileName}`);
|
|
111
|
-
}
|
|
112
|
-
if (progressCallback) {
|
|
113
|
-
progressCallback({
|
|
114
|
-
type: "modelProgress",
|
|
115
|
-
downloaded: stats.size,
|
|
116
|
-
total: stats.size,
|
|
117
|
-
percentage: 100,
|
|
118
|
-
downloadKey,
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Find all shards for a model using path prefix query.
|
|
124
|
-
*/
|
|
125
|
-
async function findModelShards(registryPath) {
|
|
126
|
-
const client = await getRegistryClient();
|
|
127
|
-
const shardInfo = detectShardedModel(registryPath.split("/").pop() || "");
|
|
128
|
-
if (!shardInfo.isSharded) {
|
|
129
|
-
throw new Error(`Not a sharded model path: ${registryPath}`);
|
|
130
|
-
}
|
|
131
|
-
const pathPrefix = registryPath.replace(/-\d{5}-of-\d{5}\./, ".");
|
|
132
|
-
const basePath = pathPrefix.substring(0, pathPrefix.lastIndexOf("."));
|
|
133
|
-
logger.info(`🔍 Finding shards with prefix: ${basePath}`);
|
|
134
|
-
const shards = await client.findModels({
|
|
135
|
-
gte: { path: basePath },
|
|
136
|
-
lte: { path: basePath + "\uffff" },
|
|
137
|
-
});
|
|
138
|
-
const sortedShards = shards
|
|
139
|
-
.filter((s) => {
|
|
140
|
-
const info = detectShardedModel(s.path.split("/").pop() || "");
|
|
141
|
-
return info.isSharded;
|
|
142
|
-
})
|
|
143
|
-
.sort((a, b) => {
|
|
144
|
-
const aInfo = detectShardedModel(a.path.split("/").pop() || "");
|
|
145
|
-
const bInfo = detectShardedModel(b.path.split("/").pop() || "");
|
|
146
|
-
return (aInfo.currentShard || 0) - (bInfo.currentShard || 0);
|
|
147
|
-
})
|
|
148
|
-
.map((s) => ({
|
|
149
|
-
path: s.path,
|
|
150
|
-
source: s.source,
|
|
151
|
-
size: s.blobBinding?.byteLength || 0,
|
|
152
|
-
checksum: s.blobBinding?.["sha256"] ||
|
|
153
|
-
s.sha256 ||
|
|
154
|
-
"",
|
|
155
|
-
}));
|
|
156
|
-
logger.info(`📦 Found ${sortedShards.length} shards`);
|
|
157
|
-
return sortedShards;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Download sharded model files from registry.
|
|
161
|
-
* When localShardMetadata is provided, uses pre-computed metadata + blob direct download
|
|
162
|
-
* instead of querying the registry for shard info.
|
|
163
|
-
*/
|
|
164
|
-
async function downloadShardedFilesFromRegistry(registryPath, registrySource, cacheKey, progressCallback, signal, localShardMetadata, hooks) {
|
|
165
|
-
if (signal?.aborted) {
|
|
166
|
-
throw new DownloadCancelledError();
|
|
167
|
-
}
|
|
168
|
-
let shards;
|
|
169
|
-
if (localShardMetadata?.length) {
|
|
170
|
-
shards = localShardMetadata.map((shard) => ({
|
|
171
|
-
filename: shard.filename,
|
|
172
|
-
size: shard.expectedSize,
|
|
173
|
-
checksum: shard.sha256Checksum,
|
|
174
|
-
path: registryPath,
|
|
175
|
-
source: registrySource,
|
|
176
|
-
blobBinding: buildBlobBinding(shard),
|
|
177
|
-
}));
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
const filename = registryPath.split("/").pop() || registryPath;
|
|
181
|
-
const shardInfo = detectShardedModel(filename);
|
|
182
|
-
if (!shardInfo.isSharded || !shardInfo.totalShards) {
|
|
183
|
-
throw new RegistryDownloadFailedError(`Not a sharded model: ${filename}`);
|
|
184
|
-
}
|
|
185
|
-
const remoteShards = await findModelShards(registryPath);
|
|
186
|
-
if (remoteShards.length === 0) {
|
|
187
|
-
throw new ModelNotFoundError(`No shards found for ${registryPath}`);
|
|
188
|
-
}
|
|
189
|
-
if (remoteShards.length !== shardInfo.totalShards) {
|
|
190
|
-
logger.warn(`⚠️ Expected ${shardInfo.totalShards} shards but found ${remoteShards.length}`);
|
|
191
|
-
}
|
|
192
|
-
shards = remoteShards.map((s) => ({
|
|
193
|
-
filename: s.path.split("/").pop() || "",
|
|
194
|
-
size: s.size,
|
|
195
|
-
checksum: s.checksum,
|
|
196
|
-
path: s.path,
|
|
197
|
-
source: s.source,
|
|
198
|
-
}));
|
|
199
|
-
}
|
|
200
|
-
const shardDir = getShardedModelCacheDir(cacheKey);
|
|
201
|
-
const downloadKey = createRegistryDownloadKey(registryPath);
|
|
202
|
-
logger.info(`📥 Downloading sharded model: ${shards.length} shards to ${shardDir}`);
|
|
203
|
-
const overallTotal = shards.reduce((sum, s) => sum + s.size, 0);
|
|
204
|
-
let overallDownloaded = 0;
|
|
205
|
-
for (let i = 0; i < shards.length; i++) {
|
|
206
|
-
if (signal?.aborted) {
|
|
207
|
-
throw new DownloadCancelledError();
|
|
208
|
-
}
|
|
209
|
-
const shard = shards[i];
|
|
210
|
-
const shardPath = getShardPath(cacheKey, shard.filename);
|
|
211
|
-
const cachedPath = await validateCachedFile(shardPath, shard.filename, shard.size, shard.checksum, hooks);
|
|
212
|
-
if (cachedPath) {
|
|
213
|
-
logger.debug(`✅ Shard ${i + 1}/${shards.length} already cached`);
|
|
214
|
-
overallDownloaded += shard.size;
|
|
215
|
-
if (progressCallback) {
|
|
216
|
-
progressCallback({
|
|
217
|
-
type: "modelProgress",
|
|
218
|
-
downloaded: shard.size,
|
|
219
|
-
total: shard.size,
|
|
220
|
-
percentage: 100,
|
|
221
|
-
downloadKey,
|
|
222
|
-
shardInfo: {
|
|
223
|
-
currentShard: i + 1,
|
|
224
|
-
totalShards: shards.length,
|
|
225
|
-
shardName: shard.filename,
|
|
226
|
-
overallDownloaded,
|
|
227
|
-
overallTotal,
|
|
228
|
-
overallPercentage: calculatePercentage(overallDownloaded, overallTotal),
|
|
229
|
-
},
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
continue;
|
|
233
|
-
}
|
|
234
|
-
logger.info(`📥 Downloading shard ${i + 1}/${shards.length}: ${shard.filename}`);
|
|
235
|
-
const shardProgressCallback = progressCallback
|
|
236
|
-
? (progress) => {
|
|
237
|
-
const currentOverall = overallDownloaded + progress.downloaded;
|
|
238
|
-
progressCallback({
|
|
239
|
-
...progress,
|
|
240
|
-
downloadKey,
|
|
241
|
-
shardInfo: {
|
|
242
|
-
currentShard: i + 1,
|
|
243
|
-
totalShards: shards.length,
|
|
244
|
-
shardName: shard.filename,
|
|
245
|
-
overallDownloaded: currentOverall,
|
|
246
|
-
overallTotal,
|
|
247
|
-
overallPercentage: calculatePercentage(currentOverall, overallTotal),
|
|
248
|
-
},
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
: undefined;
|
|
252
|
-
await downloadSingleFileFromRegistry(shard.path, shard.source, shardPath, shard.filename, downloadKey, shard.size, shard.checksum, shardProgressCallback, signal, shard.blobBinding, hooks);
|
|
253
|
-
overallDownloaded += shard.size;
|
|
254
|
-
logger.info(`✅ Shard ${i + 1}/${shards.length} downloaded`);
|
|
255
|
-
}
|
|
256
|
-
const firstShardFilename = shards[0].filename;
|
|
257
|
-
await extractTensorsFromShards(shardDir, firstShardFilename);
|
|
258
|
-
if (progressCallback) {
|
|
259
|
-
const lastShard = shards[shards.length - 1];
|
|
260
|
-
progressCallback({
|
|
261
|
-
type: "modelProgress",
|
|
262
|
-
downloaded: overallTotal,
|
|
263
|
-
total: overallTotal,
|
|
264
|
-
percentage: 100,
|
|
265
|
-
downloadKey,
|
|
266
|
-
shardInfo: {
|
|
267
|
-
currentShard: shards.length,
|
|
268
|
-
totalShards: shards.length,
|
|
269
|
-
shardName: lastShard.filename,
|
|
270
|
-
overallDownloaded: overallTotal,
|
|
271
|
-
overallTotal,
|
|
272
|
-
overallPercentage: 100,
|
|
273
|
-
},
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
return getShardPath(cacheKey, firstShardFilename);
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Find companion ONNX data file in registry.
|
|
280
|
-
* ONNX models with external data have a .onnx file and a .onnx_data file.
|
|
281
|
-
*/
|
|
282
|
-
function findOnnxCompanionDataFile(registryPath) {
|
|
283
|
-
if (!registryPath.endsWith(".onnx"))
|
|
284
|
-
return undefined;
|
|
285
|
-
const dataPath = registryPath + "_data";
|
|
286
|
-
return getModelByPath(dataPath);
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* Download ONNX model with companion data file from registry.
|
|
290
|
-
* Both files are placed in the same directory to satisfy ONNX Runtime requirements.
|
|
291
|
-
* When blob bindings are provided, uses direct blob download (skips metadata sync).
|
|
292
|
-
*/
|
|
293
|
-
async function downloadOnnxWithDataFromRegistry(registryPath, registrySource, companionDataFile, cacheKey, progressCallback, signal, mainBlobBinding, dataBlobBinding, hooks) {
|
|
294
|
-
if (signal?.aborted) {
|
|
295
|
-
throw new DownloadCancelledError();
|
|
296
|
-
}
|
|
297
|
-
const mainFilename = registryPath.split("/").pop() || registryPath;
|
|
298
|
-
const dataFilename = companionDataFile.registryPath.split("/").pop() || "";
|
|
299
|
-
const downloadKey = createRegistryDownloadKey(registryPath);
|
|
300
|
-
const mainModelMetadata = getModelByPath(registryPath);
|
|
301
|
-
const mainPath = getOnnxModelPath(cacheKey, mainFilename);
|
|
302
|
-
const dataPath = getOnnxModelPath(cacheKey, dataFilename);
|
|
303
|
-
logger.info(`📥 Downloading ONNX model with external data: ${mainFilename} + ${dataFilename}`);
|
|
304
|
-
const mainExpectedSize = mainModelMetadata?.expectedSize || 0;
|
|
305
|
-
const mainChecksum = mainModelMetadata?.sha256Checksum || "";
|
|
306
|
-
const dataExpectedSize = companionDataFile.expectedSize || 0;
|
|
307
|
-
const dataChecksum = companionDataFile.sha256Checksum || "";
|
|
308
|
-
const overallTotal = mainExpectedSize + dataExpectedSize;
|
|
309
|
-
let overallDownloaded = 0;
|
|
310
|
-
// Check if main file already cached
|
|
311
|
-
const cachedMainPath = await validateCachedFile(mainPath, mainFilename, mainExpectedSize, mainChecksum, hooks);
|
|
312
|
-
if (cachedMainPath) {
|
|
313
|
-
logger.info(`✅ Main ONNX file already cached: ${mainFilename}`);
|
|
314
|
-
overallDownloaded += mainExpectedSize;
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
// Download main ONNX file
|
|
318
|
-
const mainProgressCallback = progressCallback
|
|
319
|
-
? (progress) => {
|
|
320
|
-
const currentOverall = overallDownloaded + progress.downloaded;
|
|
321
|
-
progressCallback({
|
|
322
|
-
...progress,
|
|
323
|
-
downloadKey,
|
|
324
|
-
onnxInfo: {
|
|
325
|
-
currentFile: mainFilename,
|
|
326
|
-
fileIndex: 1,
|
|
327
|
-
totalFiles: 2,
|
|
328
|
-
overallDownloaded: currentOverall,
|
|
329
|
-
overallTotal,
|
|
330
|
-
overallPercentage: calculatePercentage(currentOverall, overallTotal),
|
|
331
|
-
},
|
|
332
|
-
});
|
|
333
|
-
}
|
|
334
|
-
: undefined;
|
|
335
|
-
await downloadSingleFileFromRegistry(registryPath, registrySource, mainPath, mainFilename, downloadKey, mainExpectedSize, mainChecksum, mainProgressCallback, signal, mainBlobBinding, hooks);
|
|
336
|
-
overallDownloaded += mainExpectedSize;
|
|
337
|
-
logger.info(`✅ Main ONNX file downloaded: ${mainFilename}`);
|
|
338
|
-
}
|
|
339
|
-
// Check if data file already cached
|
|
340
|
-
const cachedDataPath = await validateCachedFile(dataPath, dataFilename, dataExpectedSize, dataChecksum, hooks);
|
|
341
|
-
if (cachedDataPath) {
|
|
342
|
-
logger.info(`✅ ONNX data file already cached: ${dataFilename}`);
|
|
343
|
-
overallDownloaded = overallTotal;
|
|
344
|
-
}
|
|
345
|
-
else {
|
|
346
|
-
// Download companion data file
|
|
347
|
-
const dataProgressCallback = progressCallback
|
|
348
|
-
? (progress) => {
|
|
349
|
-
const currentOverall = overallDownloaded + progress.downloaded;
|
|
350
|
-
progressCallback({
|
|
351
|
-
...progress,
|
|
352
|
-
downloadKey,
|
|
353
|
-
onnxInfo: {
|
|
354
|
-
currentFile: dataFilename,
|
|
355
|
-
fileIndex: 2,
|
|
356
|
-
totalFiles: 2,
|
|
357
|
-
overallDownloaded: currentOverall,
|
|
358
|
-
overallTotal,
|
|
359
|
-
overallPercentage: calculatePercentage(currentOverall, overallTotal),
|
|
360
|
-
},
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
: undefined;
|
|
364
|
-
await downloadSingleFileFromRegistry(companionDataFile.registryPath, companionDataFile.registrySource, dataPath, dataFilename, downloadKey, dataExpectedSize, dataChecksum, dataProgressCallback, signal, dataBlobBinding, hooks);
|
|
365
|
-
logger.info(`✅ ONNX data file downloaded: ${dataFilename}`);
|
|
366
|
-
}
|
|
367
|
-
// Send final 100% progress
|
|
368
|
-
if (progressCallback) {
|
|
369
|
-
progressCallback({
|
|
370
|
-
type: "modelProgress",
|
|
371
|
-
downloaded: overallTotal,
|
|
372
|
-
total: overallTotal,
|
|
373
|
-
percentage: 100,
|
|
374
|
-
downloadKey,
|
|
375
|
-
onnxInfo: {
|
|
376
|
-
currentFile: dataFilename,
|
|
377
|
-
fileIndex: 2,
|
|
378
|
-
totalFiles: 2,
|
|
379
|
-
overallDownloaded: overallTotal,
|
|
380
|
-
overallTotal,
|
|
381
|
-
overallPercentage: 100,
|
|
382
|
-
},
|
|
383
|
-
});
|
|
384
|
-
}
|
|
385
|
-
return mainPath;
|
|
386
|
-
}
|
|
387
|
-
/**
|
|
388
|
-
* Create a managed download with abort controller support.
|
|
389
|
-
*/
|
|
390
|
-
function createManagedDownload(downloadKey, registryPath, downloadFn, progressCallback) {
|
|
391
|
-
const abortController = new AbortController();
|
|
392
|
-
const downloadPromise = (async () => {
|
|
393
|
-
try {
|
|
394
|
-
return await downloadFn(abortController.signal);
|
|
395
|
-
}
|
|
396
|
-
finally {
|
|
397
|
-
unregisterDownload(downloadKey);
|
|
398
|
-
clearClearCacheFlag(downloadKey);
|
|
399
|
-
}
|
|
400
|
-
})();
|
|
401
|
-
const downloadEntry = {
|
|
402
|
-
key: downloadKey,
|
|
403
|
-
promise: downloadPromise,
|
|
404
|
-
abortController,
|
|
405
|
-
startTime: Date.now(),
|
|
406
|
-
type: "registry",
|
|
407
|
-
registryPath,
|
|
408
|
-
...(progressCallback && { onProgress: progressCallback }),
|
|
409
|
-
};
|
|
410
|
-
registerDownload(downloadKey, downloadEntry);
|
|
411
|
-
return downloadPromise;
|
|
412
|
-
}
|
|
413
|
-
/**
|
|
414
|
-
* Download a model from the QVAC Registry.
|
|
415
|
-
*
|
|
416
|
-
* For known models (present in models.ts), uses direct blob download which
|
|
417
|
-
* skips the registry metadata sync entirely. Falls back to metadata-based
|
|
418
|
-
* download for unknown models.
|
|
419
|
-
*/
|
|
420
|
-
export async function downloadModelFromRegistry(registryPath, registrySource, progressCallback, expectedChecksum, hooks) {
|
|
421
|
-
const downloadKey = createRegistryDownloadKey(registryPath);
|
|
422
|
-
// Check if already downloading
|
|
423
|
-
const existing = getActiveDownload(downloadKey);
|
|
424
|
-
if (existing) {
|
|
425
|
-
logger.info(`📥 Reusing existing download for: ${downloadKey}`);
|
|
426
|
-
hooks?.markCacheMiss();
|
|
427
|
-
return existing.promise;
|
|
428
|
-
}
|
|
429
|
-
const filename = registryPath.split("/").pop() || registryPath;
|
|
430
|
-
const shardInfo = detectShardedModel(filename);
|
|
431
|
-
// Look up model metadata from our generated models.ts
|
|
432
|
-
const modelMetadata = getModelByPath(registryPath);
|
|
433
|
-
if (shardInfo.isSharded) {
|
|
434
|
-
const cacheKey = generateShortHash(registryPath);
|
|
435
|
-
const localShardMeta = modelMetadata?.shardMetadata;
|
|
436
|
-
// FS pre-check for known models: if all shards cached, return immediately
|
|
437
|
-
if (localShardMeta?.length) {
|
|
438
|
-
let allCached = true;
|
|
439
|
-
for (const shard of localShardMeta) {
|
|
440
|
-
const shardPath = getShardPath(cacheKey, shard.filename);
|
|
441
|
-
const cached = await validateCachedFile(shardPath, shard.filename, shard.expectedSize, shard.sha256Checksum, hooks);
|
|
442
|
-
if (!cached) {
|
|
443
|
-
allCached = false;
|
|
444
|
-
break;
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
if (allCached) {
|
|
448
|
-
const firstShardFilename = localShardMeta[0].filename;
|
|
449
|
-
logger.info(`✅ All ${localShardMeta.length} shards cached`);
|
|
450
|
-
hooks?.markCacheHit();
|
|
451
|
-
if (progressCallback) {
|
|
452
|
-
const overallTotal = localShardMeta.reduce((sum, s) => sum + s.expectedSize, 0);
|
|
453
|
-
progressCallback({
|
|
454
|
-
type: "modelProgress",
|
|
455
|
-
downloaded: overallTotal,
|
|
456
|
-
total: overallTotal,
|
|
457
|
-
percentage: 100,
|
|
458
|
-
downloadKey,
|
|
459
|
-
shardInfo: {
|
|
460
|
-
currentShard: localShardMeta.length,
|
|
461
|
-
totalShards: localShardMeta.length,
|
|
462
|
-
shardName: firstShardFilename,
|
|
463
|
-
overallDownloaded: overallTotal,
|
|
464
|
-
overallTotal,
|
|
465
|
-
overallPercentage: 100,
|
|
466
|
-
},
|
|
467
|
-
});
|
|
468
|
-
}
|
|
469
|
-
return getShardPath(cacheKey, firstShardFilename);
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
hooks?.markCacheMiss();
|
|
473
|
-
return createManagedDownload(downloadKey, registryPath, (signal) => downloadShardedFilesFromRegistry(registryPath, registrySource, cacheKey, progressCallback, signal, localShardMeta, hooks), progressCallback);
|
|
474
|
-
}
|
|
475
|
-
// Check for ONNX with companion data file
|
|
476
|
-
const companionDataFile = findOnnxCompanionDataFile(registryPath);
|
|
477
|
-
if (companionDataFile) {
|
|
478
|
-
const cacheKey = generateShortHash(registryPath);
|
|
479
|
-
// FS pre-check: if both files cached, return immediately
|
|
480
|
-
const mainFilename = registryPath.split("/").pop() || registryPath;
|
|
481
|
-
const dataFilename = companionDataFile.registryPath.split("/").pop() || "";
|
|
482
|
-
const mainPath = getOnnxModelPath(cacheKey, mainFilename);
|
|
483
|
-
const dataPath = getOnnxModelPath(cacheKey, dataFilename);
|
|
484
|
-
const mainCached = await validateCachedFile(mainPath, mainFilename, modelMetadata?.expectedSize || 0, modelMetadata?.sha256Checksum, hooks);
|
|
485
|
-
const dataCached = await validateCachedFile(dataPath, dataFilename, companionDataFile.expectedSize, companionDataFile.sha256Checksum, hooks);
|
|
486
|
-
if (mainCached && dataCached) {
|
|
487
|
-
logger.info(`✅ ONNX model and data file both cached`);
|
|
488
|
-
hooks?.markCacheHit();
|
|
489
|
-
if (progressCallback) {
|
|
490
|
-
const total = (modelMetadata?.expectedSize || 0) + companionDataFile.expectedSize;
|
|
491
|
-
progressCallback({
|
|
492
|
-
type: "modelProgress",
|
|
493
|
-
downloaded: total,
|
|
494
|
-
total,
|
|
495
|
-
percentage: 100,
|
|
496
|
-
downloadKey,
|
|
497
|
-
onnxInfo: {
|
|
498
|
-
currentFile: dataFilename,
|
|
499
|
-
fileIndex: 2,
|
|
500
|
-
totalFiles: 2,
|
|
501
|
-
overallDownloaded: total,
|
|
502
|
-
overallTotal: total,
|
|
503
|
-
overallPercentage: 100,
|
|
504
|
-
},
|
|
505
|
-
});
|
|
506
|
-
}
|
|
507
|
-
return mainCached;
|
|
508
|
-
}
|
|
509
|
-
const mainBlobBinding = modelMetadata
|
|
510
|
-
? buildBlobBinding(modelMetadata)
|
|
511
|
-
: undefined;
|
|
512
|
-
const dataBlobBinding = companionDataFile.blobCoreKey
|
|
513
|
-
? buildBlobBinding(companionDataFile)
|
|
514
|
-
: undefined;
|
|
515
|
-
hooks?.markCacheMiss();
|
|
516
|
-
return createManagedDownload(downloadKey, registryPath, (signal) => downloadOnnxWithDataFromRegistry(registryPath, registrySource, companionDataFile, cacheKey, progressCallback, signal, mainBlobBinding, dataBlobBinding, hooks), progressCallback);
|
|
517
|
-
}
|
|
518
|
-
// Single file download
|
|
519
|
-
const cacheDir = getModelsCacheDir();
|
|
520
|
-
const sourceHash = generateShortHash(registryPath);
|
|
521
|
-
const modelPath = path.join(cacheDir, `${sourceHash}_${filename}`);
|
|
522
|
-
// Check if already cached
|
|
523
|
-
const expectedSize = modelMetadata?.expectedSize || 0;
|
|
524
|
-
const checksum = expectedChecksum || modelMetadata?.sha256Checksum || "";
|
|
525
|
-
const cachedPath = await validateCachedFile(modelPath, filename, expectedSize, checksum, hooks);
|
|
526
|
-
if (cachedPath) {
|
|
527
|
-
logger.info(`✅ Using cached model: ${cachedPath}`);
|
|
528
|
-
hooks?.markCacheHit();
|
|
529
|
-
if (progressCallback) {
|
|
530
|
-
progressCallback({
|
|
531
|
-
type: "modelProgress",
|
|
532
|
-
downloaded: expectedSize,
|
|
533
|
-
total: expectedSize,
|
|
534
|
-
percentage: 100,
|
|
535
|
-
downloadKey,
|
|
536
|
-
});
|
|
537
|
-
}
|
|
538
|
-
return cachedPath;
|
|
539
|
-
}
|
|
540
|
-
const blobBinding = modelMetadata
|
|
541
|
-
? buildBlobBinding(modelMetadata)
|
|
542
|
-
: undefined;
|
|
543
|
-
hooks?.markCacheMiss();
|
|
544
|
-
return createManagedDownload(downloadKey, registryPath, async (signal) => {
|
|
545
|
-
await downloadSingleFileFromRegistry(registryPath, registrySource, modelPath, filename, downloadKey, expectedSize, checksum, progressCallback, signal, blobBinding, hooks);
|
|
546
|
-
return modelPath;
|
|
547
|
-
}, progressCallback);
|
|
548
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { SourceType } from "../../../../schemas/index";
|
|
2
|
-
export interface DownloadStats {
|
|
3
|
-
downloadTimeMs?: number;
|
|
4
|
-
totalBytesDownloaded?: number;
|
|
5
|
-
downloadSpeedBps?: number;
|
|
6
|
-
checksumValidationTimeMs?: number;
|
|
7
|
-
cacheHit?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export interface ResolveResult {
|
|
10
|
-
path: string;
|
|
11
|
-
sourceType: SourceType;
|
|
12
|
-
downloadStats?: DownloadStats;
|
|
13
|
-
}
|
|
14
|
-
export interface DownloadResult {
|
|
15
|
-
path: string;
|
|
16
|
-
stats?: DownloadStats;
|
|
17
|
-
}
|
|
18
|
-
export interface DownloadMetricsHooks {
|
|
19
|
-
markCacheHit: () => void;
|
|
20
|
-
markCacheMiss: () => void;
|
|
21
|
-
addChecksumValidationTimeMs: (durationMs: number) => void;
|
|
22
|
-
}
|
|
23
|
-
export interface LoadModelProfilingMeta {
|
|
24
|
-
sourceType?: string;
|
|
25
|
-
downloadStats?: DownloadStats;
|
|
26
|
-
modelInitializationTimeMs?: number;
|
|
27
|
-
totalLoadTimeMs?: number;
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dispatches a request to a plugin handler and returns a Promise.
|
|
3
|
-
* Use for non-streaming (reply) handlers.
|
|
4
|
-
*
|
|
5
|
-
* @throws PluginHandlerTypeMismatchError if the handler is streaming
|
|
6
|
-
*/
|
|
7
|
-
export declare function dispatchPluginReply<TRequest, TResponse>(modelId: string, handlerName: string, request: TRequest): Promise<TResponse>;
|
|
8
|
-
/**
|
|
9
|
-
* Dispatches a request to a plugin handler and returns an AsyncGenerator.
|
|
10
|
-
* Use for streaming handlers.
|
|
11
|
-
*
|
|
12
|
-
* @throws PluginHandlerTypeMismatchError if the handler is not streaming
|
|
13
|
-
*/
|
|
14
|
-
export declare function dispatchPluginStream<TRequest, TResponse>(modelId: string, handlerName: string, request: TRequest): AsyncGenerator<TResponse>;
|
|
15
|
-
//# sourceMappingURL=plugin-dispatch.d.ts.map
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { getModelEntry } from "../../bare/registry/model-registry.js";
|
|
2
|
-
import { getPlugin } from "../../plugins/index.js";
|
|
3
|
-
import { profileReplyHandler, profileStreamHandler, } from "../profiling/index.js";
|
|
4
|
-
import { ModelNotFoundError, ModelIsDelegatedError, PluginNotFoundError, PluginHandlerNotFoundError, PluginHandlerTypeMismatchError, } from "../../../utils/errors-server.js";
|
|
5
|
-
/**
|
|
6
|
-
* Resolves the plugin handler and returns both the result and streaming flag.
|
|
7
|
-
*/
|
|
8
|
-
function resolvePluginHandler(modelId, handlerName, request) {
|
|
9
|
-
const entry = getModelEntry(modelId);
|
|
10
|
-
if (!entry) {
|
|
11
|
-
throw new ModelNotFoundError(modelId);
|
|
12
|
-
}
|
|
13
|
-
if (entry.isDelegated || !entry.local) {
|
|
14
|
-
throw new ModelIsDelegatedError(modelId);
|
|
15
|
-
}
|
|
16
|
-
const plugin = getPlugin(entry.local.modelType);
|
|
17
|
-
if (!plugin) {
|
|
18
|
-
throw new PluginNotFoundError(entry.local.modelType);
|
|
19
|
-
}
|
|
20
|
-
const handlerDef = plugin.handlers[handlerName];
|
|
21
|
-
if (!handlerDef) {
|
|
22
|
-
const availableHandlers = Object.keys(plugin.handlers);
|
|
23
|
-
throw new PluginHandlerNotFoundError(entry.local.modelType, handlerName, availableHandlers);
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
result: handlerDef.handler(request),
|
|
27
|
-
streaming: handlerDef.streaming,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Dispatches a request to a plugin handler and returns a Promise.
|
|
32
|
-
* Use for non-streaming (reply) handlers.
|
|
33
|
-
*
|
|
34
|
-
* @throws PluginHandlerTypeMismatchError if the handler is streaming
|
|
35
|
-
*/
|
|
36
|
-
export async function dispatchPluginReply(modelId, handlerName, request) {
|
|
37
|
-
return profileReplyHandler({ op: handlerName, request }, async () => {
|
|
38
|
-
const { result, streaming } = resolvePluginHandler(modelId, handlerName, request);
|
|
39
|
-
if (streaming) {
|
|
40
|
-
throw new PluginHandlerTypeMismatchError(handlerName, "reply", "streaming");
|
|
41
|
-
}
|
|
42
|
-
return result;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Dispatches a request to a plugin handler and returns an AsyncGenerator.
|
|
47
|
-
* Use for streaming handlers.
|
|
48
|
-
*
|
|
49
|
-
* @throws PluginHandlerTypeMismatchError if the handler is not streaming
|
|
50
|
-
*/
|
|
51
|
-
export async function* dispatchPluginStream(modelId, handlerName, request) {
|
|
52
|
-
yield* profileStreamHandler({ op: handlerName, request }, async function* () {
|
|
53
|
-
const { result, streaming } = resolvePluginHandler(modelId, handlerName, request);
|
|
54
|
-
if (!streaming) {
|
|
55
|
-
throw new PluginHandlerTypeMismatchError(handlerName, "streaming", "reply");
|
|
56
|
-
}
|
|
57
|
-
yield* result;
|
|
58
|
-
});
|
|
59
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { PluginInvokeRequest, PluginInvokeResponse, PluginInvokeStreamRequest, PluginInvokeStreamResponse } from "../../../schemas/plugin";
|
|
2
|
-
export declare function handlePluginInvoke(request: PluginInvokeRequest): Promise<PluginInvokeResponse>;
|
|
3
|
-
export declare function handlePluginInvokeStream(request: PluginInvokeStreamRequest): AsyncGenerator<PluginInvokeStreamResponse>;
|
|
4
|
-
//# sourceMappingURL=plugin-invoke.d.ts.map
|