@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
package/dist/server/worker.js
CHANGED
|
@@ -1,27 +1,47 @@
|
|
|
1
1
|
import process from "bare-process";
|
|
2
|
+
import { isBareKit } from "which-runtime";
|
|
2
3
|
import { createBareKitRPCServer, createIPCClient, } from "./rpc/create-server.js";
|
|
3
4
|
import { z } from "zod";
|
|
4
5
|
import { destroySwarm } from "./bare/hyperswarm.js";
|
|
5
|
-
import { closeAllRagInstances } from "./bare/rag-hyperdb/
|
|
6
|
+
import { closeAllRagInstances } from "./bare/rag-hyperdb/index.js";
|
|
6
7
|
import { cleanupDownloads } from "./rpc/handlers/load-model/download-manager.js";
|
|
7
8
|
import { unloadAllModels } from "./bare/registry/model-registry.js";
|
|
8
|
-
import { clearAllLoggingStreams } from "./bare/registry/logging-stream-registry.js";
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
import { clearAllLoggingStreams, startLogBuffering, } from "./bare/registry/logging-stream-registry.js";
|
|
10
|
+
import { ADDON_NAMESPACES, createAddonLoggerCallback, clearAllAddonLoggers, getServerLogger, SDK_LOG_ID, } from "../logging/index.js";
|
|
11
|
+
import llmAddonLogging from "@qvac/llm-llamacpp/addonLogging.js";
|
|
12
|
+
import embedAddonLogging from "@qvac/embed-llamacpp/addonLogging.js";
|
|
13
|
+
import ttsAddonLogging from "@qvac/tts-onnx/addonLogging.js";
|
|
14
|
+
import whisperAddonLogging from "@qvac/transcription-whispercpp/addonLogging.js";
|
|
15
|
+
import nmtAddonLogging from "@qvac/translation-nmtcpp/addonLogging.js";
|
|
16
|
+
// Buffer SDK logs from startup so clients can receive them when they subscribe
|
|
17
|
+
startLogBuffering(SDK_LOG_ID);
|
|
18
|
+
const logger = getServerLogger();
|
|
19
|
+
logger.info("🐻 Hello from Bare");
|
|
20
|
+
logger.debug("Arguments to worker:", process.argv);
|
|
21
|
+
// Initialize addon logger callbacks
|
|
22
|
+
llmAddonLogging.setLogger(createAddonLoggerCallback(ADDON_NAMESPACES.LLAMACPP_LLM));
|
|
23
|
+
embedAddonLogging.setLogger(createAddonLoggerCallback(ADDON_NAMESPACES.LLAMACPP_EMBED));
|
|
24
|
+
ttsAddonLogging.setLogger(createAddonLoggerCallback(ADDON_NAMESPACES.TTS));
|
|
25
|
+
whisperAddonLogging.setLogger(createAddonLoggerCallback(ADDON_NAMESPACES.WHISPERCPP));
|
|
26
|
+
nmtAddonLogging.setLogger(createAddonLoggerCallback(ADDON_NAMESPACES.NMTCPP));
|
|
11
27
|
const defaultHomeDir = process.env["HOME"] || process.env["USERPROFILE"] || "/tmp";
|
|
12
28
|
let envConfig = { HOME_DIR: defaultHomeDir };
|
|
13
29
|
let hasRPCConfig = false;
|
|
30
|
+
if (isBareKit && process.argv[0]) {
|
|
31
|
+
logger.info("Running in BareKit mode");
|
|
32
|
+
envConfig["HOME_DIR"] = process.argv[0];
|
|
33
|
+
}
|
|
14
34
|
// Try to parse any argument as JSON config (fail gracefully)
|
|
15
35
|
if (process.argv[2]) {
|
|
16
36
|
try {
|
|
17
37
|
const rpcArgs = JSON.parse(process.argv[2]);
|
|
18
38
|
envConfig = { ...envConfig, ...rpcArgs };
|
|
19
39
|
hasRPCConfig = true;
|
|
20
|
-
|
|
40
|
+
logger.info("Parsed RPC configuration from arguments");
|
|
21
41
|
}
|
|
22
42
|
catch {
|
|
23
43
|
// Not JSON or invalid - use defaults (direct mode)
|
|
24
|
-
|
|
44
|
+
logger.info("Using default configuration (direct mode)");
|
|
25
45
|
}
|
|
26
46
|
}
|
|
27
47
|
const validatedEnv = z
|
|
@@ -43,22 +63,22 @@ export function ensureRPCSetup() {
|
|
|
43
63
|
try {
|
|
44
64
|
const ipcSocketPath = validatedEnv.QVAC_IPC_SOCKET_PATH;
|
|
45
65
|
if (ipcSocketPath) {
|
|
46
|
-
|
|
66
|
+
logger.info(`Running in desktop mode, connecting to IPC socket: ${ipcSocketPath}`);
|
|
47
67
|
// Connect to the IPC server (Named Pipe or Unix Socket)
|
|
48
68
|
const rpc = createIPCClient(ipcSocketPath);
|
|
49
|
-
|
|
69
|
+
logger.debug("Desktop IPC client created?", !!rpc);
|
|
50
70
|
}
|
|
51
71
|
else {
|
|
52
|
-
|
|
72
|
+
logger.info("Running in BareKit IPC mode");
|
|
53
73
|
// Start the standard RPC server with BareKit IPC for mobile
|
|
54
74
|
createBareKitRPCServer();
|
|
55
75
|
}
|
|
56
|
-
|
|
57
|
-
|
|
76
|
+
logger.info("Bare worker started and listening for RPC requests");
|
|
77
|
+
logger.debug("Working directory:", process.cwd());
|
|
58
78
|
rpcInitialized = true;
|
|
59
79
|
}
|
|
60
80
|
catch (error) {
|
|
61
|
-
|
|
81
|
+
logger.error("Worker error:", error);
|
|
62
82
|
process.exit(1);
|
|
63
83
|
}
|
|
64
84
|
}
|
|
@@ -67,29 +87,39 @@ if (hasRPCConfig) {
|
|
|
67
87
|
ensureRPCSetup();
|
|
68
88
|
}
|
|
69
89
|
else {
|
|
70
|
-
|
|
90
|
+
logger.info("Running in direct mode - RPC setup will be lazy");
|
|
91
|
+
}
|
|
92
|
+
// Centralized logger cleanup
|
|
93
|
+
function clearLoggers() {
|
|
94
|
+
clearAllLoggingStreams();
|
|
95
|
+
clearAllAddonLoggers();
|
|
96
|
+
llmAddonLogging.releaseLogger();
|
|
97
|
+
embedAddonLogging.releaseLogger();
|
|
98
|
+
ttsAddonLogging.releaseLogger();
|
|
99
|
+
whisperAddonLogging.releaseLogger();
|
|
100
|
+
nmtAddonLogging.releaseLogger();
|
|
71
101
|
}
|
|
72
102
|
// Centralized cleanup for graceful shutdown
|
|
73
103
|
let isShuttingDown = false;
|
|
74
|
-
|
|
104
|
+
async function shutdownHandler() {
|
|
75
105
|
if (isShuttingDown)
|
|
76
106
|
return;
|
|
77
107
|
isShuttingDown = true;
|
|
78
|
-
|
|
108
|
+
logger.info("🐻 Bare worker shutdown signal received, cleaning up...");
|
|
79
109
|
try {
|
|
80
|
-
|
|
110
|
+
clearLoggers();
|
|
81
111
|
await Promise.allSettled([
|
|
82
112
|
destroySwarm(),
|
|
83
113
|
closeAllRagInstances(),
|
|
84
114
|
cleanupDownloads(),
|
|
85
115
|
unloadAllModels(),
|
|
86
116
|
]);
|
|
87
|
-
|
|
117
|
+
logger.info("✅ Cleanup completed successfully");
|
|
88
118
|
}
|
|
89
119
|
catch (error) {
|
|
90
|
-
|
|
120
|
+
logger.error("❌ Error during shutdown cleanup:", error);
|
|
91
121
|
}
|
|
92
122
|
process.exit(0);
|
|
93
|
-
}
|
|
123
|
+
}
|
|
94
124
|
process.once("SIGTERM", () => void shutdownHandler());
|
|
95
125
|
process.once("SIGINT", () => void shutdownHandler());
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { QvacErrorOptions } from "@qvac/error";
|
|
2
|
-
export declare
|
|
2
|
+
export declare function createErrorOptions(code: number, adds?: string | (string | number)[], cause?: unknown): QvacErrorOptions;
|
|
3
3
|
//# sourceMappingURL=errors-base.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export function createErrorOptions(code, adds, cause) {
|
|
2
2
|
const options = { code };
|
|
3
3
|
if (adds !== undefined) {
|
|
4
4
|
options.adds = adds;
|
|
@@ -10,4 +10,4 @@ export const createErrorOptions = (code, adds, cause) => {
|
|
|
10
10
|
: new Error(typeof cause === "string" ? cause : JSON.stringify(cause));
|
|
11
11
|
}
|
|
12
12
|
return options;
|
|
13
|
-
}
|
|
13
|
+
}
|
|
@@ -20,6 +20,9 @@ export declare class InvalidToolsArrayError extends QvacErrorBase {
|
|
|
20
20
|
export declare class InvalidToolSchemaError extends QvacErrorBase {
|
|
21
21
|
constructor(details: string, cause?: unknown);
|
|
22
22
|
}
|
|
23
|
+
export declare class OCRFailedError extends QvacErrorBase {
|
|
24
|
+
constructor(details?: string, cause?: unknown);
|
|
25
|
+
}
|
|
23
26
|
export declare class RPCNoHandlerError extends QvacErrorBase {
|
|
24
27
|
constructor(requestType: string, cause?: unknown);
|
|
25
28
|
}
|
|
@@ -56,6 +59,18 @@ export declare class SDKNotFoundInNodeModulesError extends QvacErrorBase {
|
|
|
56
59
|
export declare class WorkerFileNotFoundError extends QvacErrorBase {
|
|
57
60
|
constructor(workerPath: string, cause?: unknown);
|
|
58
61
|
}
|
|
62
|
+
export declare class ConfigFileNotFoundError extends QvacErrorBase {
|
|
63
|
+
constructor(searchPaths: string, cause?: unknown);
|
|
64
|
+
}
|
|
65
|
+
export declare class ConfigFileInvalidError extends QvacErrorBase {
|
|
66
|
+
constructor(filePath: string, reason: string, cause?: unknown);
|
|
67
|
+
}
|
|
68
|
+
export declare class ConfigFileParseFailedError extends QvacErrorBase {
|
|
69
|
+
constructor(filePath: string, error: string, cause?: unknown);
|
|
70
|
+
}
|
|
71
|
+
export declare class ConfigValidationFailedError extends QvacErrorBase {
|
|
72
|
+
constructor(errors: string, cause?: unknown);
|
|
73
|
+
}
|
|
59
74
|
export declare class ModelUnloadFailedError extends QvacErrorBase {
|
|
60
75
|
constructor(modelId?: string, cause?: unknown);
|
|
61
76
|
}
|
|
@@ -71,6 +86,9 @@ export declare class TranslationFailedError extends QvacErrorBase {
|
|
|
71
86
|
export declare class CancelFailedError extends QvacErrorBase {
|
|
72
87
|
constructor(details?: string, cause?: unknown);
|
|
73
88
|
}
|
|
89
|
+
export declare class RAGChunkFailedError extends QvacErrorBase {
|
|
90
|
+
constructor(details?: string, cause?: unknown);
|
|
91
|
+
}
|
|
74
92
|
export declare class RAGSaveFailedError extends QvacErrorBase {
|
|
75
93
|
constructor(details?: string, cause?: unknown);
|
|
76
94
|
}
|
|
@@ -80,6 +98,12 @@ export declare class RAGSearchFailedError extends QvacErrorBase {
|
|
|
80
98
|
export declare class RAGDeleteFailedError extends QvacErrorBase {
|
|
81
99
|
constructor(details?: string, cause?: unknown);
|
|
82
100
|
}
|
|
101
|
+
export declare class RAGCloseWorkspaceFailedError extends QvacErrorBase {
|
|
102
|
+
constructor(details?: string, cause?: unknown);
|
|
103
|
+
}
|
|
104
|
+
export declare class RAGListWorkspacesFailedError extends QvacErrorBase {
|
|
105
|
+
constructor(details?: string, cause?: unknown);
|
|
106
|
+
}
|
|
83
107
|
export declare class DownloadAssetFailedError extends QvacErrorBase {
|
|
84
108
|
constructor(details?: string, cause?: unknown);
|
|
85
109
|
}
|
|
@@ -37,6 +37,11 @@ export class InvalidToolSchemaError extends QvacErrorBase {
|
|
|
37
37
|
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.INVALID_TOOL_SCHEMA, [details], cause));
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
+
export class OCRFailedError extends QvacErrorBase {
|
|
41
|
+
constructor(details, cause) {
|
|
42
|
+
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.OCR_FAILED, details ? [details] : undefined, cause));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
40
45
|
// ============== RPC Communication Errors ==============
|
|
41
46
|
export class RPCNoHandlerError extends QvacErrorBase {
|
|
42
47
|
constructor(requestType, cause) {
|
|
@@ -100,6 +105,26 @@ export class WorkerFileNotFoundError extends QvacErrorBase {
|
|
|
100
105
|
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.WORKER_FILE_NOT_FOUND, [workerPath], cause));
|
|
101
106
|
}
|
|
102
107
|
}
|
|
108
|
+
export class ConfigFileNotFoundError extends QvacErrorBase {
|
|
109
|
+
constructor(searchPaths, cause) {
|
|
110
|
+
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.CONFIG_FILE_NOT_FOUND, [searchPaths], cause));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export class ConfigFileInvalidError extends QvacErrorBase {
|
|
114
|
+
constructor(filePath, reason, cause) {
|
|
115
|
+
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.CONFIG_FILE_INVALID, [filePath, reason], cause));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
export class ConfigFileParseFailedError extends QvacErrorBase {
|
|
119
|
+
constructor(filePath, error, cause) {
|
|
120
|
+
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.CONFIG_FILE_PARSE_FAILED, [filePath, error], cause));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
export class ConfigValidationFailedError extends QvacErrorBase {
|
|
124
|
+
constructor(errors, cause) {
|
|
125
|
+
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.CONFIG_VALIDATION_FAILED, [errors], cause));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
103
128
|
// ============== Operation Errors (Client-side wrappers for server operations) ==============
|
|
104
129
|
// These are used by client API to throw errors based on server responses
|
|
105
130
|
// They reference server error codes but are thrown on client side
|
|
@@ -129,6 +154,11 @@ export class CancelFailedError extends QvacErrorBase {
|
|
|
129
154
|
super(createErrorOptions(SDK_SERVER_ERROR_CODES.CANCEL_FAILED, details ? [details] : undefined, cause));
|
|
130
155
|
}
|
|
131
156
|
}
|
|
157
|
+
export class RAGChunkFailedError extends QvacErrorBase {
|
|
158
|
+
constructor(details, cause) {
|
|
159
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_CHUNK_FAILED, details ? [details] : undefined, cause));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
132
162
|
export class RAGSaveFailedError extends QvacErrorBase {
|
|
133
163
|
constructor(details, cause) {
|
|
134
164
|
super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_SAVE_FAILED, details ? [details] : undefined, cause));
|
|
@@ -144,6 +174,16 @@ export class RAGDeleteFailedError extends QvacErrorBase {
|
|
|
144
174
|
super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_DELETE_FAILED, details ? [details] : undefined, cause));
|
|
145
175
|
}
|
|
146
176
|
}
|
|
177
|
+
export class RAGCloseWorkspaceFailedError extends QvacErrorBase {
|
|
178
|
+
constructor(details, cause) {
|
|
179
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_CLOSE_FAILED, details ? [details] : undefined, cause));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export class RAGListWorkspacesFailedError extends QvacErrorBase {
|
|
183
|
+
constructor(details, cause) {
|
|
184
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_LIST_WORKSPACES_FAILED, details ? [details] : undefined, cause));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
147
187
|
export class DownloadAssetFailedError extends QvacErrorBase {
|
|
148
188
|
constructor(details, cause) {
|
|
149
189
|
super(createErrorOptions(SDK_SERVER_ERROR_CODES.DOWNLOAD_ASSET_FAILED, details ? [details] : undefined, cause));
|
|
@@ -68,6 +68,21 @@ export declare class CancelFailedError extends QvacErrorBase {
|
|
|
68
68
|
export declare class TextToSpeechFailedError extends QvacErrorBase {
|
|
69
69
|
constructor(details?: string, cause?: unknown);
|
|
70
70
|
}
|
|
71
|
+
export declare class ConfigReloadNotSupportedError extends QvacErrorBase {
|
|
72
|
+
constructor(modelId: string, cause?: unknown);
|
|
73
|
+
}
|
|
74
|
+
export declare class ModelTypeMismatchError extends QvacErrorBase {
|
|
75
|
+
constructor(expectedType: string, providedType: string, cause?: unknown);
|
|
76
|
+
}
|
|
77
|
+
export declare class OCRFailedError extends QvacErrorBase {
|
|
78
|
+
constructor(details?: string, cause?: unknown);
|
|
79
|
+
}
|
|
80
|
+
export declare class ImageFileNotFoundError extends QvacErrorBase {
|
|
81
|
+
constructor(filePath: string, cause?: unknown);
|
|
82
|
+
}
|
|
83
|
+
export declare class InvalidImageInputError extends QvacErrorBase {
|
|
84
|
+
constructor(cause?: unknown);
|
|
85
|
+
}
|
|
71
86
|
export declare class RAGSaveFailedError extends QvacErrorBase {
|
|
72
87
|
constructor(details?: string, cause?: unknown);
|
|
73
88
|
}
|
|
@@ -113,6 +128,21 @@ export declare class SeedingNotSupportedError extends QvacErrorBase {
|
|
|
113
128
|
export declare class HyperdriveDownloadFailedError extends QvacErrorBase {
|
|
114
129
|
constructor(details: string, cause?: unknown);
|
|
115
130
|
}
|
|
131
|
+
export declare class InvalidShardUrlPatternError extends QvacErrorBase {
|
|
132
|
+
constructor(url: string, cause?: unknown);
|
|
133
|
+
}
|
|
134
|
+
export declare class ArchiveExtractionFailedError extends QvacErrorBase {
|
|
135
|
+
constructor(archivePath: string, cause?: unknown);
|
|
136
|
+
}
|
|
137
|
+
export declare class ArchiveUnsupportedTypeError extends QvacErrorBase {
|
|
138
|
+
constructor(archivePath: string, cause?: unknown);
|
|
139
|
+
}
|
|
140
|
+
export declare class ArchiveMissingShardsError extends QvacErrorBase {
|
|
141
|
+
constructor(missingFile: string, cause?: unknown);
|
|
142
|
+
}
|
|
143
|
+
export declare class PartialDownloadOfflineError extends QvacErrorBase {
|
|
144
|
+
constructor(url: string, downloadedBytes: number, cause?: unknown);
|
|
145
|
+
}
|
|
116
146
|
export declare class DeleteCacheFailedError extends QvacErrorBase {
|
|
117
147
|
constructor(details?: string, cause?: unknown);
|
|
118
148
|
}
|
|
@@ -125,6 +155,9 @@ export declare class CacheDirNotAbsoluteError extends QvacErrorBase {
|
|
|
125
155
|
export declare class CacheDirNotWritableError extends QvacErrorBase {
|
|
126
156
|
constructor(cacheDir: string, details?: string, cause?: unknown);
|
|
127
157
|
}
|
|
158
|
+
export declare class ConfigAlreadySetError extends QvacErrorBase {
|
|
159
|
+
constructor(cause?: unknown);
|
|
160
|
+
}
|
|
128
161
|
export declare class FFmpegNotAvailableError extends QvacErrorBase {
|
|
129
162
|
constructor(cause?: unknown);
|
|
130
163
|
}
|
|
@@ -137,6 +170,15 @@ export declare class InvalidAudioChunkError extends QvacErrorBase {
|
|
|
137
170
|
export declare class RAGWorkspaceModelMismatchError extends QvacErrorBase {
|
|
138
171
|
constructor(workspace: string, existingModelId: string, newModelId: string, cause?: unknown);
|
|
139
172
|
}
|
|
173
|
+
export declare class RAGWorkspaceNotFoundError extends QvacErrorBase {
|
|
174
|
+
constructor(workspace: string, cause?: unknown);
|
|
175
|
+
}
|
|
176
|
+
export declare class RAGWorkspaceInUseError extends QvacErrorBase {
|
|
177
|
+
constructor(workspace: string, cause?: unknown);
|
|
178
|
+
}
|
|
179
|
+
export declare class RAGWorkspaceNotOpenError extends QvacErrorBase {
|
|
180
|
+
constructor(workspace: string, cause?: unknown);
|
|
181
|
+
}
|
|
140
182
|
export declare class DelegateNoFinalResponseError extends QvacErrorBase {
|
|
141
183
|
constructor(cause?: unknown);
|
|
142
184
|
}
|
|
@@ -120,6 +120,31 @@ export class TextToSpeechFailedError extends QvacErrorBase {
|
|
|
120
120
|
super(createErrorOptions(SDK_SERVER_ERROR_CODES.TEXT_TO_SPEECH_FAILED, details ? [details] : undefined, cause));
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
+
export class ConfigReloadNotSupportedError extends QvacErrorBase {
|
|
124
|
+
constructor(modelId, cause) {
|
|
125
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.CONFIG_RELOAD_NOT_SUPPORTED, [modelId], cause));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export class ModelTypeMismatchError extends QvacErrorBase {
|
|
129
|
+
constructor(expectedType, providedType, cause) {
|
|
130
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_TYPE_MISMATCH, [expectedType, providedType], cause));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export class OCRFailedError extends QvacErrorBase {
|
|
134
|
+
constructor(details, cause) {
|
|
135
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.OCR_FAILED, details ? [details] : undefined, cause));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export class ImageFileNotFoundError extends QvacErrorBase {
|
|
139
|
+
constructor(filePath, cause) {
|
|
140
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.IMAGE_FILE_NOT_FOUND, [filePath], cause));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
export class InvalidImageInputError extends QvacErrorBase {
|
|
144
|
+
constructor(cause) {
|
|
145
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.INVALID_IMAGE_INPUT, undefined, cause));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
123
148
|
// ============== RAG Operation Errors ==============
|
|
124
149
|
export class RAGSaveFailedError extends QvacErrorBase {
|
|
125
150
|
constructor(details, cause) {
|
|
@@ -197,6 +222,31 @@ export class HyperdriveDownloadFailedError extends QvacErrorBase {
|
|
|
197
222
|
super(createErrorOptions(SDK_SERVER_ERROR_CODES.HYPERDRIVE_DOWNLOAD_FAILED, [details], cause));
|
|
198
223
|
}
|
|
199
224
|
}
|
|
225
|
+
export class InvalidShardUrlPatternError extends QvacErrorBase {
|
|
226
|
+
constructor(url, cause) {
|
|
227
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.INVALID_SHARD_URL_PATTERN, [url], cause));
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
export class ArchiveExtractionFailedError extends QvacErrorBase {
|
|
231
|
+
constructor(archivePath, cause) {
|
|
232
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.ARCHIVE_EXTRACTION_FAILED, [archivePath], cause));
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
export class ArchiveUnsupportedTypeError extends QvacErrorBase {
|
|
236
|
+
constructor(archivePath, cause) {
|
|
237
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.ARCHIVE_UNSUPPORTED_TYPE, [archivePath], cause));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
export class ArchiveMissingShardsError extends QvacErrorBase {
|
|
241
|
+
constructor(missingFile, cause) {
|
|
242
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.ARCHIVE_MISSING_SHARDS, [missingFile], cause));
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
export class PartialDownloadOfflineError extends QvacErrorBase {
|
|
246
|
+
constructor(url, downloadedBytes, cause) {
|
|
247
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.PARTIAL_DOWNLOAD_OFFLINE, [url, String(downloadedBytes)], cause));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
200
250
|
// ============== Cache Operation Errors ==============
|
|
201
251
|
export class DeleteCacheFailedError extends QvacErrorBase {
|
|
202
252
|
constructor(details, cause) {
|
|
@@ -218,6 +268,12 @@ export class CacheDirNotWritableError extends QvacErrorBase {
|
|
|
218
268
|
super(createErrorOptions(SDK_SERVER_ERROR_CODES.CACHE_DIR_NOT_WRITABLE, details ? [cacheDir, details] : [cacheDir], cause));
|
|
219
269
|
}
|
|
220
270
|
}
|
|
271
|
+
// ============== Config Operations Errors ==============
|
|
272
|
+
export class ConfigAlreadySetError extends QvacErrorBase {
|
|
273
|
+
constructor(cause) {
|
|
274
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.CONFIG_ALREADY_SET, undefined, cause));
|
|
275
|
+
}
|
|
276
|
+
}
|
|
221
277
|
// ============== System/Runtime Errors ==============
|
|
222
278
|
export class FFmpegNotAvailableError extends QvacErrorBase {
|
|
223
279
|
constructor(cause) {
|
|
@@ -240,6 +296,21 @@ export class RAGWorkspaceModelMismatchError extends QvacErrorBase {
|
|
|
240
296
|
super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_MODEL_MISMATCH, [workspace, existingModelId, newModelId], cause));
|
|
241
297
|
}
|
|
242
298
|
}
|
|
299
|
+
export class RAGWorkspaceNotFoundError extends QvacErrorBase {
|
|
300
|
+
constructor(workspace, cause) {
|
|
301
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_NOT_FOUND, [workspace], cause));
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
export class RAGWorkspaceInUseError extends QvacErrorBase {
|
|
305
|
+
constructor(workspace, cause) {
|
|
306
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_IN_USE, [workspace], cause));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
export class RAGWorkspaceNotOpenError extends QvacErrorBase {
|
|
310
|
+
constructor(workspace, cause) {
|
|
311
|
+
super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_NOT_OPEN, [workspace], cause));
|
|
312
|
+
}
|
|
313
|
+
}
|
|
243
314
|
// ============== RPC/Delegation Errors (Server-side) ==============
|
|
244
315
|
export class DelegateNoFinalResponseError extends QvacErrorBase {
|
|
245
316
|
constructor(cause) {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Tool } from "../schemas/tools";
|
|
2
|
+
import type { McpClientInput } from "../schemas/mcp-adapter";
|
|
3
|
+
import type { ToolHandler } from "./tool-helpers";
|
|
4
|
+
export type { McpClient, McpClientInput } from "../schemas/mcp-adapter";
|
|
5
|
+
export type ToolHandlerMap = Map<string, ToolHandler>;
|
|
6
|
+
export type McpToolsResult = {
|
|
7
|
+
tools: Tool[];
|
|
8
|
+
handlers: ToolHandlerMap;
|
|
9
|
+
};
|
|
10
|
+
export declare function getMcpToolsWithHandlers(clients: McpClientInput[]): Promise<McpToolsResult>;
|
|
11
|
+
export declare function getMcpTools(clients: McpClientInput[]): Promise<Tool[]>;
|
|
12
|
+
//# sourceMappingURL=mcp-adapter.d.ts.map
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { mapValues } from "./object.js";
|
|
2
|
+
const VALID_TYPES = [
|
|
3
|
+
"string",
|
|
4
|
+
"number",
|
|
5
|
+
"integer",
|
|
6
|
+
"boolean",
|
|
7
|
+
"object",
|
|
8
|
+
"array",
|
|
9
|
+
];
|
|
10
|
+
function isValidType(value) {
|
|
11
|
+
return typeof value === "string" && VALID_TYPES.includes(value);
|
|
12
|
+
}
|
|
13
|
+
function convertMcpToolToTool(mcpTool) {
|
|
14
|
+
const inputSchema = mcpTool.inputSchema;
|
|
15
|
+
const properties = inputSchema.properties ?? {};
|
|
16
|
+
const required = inputSchema.required ?? [];
|
|
17
|
+
const convertedProperties = mapValues(properties, (prop) => {
|
|
18
|
+
const { type, description, enum: enumVal } = prop;
|
|
19
|
+
return {
|
|
20
|
+
type: isValidType(type) ? type : "string",
|
|
21
|
+
...(description && { description }),
|
|
22
|
+
...(enumVal && { enum: enumVal }),
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
type: "function",
|
|
27
|
+
name: mcpTool.name,
|
|
28
|
+
description: mcpTool.description ?? "",
|
|
29
|
+
parameters: {
|
|
30
|
+
type: "object",
|
|
31
|
+
properties: convertedProperties,
|
|
32
|
+
required: required.length > 0 ? required : undefined,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function createMcpToolHandler(client, toolName) {
|
|
37
|
+
return async (args) => {
|
|
38
|
+
return client.callTool({ name: toolName, arguments: args });
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export async function getMcpToolsWithHandlers(clients) {
|
|
42
|
+
const allTools = [];
|
|
43
|
+
const handlers = new Map();
|
|
44
|
+
for (const { client, includeResources } of clients) {
|
|
45
|
+
const { tools: mcpTools } = await client.listTools();
|
|
46
|
+
for (const mcpTool of mcpTools) {
|
|
47
|
+
allTools.push(convertMcpToolToTool(mcpTool));
|
|
48
|
+
handlers.set(mcpTool.name, createMcpToolHandler(client, mcpTool.name));
|
|
49
|
+
}
|
|
50
|
+
if (includeResources !== false && client.listResources) {
|
|
51
|
+
allTools.push({
|
|
52
|
+
type: "function",
|
|
53
|
+
name: "list_resources",
|
|
54
|
+
description: "List available resources from MCP server",
|
|
55
|
+
parameters: {
|
|
56
|
+
type: "object",
|
|
57
|
+
properties: {},
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
handlers.set("list_resources", async () => {
|
|
61
|
+
if (!client.listResources) {
|
|
62
|
+
return { resources: [] };
|
|
63
|
+
}
|
|
64
|
+
const result = await client.listResources();
|
|
65
|
+
return {
|
|
66
|
+
type: "text",
|
|
67
|
+
text: JSON.stringify(result.resources, null, 2),
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
if (client.readResource) {
|
|
71
|
+
allTools.push({
|
|
72
|
+
type: "function",
|
|
73
|
+
name: "read_resource",
|
|
74
|
+
description: "Read content of a specific resource by URI",
|
|
75
|
+
parameters: {
|
|
76
|
+
type: "object",
|
|
77
|
+
properties: {
|
|
78
|
+
uri: {
|
|
79
|
+
type: "string",
|
|
80
|
+
description: "The URI of the resource to read",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
required: ["uri"],
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
handlers.set("read_resource", async (args) => {
|
|
87
|
+
if (!client.readResource) {
|
|
88
|
+
return { error: "readResource not available" };
|
|
89
|
+
}
|
|
90
|
+
const result = await client.readResource({
|
|
91
|
+
uri: args["uri"],
|
|
92
|
+
});
|
|
93
|
+
return result.contents[0];
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return { tools: allTools, handlers };
|
|
99
|
+
}
|
|
100
|
+
export async function getMcpTools(clients) {
|
|
101
|
+
const { tools } = await getMcpToolsWithHandlers(clients);
|
|
102
|
+
return tools;
|
|
103
|
+
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { z } from "zod";
|
|
2
|
-
import { type Tool } from "../schemas/tools";
|
|
2
|
+
import { type Tool, type ToolCall, type ToolCallWithCall } from "../schemas/tools";
|
|
3
3
|
type ZodObjectType = z.ZodObject<z.ZodRawShape>;
|
|
4
|
+
export type ToolHandler = (args: Record<string, unknown>) => Promise<unknown>;
|
|
4
5
|
export type ToolInput<T extends ZodObjectType = ZodObjectType> = {
|
|
5
6
|
name: string;
|
|
6
7
|
description: string;
|
|
7
8
|
parameters: T;
|
|
9
|
+
handler?: ToolHandler;
|
|
8
10
|
};
|
|
9
11
|
export declare function convertToolInput(input: ToolInput): Tool;
|
|
10
12
|
export declare function convertTools(inputs: ToolInput[]): Tool[];
|
|
@@ -12,6 +14,12 @@ export declare function convertTools(inputs: ToolInput[]): Tool[];
|
|
|
12
14
|
* Validates and converts tools from either ToolInput (with Zod schemas) or full Tool format.
|
|
13
15
|
* Returns validated Tool[] array.
|
|
14
16
|
*/
|
|
15
|
-
export
|
|
17
|
+
export type ToolHandlerMap = Map<string, ToolHandler>;
|
|
18
|
+
export type ValidateToolsResult = {
|
|
19
|
+
tools: Tool[];
|
|
20
|
+
handlers: ToolHandlerMap;
|
|
21
|
+
};
|
|
22
|
+
export declare function validateTools(tools: Tool[] | ToolInput[]): ValidateToolsResult;
|
|
23
|
+
export declare function attachHandlersToToolCalls(toolCalls: ToolCall[], handlers: ToolHandlerMap): ToolCallWithCall[];
|
|
16
24
|
export {};
|
|
17
25
|
//# sourceMappingURL=tool-helpers.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { toolSchema } from "../schemas/tools.js";
|
|
1
|
+
import { toolSchema, } from "../schemas/tools.js";
|
|
2
2
|
import { InvalidToolsArrayError, InvalidToolSchemaError, } from "./errors-client.js";
|
|
3
3
|
function zodTypeToJsonSchemaType(type) {
|
|
4
4
|
switch (type) {
|
|
@@ -66,22 +66,17 @@ export function convertToolInput(input) {
|
|
|
66
66
|
export function convertTools(inputs) {
|
|
67
67
|
return inputs.map(convertToolInput);
|
|
68
68
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Validates and converts tools from either ToolInput (with Zod schemas) or full Tool format.
|
|
71
|
-
* Returns validated Tool[] array.
|
|
72
|
-
*/
|
|
73
69
|
export function validateTools(tools) {
|
|
74
70
|
if (tools.length === 0) {
|
|
75
|
-
return [];
|
|
71
|
+
return { tools: [], handlers: new Map() };
|
|
76
72
|
}
|
|
77
73
|
const firstTool = tools[0];
|
|
78
74
|
if (!firstTool) {
|
|
79
75
|
throw new InvalidToolsArrayError();
|
|
80
76
|
}
|
|
81
|
-
|
|
77
|
+
const handlers = new Map();
|
|
82
78
|
const parseResult = toolSchema.safeParse(firstTool);
|
|
83
79
|
if (parseResult.success) {
|
|
84
|
-
// It's already in full Tool format - validate all tools
|
|
85
80
|
const validatedTools = [];
|
|
86
81
|
for (const tool of tools) {
|
|
87
82
|
const result = toolSchema.safeParse(tool);
|
|
@@ -90,10 +85,28 @@ export function validateTools(tools) {
|
|
|
90
85
|
}
|
|
91
86
|
validatedTools.push(result.data);
|
|
92
87
|
}
|
|
93
|
-
return validatedTools;
|
|
88
|
+
return { tools: validatedTools, handlers };
|
|
94
89
|
}
|
|
95
90
|
else {
|
|
96
|
-
|
|
97
|
-
|
|
91
|
+
const toolInputs = tools;
|
|
92
|
+
const convertedTools = convertTools(toolInputs);
|
|
93
|
+
for (const toolInput of toolInputs) {
|
|
94
|
+
if (toolInput.handler) {
|
|
95
|
+
handlers.set(toolInput.name, toolInput.handler);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return { tools: convertedTools, handlers };
|
|
98
99
|
}
|
|
99
100
|
}
|
|
101
|
+
export function attachHandlersToToolCalls(toolCalls, handlers) {
|
|
102
|
+
return toolCalls.map((toolCall) => {
|
|
103
|
+
const handler = handlers.get(toolCall.name);
|
|
104
|
+
if (handler) {
|
|
105
|
+
return {
|
|
106
|
+
...toolCall,
|
|
107
|
+
invoke: async () => await handler(toolCall.arguments),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return toolCall;
|
|
111
|
+
});
|
|
112
|
+
}
|