@qvac/sdk 0.4.1 → 0.6.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/README.md +365 -200
- package/bare-imports.json +35 -0
- package/dist/client/api/cancel.d.ts +12 -3
- package/dist/client/api/cancel.js +12 -3
- package/dist/client/api/completion-stream.d.ts +15 -5
- package/dist/client/api/completion-stream.js +50 -14
- package/dist/client/api/embed.d.ts +17 -3
- package/dist/client/api/embed.js +0 -8
- package/dist/client/api/get-model-info.d.ts +2 -2
- package/dist/client/api/get-model-info.js +2 -2
- package/dist/client/api/index.d.ts +2 -2
- package/dist/client/api/index.js +2 -2
- package/dist/client/api/load-model.d.ts +37 -11
- package/dist/client/api/load-model.js +34 -117
- package/dist/client/api/logging-stream.d.ts +6 -3
- package/dist/client/api/logging-stream.js +6 -3
- package/dist/client/api/ocr.d.ts +31 -0
- package/dist/client/api/ocr.js +88 -0
- package/dist/client/api/rag.d.ts +215 -20
- package/dist/client/api/rag.js +382 -23
- package/dist/client/api/translate.js +10 -11
- package/dist/client/api/unload-model.js +6 -3
- package/dist/client/config-loader/config-utils.d.ts +5 -0
- package/dist/client/config-loader/config-utils.js +20 -0
- package/dist/client/config-loader/resolve-config.bare.d.ts +9 -0
- package/dist/client/config-loader/resolve-config.bare.js +87 -0
- package/dist/client/config-loader/resolve-config.expo.d.ts +11 -0
- package/dist/client/config-loader/resolve-config.expo.js +62 -0
- package/dist/client/config-loader/resolve-config.node.d.ts +9 -0
- package/dist/client/config-loader/resolve-config.node.js +118 -0
- package/dist/client/init-hooks.d.ts +18 -3
- package/dist/client/init-hooks.js +57 -29
- package/dist/client/logging-stream-registry.d.ts +1 -1
- package/dist/client/logging-stream-registry.js +14 -13
- package/dist/client/rpc/bare-client.d.ts +3 -184
- package/dist/client/rpc/bare-client.js +67 -8
- package/dist/client/rpc/expo-rpc-client.d.ts +2 -2
- package/dist/client/rpc/expo-rpc-client.js +70 -12
- package/dist/client/rpc/node-rpc-client.d.ts +1 -1
- package/dist/client/rpc/node-rpc-client.js +14 -7
- package/dist/client/rpc/rpc-client.d.ts +1 -1
- package/dist/client/rpc/rpc-client.js +13 -58
- package/dist/examples/config/blind-relay/blind-relay.config.d.ts +5 -0
- package/dist/examples/config/blind-relay/blind-relay.config.js +7 -0
- package/dist/examples/config/default/default.config.d.ts +8 -0
- package/dist/examples/config/default/default.config.js +6 -0
- package/dist/examples/config-reload.d.ts +2 -0
- package/dist/examples/config-reload.js +49 -0
- package/dist/examples/default-config-usage.d.ts +17 -0
- package/dist/examples/default-config-usage.js +47 -0
- package/dist/examples/delegated-inference/consumer.js +1 -0
- package/dist/examples/download-with-blind-relays.js +22 -21
- package/dist/examples/embed-hyperdrive.js +39 -3
- package/dist/examples/kv-cache-cleanup.js +1 -1
- package/dist/examples/kv-cache-custom-key.js +16 -1
- package/dist/examples/kv-cache-example.js +1 -1
- package/dist/examples/llamacpp-hyperdrive.js +1 -1
- package/dist/examples/llamacpp-sharded.js +13 -4
- package/dist/examples/logging-file-transport.d.ts +2 -0
- package/dist/examples/{llamacpp-file-logging.js → logging-file-transport.js} +3 -7
- package/dist/examples/logging-streaming.d.ts +2 -0
- package/dist/examples/logging-streaming.js +75 -0
- package/dist/examples/mcp-websearch.d.ts +13 -0
- package/dist/examples/mcp-websearch.js +176 -0
- package/dist/examples/ocr-fasttext.d.ts +2 -0
- package/dist/examples/ocr-fasttext.js +52 -0
- package/dist/examples/quickstart.d.ts +2 -0
- package/dist/examples/quickstart.js +28 -0
- package/dist/examples/rag/rag-hyperdb/cancellation.d.ts +2 -0
- package/dist/examples/rag/rag-hyperdb/cancellation.js +75 -0
- package/dist/examples/rag/rag-hyperdb/ingest.d.ts +2 -0
- package/dist/examples/rag/{rag-hyperdb.js → rag-hyperdb/ingest.js} +10 -4
- package/dist/examples/rag/rag-hyperdb/pipeline.d.ts +2 -0
- package/dist/examples/rag/rag-hyperdb/pipeline.js +74 -0
- package/dist/examples/rag/rag-hyperdb/workspaces.d.ts +2 -0
- package/dist/examples/rag/rag-hyperdb/workspaces.js +178 -0
- package/dist/examples/translation/translation-bergamot-batch.d.ts +2 -0
- package/dist/examples/translation/translation-bergamot-batch.js +49 -0
- package/dist/examples/translation/translation-bergamot.d.ts +2 -0
- package/dist/examples/translation/translation-bergamot.js +39 -0
- package/dist/examples/translation/translation-indic.js +1 -0
- package/dist/examples/translation/translation-opus.js +1 -0
- package/dist/examples/translation/translation-stream.js +1 -0
- package/dist/expo/plugins/withMobileBundle.js +29 -10
- package/dist/index.d.ts +5 -4
- package/dist/index.js +4 -2
- package/dist/logging/addon.d.ts +6 -0
- package/dist/logging/addon.js +75 -0
- package/dist/logging/base-logger.js +26 -16
- package/dist/logging/client-logger.d.ts +3 -0
- package/dist/logging/client-logger.js +24 -0
- package/dist/logging/index.d.ts +7 -1
- package/dist/logging/index.js +7 -1
- package/dist/logging/logger.d.ts +0 -2
- package/dist/logging/logger.js +11 -6
- package/dist/logging/namespaces.d.ts +12 -0
- package/dist/logging/namespaces.js +12 -0
- package/dist/logging/registry.d.ts +31 -0
- package/dist/logging/registry.js +48 -0
- package/dist/logging/server-logger.d.ts +3 -0
- package/dist/logging/server-logger.js +16 -0
- package/dist/logging/stream-logger.d.ts +1 -1
- package/dist/logging/stream-logger.js +6 -3
- package/dist/logging/transport.js +2 -2
- package/dist/logging/types.d.ts +2 -0
- package/dist/logging/utils.d.ts +2 -0
- package/dist/logging/utils.js +62 -0
- package/dist/models/hyperdrive/models.d.ts +1886 -230
- package/dist/models/hyperdrive/models.js +2191 -443
- package/dist/schemas/archive.d.ts +9 -0
- package/dist/schemas/archive.js +17 -0
- package/dist/schemas/cancel.d.ts +6 -0
- package/dist/schemas/cancel.js +5 -0
- package/dist/schemas/common.d.ts +660 -92
- package/dist/schemas/common.js +6 -4
- package/dist/schemas/delegate.d.ts +1 -0
- package/dist/schemas/delegate.js +1 -0
- package/dist/schemas/download-asset.d.ts +21 -9
- package/dist/schemas/embed.d.ts +3 -3
- package/dist/schemas/embed.js +9 -2
- package/dist/schemas/get-model-info.d.ts +12 -10
- package/dist/schemas/get-model-info.js +9 -1
- package/dist/schemas/index.d.ts +9 -1
- package/dist/schemas/index.js +12 -1
- package/dist/schemas/json-schema.d.ts +16 -0
- package/dist/schemas/json-schema.js +2 -0
- package/dist/schemas/llamacpp-config.d.ts +117 -12
- package/dist/schemas/llamacpp-config.js +46 -12
- package/dist/schemas/load-model.d.ts +3669 -481
- package/dist/schemas/load-model.js +95 -34
- package/dist/schemas/logging-stream.d.ts +11 -4
- package/dist/schemas/logging-stream.js +4 -3
- package/dist/schemas/mcp-adapter.d.ts +47 -0
- package/dist/schemas/mcp-adapter.js +1 -0
- package/dist/schemas/model-src-utils.d.ts +38 -14
- package/dist/schemas/model-src-utils.js +4 -3
- package/dist/schemas/model-types.d.ts +154 -0
- package/dist/schemas/model-types.js +140 -0
- package/dist/schemas/ocr.d.ts +88 -0
- package/dist/schemas/ocr.js +52 -0
- package/dist/schemas/rag.d.ts +183 -52
- package/dist/schemas/rag.js +148 -23
- package/dist/schemas/reload-config.d.ts +356 -0
- package/dist/schemas/reload-config.js +44 -0
- package/dist/schemas/runtime-context.d.ts +19 -0
- package/dist/schemas/runtime-context.js +7 -0
- package/dist/schemas/sdk-config.d.ts +717 -0
- package/dist/schemas/sdk-config.js +131 -0
- package/dist/schemas/sdk-errors-client.d.ts +5 -0
- package/dist/schemas/sdk-errors-client.js +25 -0
- package/dist/schemas/sdk-errors-server.d.ts +17 -0
- package/dist/schemas/sdk-errors-server.js +85 -0
- package/dist/schemas/shard.d.ts +21 -0
- package/dist/schemas/shard.js +17 -0
- package/dist/schemas/tools.d.ts +3 -0
- package/dist/schemas/translate.d.ts +68 -23
- package/dist/schemas/translate.js +37 -11
- package/dist/schemas/translation-config.d.ts +337 -13
- package/dist/schemas/translation-config.js +65 -9
- package/dist/schemas/whispercpp-config.d.ts +9 -1
- package/dist/schemas/whispercpp-config.js +2 -1
- package/dist/scripts/run-unit-tests.d.ts +2 -0
- package/dist/scripts/run-unit-tests.js +17 -0
- package/dist/server/bare/addons/llamacpp-completion/cache-logger.d.ts +6 -0
- package/dist/server/bare/addons/llamacpp-completion/cache-logger.js +34 -0
- package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/create-model.d.ts +1 -5
- package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/create-model.js +6 -20
- package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/handlers/completion-stream.js +26 -7
- package/dist/server/bare/addons/llamacpp-completion/index.d.ts +4 -0
- package/dist/server/bare/addons/llamacpp-completion/index.js +3 -0
- package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/kv-cache-utils.d.ts +4 -1
- package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/kv-cache-utils.js +49 -14
- package/dist/server/bare/addons/llamacpp-embedding/create-model.d.ts +8 -0
- package/dist/server/bare/addons/llamacpp-embedding/create-model.js +38 -0
- package/dist/server/bare/addons/llamacpp-embedding/handlers/embed.d.ts +12 -0
- package/dist/server/bare/addons/{llamacpp → llamacpp-embedding}/handlers/embed.js +18 -4
- package/dist/server/bare/addons/llamacpp-embedding/index.d.ts +3 -0
- package/dist/server/bare/addons/llamacpp-embedding/index.js +2 -0
- package/dist/server/bare/addons/load-model.js +38 -28
- package/dist/server/bare/addons/{translation → nmtcpp-translation}/create-model.js +23 -8
- package/dist/server/bare/addons/{translation → nmtcpp-translation}/handlers/translate.js +35 -11
- package/dist/server/bare/addons/onnx-ocr/create-model.d.ts +10 -0
- package/dist/server/bare/addons/onnx-ocr/create-model.js +39 -0
- package/dist/server/bare/addons/onnx-ocr/handlers/ocr-stream.d.ts +10 -0
- package/dist/server/bare/addons/onnx-ocr/handlers/ocr-stream.js +109 -0
- package/dist/server/bare/addons/onnx-ocr/index.d.ts +3 -0
- package/dist/server/bare/addons/onnx-ocr/index.js +2 -0
- package/dist/server/bare/addons/unload-model.js +6 -3
- package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/create-model.js +2 -1
- package/dist/server/bare/addons/whispercpp-transcription/handlers/transcribe-stream.js +82 -0
- package/dist/server/bare/delegate-rpc-client.js +31 -11
- package/dist/server/bare/hyperswarm.js +7 -5
- package/dist/server/bare/rag-hyperdb/handlers/chunk.d.ts +3 -0
- package/dist/server/bare/rag-hyperdb/handlers/chunk.js +7 -0
- package/dist/server/bare/rag-hyperdb/handlers/close-workspace.d.ts +3 -0
- package/dist/server/bare/rag-hyperdb/handlers/close-workspace.js +9 -0
- package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.d.ts +1 -1
- package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js +9 -10
- package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.d.ts +3 -0
- package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js +14 -0
- package/dist/server/bare/rag-hyperdb/handlers/ingest.d.ts +9 -0
- package/dist/server/bare/rag-hyperdb/handlers/ingest.js +18 -0
- package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.d.ts +3 -0
- package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js +4 -0
- package/dist/server/bare/rag-hyperdb/handlers/reindex.d.ts +9 -0
- package/dist/server/bare/rag-hyperdb/handlers/reindex.js +16 -0
- package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.d.ts +7 -4
- package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js +13 -14
- package/dist/server/bare/rag-hyperdb/handlers/search.js +10 -10
- package/dist/server/bare/rag-hyperdb/index.d.ts +8 -1
- package/dist/server/bare/rag-hyperdb/index.js +8 -1
- package/dist/server/bare/rag-hyperdb/rag-operation-manager.d.ts +7 -0
- package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +39 -0
- package/dist/server/bare/rag-hyperdb/rag-workspace-manager.d.ts +15 -0
- package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +135 -0
- package/dist/server/bare/registry/config-registry.d.ts +13 -4
- package/dist/server/bare/registry/config-registry.js +53 -10
- package/dist/server/bare/registry/logging-stream-registry.d.ts +24 -7
- package/dist/server/bare/registry/logging-stream-registry.js +99 -20
- package/dist/server/bare/registry/model-config-registry.d.ts +4 -0
- package/dist/server/bare/registry/model-config-registry.js +15 -0
- package/dist/server/bare/registry/model-config-utils.d.ts +15 -0
- package/dist/server/bare/registry/model-config-utils.js +121 -0
- package/dist/server/bare/registry/model-registry.d.ts +6 -26
- package/dist/server/bare/registry/model-registry.js +9 -6
- package/dist/server/bare/registry/runtime-context-registry.d.ts +7 -0
- package/dist/server/bare/registry/runtime-context-registry.js +26 -0
- package/dist/server/bare/utils/loader-adapter.d.ts +7 -0
- package/dist/server/bare/utils/loader-adapter.js +9 -0
- package/dist/server/error-handlers.js +4 -2
- package/dist/server/rpc/create-server.js +5 -3
- package/dist/server/rpc/handle-request.js +115 -19
- package/dist/server/rpc/handlers/cancelHandler.js +13 -2
- package/dist/server/rpc/handlers/completion-stream-delegated.js +4 -2
- package/dist/server/rpc/handlers/completion-stream.js +1 -1
- package/dist/server/rpc/handlers/delete-cache.js +4 -2
- package/dist/server/rpc/handlers/download-asset.js +3 -1
- package/dist/server/rpc/handlers/embed.js +4 -2
- package/dist/server/rpc/handlers/get-model-info.d.ts +1 -1
- package/dist/server/rpc/handlers/get-model-info.js +22 -10
- package/dist/server/rpc/handlers/index.d.ts +4 -2
- package/dist/server/rpc/handlers/index.js +2 -2
- package/dist/server/rpc/handlers/load-model/download-manager.d.ts +11 -11
- package/dist/server/rpc/handlers/load-model/download-manager.js +40 -28
- package/dist/server/rpc/handlers/{load-model.d.ts → load-model/handler.d.ts} +2 -2
- package/dist/server/rpc/handlers/load-model/handler.js +179 -0
- package/dist/server/rpc/handlers/load-model/http.js +361 -50
- package/dist/server/rpc/handlers/load-model/hyperdrive.js +26 -22
- 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.js +39 -8
- package/dist/server/rpc/handlers/load-model-delegated.d.ts +2 -2
- package/dist/server/rpc/handlers/load-model-delegated.js +15 -10
- package/dist/server/rpc/handlers/logging-stream.js +4 -4
- package/dist/server/rpc/handlers/ocr-stream.d.ts +3 -0
- package/dist/server/rpc/handlers/ocr-stream.js +39 -0
- package/dist/server/rpc/handlers/provideHandler/connection.js +12 -10
- package/dist/server/rpc/handlers/provideHandler/handler.js +18 -16
- package/dist/server/rpc/handlers/provideHandler/proxy.js +8 -6
- package/dist/server/rpc/handlers/rag.d.ts +2 -2
- package/dist/server/rpc/handlers/rag.js +107 -41
- package/dist/server/rpc/handlers/stopProvideHandler.js +3 -1
- package/dist/server/rpc/handlers/text-to-speech.js +1 -1
- package/dist/server/rpc/handlers/transcribe-stream.js +4 -2
- package/dist/server/rpc/handlers/translate.js +9 -16
- package/dist/server/rpc/handlers/unload-model.js +4 -2
- package/dist/server/utils/archive.d.ts +3 -0
- package/dist/server/utils/archive.js +171 -0
- package/dist/server/utils/audio/decoder.d.ts +2 -1
- package/dist/server/utils/audio/decoder.js +48 -11
- package/dist/server/utils/cache.d.ts +5 -5
- package/dist/server/utils/cache.js +13 -11
- package/dist/server/utils/config-transform.d.ts +3 -0
- package/dist/server/utils/config-transform.js +23 -0
- package/dist/server/utils/formatting.d.ts +13 -0
- package/dist/server/utils/formatting.js +26 -0
- package/dist/server/utils/gguf-tensor-extractor.d.ts +15 -0
- package/dist/server/utils/gguf-tensor-extractor.js +314 -0
- package/dist/server/utils/index.d.ts +4 -1
- package/dist/server/utils/index.js +4 -1
- package/dist/server/utils/shard-utils.d.ts +42 -16
- package/dist/server/utils/shard-utils.js +95 -7
- package/dist/server/worker.js +49 -19
- package/dist/utils/errors-base.d.ts +1 -1
- package/dist/utils/errors-base.js +2 -2
- package/dist/utils/errors-client.d.ts +24 -0
- package/dist/utils/errors-client.js +40 -0
- package/dist/utils/errors-server.d.ts +42 -0
- package/dist/utils/errors-server.js +71 -0
- package/dist/utils/mcp-adapter.d.ts +12 -0
- package/dist/utils/mcp-adapter.js +103 -0
- package/dist/utils/object.d.ts +2 -0
- package/dist/utils/object.js +3 -0
- package/dist/utils/tool-helpers.d.ts +10 -2
- package/dist/utils/tool-helpers.js +24 -11
- package/package.json +74 -36
- package/dist/client/api/set-config.d.ts +0 -7
- package/dist/client/api/set-config.js +0 -20
- package/dist/client/config-manager.d.ts +0 -4
- package/dist/client/config-manager.js +0 -8
- package/dist/client/rpc/bare-rpc-client.d.ts +0 -4
- package/dist/client/rpc/bare-rpc-client.js +0 -91
- package/dist/examples/llamacpp-file-logging.d.ts +0 -2
- package/dist/examples/rag/rag-hyperdb-workspaces.d.ts +0 -2
- package/dist/examples/rag/rag-hyperdb-workspaces.js +0 -106
- package/dist/examples/rag/rag-hyperdb.d.ts +0 -2
- package/dist/schemas/set-config.d.ts +0 -21
- package/dist/schemas/set-config.js +0 -14
- package/dist/server/bare/addons/llamacpp/handlers/embed.d.ts +0 -4
- package/dist/server/bare/addons/llamacpp/index.d.ts +0 -4
- package/dist/server/bare/addons/llamacpp/index.js +0 -3
- package/dist/server/bare/addons/whispercpp/handlers/transcribe-stream.js +0 -63
- package/dist/server/bare/rag-hyperdb/rag-manager.d.ts +0 -5
- package/dist/server/bare/rag-hyperdb/rag-manager.js +0 -64
- package/dist/server/rpc/handlers/load-model.js +0 -59
- package/dist/server/rpc/handlers/set-config.d.ts +0 -3
- package/dist/server/rpc/handlers/set-config.js +0 -18
- package/dist/server/utils/hash.d.ts +0 -5
- package/dist/server/utils/hash.js +0 -11
- /package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/handlers/completion-stream.d.ts +0 -0
- /package/dist/server/bare/addons/{translation → nmtcpp-translation}/create-model.d.ts +0 -0
- /package/dist/server/bare/addons/{translation → nmtcpp-translation}/handlers/translate.d.ts +0 -0
- /package/dist/server/bare/addons/{translation → nmtcpp-translation}/index.d.ts +0 -0
- /package/dist/server/bare/addons/{translation → nmtcpp-translation}/index.js +0 -0
- /package/dist/server/bare/addons/{tts → onnx-tts}/create-model.d.ts +0 -0
- /package/dist/server/bare/addons/{tts → onnx-tts}/create-model.js +0 -0
- /package/dist/server/bare/addons/{tts → onnx-tts}/handlers/text-to-speech.d.ts +0 -0
- /package/dist/server/bare/addons/{tts → onnx-tts}/handlers/text-to-speech.js +0 -0
- /package/dist/server/bare/addons/{tts → onnx-tts}/index.d.ts +0 -0
- /package/dist/server/bare/addons/{tts → onnx-tts}/index.js +0 -0
- /package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/create-model.d.ts +0 -0
- /package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/handlers/transcribe-stream.d.ts +0 -0
- /package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/index.d.ts +0 -0
- /package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/index.js +0 -0
|
@@ -1,35 +1,13 @@
|
|
|
1
|
-
import type EventEmitter from "events";
|
|
2
1
|
import type FilesystemDL from "@qvac/dl-filesystem";
|
|
2
|
+
import type { CanonicalModelType } from "../../../schemas/index";
|
|
3
|
+
import type BaseInference from "@qvac/infer-base";
|
|
3
4
|
interface AddonInterface {
|
|
4
5
|
cancel(jobId?: string): Promise<void>;
|
|
5
6
|
}
|
|
6
|
-
export
|
|
7
|
-
load(...args: unknown[]): Promise<void>;
|
|
8
|
-
run(input: unknown): Promise<EventEmitter & {
|
|
9
|
-
onUpdate(callback: (data: string) => void): {
|
|
10
|
-
await: () => Promise<void>;
|
|
11
|
-
};
|
|
12
|
-
onUpdate(callback: (data: {
|
|
13
|
-
outputArray: Int16Array;
|
|
14
|
-
}) => void): {
|
|
15
|
-
await: () => Promise<void>;
|
|
16
|
-
};
|
|
17
|
-
onError(callback: (error: Error) => void): void;
|
|
18
|
-
onUpdate(callback: (data: Array<{
|
|
19
|
-
text: string;
|
|
20
|
-
}>) => void): {
|
|
21
|
-
await: () => Promise<void>;
|
|
22
|
-
};
|
|
23
|
-
cancel(): Promise<void>;
|
|
24
|
-
iterate(): AsyncIterableIterator<string | Array<{
|
|
25
|
-
text: string;
|
|
26
|
-
}>>;
|
|
27
|
-
await(): Promise<void>;
|
|
28
|
-
}>;
|
|
7
|
+
export type AnyModel = Omit<BaseInference, "addon"> & {
|
|
29
8
|
reload?(config: unknown): Promise<void>;
|
|
30
|
-
unload?(): Promise<void>;
|
|
31
9
|
addon?: AddonInterface;
|
|
32
|
-
}
|
|
10
|
+
};
|
|
33
11
|
interface DelegateOptions {
|
|
34
12
|
topic: string;
|
|
35
13
|
providerPublicKey: string;
|
|
@@ -40,6 +18,7 @@ interface LocalOptions {
|
|
|
40
18
|
path: string;
|
|
41
19
|
loadedAt: Date;
|
|
42
20
|
config: unknown;
|
|
21
|
+
modelType: CanonicalModelType;
|
|
43
22
|
name?: string | undefined;
|
|
44
23
|
loader: FilesystemDL;
|
|
45
24
|
}
|
|
@@ -53,6 +32,7 @@ export declare function registerModel(id: string, options: {
|
|
|
53
32
|
model: AnyModel;
|
|
54
33
|
path: string;
|
|
55
34
|
config: unknown;
|
|
35
|
+
modelType: CanonicalModelType;
|
|
56
36
|
loader: FilesystemDL;
|
|
57
37
|
name?: string | undefined;
|
|
58
38
|
} | {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ModelAlreadyRegisteredError, ModelNotFoundError, ModelIsDelegatedError, } from "../../../utils/errors-server.js";
|
|
2
|
+
import { getServerLogger } from "../../../logging/index.js";
|
|
3
|
+
const logger = getServerLogger();
|
|
2
4
|
// Global registry state - using stateless functions to manage it
|
|
3
5
|
const modelRegistry = new Map();
|
|
4
6
|
export function registerModel(id, options) {
|
|
@@ -17,7 +19,7 @@ export function registerModel(id, options) {
|
|
|
17
19
|
timeout,
|
|
18
20
|
},
|
|
19
21
|
});
|
|
20
|
-
|
|
22
|
+
logger.info(`Delegated model registered: ${id} -> topic: ${topic}, provider: ${providerPublicKey}, timeout: ${timeout}ms`);
|
|
21
23
|
}
|
|
22
24
|
else {
|
|
23
25
|
modelRegistry.set(id, {
|
|
@@ -28,12 +30,13 @@ export function registerModel(id, options) {
|
|
|
28
30
|
path: options.path,
|
|
29
31
|
loadedAt: new Date(),
|
|
30
32
|
config: options.config,
|
|
33
|
+
modelType: options.modelType,
|
|
31
34
|
loader: options.loader,
|
|
32
35
|
name: options.name,
|
|
33
36
|
},
|
|
34
37
|
});
|
|
35
38
|
const nameStr = options.name ? ` (${options.name})` : "";
|
|
36
|
-
|
|
39
|
+
logger.info(`Local model registered: ${id}${nameStr} -> ${options.path}`);
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
export function getModelEntry(id) {
|
|
@@ -56,7 +59,7 @@ export function unregisterModel(id) {
|
|
|
56
59
|
const entry = modelRegistry.get(id);
|
|
57
60
|
if (entry) {
|
|
58
61
|
modelRegistry.delete(id);
|
|
59
|
-
|
|
62
|
+
logger.debug(`Model unregistered: ${id}`);
|
|
60
63
|
return entry;
|
|
61
64
|
}
|
|
62
65
|
return null;
|
|
@@ -99,7 +102,7 @@ export function updateModelConfig(id, config) {
|
|
|
99
102
|
}
|
|
100
103
|
export function clearRegistry() {
|
|
101
104
|
modelRegistry.clear();
|
|
102
|
-
|
|
105
|
+
logger.info("Model registry cleared");
|
|
103
106
|
}
|
|
104
107
|
export function getRegistryStats() {
|
|
105
108
|
return {
|
|
@@ -113,9 +116,9 @@ export async function unloadAllModels() {
|
|
|
113
116
|
const entry = modelRegistry.get(modelId);
|
|
114
117
|
if (entry?.local?.model && entry.local.model.unload) {
|
|
115
118
|
await entry.local.model.unload();
|
|
116
|
-
|
|
119
|
+
logger.debug(`Model unloaded: ${modelId}`);
|
|
117
120
|
}
|
|
118
121
|
modelRegistry.delete(modelId);
|
|
119
122
|
}
|
|
120
|
-
|
|
123
|
+
logger.info(`Unloaded ${modelIds.length} models`);
|
|
121
124
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RuntimeContext } from "../../../schemas/index";
|
|
2
|
+
export declare function setRuntimeContext(ctx: RuntimeContext): void;
|
|
3
|
+
export declare function getRuntimeContext(): RuntimeContext;
|
|
4
|
+
export declare function isMobile(): boolean;
|
|
5
|
+
export declare function isAndroid(): boolean;
|
|
6
|
+
export declare function isIOS(): boolean;
|
|
7
|
+
//# sourceMappingURL=runtime-context-registry.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// Runtime context state
|
|
3
|
+
// ============================================
|
|
4
|
+
let context = {};
|
|
5
|
+
let isSet = false;
|
|
6
|
+
export function setRuntimeContext(ctx) {
|
|
7
|
+
if (isSet)
|
|
8
|
+
return;
|
|
9
|
+
context = ctx;
|
|
10
|
+
isSet = true;
|
|
11
|
+
}
|
|
12
|
+
export function getRuntimeContext() {
|
|
13
|
+
return context;
|
|
14
|
+
}
|
|
15
|
+
// ============================================
|
|
16
|
+
// Convenience helpers
|
|
17
|
+
// ============================================
|
|
18
|
+
export function isMobile() {
|
|
19
|
+
return context.runtime === "react-native";
|
|
20
|
+
}
|
|
21
|
+
export function isAndroid() {
|
|
22
|
+
return context.platform === "android";
|
|
23
|
+
}
|
|
24
|
+
export function isIOS() {
|
|
25
|
+
return context.platform === "ios";
|
|
26
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type FilesystemDL from "@qvac/dl-filesystem";
|
|
2
|
+
/**
|
|
3
|
+
* Adapts FilesystemDL to addon Loader interface by adding download stub.
|
|
4
|
+
* download() is never called when using filesystem loader.
|
|
5
|
+
*/
|
|
6
|
+
export declare function asLoader<T>(loader: FilesystemDL): T;
|
|
7
|
+
//# sourceMappingURL=loader-adapter.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapts FilesystemDL to addon Loader interface by adding download stub.
|
|
3
|
+
* download() is never called when using filesystem loader.
|
|
4
|
+
*/
|
|
5
|
+
export function asLoader(loader) {
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
|
|
7
|
+
loader.download = () => Promise.reject(new Error("download not supported"));
|
|
8
|
+
return loader;
|
|
9
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { createErrorResponse, responseSchema } from "../schemas/index.js";
|
|
2
|
+
import { getServerLogger } from "../logging/index.js";
|
|
3
|
+
const logger = getServerLogger();
|
|
2
4
|
export function sendErrorResponse(req, error) {
|
|
3
5
|
try {
|
|
4
6
|
const errorResponse = createErrorResponse(error);
|
|
@@ -6,7 +8,7 @@ export function sendErrorResponse(req, error) {
|
|
|
6
8
|
req.reply(responseData, "utf-8");
|
|
7
9
|
}
|
|
8
10
|
catch (responseError) {
|
|
9
|
-
|
|
11
|
+
logger.error("Failed to create error response:", responseError);
|
|
10
12
|
const fallbackError = createErrorResponse(new Error("Internal server error"));
|
|
11
13
|
req.reply(JSON.stringify(fallbackError), "utf-8");
|
|
12
14
|
}
|
|
@@ -19,7 +21,7 @@ export function sendStreamErrorResponse(stream, error) {
|
|
|
19
21
|
stream.end();
|
|
20
22
|
}
|
|
21
23
|
catch (responseError) {
|
|
22
|
-
|
|
24
|
+
logger.error("Failed to create stream error response:", responseError);
|
|
23
25
|
const fallbackError = createErrorResponse(new Error("Internal server error"));
|
|
24
26
|
stream.write(JSON.stringify(fallbackError) + "\n", "utf-8");
|
|
25
27
|
stream.end();
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import RPC from "bare-rpc";
|
|
2
2
|
import { connect } from "bare-net";
|
|
3
3
|
import { handleRequest } from "./handle-request.js";
|
|
4
|
+
import { getServerLogger } from "../../logging/index.js";
|
|
5
|
+
const logger = getServerLogger();
|
|
4
6
|
export function createBareKitRPCServer() {
|
|
5
7
|
const { IPC } = globalThis
|
|
6
8
|
.BareKit;
|
|
7
9
|
return new RPC(IPC, handleRequest);
|
|
8
10
|
}
|
|
9
11
|
export function createIPCClient(socketPath) {
|
|
10
|
-
|
|
12
|
+
logger.info(`Connecting to IPC socket at ${socketPath}`);
|
|
11
13
|
const socket = connect(socketPath);
|
|
12
14
|
socket.on("connect", () => {
|
|
13
|
-
|
|
15
|
+
logger.info("Connected to IPC server");
|
|
14
16
|
});
|
|
15
17
|
socket.on("error", (err) => {
|
|
16
|
-
|
|
18
|
+
logger.error("IPC client connection error:", err);
|
|
17
19
|
});
|
|
18
20
|
return new RPC(socket, handleRequest);
|
|
19
21
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { requestSchema, responseSchema, } from "../../schemas/index.js";
|
|
2
2
|
import { handleCompletionStream } from "./handlers/completion-stream.js";
|
|
3
3
|
import { handleDownloadAsset } from "./handlers/download-asset.js";
|
|
4
|
-
import { handleLoadModel } from "./handlers/load-model.js";
|
|
4
|
+
import { handleLoadModel } from "./handlers/load-model/index.js";
|
|
5
5
|
import { handleLoadModelDelegated } from "./handlers/load-model-delegated.js";
|
|
6
6
|
import { handleCompletionStreamDelegated } from "./handlers/completion-stream-delegated.js";
|
|
7
7
|
import { getModelEntry } from "../bare/registry/model-registry.js";
|
|
8
|
+
import { setSDKConfig } from "../bare/registry/config-registry.js";
|
|
9
|
+
import { setRuntimeContext } from "../bare/registry/runtime-context-registry.js";
|
|
8
10
|
import { handleUnloadModel } from "./handlers/unload-model.js";
|
|
9
11
|
import { handleTranscribeStream } from "./handlers/transcribe-stream.js";
|
|
10
12
|
import { handleEmbed } from "./handlers/embed.js";
|
|
@@ -16,10 +18,12 @@ import { stopProvideHandler } from "./handlers/stopProvideHandler.js";
|
|
|
16
18
|
import { handleRag } from "./handlers/rag.js";
|
|
17
19
|
import { handleDeleteCache } from "./handlers/delete-cache.js";
|
|
18
20
|
import { handleTextToSpeech } from "./handlers/text-to-speech.js";
|
|
19
|
-
import { handleSetConfig } from "./handlers/set-config.js";
|
|
20
21
|
import { handleGetModelInfo } from "./handlers/get-model-info.js";
|
|
22
|
+
import { handleOCRStream } from "./handlers/ocr-stream.js";
|
|
21
23
|
import { sendErrorResponse, sendStreamErrorResponse, } from "../error-handlers.js";
|
|
22
24
|
import { NoDataReceivedError, UnknownRequestTypeError, } from "../../utils/errors-client.js";
|
|
25
|
+
import { normalizeModelType } from "../../schemas/index.js";
|
|
26
|
+
import { resolveModelConfig } from "../bare/registry/model-config-registry.js";
|
|
23
27
|
export async function handleRequest(req) {
|
|
24
28
|
try {
|
|
25
29
|
const rawData = req.data?.toString();
|
|
@@ -27,7 +31,31 @@ export async function handleRequest(req) {
|
|
|
27
31
|
throw new NoDataReceivedError();
|
|
28
32
|
}
|
|
29
33
|
const jsonData = JSON.parse(rawData);
|
|
30
|
-
|
|
34
|
+
// Handle special internal config initialization message
|
|
35
|
+
if (jsonData &&
|
|
36
|
+
typeof jsonData === "object" &&
|
|
37
|
+
"type" in jsonData &&
|
|
38
|
+
jsonData.type === "__init_config") {
|
|
39
|
+
try {
|
|
40
|
+
const initData = jsonData;
|
|
41
|
+
if (initData.config) {
|
|
42
|
+
setSDKConfig(initData.config);
|
|
43
|
+
}
|
|
44
|
+
if (initData.runtimeContext) {
|
|
45
|
+
setRuntimeContext(initData.runtimeContext);
|
|
46
|
+
}
|
|
47
|
+
req.reply(JSON.stringify({ success: true }), "utf-8");
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
req.reply(JSON.stringify({
|
|
51
|
+
success: false,
|
|
52
|
+
error: error instanceof Error ? error.message : String(error),
|
|
53
|
+
}), "utf-8");
|
|
54
|
+
}
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const processedData = applyDeviceDefaultsToRequest(jsonData);
|
|
58
|
+
const request = requestSchema.parse(processedData);
|
|
31
59
|
switch (request.type) {
|
|
32
60
|
case "downloadAsset": {
|
|
33
61
|
if (request.withProgress) {
|
|
@@ -84,13 +112,19 @@ export async function handleRequest(req) {
|
|
|
84
112
|
sendStreamErrorResponse(stream, error);
|
|
85
113
|
}
|
|
86
114
|
}
|
|
115
|
+
else if (request.delegate) {
|
|
116
|
+
try {
|
|
117
|
+
const response = await handleLoadModelDelegated(request);
|
|
118
|
+
req.reply(JSON.stringify(responseSchema.parse(response)), "utf-8");
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
sendErrorResponse(req, error);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
87
124
|
else {
|
|
88
|
-
//
|
|
125
|
+
// Load without progress/delegate, or reload config
|
|
89
126
|
try {
|
|
90
|
-
const
|
|
91
|
-
? handleLoadModelDelegated
|
|
92
|
-
: handleLoadModel;
|
|
93
|
-
const response = await handler(request);
|
|
127
|
+
const response = await handleLoadModel(request);
|
|
94
128
|
req.reply(JSON.stringify(responseSchema.parse(response)), "utf-8");
|
|
95
129
|
}
|
|
96
130
|
catch (error) {
|
|
@@ -211,12 +245,35 @@ export async function handleRequest(req) {
|
|
|
211
245
|
break;
|
|
212
246
|
}
|
|
213
247
|
case "rag": {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
248
|
+
// Only ingest, saveEmbeddings, and reindex support progress
|
|
249
|
+
const supportsProgress = request.operation === "ingest" ||
|
|
250
|
+
request.operation === "saveEmbeddings" ||
|
|
251
|
+
request.operation === "reindex";
|
|
252
|
+
const withProgress = supportsProgress && request.withProgress;
|
|
253
|
+
if (withProgress) {
|
|
254
|
+
const stream = req.createResponseStream();
|
|
255
|
+
try {
|
|
256
|
+
const response = await handleRag(request, (update) => {
|
|
257
|
+
const data = JSON.stringify(responseSchema.parse(update));
|
|
258
|
+
stream.write(data + "\n", "utf-8");
|
|
259
|
+
});
|
|
260
|
+
// Send final response
|
|
261
|
+
const data = JSON.stringify(responseSchema.parse(response));
|
|
262
|
+
stream.write(data + "\n", "utf-8");
|
|
263
|
+
stream.end();
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
sendStreamErrorResponse(stream, error);
|
|
267
|
+
}
|
|
217
268
|
}
|
|
218
|
-
|
|
219
|
-
|
|
269
|
+
else {
|
|
270
|
+
try {
|
|
271
|
+
const response = await handleRag(request);
|
|
272
|
+
req.reply(JSON.stringify(responseSchema.parse(response)), "utf-8");
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
sendErrorResponse(req, error);
|
|
276
|
+
}
|
|
220
277
|
}
|
|
221
278
|
break;
|
|
222
279
|
}
|
|
@@ -245,9 +302,9 @@ export async function handleRequest(req) {
|
|
|
245
302
|
}
|
|
246
303
|
break;
|
|
247
304
|
}
|
|
248
|
-
case "
|
|
305
|
+
case "getModelInfo": {
|
|
249
306
|
try {
|
|
250
|
-
const response =
|
|
307
|
+
const response = await handleGetModelInfo(request);
|
|
251
308
|
req.reply(JSON.stringify(responseSchema.parse(response)), "utf-8");
|
|
252
309
|
}
|
|
253
310
|
catch (error) {
|
|
@@ -255,13 +312,18 @@ export async function handleRequest(req) {
|
|
|
255
312
|
}
|
|
256
313
|
break;
|
|
257
314
|
}
|
|
258
|
-
case "
|
|
315
|
+
case "ocrStream": {
|
|
316
|
+
const stream = req.createResponseStream();
|
|
259
317
|
try {
|
|
260
|
-
const response
|
|
261
|
-
|
|
318
|
+
for await (const response of handleOCRStream(request)) {
|
|
319
|
+
const validatedResponse = responseSchema.parse(response);
|
|
320
|
+
const data = JSON.stringify(validatedResponse);
|
|
321
|
+
stream.write(data + "\n", "utf-8");
|
|
322
|
+
}
|
|
323
|
+
stream.end();
|
|
262
324
|
}
|
|
263
325
|
catch (error) {
|
|
264
|
-
|
|
326
|
+
sendStreamErrorResponse(stream, error);
|
|
265
327
|
}
|
|
266
328
|
break;
|
|
267
329
|
}
|
|
@@ -274,3 +336,37 @@ export async function handleRequest(req) {
|
|
|
274
336
|
sendErrorResponse(req, error);
|
|
275
337
|
}
|
|
276
338
|
}
|
|
339
|
+
/**
|
|
340
|
+
* Apply device-specific config defaults to loadModel requests before schema parsing.
|
|
341
|
+
* This ensures device defaults are applied before schema defaults.
|
|
342
|
+
*
|
|
343
|
+
* Priority: User config > Device defaults > Schema defaults
|
|
344
|
+
*/
|
|
345
|
+
function applyDeviceDefaultsToRequest(data) {
|
|
346
|
+
if (!data || typeof data !== "object")
|
|
347
|
+
return data;
|
|
348
|
+
const obj = data;
|
|
349
|
+
const requestType = obj["type"];
|
|
350
|
+
// Only process loadModel requests (not reload config which uses modelId)
|
|
351
|
+
if (requestType !== "loadModel" ||
|
|
352
|
+
!obj["modelType"] ||
|
|
353
|
+
!("modelSrc" in obj)) {
|
|
354
|
+
return data;
|
|
355
|
+
}
|
|
356
|
+
// Normalize model type to canonical form
|
|
357
|
+
let canonicalType;
|
|
358
|
+
try {
|
|
359
|
+
canonicalType = normalizeModelType(obj["modelType"]);
|
|
360
|
+
}
|
|
361
|
+
catch {
|
|
362
|
+
// Invalid model type, let schema validation handle it
|
|
363
|
+
return data;
|
|
364
|
+
}
|
|
365
|
+
// Apply device defaults and full schema defaults to modelConfig
|
|
366
|
+
const rawConfig = obj["modelConfig"] ?? {};
|
|
367
|
+
const configWithDefaults = resolveModelConfig(canonicalType, rawConfig);
|
|
368
|
+
return {
|
|
369
|
+
...obj,
|
|
370
|
+
modelConfig: configWithDefaults,
|
|
371
|
+
};
|
|
372
|
+
}
|
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
import { cancel } from "../../bare/addons/index.js";
|
|
2
2
|
import { createCancelFunction } from "./load-model/download-manager.js";
|
|
3
|
+
import { cancelRagOperation, DEFAULT_WORKSPACE, } from "../../bare/rag-hyperdb/index.js";
|
|
4
|
+
import { getServerLogger } from "../../../logging/index.js";
|
|
5
|
+
const logger = getServerLogger();
|
|
3
6
|
export async function cancelHandler(request) {
|
|
4
7
|
try {
|
|
5
8
|
switch (request.operation) {
|
|
6
9
|
case "inference":
|
|
7
10
|
await cancel({ modelId: request.modelId });
|
|
8
11
|
break;
|
|
9
|
-
case "downloadAsset":
|
|
12
|
+
case "downloadAsset": {
|
|
10
13
|
const cancelDownload = createCancelFunction(request.downloadKey, request.clearCache);
|
|
11
14
|
cancelDownload();
|
|
12
15
|
break;
|
|
16
|
+
}
|
|
17
|
+
case "rag": {
|
|
18
|
+
const cancelled = cancelRagOperation(request.workspace);
|
|
19
|
+
if (!cancelled) {
|
|
20
|
+
logger.warn(`No active RAG operation to cancel for workspace: ${request.workspace ?? DEFAULT_WORKSPACE}`);
|
|
21
|
+
}
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
13
24
|
}
|
|
14
25
|
return {
|
|
15
26
|
type: "cancel",
|
|
@@ -17,7 +28,7 @@ export async function cancelHandler(request) {
|
|
|
17
28
|
};
|
|
18
29
|
}
|
|
19
30
|
catch (error) {
|
|
20
|
-
|
|
31
|
+
logger.error("Error during cancellation:", error);
|
|
21
32
|
return {
|
|
22
33
|
type: "cancel",
|
|
23
34
|
success: false,
|
|
@@ -2,6 +2,8 @@ import { getModelEntry } from "../../bare/registry/model-registry.js";
|
|
|
2
2
|
import { getRPC } from "../../bare/delegate-rpc-client.js";
|
|
3
3
|
import { stream } from "../../../client/rpc/rpc-client.js";
|
|
4
4
|
import { ModelIsDelegatedError } from "../../../utils/errors-server.js";
|
|
5
|
+
import { getServerLogger } from "../../../logging/index.js";
|
|
6
|
+
const logger = getServerLogger();
|
|
5
7
|
export async function* handleCompletionStreamDelegated(request) {
|
|
6
8
|
// Get delegation info from model registry
|
|
7
9
|
const entry = getModelEntry(request.modelId);
|
|
@@ -10,7 +12,7 @@ export async function* handleCompletionStreamDelegated(request) {
|
|
|
10
12
|
}
|
|
11
13
|
const { topic, providerPublicKey, timeout } = entry.delegated;
|
|
12
14
|
try {
|
|
13
|
-
|
|
15
|
+
logger.debug(`📤 Sending delegated completionStream request to provider: ${providerPublicKey}${timeout ? `, timeout: ${timeout}ms` : ""}`);
|
|
14
16
|
// Create RPC instance for this HyperSwarm peer
|
|
15
17
|
const rpc = await getRPC(topic, providerPublicKey, { timeout });
|
|
16
18
|
// Use the regular stream function with the HyperSwarm RPC instance
|
|
@@ -21,7 +23,7 @@ export async function* handleCompletionStreamDelegated(request) {
|
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
catch (error) {
|
|
24
|
-
|
|
26
|
+
logger.error("Error in delegated completion stream:", error);
|
|
25
27
|
yield {
|
|
26
28
|
type: "completionStream",
|
|
27
29
|
token: `Error communicating with provider: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { completion } from "../../bare/addons/llamacpp/index.js";
|
|
1
|
+
import { completion } from "../../bare/addons/llamacpp-completion/index.js";
|
|
2
2
|
export async function* handleCompletionStream(request) {
|
|
3
3
|
const filteredHistory = request.history.map(({ role, content, attachments }) => ({
|
|
4
4
|
role,
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { deleteCache as deleteCacheUtil } from "../../bare/addons/llamacpp/
|
|
1
|
+
import { deleteCache as deleteCacheUtil } from "../../bare/addons/llamacpp-completion/index.js";
|
|
2
|
+
import { getServerLogger } from "../../../logging/index.js";
|
|
3
|
+
const logger = getServerLogger();
|
|
2
4
|
export async function handleDeleteCache(request) {
|
|
3
5
|
try {
|
|
4
6
|
if ("all" in request && request.all) {
|
|
@@ -19,7 +21,7 @@ export async function handleDeleteCache(request) {
|
|
|
19
21
|
};
|
|
20
22
|
}
|
|
21
23
|
catch (error) {
|
|
22
|
-
|
|
24
|
+
logger.error("Error deleting cache:", error);
|
|
23
25
|
return {
|
|
24
26
|
type: "deleteCache",
|
|
25
27
|
success: false,
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { resolveModelPath } from "./load-model/resolve.js";
|
|
2
|
+
import { getServerLogger } from "../../../logging/index.js";
|
|
3
|
+
const logger = getServerLogger();
|
|
2
4
|
export async function handleDownloadAsset(request, progressCallback) {
|
|
3
5
|
const { assetSrc, seed } = request;
|
|
4
6
|
try {
|
|
@@ -10,7 +12,7 @@ export async function handleDownloadAsset(request, progressCallback) {
|
|
|
10
12
|
};
|
|
11
13
|
}
|
|
12
14
|
catch (error) {
|
|
13
|
-
|
|
15
|
+
logger.error("Error downloading asset:", error);
|
|
14
16
|
return {
|
|
15
17
|
type: "downloadAsset",
|
|
16
18
|
success: false,
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { embed } from "../../bare/addons/llamacpp/index.js";
|
|
1
|
+
import { embed } from "../../bare/addons/llamacpp-embedding/index.js";
|
|
2
|
+
import { getServerLogger } from "../../../logging/index.js";
|
|
3
|
+
const logger = getServerLogger();
|
|
2
4
|
export async function handleEmbed(request) {
|
|
3
5
|
const { modelId, text } = request;
|
|
4
6
|
try {
|
|
@@ -10,7 +12,7 @@ export async function handleEmbed(request) {
|
|
|
10
12
|
};
|
|
11
13
|
}
|
|
12
14
|
catch (error) {
|
|
13
|
-
|
|
15
|
+
logger.error("Error during embedding:", error);
|
|
14
16
|
return {
|
|
15
17
|
type: "embed",
|
|
16
18
|
success: false,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { GetModelInfoRequest, GetModelInfoResponse } from "../../../schemas/index";
|
|
2
|
-
export declare
|
|
2
|
+
export declare function handleGetModelInfo(request: GetModelInfoRequest): Promise<GetModelInfoResponse>;
|
|
3
3
|
//# sourceMappingURL=get-model-info.d.ts.map
|
|
@@ -6,7 +6,8 @@ import { promises as fsPromises } from "bare-fs";
|
|
|
6
6
|
import path from "bare-path";
|
|
7
7
|
import { getShardPath } from "../../utils/cache.js";
|
|
8
8
|
import { ModelNotFoundError } from "../../../utils/errors-server.js";
|
|
9
|
-
|
|
9
|
+
import { normalizeModelType } from "../../../schemas/model-types.js";
|
|
10
|
+
export async function handleGetModelInfo(request) {
|
|
10
11
|
const { name } = request;
|
|
11
12
|
const catalogEntry = models.find((m) => m.name === name);
|
|
12
13
|
if (!catalogEntry) {
|
|
@@ -34,6 +35,10 @@ export const handleGetModelInfo = async (request) => {
|
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
const isLoaded = loadedInstances.length > 0;
|
|
38
|
+
// Normalize addon from alias to canonical (vad passes through as-is)
|
|
39
|
+
const normalizedAddon = catalogEntry.addon === "vad"
|
|
40
|
+
? "vad"
|
|
41
|
+
: normalizeModelType(catalogEntry.addon);
|
|
37
42
|
const modelInfo = {
|
|
38
43
|
name: catalogEntry.name,
|
|
39
44
|
modelId: catalogEntry.modelId,
|
|
@@ -41,7 +46,7 @@ export const handleGetModelInfo = async (request) => {
|
|
|
41
46
|
hyperbeeKey: catalogEntry.hyperbeeKey,
|
|
42
47
|
expectedSize: catalogEntry.expectedSize,
|
|
43
48
|
sha256Checksum: catalogEntry.sha256Checksum,
|
|
44
|
-
addon:
|
|
49
|
+
addon: normalizedAddon,
|
|
45
50
|
isCached,
|
|
46
51
|
isLoaded,
|
|
47
52
|
cacheFiles,
|
|
@@ -53,7 +58,7 @@ export const handleGetModelInfo = async (request) => {
|
|
|
53
58
|
type: "getModelInfo",
|
|
54
59
|
modelInfo,
|
|
55
60
|
};
|
|
56
|
-
}
|
|
61
|
+
}
|
|
57
62
|
async function handleShardedModel(hyperdriveKey, shardMetadata) {
|
|
58
63
|
const cacheFiles = [];
|
|
59
64
|
let allShardsCached = true;
|
|
@@ -66,13 +71,19 @@ async function handleShardedModel(hyperdriveKey, shardMetadata) {
|
|
|
66
71
|
let shardCachedAt;
|
|
67
72
|
try {
|
|
68
73
|
const stats = await fsPromises.stat(shardPath);
|
|
69
|
-
|
|
70
|
-
if (
|
|
74
|
+
const fileExists = stats.isFile();
|
|
75
|
+
if (fileExists) {
|
|
71
76
|
shardActualSize = stats.size;
|
|
72
77
|
shardCachedAt = stats.mtime;
|
|
73
|
-
|
|
74
|
-
if (
|
|
75
|
-
|
|
78
|
+
shardIsCached = stats.size === shard.expectedSize;
|
|
79
|
+
if (shardIsCached) {
|
|
80
|
+
totalActualSize += stats.size;
|
|
81
|
+
if (!latestCachedAt || stats.mtime > latestCachedAt) {
|
|
82
|
+
latestCachedAt = stats.mtime;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
allShardsCached = false;
|
|
76
87
|
}
|
|
77
88
|
}
|
|
78
89
|
else {
|
|
@@ -114,10 +125,11 @@ async function handleSingleFileModel(hyperdriveKey, modelId, expectedSize, sha25
|
|
|
114
125
|
let fileCachedAt;
|
|
115
126
|
try {
|
|
116
127
|
const stats = await fsPromises.stat(filePath);
|
|
117
|
-
|
|
118
|
-
if (
|
|
128
|
+
const fileExists = stats.isFile();
|
|
129
|
+
if (fileExists) {
|
|
119
130
|
fileActualSize = stats.size;
|
|
120
131
|
fileCachedAt = stats.mtime;
|
|
132
|
+
fileIsCached = stats.size === expectedSize;
|
|
121
133
|
}
|
|
122
134
|
}
|
|
123
135
|
catch {
|
|
@@ -12,6 +12,8 @@ import { handleRag } from "./rag";
|
|
|
12
12
|
import { cancelHandler } from "./cancelHandler";
|
|
13
13
|
import { handleDeleteCache } from "./delete-cache";
|
|
14
14
|
import { handleTextToSpeech } from "./text-to-speech";
|
|
15
|
+
import { handleGetModelInfo } from "./get-model-info";
|
|
16
|
+
import { handleOCRStream } from "./ocr-stream";
|
|
15
17
|
export declare const handlers: {
|
|
16
18
|
completionStream: typeof handleCompletionStream;
|
|
17
19
|
downloadAsset: typeof handleDownloadAsset;
|
|
@@ -27,7 +29,7 @@ export declare const handlers: {
|
|
|
27
29
|
rag: typeof handleRag;
|
|
28
30
|
cancel: typeof cancelHandler;
|
|
29
31
|
textToSpeech: typeof handleTextToSpeech;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
getModelInfo: typeof handleGetModelInfo;
|
|
33
|
+
ocrStream: typeof handleOCRStream;
|
|
32
34
|
};
|
|
33
35
|
//# sourceMappingURL=index.d.ts.map
|