@qvac/sdk 0.9.2 → 0.10.1
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 +42 -95
- package/dist/client/api/cancel.d.ts +1 -1
- package/dist/client/api/cancel.js +1 -1
- package/dist/client/api/completion-stream.d.ts +51 -12
- package/dist/client/api/completion-stream.js +129 -56
- package/dist/client/api/delete-cache.d.ts +1 -0
- package/dist/client/api/delete-cache.js +1 -0
- package/dist/client/api/diffusion.d.ts +17 -2
- package/dist/client/api/diffusion.js +21 -4
- package/dist/client/api/embed.d.ts +4 -0
- package/dist/client/api/finetune.d.ts +21 -0
- package/dist/client/api/get-loaded-model-info.d.ts +25 -0
- package/dist/client/api/get-loaded-model-info.js +36 -0
- package/dist/client/api/get-model-info.d.ts +9 -1
- package/dist/client/api/get-model-info.js +8 -0
- package/dist/client/api/heartbeat.d.ts +2 -2
- package/dist/client/api/heartbeat.js +2 -2
- package/dist/client/api/index.d.ts +3 -1
- package/dist/client/api/index.js +3 -1
- package/dist/client/api/invoke-plugin.d.ts +16 -0
- package/dist/client/api/invoke-plugin.js +16 -0
- package/dist/client/api/load-model.d.ts +36 -3
- package/dist/client/api/load-model.js +31 -10
- package/dist/client/api/provide.d.ts +11 -5
- package/dist/client/api/provide.js +11 -6
- package/dist/client/api/rag.d.ts +9 -0
- package/dist/client/api/rag.js +9 -0
- package/dist/client/api/registry.d.ts +26 -0
- package/dist/client/api/registry.js +26 -0
- package/dist/client/api/resume.d.ts +20 -4
- package/dist/client/api/resume.js +20 -4
- package/dist/client/api/state.d.ts +23 -0
- package/dist/client/api/state.js +29 -0
- package/dist/client/api/stop-provider.d.ts +11 -5
- package/dist/client/api/stop-provider.js +11 -5
- package/dist/client/api/suspend.d.ts +21 -3
- package/dist/client/api/suspend.js +21 -3
- package/dist/client/api/text-to-speech.d.ts +64 -6
- package/dist/client/api/text-to-speech.js +423 -47
- package/dist/client/api/transcribe.d.ts +29 -4
- package/dist/client/api/transcribe.js +86 -28
- package/dist/client/api/translate.d.ts +1 -0
- package/dist/client/api/translate.js +1 -0
- package/dist/client/rpc/bare-client.js +22 -1
- package/dist/client/rpc/expo-rpc-client.d.ts +1 -1
- package/dist/client/rpc/expo-rpc-client.js +96 -4
- package/dist/client/rpc/node-rpc-client.js +36 -0
- package/dist/examples/audio/mic-input.d.ts +9 -0
- package/dist/examples/audio/mic-input.js +111 -0
- package/dist/examples/completion-events.d.ts +18 -0
- package/dist/examples/completion-events.js +79 -0
- package/dist/examples/delegated-inference/composite.js +12 -18
- package/dist/examples/delegated-inference/consumer-profiled.js +4 -11
- package/dist/examples/delegated-inference/consumer.js +8 -13
- package/dist/examples/delegated-inference/provider.js +11 -16
- package/dist/examples/diffusion-flux2-klein-img2img.d.ts +2 -0
- package/dist/examples/diffusion-flux2-klein-img2img.js +60 -0
- package/dist/examples/diffusion-flux2-klein.js +1 -0
- package/dist/examples/diffusion-img2img.d.ts +2 -0
- package/dist/examples/diffusion-img2img.js +49 -0
- package/dist/examples/diffusion-txt2img.js +2 -1
- package/dist/examples/kv-cache-example.js +11 -12
- package/dist/examples/llamacpp-cache.d.ts +2 -0
- package/dist/examples/llamacpp-cache.js +107 -0
- package/dist/examples/llamacpp-dynamic-tools.d.ts +2 -0
- package/dist/examples/llamacpp-dynamic-tools.js +144 -0
- package/dist/examples/llamacpp-structured-output.d.ts +2 -0
- package/dist/examples/llamacpp-structured-output.js +106 -0
- package/dist/examples/plugins.js +4 -4
- package/dist/examples/suspend-resume.js +21 -4
- package/dist/examples/{llamacpp-native-tools.js → tools/llamacpp-native-tools.js} +6 -55
- package/dist/examples/tools/llamacpp-tools-harmony-multiturn.d.ts +2 -0
- package/dist/examples/tools/llamacpp-tools-harmony-multiturn.js +81 -0
- package/dist/examples/tools/llamacpp-tools-pythonic.d.ts +2 -0
- package/dist/examples/tools/llamacpp-tools-pythonic.js +50 -0
- package/dist/examples/tools/shared.d.ts +21 -0
- package/dist/examples/tools/shared.js +42 -0
- package/dist/examples/transcription/parakeet-microphone-record.js +6 -33
- package/dist/examples/transcription/whispercpp-filesystem-streaming.js +7 -5
- package/dist/examples/transcription/whispercpp-filesystem.js +12 -3
- package/dist/examples/transcription/whispercpp-microphone-record.js +6 -29
- package/dist/examples/translation/translation-stream.js +5 -5
- package/dist/examples/tts/llm-to-tts-streaming.d.ts +16 -0
- package/dist/examples/tts/llm-to-tts-streaming.js +143 -0
- package/dist/examples/tts/supertonic-multilingual.js +3 -3
- package/dist/examples/tts/supertonic.js +3 -3
- package/dist/examples/tts/utils.d.ts +11 -1
- package/dist/examples/tts/utils.js +70 -17
- package/dist/examples/voice-assistant/voice-assistant.d.ts +2 -0
- package/dist/examples/voice-assistant/voice-assistant.js +207 -0
- package/dist/expo/plugins/withMobileBundle.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/logging/logger.d.ts +11 -0
- package/dist/logging/logger.js +11 -0
- package/dist/logging/types.d.ts +18 -0
- package/dist/models/registry/models.d.ts +6973 -7457
- package/dist/models/registry/models.js +6889 -6855
- package/dist/models/update-models/codegen.js +84 -23
- package/dist/models/update-models/companions.d.ts +18 -0
- package/dist/models/update-models/companions.js +175 -0
- package/dist/models/update-models/naming.js +0 -25
- package/dist/models/update-models/registry.d.ts +1 -0
- package/dist/models/update-models/registry.js +23 -3
- package/dist/models/update-models/types.d.ts +37 -9
- package/dist/profiling/index.d.ts +49 -0
- package/dist/profiling/index.js +49 -0
- package/dist/schemas/cancel.d.ts +6 -2
- package/dist/schemas/cancel.js +14 -7
- package/dist/schemas/common.d.ts +354 -271
- package/dist/schemas/common.js +26 -5
- package/dist/schemas/completion-event.d.ts +225 -0
- package/dist/schemas/completion-event.js +79 -0
- package/dist/schemas/completion-stream.d.ts +126 -31
- package/dist/schemas/completion-stream.js +138 -36
- package/dist/schemas/delegate.d.ts +0 -2
- package/dist/schemas/delegate.js +25 -6
- package/dist/schemas/download-asset.d.ts +5 -5
- package/dist/schemas/embed.js +21 -9
- package/dist/schemas/engine-addon-map.d.ts +11 -1
- package/dist/schemas/engine-addon-map.js +2 -2
- package/dist/schemas/get-loaded-model-info.d.ts +52 -0
- package/dist/schemas/get-loaded-model-info.js +44 -0
- package/dist/schemas/get-model-info.d.ts +2 -2
- package/dist/schemas/get-model-info.js +103 -32
- package/dist/schemas/heartbeat.d.ts +0 -1
- package/dist/schemas/index.d.ts +4 -1
- package/dist/schemas/index.js +4 -1
- package/dist/schemas/llamacpp-config.d.ts +14 -4
- package/dist/schemas/llamacpp-config.js +5 -0
- package/dist/schemas/load-model.d.ts +3233 -1260
- package/dist/schemas/load-model.js +23 -16
- package/dist/schemas/model-src-utils.d.ts +7 -6
- package/dist/schemas/model-src-utils.js +27 -1
- package/dist/schemas/model-types.d.ts +4 -4
- package/dist/schemas/ocr.d.ts +1 -1
- package/dist/schemas/plugin.d.ts +27 -3
- package/dist/schemas/plugin.js +27 -2
- package/dist/schemas/profiling.js +11 -3
- package/dist/schemas/provide.d.ts +1 -3
- package/dist/schemas/provide.js +0 -3
- package/dist/schemas/rag.d.ts +4 -4
- package/dist/schemas/registry.d.ts +10 -10
- package/dist/schemas/registry.js +36 -14
- package/dist/schemas/reload-config.d.ts +73 -7
- package/dist/schemas/sdcpp-config.d.ts +16 -8
- package/dist/schemas/sdcpp-config.js +118 -25
- package/dist/schemas/sdk-config.d.ts +116 -90
- package/dist/schemas/sdk-config.js +16 -0
- package/dist/schemas/sdk-errors-client.d.ts +3 -0
- package/dist/schemas/sdk-errors-client.js +16 -1
- package/dist/schemas/sdk-errors-server.d.ts +3 -0
- package/dist/schemas/sdk-errors-server.js +23 -0
- package/dist/schemas/state.d.ts +23 -0
- package/dist/schemas/state.js +14 -0
- package/dist/schemas/stop-provide.d.ts +0 -5
- package/dist/schemas/stop-provide.js +2 -6
- package/dist/schemas/text-to-speech.d.ts +93 -27
- package/dist/schemas/text-to-speech.js +27 -0
- package/dist/schemas/tools.d.ts +16 -0
- package/dist/schemas/tools.js +15 -0
- package/dist/schemas/transcription-config.d.ts +8 -8
- package/dist/schemas/transcription.d.ts +33 -0
- package/dist/schemas/transcription.js +9 -0
- package/dist/schemas/translate.js +59 -19
- package/dist/schemas/translation-config.d.ts +157 -133
- package/dist/schemas/translation-config.js +34 -11
- package/dist/server/bare/delegate-rpc-client.d.ts +1 -1
- package/dist/server/bare/delegate-rpc-client.js +131 -122
- package/dist/server/bare/hyperswarm.d.ts +2 -2
- package/dist/server/bare/hyperswarm.js +12 -7
- package/dist/server/bare/ops/cancel.js +7 -0
- package/dist/server/bare/ops/kv-cache-utils.d.ts +7 -10
- package/dist/server/bare/ops/kv-cache-utils.js +31 -40
- package/dist/server/bare/ops/load-model.js +0 -1
- package/dist/server/bare/ops/transcribe.d.ts +11 -4
- package/dist/server/bare/ops/transcribe.js +25 -4
- package/dist/server/bare/ops/translate.js +42 -4
- package/dist/server/bare/ops/unload-model.js +21 -19
- package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js +1 -2
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.d.ts +13 -8
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js +257 -85
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.d.ts +101 -0
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js +135 -0
- package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +80 -22
- package/dist/server/bare/plugins/llamacpp-completion/plugin.js +57 -32
- package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +10 -16
- package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +69 -44
- package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +54 -116
- package/dist/server/bare/plugins/nmtcpp-translation/resolve-vocab.d.ts +32 -0
- package/dist/server/bare/plugins/nmtcpp-translation/resolve-vocab.js +117 -0
- package/dist/server/bare/plugins/onnx-ocr/plugin.d.ts +1 -1
- package/dist/server/bare/plugins/onnx-ocr/plugin.js +1 -2
- package/dist/server/bare/plugins/onnx-tts/ops/text-to-speech-stream.d.ts +7 -0
- package/dist/server/bare/plugins/onnx-tts/ops/text-to-speech-stream.js +116 -0
- package/dist/server/bare/plugins/onnx-tts/ops/text-to-speech.d.ts +2 -3
- package/dist/server/bare/plugins/onnx-tts/ops/text-to-speech.js +71 -9
- package/dist/server/bare/plugins/onnx-tts/plugin.d.ts +41 -13
- package/dist/server/bare/plugins/onnx-tts/plugin.js +48 -3
- package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +15 -7
- package/dist/server/bare/plugins/parakeet-transcription/plugin.js +5 -6
- package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.js +6 -0
- package/dist/server/bare/plugins/sdcpp-generation/plugin.d.ts +8 -5
- package/dist/server/bare/plugins/sdcpp-generation/plugin.js +13 -13
- package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +17 -1
- package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +40 -17
- package/dist/server/bare/registry/config-registry.js +14 -3
- package/dist/server/bare/registry/model-registry.d.ts +8 -10
- package/dist/server/bare/registry/model-registry.js +17 -12
- package/dist/server/bare/registry/registry-client.js +79 -19
- package/dist/server/bare/runtime-lifecycle.d.ts +2 -1
- package/dist/server/bare/runtime-lifecycle.js +13 -2
- package/dist/server/bare/types/addon-responses.d.ts +8 -3
- package/dist/server/bare/utils/transcribe-metadata.d.ts +21 -0
- package/dist/server/bare/utils/transcribe-metadata.js +28 -0
- package/dist/server/bare/utils/tts-stats.d.ts +22 -0
- package/dist/server/bare/utils/tts-stats.js +10 -0
- package/dist/server/rpc/create-server.d.ts +4 -1
- package/dist/server/rpc/create-server.js +5 -1
- package/dist/server/rpc/delegate-transport.js +36 -29
- package/dist/server/rpc/handle-request.js +28 -3
- package/dist/server/rpc/handler-registry.js +7 -1
- package/dist/server/rpc/handler-utils.d.ts +5 -0
- package/dist/server/rpc/handler-utils.js +22 -0
- package/dist/server/rpc/handlers/cancel-delegated.js +3 -5
- package/dist/server/rpc/handlers/cancelHandler.js +4 -5
- package/dist/server/rpc/handlers/completion-stream-delegated.js +14 -5
- package/dist/server/rpc/handlers/delete-cache.js +8 -3
- package/dist/server/rpc/handlers/download-asset.js +3 -24
- package/dist/server/rpc/handlers/get-loaded-model-info.d.ts +3 -0
- package/dist/server/rpc/handlers/get-loaded-model-info.js +39 -0
- package/dist/server/rpc/handlers/get-model-info.js +93 -84
- package/dist/server/rpc/handlers/heartbeat-delegated.js +2 -2
- package/dist/server/rpc/handlers/index.d.ts +6 -0
- package/dist/server/rpc/handlers/index.js +6 -0
- package/dist/server/rpc/handlers/load-model/download-manager.d.ts +35 -9
- package/dist/server/rpc/handlers/load-model/download-manager.js +142 -38
- package/dist/server/rpc/handlers/load-model/download-stats.d.ts +5 -4
- package/dist/server/rpc/handlers/load-model/download-stats.js +49 -8
- package/dist/server/rpc/handlers/load-model/handler.js +31 -50
- package/dist/server/rpc/handlers/load-model/http.d.ts +2 -2
- package/dist/server/rpc/handlers/load-model/http.js +97 -142
- package/dist/server/rpc/handlers/load-model/hyperdrive.d.ts +2 -2
- package/dist/server/rpc/handlers/load-model/hyperdrive.js +55 -74
- package/dist/server/rpc/handlers/load-model/index.d.ts +0 -1
- package/dist/server/rpc/handlers/load-model/index.js +0 -1
- package/dist/server/rpc/handlers/load-model/registry-client-options.d.ts +27 -0
- package/dist/server/rpc/handlers/load-model/registry-client-options.js +19 -0
- package/dist/server/rpc/handlers/load-model/registry-companion-set.d.ts +22 -0
- package/dist/server/rpc/handlers/load-model/registry-companion-set.js +208 -0
- package/dist/server/rpc/handlers/load-model/registry-download-utils.d.ts +24 -0
- package/dist/server/rpc/handlers/load-model/registry-download-utils.js +114 -0
- package/dist/server/rpc/handlers/load-model/registry.d.ts +2 -20
- package/dist/server/rpc/handlers/load-model/registry.js +109 -381
- package/dist/server/rpc/handlers/load-model/resolve-session.d.ts +15 -0
- package/dist/server/rpc/handlers/load-model/resolve-session.js +61 -0
- package/dist/server/rpc/handlers/load-model/resolve.d.ts +3 -3
- package/dist/server/rpc/handlers/load-model/resolve.js +14 -23
- package/dist/server/rpc/handlers/load-model/types.d.ts +11 -4
- package/dist/server/rpc/handlers/load-model/types.js +28 -1
- package/dist/server/rpc/handlers/load-model-delegated.js +2 -4
- package/dist/server/rpc/handlers/plugin-dispatch.js +9 -5
- package/dist/server/rpc/handlers/plugin-invoke.js +1 -1
- package/dist/server/rpc/handlers/provideHandler/connection.js +13 -2
- package/dist/server/rpc/handlers/provideHandler/handler.js +42 -29
- package/dist/server/rpc/handlers/state.d.ts +3 -0
- package/dist/server/rpc/handlers/state.js +7 -0
- package/dist/server/rpc/handlers/stopProvideHandler.d.ts +2 -2
- package/dist/server/rpc/handlers/stopProvideHandler.js +12 -7
- package/dist/server/rpc/handlers/text-to-speech-stream.d.ts +3 -0
- package/dist/server/rpc/handlers/text-to-speech-stream.js +4 -0
- package/dist/server/rpc/handlers/unload-model-delegated.js +3 -3
- package/dist/server/rpc/profiling/operation-metrics.js +20 -0
- package/dist/server/rpc/rpc-utils.js +1 -1
- package/dist/server/rpc/transport-selector.d.ts +3 -0
- package/dist/server/rpc/transport-selector.js +18 -0
- package/dist/server/utils/cache/auto-history.d.ts +4 -0
- package/dist/server/utils/cache/auto-history.js +22 -0
- package/dist/server/utils/{cache.d.ts → cache/paths.d.ts} +22 -5
- package/dist/server/utils/{cache.js → cache/paths.js} +36 -20
- package/dist/server/utils/cache/types.d.ts +8 -0
- package/dist/server/utils/cache/types.js +1 -0
- package/dist/server/utils/checksum.d.ts +2 -2
- package/dist/server/utils/checksum.js +1 -1
- package/dist/server/utils/clear-storage.d.ts +5 -0
- package/dist/server/utils/clear-storage.js +17 -0
- package/dist/server/utils/completion-normalizer.d.ts +17 -0
- package/dist/server/utils/completion-normalizer.js +413 -0
- package/dist/server/utils/expand-gguf-shards.d.ts +3 -0
- package/dist/server/utils/expand-gguf-shards.js +22 -0
- package/dist/server/utils/formatting.js +1 -1
- package/dist/server/utils/index.d.ts +4 -2
- package/dist/server/utils/index.js +4 -2
- package/dist/server/utils/qvac-paths.d.ts +2 -0
- package/dist/server/utils/qvac-paths.js +5 -0
- package/dist/server/utils/response-format.d.ts +3 -0
- package/dist/server/utils/response-format.js +20 -0
- package/dist/server/utils/tool-integration.d.ts +15 -4
- package/dist/server/utils/tool-integration.js +21 -41
- package/dist/server/utils/tools/dialect.d.ts +8 -0
- package/dist/server/utils/tools/dialect.js +14 -0
- package/dist/server/utils/tools/index.d.ts +3 -0
- package/dist/server/utils/tools/index.js +2 -0
- package/dist/server/utils/tools/parser.d.ts +6 -0
- package/dist/server/utils/tools/parser.js +46 -0
- package/dist/server/utils/tools/parsers/harmony.d.ts +4 -0
- package/dist/server/utils/tools/parsers/harmony.js +59 -0
- package/dist/server/utils/tools/parsers/hermes.d.ts +4 -0
- package/dist/server/utils/tools/parsers/hermes.js +100 -0
- package/dist/server/utils/tools/parsers/json.d.ts +6 -0
- package/dist/server/utils/tools/parsers/json.js +115 -0
- package/dist/server/utils/tools/parsers/pythonic.d.ts +4 -0
- package/dist/server/utils/tools/parsers/pythonic.js +267 -0
- package/dist/server/utils/tools/shared.d.ts +18 -0
- package/dist/server/utils/tools/shared.js +54 -0
- package/dist/server/utils/worker-lock.d.ts +3 -0
- package/dist/server/utils/worker-lock.js +67 -0
- package/dist/server/worker-core.d.ts +16 -1
- package/dist/server/worker-core.js +114 -14
- package/dist/utils/aggregate-events.d.ts +16 -0
- package/dist/utils/aggregate-events.js +52 -0
- package/dist/utils/cache-normalize.d.ts +10 -0
- package/dist/utils/cache-normalize.js +23 -0
- package/dist/utils/encoding.d.ts +8 -0
- package/dist/utils/encoding.js +13 -0
- package/dist/utils/errors-client.d.ts +12 -0
- package/dist/utils/errors-client.js +20 -0
- package/dist/utils/errors-server.d.ts +14 -0
- package/dist/utils/errors-server.js +31 -0
- package/dist/utils/load-model-validation.d.ts +7 -0
- package/dist/utils/load-model-validation.js +18 -0
- package/expo/plugins/patches/android-link.mjs +1 -1
- package/expo/plugins/patches/ios-link.mjs +1 -1
- package/package.json +14 -18
- package/dist/examples/translation/translation-opus.d.ts +0 -2
- package/dist/examples/translation/translation-opus.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/utils/model-path.d.ts +0 -5
- package/dist/server/utils/model-path.js +0 -7
- package/dist/server/utils/tool-parser.d.ts +0 -7
- package/dist/server/utils/tool-parser.js +0 -248
- /package/dist/examples/{llamacpp-native-tools.d.ts → tools/llamacpp-native-tools.d.ts} +0 -0
|
@@ -8,14 +8,13 @@ export async function* handleCompletionStreamDelegated(request, options) {
|
|
|
8
8
|
const { profilingMeta } = options ?? {};
|
|
9
9
|
// Get delegation info from model registry
|
|
10
10
|
const entry = getModelEntry(request.modelId);
|
|
11
|
-
if (!entry?.isDelegated
|
|
11
|
+
if (!entry?.isDelegated) {
|
|
12
12
|
throw new ModelIsDelegatedError(request.modelId);
|
|
13
13
|
}
|
|
14
|
-
const {
|
|
14
|
+
const { providerPublicKey, timeout, healthCheckTimeout } = entry.delegated;
|
|
15
15
|
try {
|
|
16
16
|
logger.debug(`📤 Sending delegated completionStream request to provider: ${providerPublicKey}${timeout ? `, timeout: ${timeout}ms` : ""}`);
|
|
17
|
-
|
|
18
|
-
const rpc = await getRPC(topic, providerPublicKey, { timeout, healthCheckTimeout });
|
|
17
|
+
const rpc = await getRPC(providerPublicKey, { timeout, healthCheckTimeout });
|
|
19
18
|
// Build delegate options with profiling metadata
|
|
20
19
|
const delegateOpts = { peerKey: providerPublicKey };
|
|
21
20
|
if (profilingMeta) {
|
|
@@ -33,10 +32,20 @@ export async function* handleCompletionStreamDelegated(request, options) {
|
|
|
33
32
|
}
|
|
34
33
|
catch (error) {
|
|
35
34
|
logger.error("Error in delegated completion stream:", error);
|
|
35
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
36
36
|
yield {
|
|
37
37
|
type: "completionStream",
|
|
38
|
-
token: `Error communicating with provider: ${error instanceof Error ? error.message : String(error)}`,
|
|
39
38
|
done: true,
|
|
39
|
+
events: [
|
|
40
|
+
{
|
|
41
|
+
type: "completionDone",
|
|
42
|
+
seq: 0,
|
|
43
|
+
stopReason: "error",
|
|
44
|
+
error: {
|
|
45
|
+
message: `Error communicating with provider: ${message}`,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
],
|
|
40
49
|
};
|
|
41
50
|
}
|
|
42
51
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { deleteCache as deleteCacheUtil } from "../../bare/ops/kv-cache-utils.js";
|
|
1
|
+
import { clearCacheRegistry, deleteCache as deleteCacheUtil, } from "../../bare/ops/kv-cache-utils.js";
|
|
2
2
|
import { clearCachedMessageCounts } from "../../bare/plugins/llamacpp-completion/ops/completion-stream.js";
|
|
3
3
|
import { getServerLogger } from "../../../logging/index.js";
|
|
4
4
|
const logger = getServerLogger();
|
|
@@ -7,6 +7,7 @@ export async function handleDeleteCache(request) {
|
|
|
7
7
|
if ("all" in request && request.all) {
|
|
8
8
|
await deleteCacheUtil({ all: true });
|
|
9
9
|
clearCachedMessageCounts();
|
|
10
|
+
clearCacheRegistry();
|
|
10
11
|
}
|
|
11
12
|
else if ("kvCacheKey" in request) {
|
|
12
13
|
const params = {
|
|
@@ -15,8 +16,12 @@ export async function handleDeleteCache(request) {
|
|
|
15
16
|
if (request.modelId !== undefined) {
|
|
16
17
|
params.modelId = request.modelId;
|
|
17
18
|
}
|
|
18
|
-
await deleteCacheUtil(params);
|
|
19
|
-
clearCachedMessageCounts();
|
|
19
|
+
const removedPath = await deleteCacheUtil(params);
|
|
20
|
+
clearCachedMessageCounts(removedPath);
|
|
21
|
+
clearCacheRegistry({
|
|
22
|
+
cacheKey: request.kvCacheKey,
|
|
23
|
+
modelId: request.modelId,
|
|
24
|
+
});
|
|
20
25
|
}
|
|
21
26
|
return {
|
|
22
27
|
type: "deleteCache",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PROFILING_KEY, OPERATION_EVENT_KEY, } from "../../../schemas/index.js";
|
|
2
2
|
import { resolveModelPath, resolveModelPathWithStats, } from "./load-model/resolve.js";
|
|
3
|
+
import { buildDownloadProfilingFields } from "./load-model/types.js";
|
|
3
4
|
import { nowMs, generateProfileId } from "../../../profiling/clock.js";
|
|
4
5
|
import { getServerLogger } from "../../../logging/index.js";
|
|
5
6
|
const logger = getServerLogger();
|
|
@@ -27,30 +28,8 @@ export async function handleDownloadAsset(request, progressCallback) {
|
|
|
27
28
|
if (profilingEnabled) {
|
|
28
29
|
const totalDownloadTimeMs = nowMs() - totalDownloadStart;
|
|
29
30
|
const profileId = profilingMeta?.id ?? generateProfileId();
|
|
30
|
-
const gauges =
|
|
31
|
-
|
|
32
|
-
};
|
|
33
|
-
if (downloadStats) {
|
|
34
|
-
if (downloadStats.downloadTimeMs !== undefined) {
|
|
35
|
-
gauges["downloadTime"] = downloadStats.downloadTimeMs;
|
|
36
|
-
}
|
|
37
|
-
if (downloadStats.totalBytesDownloaded !== undefined) {
|
|
38
|
-
gauges["totalBytesDownloaded"] = downloadStats.totalBytesDownloaded;
|
|
39
|
-
}
|
|
40
|
-
if (downloadStats.downloadSpeedBps !== undefined) {
|
|
41
|
-
gauges["downloadSpeedBps"] = downloadStats.downloadSpeedBps;
|
|
42
|
-
}
|
|
43
|
-
if (downloadStats.checksumValidationTimeMs !== undefined) {
|
|
44
|
-
gauges["checksumValidationTime"] = downloadStats.checksumValidationTimeMs;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
const tags = {};
|
|
48
|
-
if (sourceType) {
|
|
49
|
-
tags["sourceType"] = sourceType;
|
|
50
|
-
}
|
|
51
|
-
if (downloadStats?.cacheHit !== undefined) {
|
|
52
|
-
tags["cacheHit"] = downloadStats.cacheHit ? "true" : "false";
|
|
53
|
-
}
|
|
31
|
+
const { gauges, tags } = buildDownloadProfilingFields(downloadStats, sourceType);
|
|
32
|
+
gauges["totalDownloadTime"] = totalDownloadTimeMs;
|
|
54
33
|
const operationEvent = {
|
|
55
34
|
op: "downloadAsset",
|
|
56
35
|
kind: "handler",
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { getModelEntry } from "../../bare/registry/model-registry.js";
|
|
2
|
+
import { getPlugin } from "../../plugins/registry.js";
|
|
3
|
+
import { ModelNotFoundError } from "../../../utils/errors-server.js";
|
|
4
|
+
import { getServerLogger } from "../../../logging/index.js";
|
|
5
|
+
const logger = getServerLogger();
|
|
6
|
+
export function handleGetLoadedModelInfo(request) {
|
|
7
|
+
const { modelId } = request;
|
|
8
|
+
const entry = getModelEntry(modelId);
|
|
9
|
+
if (!entry) {
|
|
10
|
+
throw new ModelNotFoundError(modelId);
|
|
11
|
+
}
|
|
12
|
+
if (entry.isDelegated) {
|
|
13
|
+
const info = {
|
|
14
|
+
modelId: entry.id,
|
|
15
|
+
isDelegated: true,
|
|
16
|
+
handlers: [],
|
|
17
|
+
providerInfo: {
|
|
18
|
+
providerPublicKey: entry.delegated.providerPublicKey,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
return { type: "getLoadedModelInfo", info };
|
|
22
|
+
}
|
|
23
|
+
const plugin = getPlugin(entry.local.modelType);
|
|
24
|
+
if (!plugin) {
|
|
25
|
+
logger.warn(`getLoadedModelInfo: no plugin registered for modelType "${entry.local.modelType}" on loaded model "${modelId}"`);
|
|
26
|
+
}
|
|
27
|
+
const info = {
|
|
28
|
+
modelId: entry.id,
|
|
29
|
+
isDelegated: false,
|
|
30
|
+
modelType: entry.local.modelType,
|
|
31
|
+
handlers: plugin ? Object.keys(plugin.handlers) : [],
|
|
32
|
+
loadedAt: entry.local.loadedAt,
|
|
33
|
+
...(plugin && { displayName: plugin.displayName }),
|
|
34
|
+
...(plugin && { addonPackage: plugin.addonPackage }),
|
|
35
|
+
...(entry.local.name && { name: entry.local.name }),
|
|
36
|
+
...(entry.local.path && { path: entry.local.path }),
|
|
37
|
+
};
|
|
38
|
+
return { type: "getLoadedModelInfo", info };
|
|
39
|
+
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { models } from "../../../models/registry/models.js";
|
|
2
2
|
import { getAllModelIds, getModelEntry, } from "../../bare/registry/model-registry.js";
|
|
3
|
-
import { getConfiguredCacheDir } from "../../bare/registry/config-registry.js";
|
|
4
3
|
import { generateShortHash } from "../../utils/index.js";
|
|
5
4
|
import { promises as fsPromises } from "bare-fs";
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
5
|
+
import { getShardPath, getModelsCacheDir, getSingleFileCachePath, } from "../../utils/cache/paths.js";
|
|
6
|
+
import { validateAndJoinPath } from "../../utils/path-security.js";
|
|
8
7
|
import { ModelNotFoundError } from "../../../utils/errors-server.js";
|
|
9
8
|
export async function handleGetModelInfo(request) {
|
|
10
9
|
const { name } = request;
|
|
@@ -15,16 +14,19 @@ export async function handleGetModelInfo(request) {
|
|
|
15
14
|
const cacheKey = generateShortHash(catalogEntry.registryPath);
|
|
16
15
|
const cacheStatus = catalogEntry.shardMetadata && catalogEntry.shardMetadata.length > 0
|
|
17
16
|
? await handleShardedModel(cacheKey, catalogEntry.shardMetadata)
|
|
18
|
-
:
|
|
19
|
-
|
|
17
|
+
: catalogEntry.companionSet
|
|
18
|
+
? await handleCompanionSetModel(catalogEntry.companionSet, catalogEntry.registryPath)
|
|
19
|
+
: await handleSingleFileModel(catalogEntry.registryPath, catalogEntry.expectedSize, catalogEntry.sha256Checksum);
|
|
20
|
+
const { cacheFiles, isCached, actualSize, cachedAt, primaryPath } = cacheStatus;
|
|
20
21
|
const loadedModelIds = getAllModelIds();
|
|
22
|
+
const matchPath = primaryPath ?? cacheFiles[0]?.path;
|
|
21
23
|
const loadedInstances = [];
|
|
22
24
|
for (const id of loadedModelIds) {
|
|
23
25
|
const entry = getModelEntry(id);
|
|
24
|
-
if (!entry
|
|
26
|
+
if (!entry || entry.isDelegated)
|
|
25
27
|
continue;
|
|
26
28
|
const matchesByName = entry.local.name && entry.local.name === name;
|
|
27
|
-
const matchesByPath =
|
|
29
|
+
const matchesByPath = !!matchPath && entry.local.path === matchPath;
|
|
28
30
|
if (matchesByName || matchesByPath) {
|
|
29
31
|
const instance = {
|
|
30
32
|
registryId: id,
|
|
@@ -63,55 +65,100 @@ export async function handleGetModelInfo(request) {
|
|
|
63
65
|
};
|
|
64
66
|
}
|
|
65
67
|
async function handleShardedModel(cacheKey, shardMetadata) {
|
|
68
|
+
const fileEntries = shardMetadata.map((s) => ({
|
|
69
|
+
filename: s.filename,
|
|
70
|
+
expectedSize: s.expectedSize,
|
|
71
|
+
sha256Checksum: s.sha256Checksum,
|
|
72
|
+
}));
|
|
73
|
+
const paths = shardMetadata.map((s) => getShardPath(cacheKey, s.filename));
|
|
74
|
+
return checkCacheStatus(fileEntries, paths);
|
|
75
|
+
}
|
|
76
|
+
async function handleCompanionSetModel(companionSet, primaryRegistryPath) {
|
|
77
|
+
const { setKey, primaryKey, files } = companionSet;
|
|
78
|
+
const baseCache = getModelsCacheDir();
|
|
79
|
+
const fileEntries = files.map((f) => ({
|
|
80
|
+
filename: f.targetName,
|
|
81
|
+
expectedSize: f.expectedSize,
|
|
82
|
+
sha256Checksum: f.sha256Checksum,
|
|
83
|
+
key: f.key,
|
|
84
|
+
}));
|
|
85
|
+
const canonicalPaths = files.map((f) => validateAndJoinPath(baseCache, "sets", setKey, f.targetName));
|
|
86
|
+
const canonicalResult = await checkCacheStatus(fileEntries, canonicalPaths, primaryKey);
|
|
87
|
+
if (canonicalResult.isCached)
|
|
88
|
+
return canonicalResult;
|
|
89
|
+
const isOnnxSet = files.some((f) => f.primary === true && f.targetName.endsWith(".onnx"));
|
|
90
|
+
if (isOnnxSet) {
|
|
91
|
+
const legacyCacheKey = generateShortHash(primaryRegistryPath);
|
|
92
|
+
const legacyPaths = files.map((f) => validateAndJoinPath(baseCache, "onnx", legacyCacheKey, f.targetName));
|
|
93
|
+
const legacyResult = await checkCacheStatus(fileEntries, legacyPaths, primaryKey);
|
|
94
|
+
if (legacyResult.isCached)
|
|
95
|
+
return legacyResult;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// Legacy flat-cache compatibility for Bergamot-style companion sets.
|
|
99
|
+
// This is valid only for families whose runtime still works with explicit
|
|
100
|
+
// per-file absolute paths; it is not a generic rule for all companion sets.
|
|
101
|
+
const flatPaths = files.map((f) => getSingleFileCachePath(f.registryPath));
|
|
102
|
+
const flatResult = await checkCacheStatus(fileEntries, flatPaths, primaryKey);
|
|
103
|
+
if (flatResult.isCached)
|
|
104
|
+
return flatResult;
|
|
105
|
+
}
|
|
106
|
+
return canonicalResult;
|
|
107
|
+
}
|
|
108
|
+
async function checkCacheStatus(files, paths, primaryKey) {
|
|
66
109
|
const cacheFiles = [];
|
|
67
|
-
let
|
|
110
|
+
let allCached = true;
|
|
68
111
|
let totalActualSize = 0;
|
|
69
112
|
let latestCachedAt;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
let
|
|
113
|
+
let primaryPath;
|
|
114
|
+
for (let i = 0; i < files.length; i++) {
|
|
115
|
+
const file = files[i];
|
|
116
|
+
const filePath = paths[i];
|
|
117
|
+
let fileCached = false;
|
|
118
|
+
let fileActualSize;
|
|
119
|
+
let fileCachedAt;
|
|
75
120
|
try {
|
|
76
|
-
const stats = await fsPromises.stat(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
shardIsCached = stats.size === shard.expectedSize;
|
|
82
|
-
if (shardIsCached) {
|
|
83
|
-
totalActualSize += stats.size;
|
|
84
|
-
if (!latestCachedAt || stats.mtime > latestCachedAt) {
|
|
85
|
-
latestCachedAt = stats.mtime;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
allShardsCached = false;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
allShardsCached = false;
|
|
121
|
+
const stats = await fsPromises.stat(filePath);
|
|
122
|
+
if (stats.isFile()) {
|
|
123
|
+
fileActualSize = stats.size;
|
|
124
|
+
fileCachedAt = stats.mtime;
|
|
125
|
+
fileCached = stats.size === file.expectedSize;
|
|
94
126
|
}
|
|
95
127
|
}
|
|
96
128
|
catch {
|
|
97
|
-
|
|
98
|
-
|
|
129
|
+
// file does not exist
|
|
130
|
+
}
|
|
131
|
+
if (primaryKey && file.key === primaryKey) {
|
|
132
|
+
primaryPath = filePath;
|
|
133
|
+
}
|
|
134
|
+
if (fileCached) {
|
|
135
|
+
totalActualSize += fileActualSize;
|
|
136
|
+
if (!latestCachedAt || fileCachedAt > latestCachedAt) {
|
|
137
|
+
latestCachedAt = fileCachedAt;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
allCached = false;
|
|
99
142
|
}
|
|
100
143
|
cacheFiles.push({
|
|
101
|
-
filename:
|
|
102
|
-
path:
|
|
103
|
-
expectedSize:
|
|
104
|
-
sha256Checksum:
|
|
105
|
-
isCached:
|
|
106
|
-
actualSize:
|
|
107
|
-
cachedAt:
|
|
144
|
+
filename: file.filename,
|
|
145
|
+
path: filePath,
|
|
146
|
+
expectedSize: file.expectedSize,
|
|
147
|
+
sha256Checksum: file.sha256Checksum,
|
|
148
|
+
isCached: fileCached,
|
|
149
|
+
actualSize: fileActualSize,
|
|
150
|
+
cachedAt: fileCachedAt,
|
|
108
151
|
});
|
|
109
152
|
}
|
|
153
|
+
if (!primaryPath && cacheFiles.length > 0) {
|
|
154
|
+
primaryPath = cacheFiles[0].path;
|
|
155
|
+
}
|
|
110
156
|
const result = {
|
|
111
157
|
cacheFiles,
|
|
112
|
-
isCached:
|
|
158
|
+
isCached: allCached,
|
|
159
|
+
primaryPath,
|
|
113
160
|
};
|
|
114
|
-
if (
|
|
161
|
+
if (allCached) {
|
|
115
162
|
result.actualSize = totalActualSize;
|
|
116
163
|
if (latestCachedAt) {
|
|
117
164
|
result.cachedAt = latestCachedAt;
|
|
@@ -119,46 +166,8 @@ async function handleShardedModel(cacheKey, shardMetadata) {
|
|
|
119
166
|
}
|
|
120
167
|
return result;
|
|
121
168
|
}
|
|
122
|
-
async function handleSingleFileModel(registryPath,
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const filePath = path.join(cacheDir, `${sourceHash}_${modelId}`);
|
|
127
|
-
let fileIsCached = false;
|
|
128
|
-
let fileActualSize;
|
|
129
|
-
let fileCachedAt;
|
|
130
|
-
try {
|
|
131
|
-
const stats = await fsPromises.stat(filePath);
|
|
132
|
-
const fileExists = stats.isFile();
|
|
133
|
-
if (fileExists) {
|
|
134
|
-
fileActualSize = stats.size;
|
|
135
|
-
fileCachedAt = stats.mtime;
|
|
136
|
-
fileIsCached = stats.size === expectedSize;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
catch {
|
|
140
|
-
fileIsCached = false;
|
|
141
|
-
}
|
|
142
|
-
const cacheFiles = [
|
|
143
|
-
{
|
|
144
|
-
filename: modelId,
|
|
145
|
-
path: filePath,
|
|
146
|
-
expectedSize,
|
|
147
|
-
sha256Checksum,
|
|
148
|
-
isCached: fileIsCached,
|
|
149
|
-
actualSize: fileActualSize,
|
|
150
|
-
cachedAt: fileCachedAt,
|
|
151
|
-
},
|
|
152
|
-
];
|
|
153
|
-
const result = {
|
|
154
|
-
cacheFiles,
|
|
155
|
-
isCached: fileIsCached,
|
|
156
|
-
};
|
|
157
|
-
if (fileActualSize !== undefined) {
|
|
158
|
-
result.actualSize = fileActualSize;
|
|
159
|
-
}
|
|
160
|
-
if (fileCachedAt !== undefined) {
|
|
161
|
-
result.cachedAt = fileCachedAt;
|
|
162
|
-
}
|
|
163
|
-
return result;
|
|
169
|
+
async function handleSingleFileModel(registryPath, expectedSize, sha256Checksum) {
|
|
170
|
+
const filename = registryPath.split("/").pop() || registryPath;
|
|
171
|
+
const filePath = getSingleFileCachePath(registryPath);
|
|
172
|
+
return checkCacheStatus([{ filename, expectedSize, sha256Checksum }], [filePath]);
|
|
164
173
|
}
|
|
@@ -8,9 +8,9 @@ export async function handleHeartbeatDelegated(request, options) {
|
|
|
8
8
|
if (!delegate) {
|
|
9
9
|
throw new DelegateConnectionFailedError("Delegated heartbeat handler called without delegate info");
|
|
10
10
|
}
|
|
11
|
-
const {
|
|
11
|
+
const { providerPublicKey, timeout } = delegate;
|
|
12
12
|
try {
|
|
13
|
-
const rpc = await getRPC(
|
|
13
|
+
const rpc = await getRPC(providerPublicKey, { timeout });
|
|
14
14
|
const delegateOpts = {
|
|
15
15
|
peerKey: providerPublicKey,
|
|
16
16
|
};
|
|
@@ -13,7 +13,9 @@ import { handleRag } from "./rag";
|
|
|
13
13
|
import { cancelHandler } from "./cancelHandler";
|
|
14
14
|
import { handleDeleteCache } from "./delete-cache";
|
|
15
15
|
import { handleTextToSpeech } from "./text-to-speech";
|
|
16
|
+
import { handleTextToSpeechStream } from "./text-to-speech-stream";
|
|
16
17
|
import { handleGetModelInfo } from "./get-model-info";
|
|
18
|
+
import { handleGetLoadedModelInfo } from "./get-loaded-model-info";
|
|
17
19
|
import { handleFinetune } from "./finetune";
|
|
18
20
|
import { handleOCRStream } from "./ocr-stream";
|
|
19
21
|
import { handleHeartbeat } from "./heartbeat";
|
|
@@ -22,6 +24,7 @@ import { handlePluginInvoke, handlePluginInvokeStream } from "./plugin-invoke";
|
|
|
22
24
|
import { handleModelRegistryList, handleModelRegistrySearch, handleModelRegistryGetModel } from "./registry";
|
|
23
25
|
import { handleSuspend } from "./suspend";
|
|
24
26
|
import { handleResume } from "./resume";
|
|
27
|
+
import { handleState } from "./state";
|
|
25
28
|
export declare const handlers: {
|
|
26
29
|
heartbeat: typeof handleHeartbeat;
|
|
27
30
|
completionStream: typeof handleCompletionStream;
|
|
@@ -39,7 +42,9 @@ export declare const handlers: {
|
|
|
39
42
|
rag: typeof handleRag;
|
|
40
43
|
cancel: typeof cancelHandler;
|
|
41
44
|
textToSpeech: typeof handleTextToSpeech;
|
|
45
|
+
textToSpeechStream: typeof handleTextToSpeechStream;
|
|
42
46
|
getModelInfo: typeof handleGetModelInfo;
|
|
47
|
+
getLoadedModelInfo: typeof handleGetLoadedModelInfo;
|
|
43
48
|
finetune: typeof handleFinetune;
|
|
44
49
|
ocrStream: typeof handleOCRStream;
|
|
45
50
|
diffusionStream: typeof handleDiffusionStream;
|
|
@@ -50,5 +55,6 @@ export declare const handlers: {
|
|
|
50
55
|
modelRegistryGetModel: typeof handleModelRegistryGetModel;
|
|
51
56
|
suspend: typeof handleSuspend;
|
|
52
57
|
resume: typeof handleResume;
|
|
58
|
+
state: typeof handleState;
|
|
53
59
|
};
|
|
54
60
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -13,7 +13,9 @@ import { handleRag } from "./rag.js";
|
|
|
13
13
|
import { cancelHandler } from "./cancelHandler.js";
|
|
14
14
|
import { handleDeleteCache } from "./delete-cache.js";
|
|
15
15
|
import { handleTextToSpeech } from "./text-to-speech.js";
|
|
16
|
+
import { handleTextToSpeechStream } from "./text-to-speech-stream.js";
|
|
16
17
|
import { handleGetModelInfo } from "./get-model-info.js";
|
|
18
|
+
import { handleGetLoadedModelInfo } from "./get-loaded-model-info.js";
|
|
17
19
|
import { handleFinetune } from "./finetune.js";
|
|
18
20
|
import { handleOCRStream } from "./ocr-stream.js";
|
|
19
21
|
import { handleHeartbeat } from "./heartbeat.js";
|
|
@@ -22,6 +24,7 @@ import { handlePluginInvoke, handlePluginInvokeStream } from "./plugin-invoke.js
|
|
|
22
24
|
import { handleModelRegistryList, handleModelRegistrySearch, handleModelRegistryGetModel, } from "./registry.js";
|
|
23
25
|
import { handleSuspend } from "./suspend.js";
|
|
24
26
|
import { handleResume } from "./resume.js";
|
|
27
|
+
import { handleState } from "./state.js";
|
|
25
28
|
export const handlers = {
|
|
26
29
|
heartbeat: handleHeartbeat,
|
|
27
30
|
completionStream: handleCompletionStream,
|
|
@@ -39,7 +42,9 @@ export const handlers = {
|
|
|
39
42
|
rag: handleRag,
|
|
40
43
|
cancel: cancelHandler,
|
|
41
44
|
textToSpeech: handleTextToSpeech,
|
|
45
|
+
textToSpeechStream: handleTextToSpeechStream,
|
|
42
46
|
getModelInfo: handleGetModelInfo,
|
|
47
|
+
getLoadedModelInfo: handleGetLoadedModelInfo,
|
|
43
48
|
finetune: handleFinetune,
|
|
44
49
|
ocrStream: handleOCRStream,
|
|
45
50
|
diffusionStream: handleDiffusionStream,
|
|
@@ -50,4 +55,5 @@ export const handlers = {
|
|
|
50
55
|
modelRegistryGetModel: handleModelRegistryGetModel,
|
|
51
56
|
suspend: handleSuspend,
|
|
52
57
|
resume: handleResume,
|
|
58
|
+
state: handleState,
|
|
53
59
|
};
|
|
@@ -1,14 +1,40 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export
|
|
1
|
+
import type { ModelProgressUpdate } from "../../../../schemas/index";
|
|
2
|
+
import { AbortController } from "bare-abort-controller";
|
|
3
|
+
import type { DownloadHooks } from "./types";
|
|
4
|
+
export interface Subscriber {
|
|
5
|
+
id: string;
|
|
6
|
+
onProgress?: ((progress: ModelProgressUpdate) => void) | undefined;
|
|
7
|
+
settled: boolean;
|
|
8
|
+
resolve: (path: string) => void;
|
|
9
|
+
reject: (error: unknown) => void;
|
|
10
|
+
promise: Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
export interface Transfer {
|
|
13
|
+
downloadKey: string;
|
|
14
|
+
abortController: AbortController;
|
|
15
|
+
subscribers: Map<string, Subscriber>;
|
|
16
|
+
lastProgress?: ModelProgressUpdate | undefined;
|
|
17
|
+
downloadPromise?: Promise<string> | undefined;
|
|
18
|
+
clearCache: boolean;
|
|
19
|
+
cacheHit?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface DownloadContext {
|
|
22
|
+
broadcastProgress: (progress: ModelProgressUpdate) => void;
|
|
23
|
+
signal: AbortSignal;
|
|
24
|
+
shouldClearCache: () => boolean;
|
|
25
|
+
setCacheHit: (cacheHit: boolean) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface StartOrJoinResult {
|
|
28
|
+
promise: Promise<string>;
|
|
29
|
+
joined: boolean;
|
|
30
|
+
getCacheHit: () => boolean | undefined;
|
|
31
|
+
}
|
|
32
|
+
export declare function startOrJoinDownload(downloadKey: string, startDownload: (ctx: DownloadContext) => Promise<string>, onProgress?: (progress: ModelProgressUpdate) => void): StartOrJoinResult;
|
|
33
|
+
export declare function cancelTransfer(downloadKey: string, clearCache?: boolean): void;
|
|
5
34
|
export declare function createHyperdriveDownloadKey(hyperdriveKey: string, modelFileName: string): string;
|
|
6
35
|
export declare function createHttpDownloadKey(url: string): string;
|
|
7
|
-
export declare function createRegistryDownloadKey(registryPath: string): string;
|
|
8
|
-
export declare function
|
|
9
|
-
export declare function shouldClearCache(downloadKey: string): boolean;
|
|
10
|
-
export declare function clearClearCacheFlag(downloadKey: string): void;
|
|
11
|
-
export declare function createCancelFunction(downloadKey: string, clearCache?: boolean): () => void;
|
|
36
|
+
export declare function createRegistryDownloadKey(registrySource: string, registryPath: string): string;
|
|
37
|
+
export declare function applyJoinedDownloadStats(result: StartOrJoinResult, hooks?: DownloadHooks): Promise<string>;
|
|
12
38
|
export declare function cancelAllDownloads(): void;
|
|
13
39
|
export declare function cleanupDownloads(): Promise<void>;
|
|
14
40
|
//# sourceMappingURL=download-manager.d.ts.map
|