@qvac/sdk 0.5.0 → 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 +48 -11
- 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/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 -1
- package/dist/client/api/index.js +2 -1
- package/dist/client/api/load-model.js +6 -1
- 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 +1 -1
- package/dist/client/init-hooks.d.ts +4 -3
- package/dist/client/init-hooks.js +40 -31
- package/dist/client/rpc/bare-client.d.ts +1 -178
- package/dist/client/rpc/bare-client.js +42 -9
- package/dist/client/rpc/expo-rpc-client.js +57 -2
- package/dist/client/rpc/node-rpc-client.js +5 -1
- package/dist/client/rpc/rpc-client.d.ts +1 -1
- package/dist/client/rpc/rpc-client.js +11 -57
- 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/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 +4 -3
- package/dist/examples/embed-hyperdrive.js +4 -0
- package/dist/examples/kv-cache-custom-key.js +16 -1
- package/dist/examples/llamacpp-sharded.js +12 -3
- 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 +3 -2
- package/dist/index.js +3 -1
- package/dist/logging/addon.js +23 -7
- package/dist/logging/base-logger.js +2 -2
- package/dist/logging/client-logger.js +15 -4
- package/dist/logging/index.d.ts +1 -0
- package/dist/logging/index.js +1 -0
- package/dist/logging/logger.js +11 -3
- package/dist/logging/namespaces.d.ts +1 -0
- package/dist/logging/namespaces.js +1 -0
- package/dist/logging/registry.d.ts +5 -0
- package/dist/logging/registry.js +17 -5
- package/dist/logging/transport.js +2 -2
- package/dist/logging/utils.d.ts +2 -0
- package/dist/logging/utils.js +62 -0
- package/dist/models/hyperdrive/models.d.ts +1096 -178
- package/dist/models/hyperdrive/models.js +1476 -507
- 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 +582 -77
- package/dist/schemas/common.js +6 -1
- 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/get-model-info.d.ts +12 -10
- package/dist/schemas/get-model-info.js +9 -1
- package/dist/schemas/index.d.ts +6 -2
- package/dist/schemas/index.js +9 -2
- package/dist/schemas/llamacpp-config.d.ts +112 -8
- package/dist/schemas/llamacpp-config.js +40 -8
- package/dist/schemas/load-model.d.ts +2993 -525
- package/dist/schemas/load-model.js +88 -33
- package/dist/schemas/logging-stream.d.ts +2 -2
- package/dist/schemas/model-src-utils.d.ts +38 -16
- package/dist/schemas/model-src-utils.js +4 -8
- 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 +20 -8
- package/dist/schemas/reload-config.js +7 -5
- package/dist/schemas/runtime-context.d.ts +19 -0
- package/dist/schemas/runtime-context.js +7 -0
- package/dist/schemas/sdk-config.d.ts +697 -2
- package/dist/schemas/sdk-config.js +99 -1
- package/dist/schemas/sdk-errors-client.d.ts +1 -0
- package/dist/schemas/sdk-errors-client.js +5 -0
- package/dist/schemas/sdk-errors-server.d.ts +14 -0
- package/dist/schemas/sdk-errors-server.js +70 -0
- package/dist/schemas/shard.d.ts +21 -0
- package/dist/schemas/shard.js +17 -0
- package/dist/schemas/translate.d.ts +68 -23
- package/dist/schemas/translate.js +37 -11
- package/dist/schemas/translation-config.d.ts +272 -29
- package/dist/schemas/translation-config.js +63 -6
- 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 +3 -26
- 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 +43 -10
- 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/index.d.ts +3 -0
- package/dist/server/bare/addons/llamacpp-embedding/index.js +2 -0
- package/dist/server/bare/addons/load-model.js +28 -24
- 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/{whispercpp → whispercpp-transcription}/create-model.js +2 -1
- package/dist/server/bare/delegate-rpc-client.js +19 -1
- 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.js +11 -0
- package/dist/server/bare/registry/logging-stream-registry.js +3 -3
- 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 -29
- 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/handle-request.js +91 -9
- package/dist/server/rpc/handlers/cancelHandler.js +10 -1
- package/dist/server/rpc/handlers/completion-stream.js +1 -1
- package/dist/server/rpc/handlers/delete-cache.js +1 -1
- package/dist/server/rpc/handlers/embed.js +1 -1
- 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 -1
- package/dist/server/rpc/handlers/index.js +2 -0
- package/dist/server/rpc/handlers/load-model/download-manager.d.ts +11 -11
- package/dist/server/rpc/handlers/load-model/download-manager.js +36 -26
- 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 +342 -33
- package/dist/server/rpc/handlers/load-model/hyperdrive.js +5 -3
- 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 +32 -3
- package/dist/server/rpc/handlers/load-model-delegated.js +6 -3
- 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/rag.d.ts +2 -2
- package/dist/server/rpc/handlers/rag.js +107 -43
- package/dist/server/rpc/handlers/text-to-speech.js +1 -1
- package/dist/server/rpc/handlers/transcribe-stream.js +1 -1
- package/dist/server/rpc/handlers/translate.js +6 -15
- package/dist/server/utils/archive.d.ts +3 -0
- package/dist/server/utils/archive.js +171 -0
- package/dist/server/utils/audio/decoder.js +2 -2
- package/dist/server/utils/cache.d.ts +5 -5
- package/dist/server/utils/cache.js +6 -6
- package/dist/server/utils/config-transform.d.ts +2 -2
- package/dist/server/utils/config-transform.js +8 -6
- 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 +3 -1
- package/dist/server/utils/index.js +3 -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 +8 -3
- package/dist/utils/errors-base.d.ts +1 -1
- package/dist/utils/errors-base.js +2 -2
- package/dist/utils/errors-client.d.ts +12 -0
- package/dist/utils/errors-client.js +20 -0
- package/dist/utils/errors-server.d.ts +33 -0
- package/dist/utils/errors-server.js +55 -0
- package/package.json +40 -15
- package/dist/client/rpc/bare-rpc-client.d.ts +0 -4
- package/dist/client/rpc/bare-rpc-client.js +0 -94
- package/dist/examples/config/config-path.d.ts +0 -8
- package/dist/examples/config/config-path.js +0 -13
- 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/server/bare/addons/llamacpp/index.d.ts +0 -4
- package/dist/server/bare/addons/llamacpp/index.js +0 -3
- package/dist/server/bare/rag-hyperdb/rag-manager.d.ts +0 -5
- package/dist/server/bare/rag-hyperdb/rag-manager.js +0 -66
- package/dist/server/rpc/handlers/load-model.js +0 -111
- package/dist/server/utils/hash.d.ts +0 -5
- package/dist/server/utils/hash.js +0 -11
- package/dist/utils/getProcessSafe.d.ts +0 -7
- package/dist/utils/getProcessSafe.js +0 -17
- package/dist/utils/runtime.d.ts +0 -30
- package/dist/utils/runtime.js +0 -48
- /package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/handlers/completion-stream.d.ts +0 -0
- /package/dist/server/bare/addons/{llamacpp → llamacpp-embedding}/handlers/embed.d.ts +0 -0
- /package/dist/server/bare/addons/{llamacpp → llamacpp-embedding}/handlers/embed.js +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}/handlers/transcribe-stream.js +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
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { ModelType, } from "../../../schemas/index.js";
|
|
2
|
+
import { llmConfigSchema, embedConfigSchema } from "../../../schemas/llamacpp-config.js";
|
|
3
|
+
import { whisperConfigSchema } from "../../../schemas/whispercpp-config.js";
|
|
4
|
+
import { ocrConfigSchema } from "../../../schemas/ocr.js";
|
|
5
|
+
export const CANONICAL_TO_ALIAS = {
|
|
6
|
+
[ModelType.llamacppCompletion]: "llm",
|
|
7
|
+
[ModelType.llamacppEmbedding]: "embeddings",
|
|
8
|
+
[ModelType.whispercppTranscription]: "whisper",
|
|
9
|
+
[ModelType.nmtcppTranslation]: "nmt",
|
|
10
|
+
[ModelType.onnxTts]: "tts",
|
|
11
|
+
[ModelType.onnxOcr]: "ocr",
|
|
12
|
+
};
|
|
13
|
+
export const MODEL_CONFIG_SCHEMAS = {
|
|
14
|
+
[ModelType.llamacppCompletion]: llmConfigSchema,
|
|
15
|
+
[ModelType.llamacppEmbedding]: embedConfigSchema,
|
|
16
|
+
[ModelType.whispercppTranscription]: whisperConfigSchema,
|
|
17
|
+
[ModelType.onnxOcr]: ocrConfigSchema,
|
|
18
|
+
};
|
|
19
|
+
// Ordered general → specific (later patterns override earlier)
|
|
20
|
+
export const BUILTIN_DEVICE_PATTERNS = [
|
|
21
|
+
{
|
|
22
|
+
name: "Android devices (SDK default)",
|
|
23
|
+
match: {
|
|
24
|
+
platform: "android",
|
|
25
|
+
},
|
|
26
|
+
defaults: {
|
|
27
|
+
[ModelType.llamacppEmbedding]: { flashAttention: "off" },
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "Pixel devices (SDK default)",
|
|
32
|
+
match: {
|
|
33
|
+
platform: "android",
|
|
34
|
+
deviceBrand: "google",
|
|
35
|
+
deviceModelPrefix: "Pixel",
|
|
36
|
+
},
|
|
37
|
+
defaults: {
|
|
38
|
+
[ModelType.llamacppCompletion]: { device: "cpu" },
|
|
39
|
+
[ModelType.llamacppEmbedding]: { device: "cpu" },
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "iPhone 17",
|
|
44
|
+
match: {
|
|
45
|
+
platform: "ios",
|
|
46
|
+
deviceModelPrefix: "iPhone 17",
|
|
47
|
+
},
|
|
48
|
+
defaults: {
|
|
49
|
+
[ModelType.llamacppCompletion]: { device: "cpu" },
|
|
50
|
+
[ModelType.llamacppEmbedding]: { device: "cpu" },
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
export function matchesPattern(ctx, match) {
|
|
55
|
+
if (match.platform !== undefined && ctx.platform !== match.platform) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (match.deviceBrand !== undefined &&
|
|
59
|
+
ctx.deviceBrand?.toLowerCase() !== match.deviceBrand.toLowerCase()) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
if (match.deviceModelPrefix !== undefined &&
|
|
63
|
+
!(ctx.deviceModel?.startsWith(match.deviceModelPrefix) ?? false)) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
if (match.deviceModelContains !== undefined &&
|
|
67
|
+
!(ctx.deviceModel?.includes(match.deviceModelContains) ?? false)) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
export function findAllMatchingPatterns(ctx, patterns) {
|
|
73
|
+
return patterns.filter((pattern) => matchesPattern(ctx, pattern.match));
|
|
74
|
+
}
|
|
75
|
+
export function getDefaultsFromPattern(modelType, pattern) {
|
|
76
|
+
let defaults = pattern.defaults[modelType];
|
|
77
|
+
if (!defaults) {
|
|
78
|
+
const aliasKey = CANONICAL_TO_ALIAS[modelType];
|
|
79
|
+
if (aliasKey && aliasKey in pattern.defaults) {
|
|
80
|
+
defaults = pattern.defaults[aliasKey];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return defaults;
|
|
84
|
+
}
|
|
85
|
+
export function resolveModelConfigWithContext(modelType, userInput, ctx, userPatterns, builtinPatterns = BUILTIN_DEVICE_PATTERNS, onLog) {
|
|
86
|
+
// Find ALL matching patterns (general → specific order preserved)
|
|
87
|
+
const matchingBuiltin = findAllMatchingPatterns(ctx, builtinPatterns);
|
|
88
|
+
const matchingUser = findAllMatchingPatterns(ctx, userPatterns);
|
|
89
|
+
// Merge in order: builtin patterns → user patterns → user input
|
|
90
|
+
// Later values override earlier (more specific wins)
|
|
91
|
+
const appliedPatterns = [];
|
|
92
|
+
let mergedDefaults = {};
|
|
93
|
+
for (const pattern of matchingBuiltin) {
|
|
94
|
+
const defaults = getDefaultsFromPattern(modelType, pattern);
|
|
95
|
+
if (defaults) {
|
|
96
|
+
appliedPatterns.push(pattern.name);
|
|
97
|
+
mergedDefaults = { ...mergedDefaults, ...defaults };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
for (const pattern of matchingUser) {
|
|
101
|
+
const defaults = getDefaultsFromPattern(modelType, pattern);
|
|
102
|
+
if (defaults) {
|
|
103
|
+
appliedPatterns.push(pattern.name);
|
|
104
|
+
mergedDefaults = { ...mergedDefaults, ...defaults };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const merged = {
|
|
108
|
+
...mergedDefaults,
|
|
109
|
+
...userInput,
|
|
110
|
+
};
|
|
111
|
+
const schema = MODEL_CONFIG_SCHEMAS[modelType];
|
|
112
|
+
const finalConfig = schema ? schema.parse(merged) : merged;
|
|
113
|
+
if (onLog) {
|
|
114
|
+
onLog({
|
|
115
|
+
appliedPatterns,
|
|
116
|
+
mergedDefaults,
|
|
117
|
+
finalConfig: finalConfig,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return finalConfig;
|
|
121
|
+
}
|
|
@@ -1,36 +1,13 @@
|
|
|
1
|
-
import type EventEmitter from "events";
|
|
2
1
|
import type FilesystemDL from "@qvac/dl-filesystem";
|
|
3
|
-
import type {
|
|
2
|
+
import type { CanonicalModelType } from "../../../schemas/index";
|
|
3
|
+
import type BaseInference from "@qvac/infer-base";
|
|
4
4
|
interface AddonInterface {
|
|
5
5
|
cancel(jobId?: string): Promise<void>;
|
|
6
6
|
}
|
|
7
|
-
export
|
|
8
|
-
load(...args: unknown[]): Promise<void>;
|
|
9
|
-
run(input: unknown): Promise<EventEmitter & {
|
|
10
|
-
onUpdate(callback: (data: string) => void): {
|
|
11
|
-
await: () => Promise<void>;
|
|
12
|
-
};
|
|
13
|
-
onUpdate(callback: (data: {
|
|
14
|
-
outputArray: Int16Array;
|
|
15
|
-
}) => void): {
|
|
16
|
-
await: () => Promise<void>;
|
|
17
|
-
};
|
|
18
|
-
onError(callback: (error: Error) => void): void;
|
|
19
|
-
onUpdate(callback: (data: Array<{
|
|
20
|
-
text: string;
|
|
21
|
-
}>) => void): {
|
|
22
|
-
await: () => Promise<void>;
|
|
23
|
-
};
|
|
24
|
-
cancel(): Promise<void>;
|
|
25
|
-
iterate(): AsyncIterableIterator<string | Array<{
|
|
26
|
-
text: string;
|
|
27
|
-
}>>;
|
|
28
|
-
await(): Promise<void>;
|
|
29
|
-
}>;
|
|
7
|
+
export type AnyModel = Omit<BaseInference, "addon"> & {
|
|
30
8
|
reload?(config: unknown): Promise<void>;
|
|
31
|
-
unload?(): Promise<void>;
|
|
32
9
|
addon?: AddonInterface;
|
|
33
|
-
}
|
|
10
|
+
};
|
|
34
11
|
interface DelegateOptions {
|
|
35
12
|
topic: string;
|
|
36
13
|
providerPublicKey: string;
|
|
@@ -41,7 +18,7 @@ interface LocalOptions {
|
|
|
41
18
|
path: string;
|
|
42
19
|
loadedAt: Date;
|
|
43
20
|
config: unknown;
|
|
44
|
-
modelType:
|
|
21
|
+
modelType: CanonicalModelType;
|
|
45
22
|
name?: string | undefined;
|
|
46
23
|
loader: FilesystemDL;
|
|
47
24
|
}
|
|
@@ -55,7 +32,7 @@ export declare function registerModel(id: string, options: {
|
|
|
55
32
|
model: AnyModel;
|
|
56
33
|
path: string;
|
|
57
34
|
config: unknown;
|
|
58
|
-
modelType:
|
|
35
|
+
modelType: CanonicalModelType;
|
|
59
36
|
loader: FilesystemDL;
|
|
60
37
|
name?: string | undefined;
|
|
61
38
|
} | {
|
|
@@ -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,11 +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
8
|
import { setSDKConfig } from "../bare/registry/config-registry.js";
|
|
9
|
+
import { setRuntimeContext } from "../bare/registry/runtime-context-registry.js";
|
|
9
10
|
import { handleUnloadModel } from "./handlers/unload-model.js";
|
|
10
11
|
import { handleTranscribeStream } from "./handlers/transcribe-stream.js";
|
|
11
12
|
import { handleEmbed } from "./handlers/embed.js";
|
|
@@ -18,8 +19,11 @@ import { handleRag } from "./handlers/rag.js";
|
|
|
18
19
|
import { handleDeleteCache } from "./handlers/delete-cache.js";
|
|
19
20
|
import { handleTextToSpeech } from "./handlers/text-to-speech.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();
|
|
@@ -33,8 +37,13 @@ export async function handleRequest(req) {
|
|
|
33
37
|
"type" in jsonData &&
|
|
34
38
|
jsonData.type === "__init_config") {
|
|
35
39
|
try {
|
|
36
|
-
const
|
|
37
|
-
|
|
40
|
+
const initData = jsonData;
|
|
41
|
+
if (initData.config) {
|
|
42
|
+
setSDKConfig(initData.config);
|
|
43
|
+
}
|
|
44
|
+
if (initData.runtimeContext) {
|
|
45
|
+
setRuntimeContext(initData.runtimeContext);
|
|
46
|
+
}
|
|
38
47
|
req.reply(JSON.stringify({ success: true }), "utf-8");
|
|
39
48
|
}
|
|
40
49
|
catch (error) {
|
|
@@ -45,7 +54,8 @@ export async function handleRequest(req) {
|
|
|
45
54
|
}
|
|
46
55
|
return;
|
|
47
56
|
}
|
|
48
|
-
const
|
|
57
|
+
const processedData = applyDeviceDefaultsToRequest(jsonData);
|
|
58
|
+
const request = requestSchema.parse(processedData);
|
|
49
59
|
switch (request.type) {
|
|
50
60
|
case "downloadAsset": {
|
|
51
61
|
if (request.withProgress) {
|
|
@@ -235,12 +245,35 @@ export async function handleRequest(req) {
|
|
|
235
245
|
break;
|
|
236
246
|
}
|
|
237
247
|
case "rag": {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
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
|
+
}
|
|
241
268
|
}
|
|
242
|
-
|
|
243
|
-
|
|
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
|
+
}
|
|
244
277
|
}
|
|
245
278
|
break;
|
|
246
279
|
}
|
|
@@ -279,6 +312,21 @@ export async function handleRequest(req) {
|
|
|
279
312
|
}
|
|
280
313
|
break;
|
|
281
314
|
}
|
|
315
|
+
case "ocrStream": {
|
|
316
|
+
const stream = req.createResponseStream();
|
|
317
|
+
try {
|
|
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();
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
sendStreamErrorResponse(stream, error);
|
|
327
|
+
}
|
|
328
|
+
break;
|
|
329
|
+
}
|
|
282
330
|
default: {
|
|
283
331
|
throw new UnknownRequestTypeError();
|
|
284
332
|
}
|
|
@@ -288,3 +336,37 @@ export async function handleRequest(req) {
|
|
|
288
336
|
sendErrorResponse(req, error);
|
|
289
337
|
}
|
|
290
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,5 +1,6 @@
|
|
|
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";
|
|
3
4
|
import { getServerLogger } from "../../../logging/index.js";
|
|
4
5
|
const logger = getServerLogger();
|
|
5
6
|
export async function cancelHandler(request) {
|
|
@@ -8,10 +9,18 @@ export async function cancelHandler(request) {
|
|
|
8
9
|
case "inference":
|
|
9
10
|
await cancel({ modelId: request.modelId });
|
|
10
11
|
break;
|
|
11
|
-
case "downloadAsset":
|
|
12
|
+
case "downloadAsset": {
|
|
12
13
|
const cancelDownload = createCancelFunction(request.downloadKey, request.clearCache);
|
|
13
14
|
cancelDownload();
|
|
14
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
|
+
}
|
|
15
24
|
}
|
|
16
25
|
return {
|
|
17
26
|
type: "cancel",
|
|
@@ -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,4 @@
|
|
|
1
|
-
import { deleteCache as deleteCacheUtil } from "../../bare/addons/llamacpp/
|
|
1
|
+
import { deleteCache as deleteCacheUtil } from "../../bare/addons/llamacpp-completion/index.js";
|
|
2
2
|
import { getServerLogger } from "../../../logging/index.js";
|
|
3
3
|
const logger = getServerLogger();
|
|
4
4
|
export async function handleDeleteCache(request) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { embed } from "../../bare/addons/llamacpp/index.js";
|
|
1
|
+
import { embed } from "../../bare/addons/llamacpp-embedding/index.js";
|
|
2
2
|
import { getServerLogger } from "../../../logging/index.js";
|
|
3
3
|
const logger = getServerLogger();
|
|
4
4
|
export async function handleEmbed(request) {
|
|
@@ -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,6 +29,7 @@ export declare const handlers: {
|
|
|
27
29
|
rag: typeof handleRag;
|
|
28
30
|
cancel: typeof cancelHandler;
|
|
29
31
|
textToSpeech: typeof handleTextToSpeech;
|
|
30
|
-
getModelInfo:
|
|
32
|
+
getModelInfo: typeof handleGetModelInfo;
|
|
33
|
+
ocrStream: typeof handleOCRStream;
|
|
31
34
|
};
|
|
32
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -13,6 +13,7 @@ import { cancelHandler } from "./cancelHandler.js";
|
|
|
13
13
|
import { handleDeleteCache } from "./delete-cache.js";
|
|
14
14
|
import { handleTextToSpeech } from "./text-to-speech.js";
|
|
15
15
|
import { handleGetModelInfo } from "./get-model-info.js";
|
|
16
|
+
import { handleOCRStream } from "./ocr-stream.js";
|
|
16
17
|
export const handlers = {
|
|
17
18
|
completionStream: handleCompletionStream,
|
|
18
19
|
downloadAsset: handleDownloadAsset,
|
|
@@ -29,4 +30,5 @@ export const handlers = {
|
|
|
29
30
|
cancel: cancelHandler,
|
|
30
31
|
textToSpeech: handleTextToSpeech,
|
|
31
32
|
getModelInfo: handleGetModelInfo,
|
|
33
|
+
ocrStream: handleOCRStream,
|
|
32
34
|
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { type DownloadEntry } from "../../../../schemas/index";
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
4
|
-
export declare
|
|
5
|
-
export declare
|
|
6
|
-
export declare
|
|
7
|
-
export declare
|
|
8
|
-
export declare
|
|
9
|
-
export declare
|
|
10
|
-
export declare
|
|
11
|
-
export declare
|
|
12
|
-
export declare
|
|
2
|
+
export declare function getActiveDownload(key: string): DownloadEntry | undefined;
|
|
3
|
+
export declare function registerDownload(key: string, entry: DownloadEntry): void;
|
|
4
|
+
export declare function unregisterDownload(key: string): void;
|
|
5
|
+
export declare function createHyperdriveDownloadKey(hyperdriveKey: string, modelFileName: string): string;
|
|
6
|
+
export declare function createHttpDownloadKey(url: string): string;
|
|
7
|
+
export declare function setClearCacheFlag(downloadKey: string, clearCache: boolean): void;
|
|
8
|
+
export declare function shouldClearCache(downloadKey: string): boolean;
|
|
9
|
+
export declare function clearClearCacheFlag(downloadKey: string): void;
|
|
10
|
+
export declare function createCancelFunction(downloadKey: string, clearCache?: boolean): () => void;
|
|
11
|
+
export declare function cancelAllDownloads(): void;
|
|
12
|
+
export declare function cleanupDownloads(): Promise<void>;
|
|
13
13
|
//# sourceMappingURL=download-manager.d.ts.map
|