@qvac/sdk 0.10.2 → 0.12.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/NOTICE +1455 -29
- package/README.md +2 -0
- package/dist/client/api/cancel.d.ts +24 -32
- package/dist/client/api/cancel.js +58 -31
- package/dist/client/api/classify.d.ts +23 -0
- package/dist/client/api/classify.js +43 -0
- package/dist/client/api/client-request-id.d.ts +17 -0
- package/dist/client/api/client-request-id.js +27 -0
- package/dist/client/api/completion-stream.d.ts +1 -1
- package/dist/client/api/completion-stream.js +34 -3
- package/dist/client/api/diffusion.d.ts +46 -0
- package/dist/client/api/diffusion.js +50 -1
- package/dist/client/api/download-asset.d.ts +12 -2
- package/dist/client/api/download-asset.js +21 -3
- package/dist/client/api/embed.d.ts +8 -4
- package/dist/client/api/embed.js +14 -1
- package/dist/client/api/get-model-info.d.ts +1 -1
- package/dist/client/api/index.d.ts +5 -0
- package/dist/client/api/index.js +5 -0
- package/dist/client/api/load-model.d.ts +12 -4
- package/dist/client/api/load-model.js +49 -2
- package/dist/client/api/rag.d.ts +9 -3
- package/dist/client/api/rag.js +23 -3
- package/dist/client/api/transcribe.d.ts +23 -8
- package/dist/client/api/transcribe.js +69 -4
- package/dist/client/api/unload-model.d.ts +5 -2
- package/dist/client/api/unload-model.js +9 -4
- package/dist/client/api/upscale.d.ts +45 -0
- package/dist/client/api/upscale.js +99 -0
- package/dist/client/api/video.d.ts +64 -0
- package/dist/client/api/video.js +147 -0
- package/dist/client/api/vla-helpers.d.ts +45 -0
- package/dist/client/api/vla-helpers.js +130 -0
- package/dist/client/api/vla.d.ts +65 -0
- package/dist/client/api/vla.js +109 -0
- package/dist/client/config-loader/resolve-config.node.d.ts +16 -0
- package/dist/client/config-loader/resolve-config.node.js +77 -23
- package/dist/client/plugins-factory.d.ts +8 -0
- package/dist/client/plugins-factory.js +10 -0
- package/dist/client/rpc/bare-client.js +62 -66
- package/dist/client/rpc/ensure-worker-ready.d.ts +9 -0
- package/dist/client/rpc/ensure-worker-ready.js +17 -0
- package/dist/client/rpc/expo-rpc-client.js +2 -1
- package/dist/client/rpc/node-rpc-client.js +22 -8
- package/dist/client/rpc/rpc-client.d.ts +2 -2
- package/dist/client/rpc/rpc-client.js +10 -4
- package/dist/client/rpc/rpc-error.d.ts +9 -0
- package/dist/client/rpc/rpc-error.js +105 -0
- package/dist/commands/bundle/bare-pack.d.ts +13 -0
- package/dist/commands/bundle/bare-pack.js +54 -0
- package/dist/commands/bundle/constants.d.ts +7 -0
- package/dist/commands/bundle/constants.js +23 -0
- package/dist/commands/bundle/entry-gen.d.ts +2 -0
- package/dist/commands/bundle/entry-gen.js +48 -0
- package/dist/commands/bundle/index.d.ts +20 -0
- package/dist/commands/bundle/index.js +141 -0
- package/dist/commands/bundle/manifest.d.ts +21 -0
- package/dist/commands/bundle/manifest.js +193 -0
- package/dist/commands/bundle/plugins.d.ts +9 -0
- package/dist/commands/bundle/plugins.js +51 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.js +2 -0
- package/dist/commands/verify/abi.d.ts +52 -0
- package/dist/commands/verify/abi.js +125 -0
- package/dist/commands/verify/addon-source.d.ts +43 -0
- package/dist/commands/verify/addon-source.js +75 -0
- package/dist/commands/verify/bundle-source.d.ts +12 -0
- package/dist/commands/verify/bundle-source.js +53 -0
- package/dist/commands/verify/index.d.ts +59 -0
- package/dist/commands/verify/index.js +371 -0
- package/dist/commands/verify/node-modules-source.d.ts +11 -0
- package/dist/commands/verify/node-modules-source.js +76 -0
- package/dist/commands/verify/prebuilds.d.ts +15 -0
- package/dist/commands/verify/prebuilds.js +39 -0
- package/dist/examples/cancel-by-request-id.d.ts +38 -0
- package/dist/examples/cancel-by-request-id.js +103 -0
- package/dist/examples/classification/classify-image.d.ts +2 -0
- package/dist/examples/classification/classify-image.js +23 -0
- package/dist/examples/diffusion-esrgan-upscale.d.ts +2 -0
- package/dist/examples/diffusion-esrgan-upscale.js +78 -0
- package/dist/examples/diffusion-txt2vid.d.ts +2 -0
- package/dist/examples/diffusion-txt2vid.js +81 -0
- package/dist/examples/download-with-cancel.js +10 -10
- package/dist/examples/embed-multi-gpu.d.ts +2 -0
- package/dist/examples/embed-multi-gpu.js +46 -0
- package/dist/examples/llamacpp-multi-gpu.d.ts +2 -0
- package/dist/examples/llamacpp-multi-gpu.js +57 -0
- package/dist/examples/plugins.js +3 -7
- package/dist/examples/rag/rag-hyperdb/cancellation.js +20 -17
- package/dist/examples/tools/llamacpp-tools-gemma4.d.ts +2 -0
- package/dist/examples/tools/llamacpp-tools-gemma4.js +73 -0
- package/dist/examples/tools/llamacpp-tools-qwen35.d.ts +2 -0
- package/dist/examples/tools/llamacpp-tools-qwen35.js +69 -0
- package/dist/examples/transcription/parakeet-ctc-filesystem.js +18 -12
- package/dist/examples/transcription/parakeet-microphone-record.js +7 -12
- package/dist/examples/transcription/parakeet-microphone-stream.d.ts +2 -0
- package/dist/examples/transcription/parakeet-microphone-stream.js +79 -0
- package/dist/examples/transcription/parakeet-sortformer-streaming.d.ts +2 -0
- package/dist/examples/transcription/parakeet-sortformer-streaming.js +121 -0
- package/dist/examples/transcription/parakeet-sortformer.js +58 -55
- package/dist/examples/transcription/parakeet-tdt-filesystem.js +18 -15
- package/dist/examples/transcription/whispercpp-microphone-conversation.d.ts +2 -0
- package/dist/examples/transcription/whispercpp-microphone-conversation.js +107 -0
- package/dist/examples/tts/chatterbox.js +7 -16
- package/dist/examples/tts/llm-to-tts-streaming.js +3 -10
- package/dist/examples/tts/supertonic-multilingual.js +4 -12
- package/dist/examples/tts/supertonic.js +5 -12
- package/dist/examples/vla-smolvla.d.ts +2 -0
- package/dist/examples/vla-smolvla.js +75 -0
- package/dist/examples/voice-assistant/voice-assistant.js +3 -10
- package/dist/expo/plugins/find-in-ancestor-node-modules.d.ts +14 -0
- package/dist/expo/plugins/find-in-ancestor-node-modules.js +24 -0
- package/dist/expo/plugins/get-project-root.d.ts +22 -0
- package/dist/expo/plugins/get-project-root.js +23 -0
- package/dist/expo/plugins/index.d.ts +4 -0
- package/dist/expo/plugins/index.js +4 -0
- package/dist/expo/plugins/resolve-sdk-package-dir.d.ts +9 -2
- package/dist/expo/plugins/resolve-sdk-package-dir.js +38 -11
- package/dist/expo/plugins/withDeviceInfo.js +2 -1
- package/dist/expo/plugins/withMobileBundle.d.ts +5 -4
- package/dist/expo/plugins/withMobileBundle.js +42 -58
- package/dist/index.d.ts +6 -2
- package/dist/index.js +23 -2
- package/dist/models/registry/models.d.ts +3725 -514
- package/dist/models/registry/models.js +7269 -3910
- package/dist/models/update-models/naming.js +22 -8
- package/dist/pear/pre.d.ts +3 -0
- package/dist/pear/pre.js +9 -2
- package/dist/schemas/cancel.d.ts +172 -28
- package/dist/schemas/cancel.js +120 -19
- package/dist/schemas/classification.d.ts +53 -0
- package/dist/schemas/classification.js +33 -0
- package/dist/schemas/common.d.ts +860 -1379
- package/dist/schemas/common.js +8 -1
- package/dist/schemas/completion-event.d.ts +17 -0
- package/dist/schemas/completion-event.js +12 -1
- package/dist/schemas/completion-stream.d.ts +16 -1
- package/dist/schemas/completion-stream.js +25 -7
- package/dist/schemas/download-asset.d.ts +25 -9
- package/dist/schemas/download-asset.js +17 -6
- package/dist/schemas/embed.d.ts +1 -0
- package/dist/schemas/embed.js +5 -0
- package/dist/schemas/engine-addon-map.d.ts +3 -0
- package/dist/schemas/engine-addon-map.js +18 -5
- package/dist/schemas/error.d.ts +31 -0
- package/dist/schemas/error.js +29 -1
- package/dist/schemas/finetune.d.ts +2 -0
- package/dist/schemas/finetune.js +5 -0
- package/dist/schemas/get-model-info.d.ts +10 -6
- package/dist/schemas/get-model-info.js +2 -0
- package/dist/schemas/index.d.ts +3 -0
- package/dist/schemas/index.js +3 -0
- package/dist/schemas/llamacpp-config.d.ts +64 -8
- package/dist/schemas/llamacpp-config.js +12 -0
- package/dist/schemas/load-model.d.ts +4644 -8605
- package/dist/schemas/load-model.js +90 -7
- package/dist/schemas/model-src-utils.d.ts +34 -14
- package/dist/schemas/model-types.d.ts +54 -14
- package/dist/schemas/model-types.js +28 -5
- package/dist/schemas/ocr.d.ts +8 -3
- package/dist/schemas/plugin.d.ts +60 -6
- package/dist/schemas/plugin.js +31 -5
- package/dist/schemas/rag.d.ts +9 -0
- package/dist/schemas/rag.js +17 -9
- package/dist/schemas/registry.d.ts +74 -30
- package/dist/schemas/registry.js +5 -0
- package/dist/schemas/reload-config.d.ts +34 -14
- package/dist/schemas/sdcpp-config.d.ts +445 -16
- package/dist/schemas/sdcpp-config.js +387 -26
- package/dist/schemas/sdk-config.d.ts +2431 -2723
- package/dist/schemas/sdk-config.js +16 -1
- package/dist/schemas/sdk-errors-client.d.ts +6 -0
- package/dist/schemas/sdk-errors-client.js +31 -1
- package/dist/schemas/sdk-errors-server.d.ts +8 -1
- package/dist/schemas/sdk-errors-server.js +45 -5
- package/dist/schemas/text-to-speech.d.ts +81 -698
- package/dist/schemas/text-to-speech.js +46 -19
- package/dist/schemas/transcription-config.d.ts +40 -229
- package/dist/schemas/transcription-config.js +76 -15
- package/dist/schemas/transcription.d.ts +108 -2
- package/dist/schemas/transcription.js +81 -0
- package/dist/schemas/translate.d.ts +2 -0
- package/dist/schemas/translate.js +13 -2
- package/dist/schemas/translation-config.d.ts +90 -40
- package/dist/schemas/unload-model.d.ts +2 -1
- package/dist/schemas/unload-model.js +4 -1
- package/dist/schemas/vla.d.ts +87 -0
- package/dist/schemas/vla.js +108 -0
- package/dist/scripts/run-unit-tests.js +22 -3
- package/dist/server/bare/ops/cancel.d.ts +27 -1
- package/dist/server/bare/ops/cancel.js +36 -10
- package/dist/server/bare/ops/embed.d.ts +3 -3
- package/dist/server/bare/ops/embed.js +144 -28
- package/dist/server/bare/ops/kv-cache-utils.d.ts +0 -7
- package/dist/server/bare/ops/kv-cache-utils.js +8 -47
- package/dist/server/bare/ops/transcribe.d.ts +11 -5
- package/dist/server/bare/ops/transcribe.js +230 -50
- package/dist/server/bare/ops/translate.d.ts +1 -1
- package/dist/server/bare/ops/translate.js +197 -88
- package/dist/server/bare/plugins/ggml-classification/ops/classify.d.ts +6 -0
- package/dist/server/bare/plugins/ggml-classification/ops/classify.js +30 -0
- package/dist/server/bare/plugins/ggml-classification/plugin.d.ts +32 -0
- package/dist/server/bare/plugins/ggml-classification/plugin.js +55 -0
- package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.d.ts +3 -0
- package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.js +12 -0
- package/dist/server/bare/plugins/ggml-vla/ops/vla-run.d.ts +3 -0
- package/dist/server/bare/plugins/ggml-vla/ops/vla-run.js +75 -0
- package/dist/server/bare/plugins/ggml-vla/plugin.d.ts +54 -0
- package/dist/server/bare/plugins/ggml-vla/plugin.js +57 -0
- package/dist/server/bare/plugins/index.d.ts +3 -1
- package/dist/server/bare/plugins/index.js +3 -1
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.d.ts +12 -3
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js +173 -172
- package/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.d.ts +29 -0
- package/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.js +65 -0
- package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js +125 -21
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.d.ts +154 -0
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js +448 -0
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.d.ts +21 -73
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js +18 -101
- package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +36 -3
- package/dist/server/bare/plugins/llamacpp-completion/plugin.js +183 -85
- package/dist/server/bare/plugins/llamacpp-completion/transform.d.ts +10 -0
- package/dist/server/bare/plugins/llamacpp-completion/transform.js +34 -0
- package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +7 -0
- package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +10 -1
- package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +42 -15
- package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +5 -1
- package/dist/server/bare/plugins/onnx-ocr/plugin.d.ts +8 -3
- package/dist/server/bare/plugins/onnx-ocr/plugin.js +3 -0
- package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +73 -244
- package/dist/server/bare/plugins/parakeet-transcription/plugin.js +68 -96
- package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.js +8 -0
- package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.d.ts +3 -0
- package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.js +40 -0
- package/dist/server/bare/plugins/sdcpp-generation/ops/video.d.ts +3 -0
- package/dist/server/bare/plugins/sdcpp-generation/ops/video.js +199 -0
- package/dist/server/bare/plugins/sdcpp-generation/plugin.d.ts +288 -15
- package/dist/server/bare/plugins/sdcpp-generation/plugin.js +150 -7
- package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech-stream.js +2 -15
- package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech.js +2 -1
- package/dist/server/bare/plugins/tts-ggml/plugin.d.ts +75 -0
- package/dist/server/bare/plugins/tts-ggml/plugin.js +189 -0
- package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +47 -3
- package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +61 -14
- package/dist/server/bare/rag-hyperdb/index.d.ts +1 -1
- package/dist/server/bare/rag-hyperdb/index.js +1 -1
- package/dist/server/bare/rag-hyperdb/rag-operation-manager.d.ts +26 -4
- package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +65 -28
- package/dist/server/bare/registry/model-config-utils.js +7 -0
- package/dist/server/bare/runtime/disposable-scope.d.ts +36 -0
- package/dist/server/bare/runtime/disposable-scope.js +69 -0
- package/dist/server/bare/runtime/index.d.ts +8 -0
- package/dist/server/bare/runtime/index.js +3 -0
- package/dist/server/bare/runtime/request-context.d.ts +49 -0
- package/dist/server/bare/runtime/request-context.js +1 -0
- package/dist/server/bare/runtime/request-id.d.ts +12 -0
- package/dist/server/bare/runtime/request-id.js +14 -0
- package/dist/server/bare/runtime/request-registry-singleton.d.ts +4 -0
- package/dist/server/bare/runtime/request-registry-singleton.js +27 -0
- package/dist/server/bare/runtime/request-registry.d.ts +136 -0
- package/dist/server/bare/runtime/request-registry.js +297 -0
- package/dist/server/bare/runtime/with-request-context.d.ts +22 -0
- package/dist/server/bare/runtime/with-request-context.js +53 -0
- package/dist/server/bare/runtime-lifecycle.js +9 -9
- package/dist/server/bare/types/addon-responses.d.ts +12 -1
- package/dist/server/env.js +4 -1
- package/dist/server/plugins/index.d.ts +1 -1
- package/dist/server/plugins/index.js +1 -1
- package/dist/server/plugins/registry.d.ts +1 -0
- package/dist/server/plugins/registry.js +5 -0
- package/dist/server/rpc/handler-registry.js +30 -7
- package/dist/server/rpc/handler-selection.d.ts +9 -0
- package/dist/server/rpc/handler-selection.js +14 -0
- package/dist/server/rpc/handler-utils.js +5 -13
- package/dist/server/rpc/handlers/cancel-delegated.js +28 -31
- package/dist/server/rpc/handlers/cancelHandler.d.ts +30 -1
- package/dist/server/rpc/handlers/cancelHandler.js +54 -22
- package/dist/server/rpc/handlers/classify.d.ts +3 -0
- package/dist/server/rpc/handlers/classify.js +4 -0
- package/dist/server/rpc/handlers/delete-cache.d.ts +9 -0
- package/dist/server/rpc/handlers/delete-cache.js +13 -15
- package/dist/server/rpc/handlers/download-asset.js +133 -40
- package/dist/server/rpc/handlers/index.d.ts +4 -0
- package/dist/server/rpc/handlers/index.js +4 -0
- package/dist/server/rpc/handlers/load-model/download-manager.d.ts +60 -2
- package/dist/server/rpc/handlers/load-model/download-manager.js +141 -8
- package/dist/server/rpc/handlers/load-model/handler.js +216 -98
- package/dist/server/rpc/handlers/load-model/http.js +3 -3
- package/dist/server/rpc/handlers/load-model/hyperdrive.js +1 -1
- package/dist/server/rpc/handlers/load-model/registry.js +1 -1
- package/dist/server/rpc/handlers/load-model/resolve-session.d.ts +20 -1
- package/dist/server/rpc/handlers/load-model/resolve-session.js +6 -5
- package/dist/server/rpc/handlers/load-model/resolve.d.ts +3 -2
- package/dist/server/rpc/handlers/load-model/resolve.js +18 -6
- package/dist/server/rpc/handlers/load-model/types.d.ts +24 -0
- package/dist/server/rpc/handlers/rag.js +133 -15
- package/dist/server/rpc/handlers/upscale-stream.d.ts +3 -0
- package/dist/server/rpc/handlers/upscale-stream.js +4 -0
- package/dist/server/rpc/handlers/video-stream.d.ts +3 -0
- package/dist/server/rpc/handlers/video-stream.js +4 -0
- package/dist/server/rpc/profiling/operation-metrics.js +23 -0
- package/dist/server/utils/completion-normalizer.js +8 -0
- package/dist/server/utils/config-transform.js +1 -1
- package/dist/server/utils/tools/dialect.js +4 -0
- package/dist/server/utils/tools/parser.js +16 -1
- package/dist/server/utils/tools/parsers/gemma4native.d.ts +4 -0
- package/dist/server/utils/tools/parsers/gemma4native.js +60 -0
- package/dist/server/utils/tools/parsers/qwen35.d.ts +4 -0
- package/dist/server/utils/tools/parsers/qwen35.js +120 -0
- package/dist/server/worker.js +14 -11
- package/dist/utils/aggregate-events.d.ts +9 -0
- package/dist/utils/aggregate-events.js +18 -3
- package/dist/utils/decorate-promise.d.ts +34 -0
- package/dist/utils/decorate-promise.js +35 -0
- package/dist/utils/errors-client.d.ts +18 -0
- package/dist/utils/errors-client.js +31 -0
- package/dist/utils/errors-server.d.ts +115 -2
- package/dist/utils/errors-server.js +148 -3
- package/package.json +68 -77
- package/dist/server/bare/plugins/onnx-tts/plugin.d.ts +0 -490
- package/dist/server/bare/plugins/onnx-tts/plugin.js +0 -266
- package/dist/server/bare/plugins/onnx-tts/wav-helper.d.ts +0 -14
- package/dist/server/bare/plugins/onnx-tts/wav-helper.js +0 -107
- /package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech-stream.d.ts +0 -0
- /package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech.d.ts +0 -0
|
@@ -1,6 +1,61 @@
|
|
|
1
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
2
|
+
if (value !== null && value !== void 0) {
|
|
3
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
4
|
+
var dispose, inner;
|
|
5
|
+
if (async) {
|
|
6
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
7
|
+
dispose = value[Symbol.asyncDispose];
|
|
8
|
+
}
|
|
9
|
+
if (dispose === void 0) {
|
|
10
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
11
|
+
dispose = value[Symbol.dispose];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
15
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
16
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
17
|
+
}
|
|
18
|
+
else if (async) {
|
|
19
|
+
env.stack.push({ async: true });
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
24
|
+
return function (env) {
|
|
25
|
+
function fail(e) {
|
|
26
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
|
+
env.hasError = true;
|
|
28
|
+
}
|
|
29
|
+
var r, s = 0;
|
|
30
|
+
function next() {
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
|
+
try {
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
fail(e);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
45
|
+
if (env.hasError) throw env.error;
|
|
46
|
+
}
|
|
47
|
+
return next();
|
|
48
|
+
};
|
|
49
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
50
|
+
var e = new Error(message);
|
|
51
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
52
|
+
});
|
|
1
53
|
import fs from "bare-fs";
|
|
2
54
|
import { getModel, } from "../../../registry/model-registry.js";
|
|
3
55
|
import { CompletionFailedError, } from "../../../../../utils/errors-server.js";
|
|
56
|
+
import { getRequestRegistry, withRequestContext, } from "../../../runtime/index.js";
|
|
57
|
+
import { generateServerRequestId } from "../../../runtime/request-id.js";
|
|
58
|
+
import { getServerLogger } from "../../../../../logging/index.js";
|
|
4
59
|
const PAUSE_CHECKPOINT_PREFIX = "pause_checkpoint_step_";
|
|
5
60
|
const finetuneRuntimeState = new Set();
|
|
6
61
|
function getRunningFinetuneState(modelId) {
|
|
@@ -46,30 +101,67 @@ function validateExplicitFinetuneOperation(request) {
|
|
|
46
101
|
}
|
|
47
102
|
}
|
|
48
103
|
export async function startFinetune(request, onProgress) {
|
|
49
|
-
const
|
|
50
|
-
validateExplicitFinetuneOperation(request);
|
|
51
|
-
registerRunningFinetune(request.modelId);
|
|
104
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
52
105
|
try {
|
|
106
|
+
const model = getModel(request.modelId);
|
|
107
|
+
validateExplicitFinetuneOperation(request);
|
|
108
|
+
// Open a request-scoped lifecycle so finetune slots into the same
|
|
109
|
+
// registry-driven cancel surface as the streaming inference kinds.
|
|
110
|
+
// `cancel({ requestId })` and broad `cancel({ modelId, kind: "finetune" })`
|
|
111
|
+
// both route through this context's signal — the `onAbort` listener
|
|
112
|
+
// forwards to `model.cancel()` to match the plugin's
|
|
113
|
+
// `cancel: { scope: "model", hard: true }` declaration. The legacy
|
|
114
|
+
// `cancelFinetune(modelId)` wrapper below now goes through the
|
|
115
|
+
// registry instead of touching the addon directly.
|
|
116
|
+
const ctx = __addDisposableResource(env_1, getRequestRegistry().begin({
|
|
117
|
+
requestId: request.requestId ?? generateServerRequestId(),
|
|
118
|
+
kind: "finetune",
|
|
119
|
+
modelId: request.modelId,
|
|
120
|
+
}), true);
|
|
121
|
+
const requestLogger = withRequestContext(getServerLogger(), ctx);
|
|
122
|
+
registerRunningFinetune(request.modelId);
|
|
123
|
+
// Two-level try/finally collapses into a pair of `scope.defer`
|
|
124
|
+
// registrations. LIFO order — the listener-detach defer is
|
|
125
|
+
// registered after `clearFinetuneRuntimeState`, so on scope unwind
|
|
126
|
+
// the listener is removed first, then the runtime-state flag is
|
|
127
|
+
// cleared. This mirrors the legacy `finally` nesting where the inner
|
|
128
|
+
// `removeListener` ran before the outer `clearFinetuneRuntimeState`.
|
|
129
|
+
ctx.scope.defer(() => {
|
|
130
|
+
clearFinetuneRuntimeState(request.modelId);
|
|
131
|
+
});
|
|
132
|
+
const onAbort = () => {
|
|
133
|
+
model.cancel().catch((err) => {
|
|
134
|
+
requestLogger.warn(`[cancel] model.cancel() rejected during abort for modelId=${request.modelId}: ${err instanceof Error ? err.message : String(err)}`);
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
ctx.signal.addEventListener("abort", onAbort, { once: true });
|
|
138
|
+
if (ctx.signal.aborted)
|
|
139
|
+
onAbort();
|
|
140
|
+
ctx.scope.defer(() => {
|
|
141
|
+
ctx.signal.removeEventListener("abort", onAbort);
|
|
142
|
+
});
|
|
53
143
|
const handle = await model.finetune(request.options);
|
|
54
144
|
if (onProgress) {
|
|
55
145
|
handle.on("stats", onProgress);
|
|
56
|
-
|
|
57
|
-
try {
|
|
58
|
-
const result = await handle.await();
|
|
59
|
-
return {
|
|
60
|
-
type: "finetune",
|
|
61
|
-
status: result.status,
|
|
62
|
-
stats: result.stats,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
finally {
|
|
66
|
-
if (onProgress) {
|
|
146
|
+
ctx.scope.defer(() => {
|
|
67
147
|
handle.removeListener("stats", onProgress);
|
|
68
|
-
}
|
|
148
|
+
});
|
|
69
149
|
}
|
|
150
|
+
const result = await handle.await();
|
|
151
|
+
return {
|
|
152
|
+
type: "finetune",
|
|
153
|
+
status: result.status,
|
|
154
|
+
stats: result.stats,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
catch (e_1) {
|
|
158
|
+
env_1.error = e_1;
|
|
159
|
+
env_1.hasError = true;
|
|
70
160
|
}
|
|
71
161
|
finally {
|
|
72
|
-
|
|
162
|
+
const result_1 = __disposeResources(env_1);
|
|
163
|
+
if (result_1)
|
|
164
|
+
await result_1;
|
|
73
165
|
}
|
|
74
166
|
}
|
|
75
167
|
export async function pauseFinetune(modelId) {
|
|
@@ -80,13 +172,25 @@ export async function pauseFinetune(modelId) {
|
|
|
80
172
|
status: "PAUSED",
|
|
81
173
|
};
|
|
82
174
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
175
|
+
// Thin compat wrapper over the request registry. The in-flight
|
|
176
|
+
// finetune is tracked by a `RequestContext` (kind `"finetune"`), and
|
|
177
|
+
// the registry owns the broadcast to its `AbortSignal`. `startFinetune`
|
|
178
|
+
// installs the addon-level `model.cancel()` listener tied to that
|
|
179
|
+
// signal, so callers see the same observable effect as a direct
|
|
180
|
+
// `model.cancel()` call. The addon-call wiring is centralised there —
|
|
181
|
+
// never invoke `model.cancel()` here.
|
|
182
|
+
export function cancelFinetune(modelId) {
|
|
183
|
+
// `registry.cancel(...)` is synchronous — it triggers the matching
|
|
184
|
+
// requests' abort signals and returns the cancelled count. Scope
|
|
185
|
+
// unwinding (and the `model.cancel()` forward installed by
|
|
186
|
+
// `startFinetune`) happens on the handler's own dispose path. The
|
|
187
|
+
// outer `Promise.resolve(...)` keeps the legacy `cancelFinetune`
|
|
188
|
+
// return shape (`Promise<FinetuneResult>`) intact for callers.
|
|
189
|
+
getRequestRegistry().cancel({ modelId, kind: "finetune" });
|
|
190
|
+
return Promise.resolve({
|
|
87
191
|
type: "finetune",
|
|
88
192
|
status: "CANCELLED",
|
|
89
|
-
};
|
|
193
|
+
});
|
|
90
194
|
}
|
|
91
195
|
export function getFinetuneState(params) {
|
|
92
196
|
const runtimeState = getRunningFinetuneState(params.modelId);
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { generateConfigHash } from "../../../ops/kv-cache-utils";
|
|
2
|
+
import type { CacheMessage } from "../../../../utils/index";
|
|
3
|
+
import type { Logger } from "../../../../../logging/types";
|
|
4
|
+
export interface TurnHandle {
|
|
5
|
+
/** Resolved on-disk cache file path the addon will read from / write to. */
|
|
6
|
+
readonly cachePath: string;
|
|
7
|
+
/**
|
|
8
|
+
* Snapshot of the on-disk saved-message count at `beginTurn` time
|
|
9
|
+
* (0 if the cache was just primed). Consumed by `decideCachedHistorySlice`
|
|
10
|
+
* to pick the message tail for the next addon call.
|
|
11
|
+
*/
|
|
12
|
+
readonly savedCount: number;
|
|
13
|
+
}
|
|
14
|
+
export interface BeginCustomTurnInput {
|
|
15
|
+
kind: "custom";
|
|
16
|
+
/** User-provided session key (`completion({ kvCache: "session-a" })`). */
|
|
17
|
+
customKey: string;
|
|
18
|
+
/** Hash of system prompt + (static) tool names. */
|
|
19
|
+
configHash: string;
|
|
20
|
+
/**
|
|
21
|
+
* Prime the cache by sending system prompt + (static) tools to the
|
|
22
|
+
* addon. Called when the cache doesn't exist in-memory OR on disk.
|
|
23
|
+
* Kept as an injected closure so this module has no dependency on the
|
|
24
|
+
* model registry / addon — the handler closes over `model` and tools.
|
|
25
|
+
*/
|
|
26
|
+
primeIfMissing: (cachePath: string) => Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
export interface BeginAutoTurnInput {
|
|
29
|
+
kind: "auto";
|
|
30
|
+
/** Hash of system prompt + (static) tool names. */
|
|
31
|
+
configHash: string;
|
|
32
|
+
/** Conversation history used to compute the pre-response cache key. */
|
|
33
|
+
history: CacheMessage[];
|
|
34
|
+
/** See `BeginCustomTurnInput.primeIfMissing`. */
|
|
35
|
+
primeIfMissing: (cachePath: string) => Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
export type BeginTurnInput = BeginCustomTurnInput | BeginAutoTurnInput;
|
|
38
|
+
export interface StaticCommitResult {
|
|
39
|
+
kind: "static";
|
|
40
|
+
/** `history.length + 1` — recorded at the turn's current `cachePath`. */
|
|
41
|
+
messageCount: number;
|
|
42
|
+
}
|
|
43
|
+
export interface AutoRenameCommitResult {
|
|
44
|
+
kind: "autoRename";
|
|
45
|
+
/**
|
|
46
|
+
* Destination path the addon's pre-response cache file should be
|
|
47
|
+
* renamed to (computed from `cacheMessages + responseText`). The
|
|
48
|
+
* stale entry at the source path is dropped from `cachedMessageCounts`
|
|
49
|
+
* and the new count is recorded at this target path.
|
|
50
|
+
*/
|
|
51
|
+
targetCachePath: string;
|
|
52
|
+
/** Number of messages the renamed cache represents (`savedHistory.length`). */
|
|
53
|
+
messageCount: number;
|
|
54
|
+
}
|
|
55
|
+
export type CommitResult = StaticCommitResult | AutoRenameCommitResult;
|
|
56
|
+
export interface KvCacheSession {
|
|
57
|
+
/**
|
|
58
|
+
* Open a new turn against the cache. Resolves the cache file path,
|
|
59
|
+
* primes the system-prompt cache if needed (delegated to
|
|
60
|
+
* `input.primeIfMissing`), marks the cache initialized, and returns a
|
|
61
|
+
* `TurnHandle` the handler attaches to `ctx.scope.defer(...)` for the
|
|
62
|
+
* rollback hook.
|
|
63
|
+
*/
|
|
64
|
+
beginTurn(input: BeginTurnInput): Promise<TurnHandle>;
|
|
65
|
+
/**
|
|
66
|
+
* Commit a successful turn — records the new saved-message count,
|
|
67
|
+
* preserves the cache file, and (for auto-cache turns) renames the
|
|
68
|
+
* addon's pre-response file to the post-response path. Flips the
|
|
69
|
+
* turn's internal `committed` flag so the deferred `rollback` becomes
|
|
70
|
+
* a no-op on the happy path.
|
|
71
|
+
*/
|
|
72
|
+
commitTurn(turn: TurnHandle, result: CommitResult): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Roll back an in-flight turn — atomically deletes the on-disk cache
|
|
75
|
+
* file, clears the in-memory `initializedCaches` entry, and forgets
|
|
76
|
+
* the `cachedMessageCounts` entry. **All three layers, always, in
|
|
77
|
+
* one place.** Idempotent: a turn that has already been committed
|
|
78
|
+
* or rolled back is a no-op on subsequent calls. Handlers register
|
|
79
|
+
* this via `ctx.scope.defer(...)` so it runs regardless of how the
|
|
80
|
+
* handler exits (success branch removes itself via `commitTurn`).
|
|
81
|
+
*/
|
|
82
|
+
rollback(turn: TurnHandle): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Forget the in-memory saved-message count for the turn's path
|
|
85
|
+
* without unlinking the file or clearing the init flag. Used when
|
|
86
|
+
* `decideCachedHistorySlice` detects a stale boundary
|
|
87
|
+
* (`clearStaleCount: true`) — the next turn re-sends the full history
|
|
88
|
+
* but the cache itself is still usable.
|
|
89
|
+
*/
|
|
90
|
+
dropStaleSavedCount(turn: TurnHandle): void;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Construct a session bound to one `(modelId, turn-owning request)`
|
|
94
|
+
* scope. `options.logger` is the per-instance logger the session emits
|
|
95
|
+
* through (typically `withRequestContext(getServerLogger(), ctx)`);
|
|
96
|
+
* falls back to the module-scoped logger when omitted.
|
|
97
|
+
*/
|
|
98
|
+
export declare function createKvCacheSession(modelId: string, options?: {
|
|
99
|
+
logger?: Logger;
|
|
100
|
+
}): KvCacheSession;
|
|
101
|
+
/**
|
|
102
|
+
* Atomically delete every layer of KV-cache state for a
|
|
103
|
+
* `(kvCacheKey, modelId)` pair, or wipe everything. Single entry point
|
|
104
|
+
* — the only mutation point for cross-model state outside of
|
|
105
|
+
* turn-scoped `commitTurn`/`rollback`.
|
|
106
|
+
*
|
|
107
|
+
* Why this isn't a method on `KvCacheSession`: deletes are
|
|
108
|
+
* cross-model (`all: true` has no model; the keyed form has
|
|
109
|
+
* `modelId` optional on the wire). A session, by contrast, is
|
|
110
|
+
* created with a *fixed* `modelId` for the duration of a turn. Making
|
|
111
|
+
* delete a method would force callers to materialise an irrelevant
|
|
112
|
+
* session for cross-model administrative cleanups.
|
|
113
|
+
*
|
|
114
|
+
* Layers cleared, in order:
|
|
115
|
+
* 1. On-disk: `deleteCache(...)` removes the matching directory
|
|
116
|
+
* tree (or wipes and recreates the root for `all: true`).
|
|
117
|
+
* 2. `cachedMessageCounts`: prefix-cleanup by the removed directory
|
|
118
|
+
* so any per-cache count under the deleted tree is forgotten.
|
|
119
|
+
* 3. `initializedCaches`: scope clear by `(kvCacheKey[, modelId])`,
|
|
120
|
+
* matching the on-disk scope.
|
|
121
|
+
*
|
|
122
|
+
* Concurrency with in-flight turns: this delete is wire-async with
|
|
123
|
+
* respect to any turn currently holding a `TurnHandle` for the same
|
|
124
|
+
* cache key. Worst case the on-disk `.bin` is removed while a turn is
|
|
125
|
+
* mid-write; the turn's eventual `commitTurn(...)` then fails the
|
|
126
|
+
* `verifySaveAndRecord` probe (file gone) and rolls back idempotently.
|
|
127
|
+
* No coordination primitive is needed because every layer's mutation
|
|
128
|
+
* is idempotent (`unlink` no-ops if missing, `Map.delete` / `Set.delete`
|
|
129
|
+
* no-op on absent keys).
|
|
130
|
+
*/
|
|
131
|
+
export declare function deleteKvCacheState(target: {
|
|
132
|
+
kvCacheKey: string;
|
|
133
|
+
modelId?: string;
|
|
134
|
+
} | {
|
|
135
|
+
all: true;
|
|
136
|
+
}): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Test-only access to the module-scoped state. Production code reaches
|
|
139
|
+
* for cache state exclusively through the session API; the unit suite
|
|
140
|
+
* for `kv-cache-session.test.ts` needs to seed and inspect raw state
|
|
141
|
+
* to assert the rollback / commit invariants. Not part of the public
|
|
142
|
+
* SDK surface.
|
|
143
|
+
*
|
|
144
|
+
* @internal
|
|
145
|
+
*/
|
|
146
|
+
export declare const __kvCacheSessionTestHooks: {
|
|
147
|
+
getSavedCount(cachePath: string): number | undefined;
|
|
148
|
+
setSavedCountForTest(cachePath: string, count: number): void;
|
|
149
|
+
hasInitializedKey(modelId: string, configHash: string, cacheKey: string): boolean;
|
|
150
|
+
markInitializedForTest(modelId: string, configHash: string, cacheKey: string): void;
|
|
151
|
+
resetForTest(): void;
|
|
152
|
+
};
|
|
153
|
+
export { generateConfigHash };
|
|
154
|
+
//# sourceMappingURL=kv-cache-session.d.ts.map
|