@qvac/sdk 0.14.1 → 0.15.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 +27 -11
- package/README.md +34 -35
- package/dist/client/api/batch-completion.d.ts +15 -0
- package/dist/client/api/batch-completion.js +332 -0
- package/dist/client/api/bci-transcribe.d.ts +1 -1
- package/dist/client/api/bci-transcribe.js +31 -31
- package/dist/client/api/cancel.d.ts +1 -1
- package/dist/client/api/cancel.js +18 -18
- package/dist/client/api/classify.d.ts +1 -1
- package/dist/client/api/classify.js +9 -6
- package/dist/client/api/client-request-id.js +1 -1
- package/dist/client/api/completion-stream.d.ts +3 -3
- package/dist/client/api/completion-stream.js +18 -18
- package/dist/client/api/delete-cache.js +9 -9
- package/dist/client/api/diffusion.d.ts +1 -1
- package/dist/client/api/diffusion.js +17 -11
- package/dist/client/api/download-asset.d.ts +1 -1
- package/dist/client/api/download-asset.js +11 -11
- package/dist/client/api/embed.d.ts +1 -1
- package/dist/client/api/embed.js +10 -10
- package/dist/client/api/finetune.d.ts +1 -1
- package/dist/client/api/finetune.js +25 -27
- package/dist/client/api/get-loaded-model-info.d.ts +2 -2
- package/dist/client/api/get-loaded-model-info.js +8 -8
- package/dist/client/api/get-model-info.d.ts +1 -1
- package/dist/client/api/get-model-info.js +7 -7
- package/dist/client/api/heartbeat.d.ts +2 -2
- package/dist/client/api/heartbeat.js +7 -7
- package/dist/client/api/index.d.ts +33 -32
- package/dist/client/api/index.js +33 -32
- package/dist/client/api/invoke-plugin.d.ts +1 -1
- package/dist/client/api/invoke-plugin.js +10 -10
- package/dist/client/api/load-model.d.ts +1 -1
- package/dist/client/api/load-model.js +32 -32
- package/dist/client/api/logging-stream.d.ts +1 -1
- package/dist/client/api/logging-stream.js +6 -6
- package/dist/client/api/ocr.d.ts +1 -1
- package/dist/client/api/ocr.js +11 -11
- package/dist/client/api/provide.d.ts +1 -1
- package/dist/client/api/provide.js +7 -7
- package/dist/client/api/rag.d.ts +1 -1
- package/dist/client/api/rag.js +65 -66
- package/dist/client/api/registry.d.ts +1 -1
- package/dist/client/api/registry.js +8 -8
- package/dist/client/api/resume.js +5 -5
- package/dist/client/api/state.d.ts +1 -1
- package/dist/client/api/state.js +5 -5
- package/dist/client/api/stop-provider.js +6 -6
- package/dist/client/api/subscribe-logs.d.ts +1 -1
- package/dist/client/api/subscribe-logs.js +3 -3
- package/dist/client/api/suspend.js +5 -5
- package/dist/client/api/text-to-speech.d.ts +1 -1
- package/dist/client/api/text-to-speech.js +37 -39
- package/dist/client/api/transcribe.d.ts +2 -2
- package/dist/client/api/transcribe.js +44 -45
- package/dist/client/api/translate.d.ts +1 -1
- package/dist/client/api/translate.js +14 -14
- package/dist/client/api/unload-model.d.ts +1 -1
- package/dist/client/api/unload-model.js +11 -11
- package/dist/client/api/upscale.d.ts +1 -1
- package/dist/client/api/upscale.js +9 -9
- package/dist/client/api/video.d.ts +1 -1
- package/dist/client/api/video.js +16 -14
- package/dist/client/api/vla-helpers.d.ts +2 -2
- package/dist/client/api/vla-helpers.js +6 -11
- package/dist/client/api/vla.d.ts +1 -1
- package/dist/client/api/vla.js +13 -13
- package/dist/client/config-loader/config-utils.d.ts +1 -1
- package/dist/client/config-loader/config-utils.js +3 -3
- package/dist/client/config-loader/resolve-config.bare.d.ts +1 -1
- package/dist/client/config-loader/resolve-config.bare.js +11 -11
- package/dist/client/config-loader/resolve-config.expo.d.ts +1 -1
- package/dist/client/config-loader/resolve-config.expo.js +6 -6
- package/dist/client/config-loader/resolve-config.node.d.ts +1 -1
- package/dist/client/config-loader/resolve-config.node.js +27 -27
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/init-hooks.d.ts +1 -1
- package/dist/client/init-hooks.js +12 -12
- package/dist/client/logging-stream-registry.d.ts +1 -1
- package/dist/client/logging-stream-registry.js +6 -6
- package/dist/client/parse-input.d.ts +1 -1
- package/dist/client/parse-input.js +3 -3
- package/dist/client/plugins-factory.d.ts +2 -2
- package/dist/client/plugins-factory.js +2 -2
- package/dist/client/rpc/bare-client.d.ts +2 -1
- package/dist/client/rpc/bare-client.js +37 -39
- package/dist/client/rpc/ensure-worker-ready.js +4 -4
- package/dist/client/rpc/expo-device-info.d.ts +1 -1
- package/dist/client/rpc/expo-device-info.js +11 -11
- package/dist/client/rpc/expo-rpc-client.d.ts +2 -1
- package/dist/client/rpc/expo-rpc-client.js +38 -47
- package/dist/client/rpc/node-rpc-client.d.ts +2 -1
- package/dist/client/rpc/node-rpc-client.js +103 -75
- package/dist/client/rpc/profiling/index.d.ts +1 -1
- package/dist/client/rpc/profiling/index.js +1 -1
- package/dist/client/rpc/profiling/profiler.d.ts +2 -2
- package/dist/client/rpc/profiling/profiler.js +31 -34
- package/dist/client/rpc/rpc-client.d.ts +2 -2
- package/dist/client/rpc/rpc-client.js +113 -72
- package/dist/client/rpc/rpc-error.d.ts +1 -1
- package/dist/client/rpc/rpc-error.js +14 -14
- package/dist/commands/bundle/bare-pack.d.ts +1 -1
- package/dist/commands/bundle/bare-pack.js +20 -20
- package/dist/commands/bundle/constants.js +21 -21
- package/dist/commands/bundle/entry-gen.js +4 -4
- package/dist/commands/bundle/index.js +45 -47
- package/dist/commands/bundle/manifest.d.ts +1 -1
- package/dist/commands/bundle/manifest.js +44 -46
- package/dist/commands/bundle/plugins.d.ts +2 -2
- package/dist/commands/bundle/plugins.js +7 -7
- package/dist/commands/bundle/resolve-sdk-import.js +6 -13
- package/dist/commands/index.d.ts +4 -4
- package/dist/commands/index.js +2 -2
- package/dist/commands/verify/abi.d.ts +9 -9
- package/dist/commands/verify/abi.js +31 -31
- package/dist/commands/verify/addon-source.d.ts +1 -1
- package/dist/commands/verify/addon-source.js +13 -14
- package/dist/commands/verify/bundle-source.d.ts +1 -1
- package/dist/commands/verify/bundle-source.js +7 -7
- package/dist/commands/verify/index.d.ts +3 -3
- package/dist/commands/verify/index.js +18 -17
- package/dist/commands/verify/node-modules-source.d.ts +1 -1
- package/dist/commands/verify/node-modules-source.js +11 -11
- package/dist/commands/verify/prebuilds.d.ts +3 -3
- package/dist/commands/verify/prebuilds.js +8 -8
- package/dist/constants/audio.d.ts +1 -1
- package/dist/constants/audio.js +1 -1
- package/dist/constants/index.d.ts +2 -2
- package/dist/constants/index.js +2 -2
- package/dist/constants/registry.js +1 -1
- package/dist/examples/audio/mic-input.d.ts +1 -1
- package/dist/examples/audio/mic-input.js +31 -31
- package/dist/examples/batch-completion.d.ts +38 -0
- package/dist/examples/batch-completion.js +100 -0
- package/dist/examples/bci/bci-filesystem-streaming.js +20 -20
- package/dist/examples/bci/bci-filesystem.js +17 -17
- package/dist/examples/cache-management.js +32 -32
- package/dist/examples/cancel-by-request-id.js +11 -11
- package/dist/examples/classification/classify-image.js +5 -5
- package/dist/examples/completion-events.js +16 -18
- package/dist/examples/completion-stop-reason.js +13 -13
- package/dist/examples/concurrent-completion-collision.js +20 -20
- package/dist/examples/config/blind-relay/blind-relay.config.js +4 -4
- package/dist/examples/config/default/default.config.js +2 -2
- package/dist/examples/config/plugins/plugins.config.js +2 -2
- package/dist/examples/config-reload.js +14 -14
- package/dist/examples/default-config-usage.js +10 -13
- package/dist/examples/delegated-inference/composite.js +23 -23
- package/dist/examples/delegated-inference/consumer-profiled.js +19 -19
- package/dist/examples/delegated-inference/consumer.js +11 -11
- package/dist/examples/delegated-inference/provider.js +24 -24
- package/dist/examples/diffusion-esrgan-upscale.js +19 -19
- package/dist/examples/diffusion-flux2-klein-img2img.js +17 -17
- package/dist/examples/diffusion-flux2-klein.js +14 -14
- package/dist/examples/diffusion-img2img.js +13 -13
- package/dist/examples/diffusion-img2vid.js +22 -23
- package/dist/examples/diffusion-simple.js +7 -7
- package/dist/examples/diffusion-txt2img.js +13 -14
- package/dist/examples/diffusion-txt2vid.js +18 -18
- package/dist/examples/download-with-blind-relays.js +7 -8
- package/dist/examples/download-with-cancel.js +9 -9
- package/dist/examples/embed-multi-gpu.js +9 -9
- package/dist/examples/embed-p2p.js +24 -24
- package/dist/examples/finetune/llamacpp-finetune.js +21 -21
- package/dist/examples/kv-cache-cleanup.js +34 -34
- package/dist/examples/kv-cache-custom-key.js +30 -30
- package/dist/examples/kv-cache-example.js +18 -20
- package/dist/examples/llamacpp-cache.js +33 -33
- package/dist/examples/llamacpp-dynamic-tools.js +38 -38
- package/dist/examples/llamacpp-filesystem.js +13 -15
- package/dist/examples/llamacpp-http.js +12 -14
- package/dist/examples/llamacpp-multi-gpu.js +12 -12
- package/dist/examples/llamacpp-multimodal.js +16 -16
- package/dist/examples/llamacpp-p2p.js +11 -11
- package/dist/examples/llamacpp-sharded.js +12 -12
- package/dist/examples/llamacpp-structured-output.js +37 -37
- package/dist/examples/logging-file-transport.js +19 -21
- package/dist/examples/logging-global.js +8 -8
- package/dist/examples/logging-streaming.js +16 -18
- package/dist/examples/mcp-websearch.js +44 -44
- package/dist/examples/multi-model-demo.js +33 -33
- package/dist/examples/ocr-fasttext.js +17 -17
- package/dist/examples/parallel-download.js +11 -13
- package/dist/examples/plugins.js +43 -43
- package/dist/examples/profiling/basic.js +34 -36
- package/dist/examples/profiling/per-call.js +16 -16
- package/dist/examples/quickstart.bare.js +4 -6
- package/dist/examples/quickstart.js +7 -7
- package/dist/examples/rag/rag-chromadb.js +26 -26
- package/dist/examples/rag/rag-hyperdb/cancellation.js +19 -20
- package/dist/examples/rag/rag-hyperdb/ingest.js +19 -19
- package/dist/examples/rag/rag-hyperdb/pipeline.js +26 -26
- package/dist/examples/rag/rag-hyperdb/workspaces.js +46 -46
- package/dist/examples/rag/rag-lancedb.js +29 -32
- package/dist/examples/rag/rag-sqlite.js +25 -25
- package/dist/examples/registry-query.js +15 -15
- package/dist/examples/seed-p2p.js +8 -8
- package/dist/examples/suspend-resume.js +20 -20
- package/dist/examples/tools/llamacpp-native-tools.js +25 -25
- package/dist/examples/tools/llamacpp-tools-gemma4.js +14 -14
- package/dist/examples/tools/llamacpp-tools-harmony-multiturn.js +15 -15
- package/dist/examples/tools/llamacpp-tools-pythonic.js +15 -15
- package/dist/examples/tools/llamacpp-tools-qwen35.js +14 -14
- package/dist/examples/tools/shared.d.ts +2 -2
- package/dist/examples/tools/shared.js +17 -17
- package/dist/examples/transcription/parakeet-ctc-filesystem.js +12 -12
- package/dist/examples/transcription/parakeet-microphone-record.js +19 -19
- package/dist/examples/transcription/parakeet-microphone-stream.js +23 -23
- package/dist/examples/transcription/parakeet-sortformer-streaming.js +18 -28
- package/dist/examples/transcription/parakeet-sortformer.js +21 -21
- package/dist/examples/transcription/parakeet-tdt-filesystem.js +13 -13
- package/dist/examples/transcription/whispercpp-filesystem-streaming.js +34 -34
- package/dist/examples/transcription/whispercpp-filesystem.js +19 -19
- package/dist/examples/transcription/whispercpp-microphone-conversation.js +27 -27
- package/dist/examples/transcription/whispercpp-microphone-record.js +21 -21
- package/dist/examples/transcription/whispercpp-prompt.js +18 -18
- package/dist/examples/translation/translation-bergamot-batch.js +17 -17
- package/dist/examples/translation/translation-bergamot-pivot.js +16 -16
- package/dist/examples/translation/translation-bergamot.js +11 -11
- package/dist/examples/translation/translation-indic.js +10 -10
- package/dist/examples/translation/translation-llm-afriquegemma.js +10 -10
- package/dist/examples/translation/translation-llm-context.js +10 -10
- package/dist/examples/translation/translation-llm.js +13 -13
- package/dist/examples/translation/translation-stream.js +11 -11
- package/dist/examples/tts/chatterbox-enhanced.d.ts +2 -0
- package/dist/examples/tts/chatterbox-enhanced.js +55 -0
- package/dist/examples/tts/chatterbox-multilingual.d.ts +2 -0
- package/dist/examples/tts/chatterbox-multilingual.js +54 -0
- package/dist/examples/tts/chatterbox.js +18 -18
- package/dist/examples/tts/llm-to-tts-streaming.js +30 -30
- package/dist/examples/tts/supertonic-enhanced.d.ts +2 -0
- package/dist/examples/tts/supertonic-enhanced.js +57 -0
- package/dist/examples/tts/supertonic-multilingual.js +19 -19
- package/dist/examples/tts/supertonic.js +18 -18
- package/dist/examples/tts/utils.js +24 -32
- package/dist/examples/vla-pi05.js +14 -14
- package/dist/examples/vla-smolvla.js +14 -14
- package/dist/examples/voice-assistant/voice-assistant.js +46 -46
- package/dist/expo/plugins/find-in-ancestor-node-modules.js +3 -3
- package/dist/expo/plugins/get-project-root.d.ts +2 -2
- package/dist/expo/plugins/get-project-root.js +1 -1
- package/dist/expo/plugins/index.d.ts +11 -11
- package/dist/expo/plugins/index.js +10 -10
- package/dist/expo/plugins/resolve-sdk-package-dir.js +7 -11
- package/dist/expo/plugins/withAndroidArchitecture.d.ts +1 -1
- package/dist/expo/plugins/withAndroidArchitecture.js +12 -12
- package/dist/expo/plugins/withAndroidNdkVersion.d.ts +1 -1
- package/dist/expo/plugins/withAndroidNdkVersion.js +9 -9
- package/dist/expo/plugins/withDeviceInfo.d.ts +1 -1
- package/dist/expo/plugins/withDeviceInfo.js +13 -13
- package/dist/expo/plugins/withMobileBundle.d.ts +1 -1
- package/dist/expo/plugins/withMobileBundle.js +34 -42
- package/dist/expo/plugins/withOpenCL.d.ts +1 -1
- package/dist/expo/plugins/withOpenCL.js +14 -16
- package/dist/expo/plugins/withQvacSDK.d.ts +1 -1
- package/dist/expo/plugins/withQvacSDK.js +12 -12
- package/dist/index.d.ts +16 -16
- package/dist/index.js +16 -17
- package/dist/logging/addon.d.ts +1 -1
- package/dist/logging/addon.js +13 -13
- package/dist/logging/base-logger.d.ts +2 -2
- package/dist/logging/base-logger.js +6 -6
- package/dist/logging/client-logger.d.ts +1 -1
- package/dist/logging/client-logger.js +3 -3
- package/dist/logging/index.d.ts +9 -9
- package/dist/logging/index.js +8 -8
- package/dist/logging/logger.d.ts +1 -1
- package/dist/logging/logger.js +4 -4
- package/dist/logging/namespaces.d.ts +1 -1
- package/dist/logging/namespaces.js +5 -5
- package/dist/logging/registry.d.ts +2 -2
- package/dist/logging/registry.js +3 -3
- package/dist/logging/server-logger.d.ts +1 -1
- package/dist/logging/server-logger.js +2 -2
- package/dist/logging/stream-logger.d.ts +1 -1
- package/dist/logging/stream-logger.js +4 -4
- package/dist/logging/transport.d.ts +1 -1
- package/dist/logging/types.d.ts +1 -1
- package/dist/logging/utils.d.ts +2 -2
- package/dist/logging/utils.js +40 -41
- package/dist/models/registry/index.d.ts +1 -1
- package/dist/models/registry/index.js +5 -5
- package/dist/models/registry/models.d.ts +429 -122
- package/dist/models/registry/models.js +13693 -13369
- package/dist/models/update-models/codegen.d.ts +1 -1
- package/dist/models/update-models/codegen.js +8 -8
- package/dist/models/update-models/companions.d.ts +6 -1
- package/dist/models/update-models/companions.js +104 -39
- package/dist/models/update-models/history.d.ts +1 -1
- package/dist/models/update-models/history.js +11 -11
- package/dist/models/update-models/index.js +32 -34
- package/dist/models/update-models/naming.d.ts +2 -2
- package/dist/models/update-models/naming.js +177 -186
- package/dist/models/update-models/processing.d.ts +2 -2
- package/dist/models/update-models/processing.js +17 -19
- package/dist/models/update-models/registry.d.ts +2 -2
- package/dist/models/update-models/registry.js +9 -9
- package/dist/models/update-models/shards.d.ts +1 -1
- package/dist/models/update-models/shards.js +3 -3
- package/dist/models/update-models/types.d.ts +1 -1
- package/dist/models/update-models/utils.js +5 -5
- package/dist/pear/pre.js +84 -84
- package/dist/profiling/aggregator.d.ts +1 -1
- package/dist/profiling/aggregator.js +6 -6
- package/dist/profiling/clock.d.ts +1 -1
- package/dist/profiling/clock.js +10 -10
- package/dist/profiling/controller.d.ts +2 -2
- package/dist/profiling/controller.js +11 -12
- package/dist/profiling/envelope.d.ts +1 -1
- package/dist/profiling/envelope.js +4 -6
- package/dist/profiling/events.d.ts +2 -2
- package/dist/profiling/events.js +8 -10
- package/dist/profiling/exporters.d.ts +1 -1
- package/dist/profiling/exporters.js +81 -79
- package/dist/profiling/index.d.ts +8 -8
- package/dist/profiling/index.js +7 -7
- package/dist/profiling/model-execution.js +2 -1
- package/dist/profiling/ring-buffer.js +2 -2
- package/dist/profiling/types.d.ts +3 -3
- package/dist/schemas/archive.d.ts +1 -1
- package/dist/schemas/archive.js +8 -14
- package/dist/schemas/batch-completion-stream.d.ts +463 -0
- package/dist/schemas/batch-completion-stream.js +124 -0
- package/dist/schemas/bci-config.d.ts +1 -1
- package/dist/schemas/bci-config.js +7 -7
- package/dist/schemas/bci.d.ts +3 -3
- package/dist/schemas/bci.js +25 -31
- package/dist/schemas/cancel.d.ts +6 -1
- package/dist/schemas/cancel.js +33 -34
- package/dist/schemas/classification.d.ts +1 -1
- package/dist/schemas/classification.js +7 -7
- package/dist/schemas/common.d.ts +194 -25
- package/dist/schemas/common.js +40 -37
- package/dist/schemas/completion-event.d.ts +11 -8
- package/dist/schemas/completion-event.js +27 -26
- package/dist/schemas/completion-stream.d.ts +4 -3
- package/dist/schemas/completion-stream.js +51 -67
- package/dist/schemas/delegate.d.ts +1 -1
- package/dist/schemas/delegate.js +7 -7
- package/dist/schemas/delete-cache.d.ts +1 -1
- package/dist/schemas/delete-cache.js +8 -8
- package/dist/schemas/download-asset.d.ts +2 -2
- package/dist/schemas/download-asset.js +21 -21
- package/dist/schemas/embed.d.ts +3 -3
- package/dist/schemas/embed.js +16 -27
- package/dist/schemas/engine-addon-map.d.ts +2 -2
- package/dist/schemas/engine-addon-map.js +24 -24
- package/dist/schemas/error.d.ts +1 -1
- package/dist/schemas/error.js +12 -13
- package/dist/schemas/finetune.d.ts +1 -1
- package/dist/schemas/finetune.js +35 -41
- package/dist/schemas/get-loaded-model-info.d.ts +1 -1
- package/dist/schemas/get-loaded-model-info.js +10 -10
- package/dist/schemas/get-model-info.d.ts +1 -1
- package/dist/schemas/get-model-info.js +48 -91
- package/dist/schemas/heartbeat.d.ts +1 -1
- package/dist/schemas/heartbeat.js +6 -6
- package/dist/schemas/index.d.ts +52 -51
- package/dist/schemas/index.js +52 -51
- package/dist/schemas/json-schema.d.ts +1 -1
- package/dist/schemas/llamacpp-config.d.ts +33 -25
- package/dist/schemas/llamacpp-config.js +43 -30
- package/dist/schemas/load-model.d.ts +160 -128
- package/dist/schemas/load-model.js +120 -126
- package/dist/schemas/logging-stream.d.ts +1 -1
- package/dist/schemas/logging-stream.js +6 -12
- package/dist/schemas/mcp-adapter.d.ts +1 -1
- package/dist/schemas/model-src-utils.d.ts +1 -1
- package/dist/schemas/model-src-utils.js +13 -13
- package/dist/schemas/model-types.d.ts +1 -1
- package/dist/schemas/model-types.js +27 -27
- package/dist/schemas/ocr.d.ts +1 -1
- package/dist/schemas/ocr.js +18 -18
- package/dist/schemas/path-validation.d.ts +1 -1
- package/dist/schemas/path-validation.js +4 -4
- package/dist/schemas/plugin.d.ts +9 -10
- package/dist/schemas/plugin.js +47 -47
- package/dist/schemas/profiling.d.ts +1 -1
- package/dist/schemas/profiling.js +16 -16
- package/dist/schemas/provide.d.ts +1 -1
- package/dist/schemas/provide.js +8 -8
- package/dist/schemas/rag.d.ts +3 -3
- package/dist/schemas/rag.js +65 -70
- package/dist/schemas/registry.d.ts +1 -1
- package/dist/schemas/registry.js +44 -66
- package/dist/schemas/reload-config.d.ts +1 -1
- package/dist/schemas/reload-config.js +14 -18
- package/dist/schemas/resume.d.ts +1 -1
- package/dist/schemas/resume.js +3 -3
- package/dist/schemas/runtime-context.d.ts +1 -1
- package/dist/schemas/runtime-context.js +4 -4
- package/dist/schemas/sdcpp-config.d.ts +9 -9
- package/dist/schemas/sdcpp-config.js +298 -300
- package/dist/schemas/sdk-config.d.ts +55 -43
- package/dist/schemas/sdk-config.js +25 -29
- package/dist/schemas/sdk-errors-client.d.ts +1 -1
- package/dist/schemas/sdk-errors-client.js +80 -80
- package/dist/schemas/sdk-errors-registry.js +1 -1
- package/dist/schemas/sdk-errors-server.d.ts +1 -1
- package/dist/schemas/sdk-errors-server.js +200 -199
- package/dist/schemas/shard.d.ts +1 -1
- package/dist/schemas/shard.js +4 -4
- package/dist/schemas/state.d.ts +1 -1
- package/dist/schemas/state.js +5 -10
- package/dist/schemas/stop-provide.d.ts +1 -1
- package/dist/schemas/stop-provide.js +4 -4
- package/dist/schemas/suspend.d.ts +1 -1
- package/dist/schemas/suspend.js +3 -3
- package/dist/schemas/text-to-speech.d.ts +455 -3
- package/dist/schemas/text-to-speech.js +146 -110
- package/dist/schemas/tools.d.ts +1 -1
- package/dist/schemas/tools.js +17 -24
- package/dist/schemas/transcription-config.d.ts +1 -1
- package/dist/schemas/transcription-config.js +18 -18
- package/dist/schemas/transcription.d.ts +5 -5
- package/dist/schemas/transcription.js +31 -33
- package/dist/schemas/translate.d.ts +3 -3
- package/dist/schemas/translate.js +38 -67
- package/dist/schemas/translation-config.d.ts +1 -1
- package/dist/schemas/translation-config.js +116 -123
- package/dist/schemas/unload-model.d.ts +1 -1
- package/dist/schemas/unload-model.js +6 -6
- package/dist/schemas/vla.d.ts +1 -1
- package/dist/schemas/vla.js +30 -30
- package/dist/scripts/run-security-tests.js +9 -10
- package/dist/scripts/run-unit-tests.js +11 -12
- package/dist/server/bare/delegate-connect-diagnostics.js +13 -19
- package/dist/server/bare/delegate-rpc-client.d.ts +2 -2
- package/dist/server/bare/delegate-rpc-client.js +32 -34
- package/dist/server/bare/hyperswarm.d.ts +3 -3
- package/dist/server/bare/hyperswarm.js +14 -14
- package/dist/server/bare/ops/bci-transcribe.d.ts +1 -1
- package/dist/server/bare/ops/bci-transcribe.js +44 -44
- package/dist/server/bare/ops/cancel.d.ts +2 -2
- package/dist/server/bare/ops/cancel.js +6 -6
- package/dist/server/bare/ops/embed.d.ts +1 -1
- package/dist/server/bare/ops/embed.js +26 -16
- package/dist/server/bare/ops/kv-cache-utils.d.ts +1 -1
- package/dist/server/bare/ops/kv-cache-utils.js +17 -19
- package/dist/server/bare/ops/load-model.d.ts +2 -2
- package/dist/server/bare/ops/load-model.js +14 -18
- package/dist/server/bare/ops/transcribe.d.ts +3 -3
- package/dist/server/bare/ops/transcribe.js +62 -62
- package/dist/server/bare/ops/translate.d.ts +1 -1
- package/dist/server/bare/ops/translate.js +39 -30
- package/dist/server/bare/ops/unload-model.d.ts +1 -1
- package/dist/server/bare/ops/unload-model.js +12 -12
- package/dist/server/bare/plugins/bci-whispercpp-transcription/args.d.ts +2 -2
- package/dist/server/bare/plugins/bci-whispercpp-transcription/args.js +3 -3
- package/dist/server/bare/plugins/bci-whispercpp-transcription/plugin.d.ts +2 -2
- package/dist/server/bare/plugins/bci-whispercpp-transcription/plugin.js +33 -33
- package/dist/server/bare/plugins/bci-whispercpp-transcription/resolve-config.d.ts +1 -1
- package/dist/server/bare/plugins/bci-whispercpp-transcription/resolve-config.js +1 -1
- package/dist/server/bare/plugins/ggml-classification/ops/classify.d.ts +1 -1
- package/dist/server/bare/plugins/ggml-classification/ops/classify.js +8 -8
- package/dist/server/bare/plugins/ggml-classification/plugin.d.ts +1 -1
- package/dist/server/bare/plugins/ggml-classification/plugin.js +14 -14
- package/dist/server/bare/plugins/ggml-ocr/ops/ocr-stream.d.ts +1 -1
- package/dist/server/bare/plugins/ggml-ocr/ops/ocr-stream.js +27 -26
- package/dist/server/bare/plugins/ggml-ocr/plugin.d.ts +1 -1
- package/dist/server/bare/plugins/ggml-ocr/plugin.js +38 -38
- package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.d.ts +1 -1
- package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.js +3 -3
- package/dist/server/bare/plugins/ggml-vla/ops/vla-run.d.ts +1 -1
- package/dist/server/bare/plugins/ggml-vla/ops/vla-run.js +23 -23
- package/dist/server/bare/plugins/ggml-vla/plugin.d.ts +1 -1
- package/dist/server/bare/plugins/ggml-vla/plugin.js +15 -15
- package/dist/server/bare/plugins/index.d.ts +11 -11
- package/dist/server/bare/plugins/index.js +11 -11
- package/dist/server/bare/plugins/llamacpp-completion/ops/batch-cancelled.d.ts +23 -0
- package/dist/server/bare/plugins/llamacpp-completion/ops/batch-cancelled.js +30 -0
- package/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.d.ts +32 -0
- package/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.js +99 -0
- package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.d.ts +1 -1
- package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js +8 -8
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.d.ts +3 -2
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.js +4 -1
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.d.ts +22 -4
- package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js +55 -59
- package/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.js +5 -5
- package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.d.ts +2 -2
- package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js +34 -34
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.d.ts +7 -7
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js +19 -23
- package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js +4 -6
- package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +186 -17
- package/dist/server/bare/plugins/llamacpp-completion/plugin.js +235 -70
- package/dist/server/bare/plugins/llamacpp-completion/transform.d.ts +1 -1
- package/dist/server/bare/plugins/llamacpp-completion/transform.js +15 -15
- package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +3 -3
- package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +27 -29
- package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +1 -1
- package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +38 -39
- package/dist/server/bare/plugins/nmtcpp-translation/resolve-vocab.d.ts +1 -1
- package/dist/server/bare/plugins/nmtcpp-translation/resolve-vocab.js +19 -22
- package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +1 -1
- package/dist/server/bare/plugins/parakeet-transcription/plugin.js +36 -36
- package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.d.ts +1 -1
- package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.js +15 -17
- package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.d.ts +1 -1
- package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.js +11 -11
- package/dist/server/bare/plugins/sdcpp-generation/ops/video.d.ts +1 -1
- package/dist/server/bare/plugins/sdcpp-generation/ops/video.js +42 -44
- package/dist/server/bare/plugins/sdcpp-generation/plugin.d.ts +4 -4
- package/dist/server/bare/plugins/sdcpp-generation/plugin.js +69 -63
- package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech-stream.d.ts +2 -2
- package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech-stream.js +19 -21
- package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech.d.ts +2 -2
- package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech.js +22 -24
- package/dist/server/bare/plugins/tts-ggml/plugin.d.ts +3 -2
- package/dist/server/bare/plugins/tts-ggml/plugin.js +95 -49
- package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +1 -1
- package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +52 -52
- package/dist/server/bare/rag-hyperdb/handlers/chunk.d.ts +1 -1
- package/dist/server/bare/rag-hyperdb/handlers/chunk.js +2 -2
- package/dist/server/bare/rag-hyperdb/handlers/close-workspace.d.ts +1 -1
- package/dist/server/bare/rag-hyperdb/handlers/close-workspace.js +2 -2
- package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.d.ts +1 -1
- package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js +4 -4
- package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.d.ts +1 -1
- package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js +3 -3
- package/dist/server/bare/rag-hyperdb/handlers/ingest.d.ts +2 -2
- package/dist/server/bare/rag-hyperdb/handlers/ingest.js +4 -4
- package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.d.ts +1 -1
- package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js +1 -1
- package/dist/server/bare/rag-hyperdb/handlers/reindex.d.ts +2 -2
- package/dist/server/bare/rag-hyperdb/handlers/reindex.js +5 -5
- package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.d.ts +2 -2
- package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js +3 -3
- package/dist/server/bare/rag-hyperdb/handlers/search.d.ts +1 -1
- package/dist/server/bare/rag-hyperdb/handlers/search.js +3 -3
- package/dist/server/bare/rag-hyperdb/index.d.ts +11 -11
- package/dist/server/bare/rag-hyperdb/index.js +11 -11
- package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +3 -3
- package/dist/server/bare/rag-hyperdb/rag-workspace-manager.d.ts +1 -1
- package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +20 -20
- package/dist/server/bare/registry/config-registry.d.ts +1 -1
- package/dist/server/bare/registry/config-registry.js +13 -16
- package/dist/server/bare/registry/logging-stream-registry.d.ts +1 -1
- package/dist/server/bare/registry/logging-stream-registry.js +2 -2
- package/dist/server/bare/registry/model-config-registry.d.ts +2 -2
- package/dist/server/bare/registry/model-config-registry.js +6 -6
- package/dist/server/bare/registry/model-config-utils.d.ts +2 -2
- package/dist/server/bare/registry/model-config-utils.js +35 -35
- package/dist/server/bare/registry/model-registry.d.ts +3 -3
- package/dist/server/bare/registry/model-registry.js +11 -11
- package/dist/server/bare/registry/registry-client.d.ts +1 -1
- package/dist/server/bare/registry/registry-client.js +18 -18
- package/dist/server/bare/registry/runtime-context-registry.d.ts +1 -1
- package/dist/server/bare/registry/runtime-context-registry.js +3 -3
- package/dist/server/bare/runtime/disposable-scope.js +3 -3
- package/dist/server/bare/runtime/index.d.ts +7 -7
- package/dist/server/bare/runtime/index.js +3 -3
- package/dist/server/bare/runtime/request-context.d.ts +4 -4
- package/dist/server/bare/runtime/request-id.js +1 -1
- package/dist/server/bare/runtime/request-registry-singleton.d.ts +1 -1
- package/dist/server/bare/runtime/request-registry-singleton.js +23 -4
- package/dist/server/bare/runtime/request-registry.d.ts +27 -12
- package/dist/server/bare/runtime/request-registry.js +39 -34
- package/dist/server/bare/runtime/with-request-context.d.ts +1 -1
- package/dist/server/bare/runtime/with-request-context.js +11 -11
- package/dist/server/bare/runtime-lifecycle.d.ts +1 -1
- package/dist/server/bare/runtime-lifecycle.js +27 -31
- package/dist/server/bare/types/addon-responses.d.ts +5 -4
- package/dist/server/bare/utils/audio-input.d.ts +2 -2
- package/dist/server/bare/utils/audio-input.js +7 -7
- package/dist/server/bare/utils/transcribe-metadata.d.ts +1 -1
- package/dist/server/bare/utils/transcribe-metadata.js +4 -4
- package/dist/server/bare/utils/tts-stats.d.ts +1 -1
- package/dist/server/bare/utils/tts-stats.js +3 -3
- package/dist/server/env.js +8 -8
- package/dist/server/error-handlers.d.ts +3 -3
- package/dist/server/error-handlers.js +11 -11
- 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 -1
- package/dist/server/plugins/registry.js +12 -14
- package/dist/server/rpc/create-server.d.ts +1 -1
- package/dist/server/rpc/create-server.js +11 -12
- package/dist/server/rpc/delegate-transport.d.ts +3 -3
- package/dist/server/rpc/delegate-transport.js +43 -44
- package/dist/server/rpc/handle-request.d.ts +1 -1
- package/dist/server/rpc/handle-request.js +28 -30
- package/dist/server/rpc/handler-registry.d.ts +1 -1
- package/dist/server/rpc/handler-registry.js +97 -92
- package/dist/server/rpc/handler-selection.d.ts +3 -3
- package/dist/server/rpc/handler-selection.js +3 -3
- package/dist/server/rpc/handler-utils.d.ts +7 -7
- package/dist/server/rpc/handler-utils.js +32 -35
- package/dist/server/rpc/handlers/batch-completion-stream.d.ts +78 -0
- package/dist/server/rpc/handlers/batch-completion-stream.js +4 -0
- package/dist/server/rpc/handlers/bci-transcribe-stream.d.ts +1 -1
- package/dist/server/rpc/handlers/bci-transcribe-stream.js +2 -2
- package/dist/server/rpc/handlers/bci-transcribe.d.ts +1 -1
- package/dist/server/rpc/handlers/bci-transcribe.js +2 -2
- package/dist/server/rpc/handlers/cancel-delegated.d.ts +2 -2
- package/dist/server/rpc/handlers/cancel-delegated.js +13 -13
- package/dist/server/rpc/handlers/cancelHandler.d.ts +1 -1
- package/dist/server/rpc/handlers/cancelHandler.js +11 -11
- package/dist/server/rpc/handlers/classify.d.ts +1 -1
- package/dist/server/rpc/handlers/classify.js +2 -2
- package/dist/server/rpc/handlers/completion-stream-delegated.d.ts +2 -2
- package/dist/server/rpc/handlers/completion-stream-delegated.js +14 -14
- package/dist/server/rpc/handlers/completion-stream.d.ts +1 -1
- package/dist/server/rpc/handlers/completion-stream.js +2 -2
- package/dist/server/rpc/handlers/delete-cache.d.ts +1 -1
- package/dist/server/rpc/handlers/delete-cache.js +10 -10
- package/dist/server/rpc/handlers/diffusion-stream.d.ts +1 -1
- package/dist/server/rpc/handlers/diffusion-stream.js +2 -2
- package/dist/server/rpc/handlers/download-asset.d.ts +1 -1
- package/dist/server/rpc/handlers/download-asset.js +20 -20
- package/dist/server/rpc/handlers/embed.d.ts +1 -1
- package/dist/server/rpc/handlers/embed.js +2 -2
- package/dist/server/rpc/handlers/finetune.d.ts +1 -1
- package/dist/server/rpc/handlers/finetune.js +8 -6
- package/dist/server/rpc/handlers/get-loaded-model-info.d.ts +1 -1
- package/dist/server/rpc/handlers/get-loaded-model-info.js +9 -9
- package/dist/server/rpc/handlers/get-model-info.d.ts +1 -1
- package/dist/server/rpc/handlers/get-model-info.js +20 -20
- package/dist/server/rpc/handlers/heartbeat-delegated.d.ts +2 -2
- package/dist/server/rpc/handlers/heartbeat-delegated.js +7 -7
- package/dist/server/rpc/handlers/heartbeat.d.ts +1 -1
- package/dist/server/rpc/handlers/heartbeat.js +1 -1
- package/dist/server/rpc/handlers/index.d.ts +33 -31
- package/dist/server/rpc/handlers/index.js +34 -32
- package/dist/server/rpc/handlers/load-model/download-manager.d.ts +4 -4
- package/dist/server/rpc/handlers/load-model/download-manager.js +19 -17
- package/dist/server/rpc/handlers/load-model/download-stats.d.ts +4 -3
- package/dist/server/rpc/handlers/load-model/download-stats.js +9 -11
- package/dist/server/rpc/handlers/load-model/handler.d.ts +1 -1
- package/dist/server/rpc/handlers/load-model/handler.js +42 -43
- package/dist/server/rpc/handlers/load-model/http.d.ts +2 -2
- package/dist/server/rpc/handlers/load-model/http.js +100 -107
- package/dist/server/rpc/handlers/load-model/hyperdrive.d.ts +2 -2
- package/dist/server/rpc/handlers/load-model/hyperdrive.js +72 -74
- 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/registry-client-options.d.ts +2 -2
- package/dist/server/rpc/handlers/load-model/registry-client-options.js +2 -3
- package/dist/server/rpc/handlers/load-model/registry-companion-set.d.ts +5 -5
- package/dist/server/rpc/handlers/load-model/registry-companion-set.js +19 -21
- package/dist/server/rpc/handlers/load-model/registry-download-utils.d.ts +6 -6
- package/dist/server/rpc/handlers/load-model/registry-download-utils.js +16 -18
- package/dist/server/rpc/handlers/load-model/registry-metadata.d.ts +11 -0
- package/dist/server/rpc/handlers/load-model/registry-metadata.js +23 -0
- package/dist/server/rpc/handlers/load-model/registry.d.ts +4 -3
- package/dist/server/rpc/handlers/load-model/registry.js +50 -56
- package/dist/server/rpc/handlers/load-model/resolve-session.d.ts +3 -3
- package/dist/server/rpc/handlers/load-model/resolve-session.js +7 -7
- package/dist/server/rpc/handlers/load-model/resolve.d.ts +3 -3
- package/dist/server/rpc/handlers/load-model/resolve.js +36 -35
- package/dist/server/rpc/handlers/load-model/types.d.ts +3 -3
- package/dist/server/rpc/handlers/load-model/types.js +7 -7
- package/dist/server/rpc/handlers/load-model-delegated.d.ts +2 -2
- package/dist/server/rpc/handlers/load-model-delegated.js +31 -30
- package/dist/server/rpc/handlers/logging-stream.d.ts +1 -1
- package/dist/server/rpc/handlers/logging-stream.js +3 -3
- package/dist/server/rpc/handlers/ocr-stream.d.ts +1 -1
- package/dist/server/rpc/handlers/ocr-stream.js +2 -2
- package/dist/server/rpc/handlers/plugin-dispatch.js +9 -9
- package/dist/server/rpc/handlers/plugin-invoke.d.ts +1 -1
- package/dist/server/rpc/handlers/plugin-invoke.js +16 -16
- package/dist/server/rpc/handlers/provideHandler/connection.d.ts +1 -1
- package/dist/server/rpc/handlers/provideHandler/connection.js +16 -16
- package/dist/server/rpc/handlers/provideHandler/handler.d.ts +1 -1
- package/dist/server/rpc/handlers/provideHandler/handler.js +18 -18
- package/dist/server/rpc/handlers/provideHandler/proxy.d.ts +1 -1
- package/dist/server/rpc/handlers/provideHandler/proxy.js +11 -11
- package/dist/server/rpc/handlers/provideHandler.d.ts +1 -1
- package/dist/server/rpc/handlers/provideHandler.js +1 -1
- package/dist/server/rpc/handlers/rag.d.ts +1 -1
- package/dist/server/rpc/handlers/rag.js +50 -50
- package/dist/server/rpc/handlers/registry.d.ts +1 -1
- package/dist/server/rpc/handlers/registry.js +34 -36
- package/dist/server/rpc/handlers/resume.d.ts +1 -1
- package/dist/server/rpc/handlers/resume.js +3 -3
- package/dist/server/rpc/handlers/state.d.ts +1 -1
- package/dist/server/rpc/handlers/state.js +3 -3
- package/dist/server/rpc/handlers/stopProvideHandler.d.ts +1 -1
- package/dist/server/rpc/handlers/stopProvideHandler.js +7 -7
- package/dist/server/rpc/handlers/suspend.d.ts +1 -1
- package/dist/server/rpc/handlers/suspend.js +3 -3
- package/dist/server/rpc/handlers/text-to-speech-stream.d.ts +1 -1
- package/dist/server/rpc/handlers/text-to-speech-stream.js +2 -2
- package/dist/server/rpc/handlers/text-to-speech.d.ts +1 -1
- package/dist/server/rpc/handlers/text-to-speech.js +2 -2
- package/dist/server/rpc/handlers/transcribe-stream.d.ts +1 -1
- package/dist/server/rpc/handlers/transcribe-stream.js +2 -2
- package/dist/server/rpc/handlers/transcribe.d.ts +1 -1
- package/dist/server/rpc/handlers/transcribe.js +2 -2
- package/dist/server/rpc/handlers/translate.d.ts +1 -1
- package/dist/server/rpc/handlers/translate.js +2 -2
- package/dist/server/rpc/handlers/unload-model-delegated.d.ts +1 -1
- package/dist/server/rpc/handlers/unload-model-delegated.js +10 -10
- package/dist/server/rpc/handlers/unload-model.d.ts +1 -1
- package/dist/server/rpc/handlers/unload-model.js +10 -10
- package/dist/server/rpc/handlers/upscale-stream.d.ts +1 -1
- package/dist/server/rpc/handlers/upscale-stream.js +2 -2
- package/dist/server/rpc/handlers/video-stream.d.ts +1 -1
- package/dist/server/rpc/handlers/video-stream.js +2 -2
- package/dist/server/rpc/index.d.ts +2 -2
- package/dist/server/rpc/index.js +2 -2
- package/dist/server/rpc/profiling/context.d.ts +1 -1
- package/dist/server/rpc/profiling/context.js +9 -10
- package/dist/server/rpc/profiling/delegation-profiler.d.ts +2 -2
- package/dist/server/rpc/profiling/delegation-profiler.js +23 -24
- package/dist/server/rpc/profiling/index.d.ts +4 -4
- package/dist/server/rpc/profiling/index.js +4 -4
- package/dist/server/rpc/profiling/operation-metrics.d.ts +2 -2
- package/dist/server/rpc/profiling/operation-metrics.js +102 -102
- package/dist/server/rpc/profiling/operation-wrappers.d.ts +1 -1
- package/dist/server/rpc/profiling/operation-wrappers.js +16 -14
- package/dist/server/rpc/profiling/profiler.d.ts +2 -2
- package/dist/server/rpc/profiling/profiler.js +9 -13
- package/dist/server/rpc/rpc-utils.js +1 -4
- package/dist/server/rpc/transport-selector.d.ts +1 -1
- package/dist/server/rpc/transport-selector.js +4 -4
- package/dist/server/utils/archive.js +27 -29
- package/dist/server/utils/audio/decoder.d.ts +2 -2
- package/dist/server/utils/audio/decoder.js +11 -11
- package/dist/server/utils/cache/auto-history.d.ts +1 -1
- package/dist/server/utils/cache/auto-history.js +5 -5
- package/dist/server/utils/cache/paths.d.ts +2 -2
- package/dist/server/utils/cache/paths.js +14 -14
- package/dist/server/utils/checksum.d.ts +1 -1
- package/dist/server/utils/checksum.js +10 -12
- package/dist/server/utils/clear-storage.d.ts +1 -1
- package/dist/server/utils/clear-storage.js +8 -11
- package/dist/server/utils/completion-normalizer.d.ts +1 -1
- package/dist/server/utils/completion-normalizer.js +106 -113
- package/dist/server/utils/config-transform.d.ts +1 -1
- package/dist/server/utils/config-transform.js +2 -2
- package/dist/server/utils/expand-gguf-shards.js +4 -4
- package/dist/server/utils/formatting.js +6 -12
- package/dist/server/utils/gguf-tensor-extractor.js +17 -21
- package/dist/server/utils/index.d.ts +11 -11
- package/dist/server/utils/index.js +11 -11
- package/dist/server/utils/multi-gpu-mobile.js +1 -1
- package/dist/server/utils/path-security.d.ts +1 -1
- package/dist/server/utils/path-security.js +6 -6
- package/dist/server/utils/qvac-paths.js +3 -3
- package/dist/server/utils/response-format.d.ts +1 -1
- package/dist/server/utils/response-format.js +4 -4
- package/dist/server/utils/shard-utils.d.ts +1 -1
- package/dist/server/utils/shard-utils.js +14 -16
- package/dist/server/utils/tool-integration.d.ts +1 -1
- package/dist/server/utils/tool-integration.js +5 -9
- package/dist/server/utils/tools/dialect.d.ts +1 -1
- package/dist/server/utils/tools/dialect.js +7 -7
- package/dist/server/utils/tools/index.d.ts +2 -2
- package/dist/server/utils/tools/index.js +2 -2
- package/dist/server/utils/tools/parser.d.ts +1 -1
- package/dist/server/utils/tools/parser.js +14 -14
- package/dist/server/utils/tools/parsers/gemma4native.d.ts +2 -2
- package/dist/server/utils/tools/parsers/gemma4native.js +13 -8
- package/dist/server/utils/tools/parsers/harmony.d.ts +2 -2
- package/dist/server/utils/tools/parsers/harmony.js +9 -11
- package/dist/server/utils/tools/parsers/hermes.d.ts +2 -2
- package/dist/server/utils/tools/parsers/hermes.js +16 -16
- package/dist/server/utils/tools/parsers/json.d.ts +2 -2
- package/dist/server/utils/tools/parsers/json.js +14 -14
- package/dist/server/utils/tools/parsers/pythonic.d.ts +2 -2
- package/dist/server/utils/tools/parsers/pythonic.js +43 -43
- package/dist/server/utils/tools/parsers/qwen35.d.ts +2 -2
- package/dist/server/utils/tools/parsers/qwen35.js +20 -20
- package/dist/server/utils/tools/shared.d.ts +1 -1
- package/dist/server/utils/tools/shared.js +10 -12
- package/dist/server/utils/worker-lock.js +10 -10
- package/dist/server/worker-core.d.ts +1 -1
- package/dist/server/worker-core.js +44 -43
- package/dist/server/worker.js +9 -9
- package/dist/utils/aggregate-events.d.ts +2 -2
- package/dist/utils/aggregate-events.js +17 -19
- package/dist/utils/cache-normalize.js +1 -4
- package/dist/utils/encoding.js +1 -1
- package/dist/utils/errors-base.d.ts +1 -1
- package/dist/utils/errors-base.js +1 -1
- package/dist/utils/errors-client.d.ts +1 -1
- package/dist/utils/errors-client.js +5 -5
- package/dist/utils/errors-server.d.ts +3 -3
- package/dist/utils/errors-server.js +19 -18
- package/dist/utils/load-model-validation.js +3 -3
- package/dist/utils/mcp-adapter.d.ts +4 -4
- package/dist/utils/mcp-adapter.js +31 -38
- package/dist/utils/path-sanitize.js +14 -17
- package/dist/utils/tool-helpers.d.ts +2 -2
- package/dist/utils/tool-helpers.js +25 -26
- package/dist/utils/withTimeout.d.ts +7 -0
- package/dist/utils/withTimeout.js +11 -1
- package/dist/utils/zod-error.d.ts +1 -1
- package/dist/utils/zod-error.js +1 -1
- package/electron-forge/index.cjs +274 -317
- package/expo/plugins/patches/android-link.mjs +25 -30
- package/expo/plugins/patches/ios-link.mjs +25 -30
- package/package.json +17 -16
package/electron-forge/index.cjs
CHANGED
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
* prebuilds are arch-specific. Build darwin-arm64 and darwin-x64 separately.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
'use strict'
|
|
13
13
|
|
|
14
|
-
const { PluginBase } = require(
|
|
15
|
-
const { createRequire } = require(
|
|
16
|
-
const path = require(
|
|
17
|
-
const fs = require(
|
|
14
|
+
const { PluginBase } = require('@electron-forge/plugin-base')
|
|
15
|
+
const { createRequire } = require('module')
|
|
16
|
+
const path = require('path')
|
|
17
|
+
const fs = require('fs')
|
|
18
18
|
|
|
19
19
|
// ============================================
|
|
20
20
|
// Errors
|
|
@@ -26,9 +26,9 @@ const fs = require("fs");
|
|
|
26
26
|
*/
|
|
27
27
|
class QvacForgePluginError extends Error {
|
|
28
28
|
constructor(message) {
|
|
29
|
-
super(message)
|
|
30
|
-
this.name =
|
|
31
|
-
this.stack = `${this.name}: ${this.message}
|
|
29
|
+
super(message)
|
|
30
|
+
this.name = 'QvacForgePluginError'
|
|
31
|
+
this.stack = `${this.name}: ${this.message}`
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -36,84 +36,79 @@ class QvacForgePluginError extends Error {
|
|
|
36
36
|
// Logger
|
|
37
37
|
// ============================================
|
|
38
38
|
|
|
39
|
-
const PREFIX =
|
|
39
|
+
const PREFIX = '[qvac:electron-forge]'
|
|
40
40
|
|
|
41
|
-
const EXPECTED_FS_ERROR_CODES = new Set([
|
|
42
|
-
"ENOENT",
|
|
43
|
-
"EACCES",
|
|
44
|
-
"EPERM",
|
|
45
|
-
"ENOTDIR",
|
|
46
|
-
]);
|
|
41
|
+
const EXPECTED_FS_ERROR_CODES = new Set(['ENOENT', 'EACCES', 'EPERM', 'ENOTDIR'])
|
|
47
42
|
|
|
48
43
|
const LOG_LEVELS = {
|
|
49
44
|
off: 0,
|
|
50
45
|
error: 1,
|
|
51
46
|
warn: 2,
|
|
52
47
|
info: 3,
|
|
53
|
-
debug: 4
|
|
54
|
-
}
|
|
48
|
+
debug: 4
|
|
49
|
+
}
|
|
55
50
|
|
|
56
51
|
function getDefaultLevel() {
|
|
57
|
-
const level = process.env.QVAC_LOG_LEVEL?.toLowerCase()
|
|
58
|
-
return level && level in LOG_LEVELS ? level :
|
|
52
|
+
const level = process.env.QVAC_LOG_LEVEL?.toLowerCase()
|
|
53
|
+
return level && level in LOG_LEVELS ? level : 'info'
|
|
59
54
|
}
|
|
60
55
|
|
|
61
|
-
let currentLevel = LOG_LEVELS[getDefaultLevel()]
|
|
56
|
+
let currentLevel = LOG_LEVELS[getDefaultLevel()]
|
|
62
57
|
|
|
63
58
|
function setLogLevel(level) {
|
|
64
59
|
if (!(level in LOG_LEVELS)) {
|
|
65
60
|
console.warn(
|
|
66
|
-
`${PREFIX} Invalid log level "${level}", using "info". Valid: ${Object.keys(LOG_LEVELS).join(
|
|
67
|
-
)
|
|
68
|
-
currentLevel = LOG_LEVELS.info
|
|
69
|
-
return
|
|
61
|
+
`${PREFIX} Invalid log level "${level}", using "info". Valid: ${Object.keys(LOG_LEVELS).join(', ')}`
|
|
62
|
+
)
|
|
63
|
+
currentLevel = LOG_LEVELS.info
|
|
64
|
+
return
|
|
70
65
|
}
|
|
71
|
-
currentLevel = LOG_LEVELS[level]
|
|
66
|
+
currentLevel = LOG_LEVELS[level]
|
|
72
67
|
}
|
|
73
68
|
|
|
74
69
|
const logger = {
|
|
75
70
|
error(msg) {
|
|
76
|
-
if (currentLevel >= LOG_LEVELS.error) console.error(PREFIX, msg)
|
|
71
|
+
if (currentLevel >= LOG_LEVELS.error) console.error(PREFIX, msg)
|
|
77
72
|
},
|
|
78
73
|
warn(msg) {
|
|
79
|
-
if (currentLevel >= LOG_LEVELS.warn) console.warn(PREFIX, msg)
|
|
74
|
+
if (currentLevel >= LOG_LEVELS.warn) console.warn(PREFIX, msg)
|
|
80
75
|
},
|
|
81
76
|
info(msg) {
|
|
82
|
-
if (currentLevel >= LOG_LEVELS.info) console.log(PREFIX, msg)
|
|
77
|
+
if (currentLevel >= LOG_LEVELS.info) console.log(PREFIX, msg)
|
|
83
78
|
},
|
|
84
79
|
debug(msg) {
|
|
85
|
-
if (currentLevel >= LOG_LEVELS.debug) console.log(PREFIX, msg)
|
|
80
|
+
if (currentLevel >= LOG_LEVELS.debug) console.log(PREFIX, msg)
|
|
86
81
|
},
|
|
87
82
|
fsError(context, err) {
|
|
88
|
-
if (err && EXPECTED_FS_ERROR_CODES.has(err.code)) return
|
|
89
|
-
this.warn(`Unexpected error in ${context}: ${err?.message || err}`)
|
|
90
|
-
}
|
|
91
|
-
}
|
|
83
|
+
if (err && EXPECTED_FS_ERROR_CODES.has(err.code)) return
|
|
84
|
+
this.warn(`Unexpected error in ${context}: ${err?.message || err}`)
|
|
85
|
+
}
|
|
86
|
+
}
|
|
92
87
|
|
|
93
88
|
// ============================================
|
|
94
89
|
// SDK Package Resolution (for addon discovery)
|
|
95
90
|
// ============================================
|
|
96
91
|
|
|
97
|
-
const SDK_PACKAGE_NAMES = [
|
|
92
|
+
const SDK_PACKAGE_NAMES = ['@qvac/sdk']
|
|
98
93
|
|
|
99
94
|
function resolveSDKPackage(startDir) {
|
|
100
95
|
for (const name of SDK_PACKAGE_NAMES) {
|
|
101
96
|
try {
|
|
102
|
-
const pkgPath = require.resolve(`${name}/package`, { paths: [startDir] })
|
|
103
|
-
return { name, path: pkgPath }
|
|
97
|
+
const pkgPath = require.resolve(`${name}/package`, { paths: [startDir] })
|
|
98
|
+
return { name, path: pkgPath }
|
|
104
99
|
} catch {
|
|
105
100
|
// Try next package name
|
|
106
101
|
}
|
|
107
102
|
}
|
|
108
|
-
return null
|
|
103
|
+
return null
|
|
109
104
|
}
|
|
110
105
|
|
|
111
106
|
function isDir(dirPath) {
|
|
112
107
|
try {
|
|
113
|
-
return fs.statSync(dirPath).isDirectory()
|
|
108
|
+
return fs.statSync(dirPath).isDirectory()
|
|
114
109
|
} catch (err) {
|
|
115
|
-
logger.fsError(
|
|
116
|
-
return false
|
|
110
|
+
logger.fsError('isDir', err)
|
|
111
|
+
return false
|
|
117
112
|
}
|
|
118
113
|
}
|
|
119
114
|
|
|
@@ -122,33 +117,32 @@ function isDir(dirPath) {
|
|
|
122
117
|
* Handles monorepos, workspaces, and hoisted layouts.
|
|
123
118
|
*/
|
|
124
119
|
function findQvacScopeDir(startDir) {
|
|
125
|
-
const sdkPkg = resolveSDKPackage(startDir)
|
|
120
|
+
const sdkPkg = resolveSDKPackage(startDir)
|
|
126
121
|
if (!sdkPkg) {
|
|
127
122
|
throw new QvacForgePluginError(
|
|
128
|
-
`Could not find QVAC SDK. ` +
|
|
129
|
-
|
|
130
|
-
);
|
|
123
|
+
`Could not find QVAC SDK. ` + `Ensure one of [${SDK_PACKAGE_NAMES.join(', ')}] is installed.`
|
|
124
|
+
)
|
|
131
125
|
}
|
|
132
126
|
|
|
133
|
-
logger.debug(`Resolved SDK package: ${sdkPkg.name}`)
|
|
127
|
+
logger.debug(`Resolved SDK package: ${sdkPkg.name}`)
|
|
134
128
|
|
|
135
|
-
const baseDir = path.resolve(startDir)
|
|
136
|
-
const req = createRequire(path.join(baseDir,
|
|
137
|
-
const nodeModulesDirs = req.resolve.paths(sdkPkg.name) || []
|
|
129
|
+
const baseDir = path.resolve(startDir)
|
|
130
|
+
const req = createRequire(path.join(baseDir, 'package.json'))
|
|
131
|
+
const nodeModulesDirs = req.resolve.paths(sdkPkg.name) || []
|
|
138
132
|
|
|
139
133
|
for (const nodeModulesDir of nodeModulesDirs) {
|
|
140
|
-
const scopeDir = path.join(nodeModulesDir,
|
|
141
|
-
if (isDir(scopeDir)) return scopeDir
|
|
134
|
+
const scopeDir = path.join(nodeModulesDir, '@qvac')
|
|
135
|
+
if (isDir(scopeDir)) return scopeDir
|
|
142
136
|
}
|
|
143
137
|
|
|
144
138
|
// Fallback: derive from SDK path for flat node_modules layouts.
|
|
145
|
-
const derived = path.dirname(path.dirname(sdkPkg.path))
|
|
146
|
-
if (path.basename(derived) ===
|
|
139
|
+
const derived = path.dirname(path.dirname(sdkPkg.path))
|
|
140
|
+
if (path.basename(derived) === '@qvac' && isDir(derived)) return derived
|
|
147
141
|
|
|
148
142
|
throw new QvacForgePluginError(
|
|
149
143
|
`Could not find @qvac packages. ` +
|
|
150
|
-
`Ensure dependencies are installed under node_modules (PnP is not supported)
|
|
151
|
-
)
|
|
144
|
+
`Ensure dependencies are installed under node_modules (PnP is not supported).`
|
|
145
|
+
)
|
|
152
146
|
}
|
|
153
147
|
|
|
154
148
|
/**
|
|
@@ -156,43 +150,43 @@ function findQvacScopeDir(startDir) {
|
|
|
156
150
|
* for packages that have `addon: true` in package.json.
|
|
157
151
|
*/
|
|
158
152
|
function discoverQvacAddonPackages(projectDir) {
|
|
159
|
-
let scopeDir
|
|
153
|
+
let scopeDir
|
|
160
154
|
try {
|
|
161
|
-
scopeDir = findQvacScopeDir(projectDir)
|
|
155
|
+
scopeDir = findQvacScopeDir(projectDir)
|
|
162
156
|
} catch (err) {
|
|
163
|
-
logger.warn(err.message)
|
|
164
|
-
return []
|
|
157
|
+
logger.warn(err.message)
|
|
158
|
+
return []
|
|
165
159
|
}
|
|
166
160
|
|
|
167
|
-
let entries
|
|
161
|
+
let entries
|
|
168
162
|
try {
|
|
169
|
-
entries = fs.readdirSync(scopeDir)
|
|
163
|
+
entries = fs.readdirSync(scopeDir)
|
|
170
164
|
} catch (err) {
|
|
171
|
-
logger.fsError(
|
|
172
|
-
return []
|
|
165
|
+
logger.fsError('discoverQvacAddonPackages', err)
|
|
166
|
+
return []
|
|
173
167
|
}
|
|
174
168
|
|
|
175
|
-
const discovered = []
|
|
169
|
+
const discovered = []
|
|
176
170
|
|
|
177
171
|
for (const name of entries) {
|
|
178
|
-
const pkgDir = path.join(scopeDir, name)
|
|
179
|
-
if (!isDir(pkgDir)) continue
|
|
172
|
+
const pkgDir = path.join(scopeDir, name)
|
|
173
|
+
if (!isDir(pkgDir)) continue
|
|
180
174
|
|
|
181
|
-
const pkgJsonPath = path.join(pkgDir,
|
|
182
|
-
if (!fs.existsSync(pkgJsonPath)) continue
|
|
175
|
+
const pkgJsonPath = path.join(pkgDir, 'package.json')
|
|
176
|
+
if (!fs.existsSync(pkgJsonPath)) continue
|
|
183
177
|
|
|
184
178
|
try {
|
|
185
|
-
const pkg = JSON.parse(fs.readFileSync(pkgJsonPath,
|
|
179
|
+
const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8'))
|
|
186
180
|
if (pkg.addon === true) {
|
|
187
|
-
discovered.push(`@qvac/${name}`)
|
|
181
|
+
discovered.push(`@qvac/${name}`)
|
|
188
182
|
}
|
|
189
183
|
} catch (err) {
|
|
190
|
-
logger.warn(`Failed to parse ${pkgJsonPath}: ${err.message}`)
|
|
184
|
+
logger.warn(`Failed to parse ${pkgJsonPath}: ${err.message}`)
|
|
191
185
|
}
|
|
192
186
|
}
|
|
193
187
|
|
|
194
|
-
discovered.sort()
|
|
195
|
-
return discovered
|
|
188
|
+
discovered.sort()
|
|
189
|
+
return discovered
|
|
196
190
|
}
|
|
197
191
|
|
|
198
192
|
/**
|
|
@@ -200,12 +194,12 @@ function discoverQvacAddonPackages(projectDir) {
|
|
|
200
194
|
* Exposed for unit testing.
|
|
201
195
|
*/
|
|
202
196
|
function diffAddons(installed, required) {
|
|
203
|
-
const requiredSet = new Set(required)
|
|
204
|
-
const exclusions = []
|
|
197
|
+
const requiredSet = new Set(required)
|
|
198
|
+
const exclusions = []
|
|
205
199
|
for (const pkg of installed) {
|
|
206
|
-
if (!requiredSet.has(pkg)) exclusions.push(pkg)
|
|
200
|
+
if (!requiredSet.has(pkg)) exclusions.push(pkg)
|
|
207
201
|
}
|
|
208
|
-
return exclusions
|
|
202
|
+
return exclusions
|
|
209
203
|
}
|
|
210
204
|
|
|
211
205
|
/**
|
|
@@ -213,26 +207,24 @@ function diffAddons(installed, required) {
|
|
|
213
207
|
* Logs include/exclude decisions for each discovered package.
|
|
214
208
|
*/
|
|
215
209
|
function computeExclusions(required, projectDir) {
|
|
216
|
-
const installed = discoverQvacAddonPackages(projectDir)
|
|
210
|
+
const installed = discoverQvacAddonPackages(projectDir)
|
|
217
211
|
|
|
218
212
|
if (installed.length === 0) {
|
|
219
|
-
logger.warn(
|
|
220
|
-
|
|
221
|
-
);
|
|
222
|
-
return [];
|
|
213
|
+
logger.warn('No @qvac addon packages discovered. Skipping addon exclusions.')
|
|
214
|
+
return []
|
|
223
215
|
}
|
|
224
216
|
|
|
225
|
-
const requiredSet = new Set(required)
|
|
226
|
-
const exclusions = []
|
|
217
|
+
const requiredSet = new Set(required)
|
|
218
|
+
const exclusions = []
|
|
227
219
|
for (const pkg of installed) {
|
|
228
220
|
if (requiredSet.has(pkg)) {
|
|
229
|
-
logger.info(`Including required addon: ${pkg}`)
|
|
221
|
+
logger.info(`Including required addon: ${pkg}`)
|
|
230
222
|
} else {
|
|
231
|
-
logger.info(`Excluding unused addon: ${pkg}`)
|
|
232
|
-
exclusions.push(pkg)
|
|
223
|
+
logger.info(`Excluding unused addon: ${pkg}`)
|
|
224
|
+
exclusions.push(pkg)
|
|
233
225
|
}
|
|
234
226
|
}
|
|
235
|
-
return exclusions
|
|
227
|
+
return exclusions
|
|
236
228
|
}
|
|
237
229
|
|
|
238
230
|
// ============================================
|
|
@@ -240,34 +232,27 @@ function computeExclusions(required, projectDir) {
|
|
|
240
232
|
// ============================================
|
|
241
233
|
|
|
242
234
|
/** Mobile prebuild patterns to always exclude in desktop builds. */
|
|
243
|
-
const MOBILE_PREBUILD_PATTERNS = [
|
|
244
|
-
/[\\/]prebuilds[\\/]android-/,
|
|
245
|
-
/[\\/]prebuilds[\\/]ios-/,
|
|
246
|
-
];
|
|
235
|
+
const MOBILE_PREBUILD_PATTERNS = [/[\\/]prebuilds[\\/]android-/, /[\\/]prebuilds[\\/]ios-/]
|
|
247
236
|
|
|
248
237
|
/** Forge's default output dir — always exclude to avoid recursive packaging. */
|
|
249
|
-
const OUT_DIR_PATTERN = /^\/out
|
|
238
|
+
const OUT_DIR_PATTERN = /^\/out\//
|
|
250
239
|
|
|
251
240
|
function toArray(value) {
|
|
252
|
-
if (value === undefined) return []
|
|
253
|
-
return Array.isArray(value) ? value : [value]
|
|
241
|
+
if (value === undefined) return []
|
|
242
|
+
return Array.isArray(value) ? value : [value]
|
|
254
243
|
}
|
|
255
244
|
|
|
256
245
|
function escapeRegExp(str) {
|
|
257
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g,
|
|
246
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
|
258
247
|
}
|
|
259
248
|
|
|
260
249
|
function createAddonIgnorePatterns(exclusions) {
|
|
261
|
-
const patterns = []
|
|
250
|
+
const patterns = []
|
|
262
251
|
for (const addon of exclusions) {
|
|
263
|
-
const parts = addon.split(
|
|
264
|
-
patterns.push(
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
),
|
|
268
|
-
);
|
|
269
|
-
}
|
|
270
|
-
return patterns;
|
|
252
|
+
const parts = addon.split('/').map(escapeRegExp)
|
|
253
|
+
patterns.push(new RegExp(`[\\\\/]node_modules[\\\\/]${parts.join('[\\\\/]')}([\\\\/]|$)`))
|
|
254
|
+
}
|
|
255
|
+
return patterns
|
|
271
256
|
}
|
|
272
257
|
|
|
273
258
|
/**
|
|
@@ -276,28 +261,28 @@ function createAddonIgnorePatterns(exclusions) {
|
|
|
276
261
|
* ignore (function or regex array).
|
|
277
262
|
*/
|
|
278
263
|
function createIgnore(exclusions, existingIgnore) {
|
|
279
|
-
const addonIgnorePatterns = createAddonIgnorePatterns(exclusions)
|
|
264
|
+
const addonIgnorePatterns = createAddonIgnorePatterns(exclusions)
|
|
280
265
|
|
|
281
|
-
if (typeof existingIgnore ===
|
|
266
|
+
if (typeof existingIgnore === 'function') {
|
|
282
267
|
return (filePath) => {
|
|
283
|
-
if (existingIgnore(filePath)) return true
|
|
284
|
-
if (OUT_DIR_PATTERN.test(filePath)) return true
|
|
268
|
+
if (existingIgnore(filePath)) return true
|
|
269
|
+
if (OUT_DIR_PATTERN.test(filePath)) return true
|
|
285
270
|
for (const pattern of addonIgnorePatterns) {
|
|
286
|
-
if (pattern.test(filePath)) return true
|
|
271
|
+
if (pattern.test(filePath)) return true
|
|
287
272
|
}
|
|
288
273
|
for (const pattern of MOBILE_PREBUILD_PATTERNS) {
|
|
289
|
-
if (pattern.test(filePath)) return true
|
|
274
|
+
if (pattern.test(filePath)) return true
|
|
290
275
|
}
|
|
291
|
-
return false
|
|
292
|
-
}
|
|
276
|
+
return false
|
|
277
|
+
}
|
|
293
278
|
}
|
|
294
279
|
|
|
295
280
|
return [
|
|
296
281
|
...toArray(existingIgnore),
|
|
297
282
|
OUT_DIR_PATTERN,
|
|
298
283
|
...MOBILE_PREBUILD_PATTERNS,
|
|
299
|
-
...addonIgnorePatterns
|
|
300
|
-
]
|
|
284
|
+
...addonIgnorePatterns
|
|
285
|
+
]
|
|
301
286
|
}
|
|
302
287
|
|
|
303
288
|
// ============================================
|
|
@@ -312,112 +297,112 @@ function createIgnore(exclusions, existingIgnore) {
|
|
|
312
297
|
* cross-platform prebuilds that would otherwise ship in the packaged app.
|
|
313
298
|
*/
|
|
314
299
|
function findPrebuildsDirs(rootPath) {
|
|
315
|
-
const results = []
|
|
300
|
+
const results = []
|
|
316
301
|
|
|
317
302
|
function walk(dir) {
|
|
318
|
-
let entries
|
|
303
|
+
let entries
|
|
319
304
|
try {
|
|
320
|
-
entries = fs.readdirSync(dir, { withFileTypes: true })
|
|
305
|
+
entries = fs.readdirSync(dir, { withFileTypes: true })
|
|
321
306
|
} catch (err) {
|
|
322
|
-
logger.fsError(
|
|
323
|
-
return
|
|
307
|
+
logger.fsError('findPrebuildsDirs', err)
|
|
308
|
+
return
|
|
324
309
|
}
|
|
325
310
|
|
|
326
311
|
for (const entry of entries) {
|
|
327
|
-
if (!entry.isDirectory()) continue
|
|
328
|
-
const fullPath = path.join(dir, entry.name)
|
|
312
|
+
if (!entry.isDirectory()) continue
|
|
313
|
+
const fullPath = path.join(dir, entry.name)
|
|
329
314
|
|
|
330
|
-
if (entry.name ===
|
|
331
|
-
results.push(fullPath)
|
|
315
|
+
if (entry.name === 'prebuilds') {
|
|
316
|
+
results.push(fullPath)
|
|
332
317
|
// Don't recurse into prebuilds — its children are arch-keyed leaves.
|
|
333
|
-
continue
|
|
318
|
+
continue
|
|
334
319
|
}
|
|
335
320
|
|
|
336
|
-
walk(fullPath)
|
|
321
|
+
walk(fullPath)
|
|
337
322
|
}
|
|
338
323
|
}
|
|
339
324
|
|
|
340
|
-
walk(rootPath)
|
|
341
|
-
return results
|
|
325
|
+
walk(rootPath)
|
|
326
|
+
return results
|
|
342
327
|
}
|
|
343
328
|
|
|
344
329
|
function getDirSize(dirPath) {
|
|
345
|
-
let size = 0
|
|
330
|
+
let size = 0
|
|
346
331
|
|
|
347
332
|
function walk(dir) {
|
|
348
|
-
let entries
|
|
333
|
+
let entries
|
|
349
334
|
try {
|
|
350
|
-
entries = fs.readdirSync(dir, { withFileTypes: true })
|
|
335
|
+
entries = fs.readdirSync(dir, { withFileTypes: true })
|
|
351
336
|
} catch (err) {
|
|
352
|
-
logger.fsError(
|
|
353
|
-
return
|
|
337
|
+
logger.fsError('getDirSize', err)
|
|
338
|
+
return
|
|
354
339
|
}
|
|
355
340
|
|
|
356
341
|
for (const entry of entries) {
|
|
357
|
-
const fullPath = path.join(dir, entry.name)
|
|
342
|
+
const fullPath = path.join(dir, entry.name)
|
|
358
343
|
if (entry.isDirectory()) {
|
|
359
|
-
walk(fullPath)
|
|
344
|
+
walk(fullPath)
|
|
360
345
|
} else {
|
|
361
346
|
try {
|
|
362
|
-
size += fs.statSync(fullPath).size
|
|
347
|
+
size += fs.statSync(fullPath).size
|
|
363
348
|
} catch (err) {
|
|
364
|
-
logger.fsError(
|
|
349
|
+
logger.fsError('getDirSize.stat', err)
|
|
365
350
|
}
|
|
366
351
|
}
|
|
367
352
|
}
|
|
368
353
|
}
|
|
369
354
|
|
|
370
|
-
walk(dirPath)
|
|
371
|
-
return size
|
|
355
|
+
walk(dirPath)
|
|
356
|
+
return size
|
|
372
357
|
}
|
|
373
358
|
|
|
374
359
|
/** Prunes prebuilds for a given path, keeping only target platform-arch. */
|
|
375
360
|
function prunePrebuildsForPath(buildPath, platform, arch) {
|
|
376
|
-
const nodeModulesPath = path.join(buildPath,
|
|
361
|
+
const nodeModulesPath = path.join(buildPath, 'node_modules')
|
|
377
362
|
|
|
378
363
|
if (!fs.existsSync(nodeModulesPath)) {
|
|
379
|
-
logger.debug(
|
|
380
|
-
return { deleted: 0, bytes: 0 }
|
|
364
|
+
logger.debug('No node_modules found, skipping prebuild pruning.')
|
|
365
|
+
return { deleted: 0, bytes: 0 }
|
|
381
366
|
}
|
|
382
367
|
|
|
383
|
-
const keepPrefix = `${platform}-${arch}
|
|
384
|
-
logger.debug(`Keeping prefix: ${keepPrefix}`)
|
|
368
|
+
const keepPrefix = `${platform}-${arch}`
|
|
369
|
+
logger.debug(`Keeping prefix: ${keepPrefix}`)
|
|
385
370
|
|
|
386
|
-
const prebuildsDirs = findPrebuildsDirs(nodeModulesPath)
|
|
387
|
-
let totalDeleted = 0
|
|
388
|
-
let totalBytes = 0
|
|
371
|
+
const prebuildsDirs = findPrebuildsDirs(nodeModulesPath)
|
|
372
|
+
let totalDeleted = 0
|
|
373
|
+
let totalBytes = 0
|
|
389
374
|
|
|
390
375
|
for (const prebuildsDir of prebuildsDirs) {
|
|
391
|
-
let entries
|
|
376
|
+
let entries
|
|
392
377
|
try {
|
|
393
|
-
entries = fs.readdirSync(prebuildsDir, { withFileTypes: true })
|
|
378
|
+
entries = fs.readdirSync(prebuildsDir, { withFileTypes: true })
|
|
394
379
|
} catch (err) {
|
|
395
|
-
logger.fsError(
|
|
396
|
-
continue
|
|
380
|
+
logger.fsError('prunePrebuildsForPath', err)
|
|
381
|
+
continue
|
|
397
382
|
}
|
|
398
383
|
|
|
399
384
|
for (const entry of entries) {
|
|
400
|
-
if (!entry.isDirectory()) continue
|
|
385
|
+
if (!entry.isDirectory()) continue
|
|
401
386
|
|
|
402
387
|
// Prefix match catches musl variants etc. (e.g. linux-x64-musl).
|
|
403
|
-
const shouldKeep = entry.name.startsWith(keepPrefix)
|
|
388
|
+
const shouldKeep = entry.name.startsWith(keepPrefix)
|
|
404
389
|
|
|
405
390
|
if (!shouldKeep) {
|
|
406
|
-
const fullPath = path.join(prebuildsDir, entry.name)
|
|
391
|
+
const fullPath = path.join(prebuildsDir, entry.name)
|
|
407
392
|
try {
|
|
408
|
-
const size = getDirSize(fullPath)
|
|
409
|
-
totalBytes += size
|
|
410
|
-
fs.rmSync(fullPath, { recursive: true, force: true })
|
|
411
|
-
totalDeleted
|
|
412
|
-
logger.debug(`Deleted: ${entry.name}`)
|
|
393
|
+
const size = getDirSize(fullPath)
|
|
394
|
+
totalBytes += size
|
|
395
|
+
fs.rmSync(fullPath, { recursive: true, force: true })
|
|
396
|
+
totalDeleted++
|
|
397
|
+
logger.debug(`Deleted: ${entry.name}`)
|
|
413
398
|
} catch (err) {
|
|
414
|
-
logger.warn(`Failed to delete ${fullPath}: ${err.message}`)
|
|
399
|
+
logger.warn(`Failed to delete ${fullPath}: ${err.message}`)
|
|
415
400
|
}
|
|
416
401
|
}
|
|
417
402
|
}
|
|
418
403
|
}
|
|
419
404
|
|
|
420
|
-
return { deleted: totalDeleted, bytes: totalBytes }
|
|
405
|
+
return { deleted: totalDeleted, bytes: totalBytes }
|
|
421
406
|
}
|
|
422
407
|
|
|
423
408
|
/**
|
|
@@ -428,31 +413,31 @@ function prunePrebuildsForPath(buildPath, platform, arch) {
|
|
|
428
413
|
* the packaged tree matches the manifest exactly. Idempotent.
|
|
429
414
|
*/
|
|
430
415
|
function removeExcludedAddonDirs(buildPath, exclusions) {
|
|
431
|
-
const nodeModulesPath = path.join(buildPath,
|
|
416
|
+
const nodeModulesPath = path.join(buildPath, 'node_modules')
|
|
432
417
|
|
|
433
418
|
if (!fs.existsSync(nodeModulesPath)) {
|
|
434
|
-
return { removed: 0, bytes: 0 }
|
|
419
|
+
return { removed: 0, bytes: 0 }
|
|
435
420
|
}
|
|
436
421
|
|
|
437
|
-
let removed = 0
|
|
438
|
-
let bytes = 0
|
|
422
|
+
let removed = 0
|
|
423
|
+
let bytes = 0
|
|
439
424
|
|
|
440
425
|
for (const name of exclusions) {
|
|
441
|
-
const pkgDir = path.join(nodeModulesPath, name)
|
|
442
|
-
if (!fs.existsSync(pkgDir)) continue
|
|
426
|
+
const pkgDir = path.join(nodeModulesPath, name)
|
|
427
|
+
if (!fs.existsSync(pkgDir)) continue
|
|
443
428
|
|
|
444
429
|
try {
|
|
445
|
-
const size = getDirSize(pkgDir)
|
|
446
|
-
bytes += size
|
|
447
|
-
fs.rmSync(pkgDir, { recursive: true, force: true })
|
|
448
|
-
removed += 1
|
|
449
|
-
logger.debug(`Removed excluded addon dir: ${name}`)
|
|
430
|
+
const size = getDirSize(pkgDir)
|
|
431
|
+
bytes += size
|
|
432
|
+
fs.rmSync(pkgDir, { recursive: true, force: true })
|
|
433
|
+
removed += 1
|
|
434
|
+
logger.debug(`Removed excluded addon dir: ${name}`)
|
|
450
435
|
} catch (err) {
|
|
451
|
-
logger.warn(`Failed to remove ${pkgDir}: ${err.message}`)
|
|
436
|
+
logger.warn(`Failed to remove ${pkgDir}: ${err.message}`)
|
|
452
437
|
}
|
|
453
438
|
}
|
|
454
439
|
|
|
455
|
-
return { removed, bytes }
|
|
440
|
+
return { removed, bytes }
|
|
456
441
|
}
|
|
457
442
|
|
|
458
443
|
// ============================================
|
|
@@ -473,19 +458,19 @@ function removeExcludedAddonDirs(buildPath, exclusions) {
|
|
|
473
458
|
*/
|
|
474
459
|
async function loadSdkCommands() {
|
|
475
460
|
try {
|
|
476
|
-
return await import(
|
|
461
|
+
return await import('@qvac/sdk/commands')
|
|
477
462
|
} catch (err) {
|
|
478
463
|
throw new QvacForgePluginError(
|
|
479
464
|
`Could not load @qvac/sdk/commands: ${err?.message || err}. ` +
|
|
480
465
|
`Ensure @qvac/sdk is installed and exposes the ./commands subpath ` +
|
|
481
|
-
`(requires SDK >= 0.12.0)
|
|
482
|
-
)
|
|
466
|
+
`(requires SDK >= 0.12.0).`
|
|
467
|
+
)
|
|
483
468
|
}
|
|
484
469
|
}
|
|
485
470
|
|
|
486
471
|
/** Defaults to verifying against the host running Forge. */
|
|
487
472
|
function defaultHosts() {
|
|
488
|
-
return [`${process.platform}-${process.arch}`]
|
|
473
|
+
return [`${process.platform}-${process.arch}`]
|
|
489
474
|
}
|
|
490
475
|
|
|
491
476
|
/**
|
|
@@ -499,9 +484,7 @@ function defaultHosts() {
|
|
|
499
484
|
* @returns {string[]}
|
|
500
485
|
*/
|
|
501
486
|
function resolveHosts(explicitHosts) {
|
|
502
|
-
return Array.isArray(explicitHosts) && explicitHosts.length > 0
|
|
503
|
-
? explicitHosts
|
|
504
|
-
: defaultHosts();
|
|
487
|
+
return Array.isArray(explicitHosts) && explicitHosts.length > 0 ? explicitHosts : defaultHosts()
|
|
505
488
|
}
|
|
506
489
|
|
|
507
490
|
/**
|
|
@@ -519,38 +502,38 @@ function resolveHosts(explicitHosts) {
|
|
|
519
502
|
* @returns {string[]|null}
|
|
520
503
|
*/
|
|
521
504
|
function detectTargetHosts(forgeConfig, argv = process.argv.slice(2)) {
|
|
522
|
-
let platform = forgeConfig?.packagerConfig?.platform || null
|
|
523
|
-
let archSpec = forgeConfig?.packagerConfig?.arch || null
|
|
505
|
+
let platform = forgeConfig?.packagerConfig?.platform || null
|
|
506
|
+
let archSpec = forgeConfig?.packagerConfig?.arch || null
|
|
524
507
|
|
|
525
508
|
for (let i = 0; i < argv.length; i += 1) {
|
|
526
|
-
const arg = argv[i]
|
|
509
|
+
const arg = argv[i]
|
|
527
510
|
|
|
528
|
-
if (arg ===
|
|
529
|
-
platform = argv[i + 1] || platform
|
|
530
|
-
continue
|
|
511
|
+
if (arg === '--platform' || arg === '-p') {
|
|
512
|
+
platform = argv[i + 1] || platform
|
|
513
|
+
continue
|
|
531
514
|
}
|
|
532
|
-
if (typeof arg ===
|
|
533
|
-
platform = arg.slice(
|
|
534
|
-
continue
|
|
515
|
+
if (typeof arg === 'string' && arg.startsWith('--platform=')) {
|
|
516
|
+
platform = arg.slice('--platform='.length) || platform
|
|
517
|
+
continue
|
|
535
518
|
}
|
|
536
|
-
if (arg ===
|
|
537
|
-
archSpec = argv[i + 1] || archSpec
|
|
538
|
-
continue
|
|
519
|
+
if (arg === '--arch' || arg === '-a') {
|
|
520
|
+
archSpec = argv[i + 1] || archSpec
|
|
521
|
+
continue
|
|
539
522
|
}
|
|
540
|
-
if (typeof arg ===
|
|
541
|
-
archSpec = arg.slice(
|
|
523
|
+
if (typeof arg === 'string' && arg.startsWith('--arch=')) {
|
|
524
|
+
archSpec = arg.slice('--arch='.length) || archSpec
|
|
542
525
|
}
|
|
543
526
|
}
|
|
544
527
|
|
|
545
|
-
if (!platform && !archSpec) return null
|
|
528
|
+
if (!platform && !archSpec) return null
|
|
546
529
|
|
|
547
|
-
const p = platform || process.platform
|
|
530
|
+
const p = platform || process.platform
|
|
548
531
|
const archs = (archSpec || process.arch)
|
|
549
|
-
.split(
|
|
532
|
+
.split(',')
|
|
550
533
|
.map((s) => s.trim())
|
|
551
|
-
.filter(Boolean)
|
|
534
|
+
.filter(Boolean)
|
|
552
535
|
|
|
553
|
-
return archs.length > 0 ? archs.map((a) => `${p}-${a}`) : null
|
|
536
|
+
return archs.length > 0 ? archs.map((a) => `${p}-${a}`) : null
|
|
554
537
|
}
|
|
555
538
|
|
|
556
539
|
/**
|
|
@@ -566,61 +549,52 @@ function detectTargetHosts(forgeConfig, argv = process.argv.slice(2)) {
|
|
|
566
549
|
* @returns {Promise<{ addons: string[], bundlePath: string, manifestPath: string }>}
|
|
567
550
|
*/
|
|
568
551
|
async function runBundleAndVerify(commands, projectDir, options) {
|
|
569
|
-
const { bundleSdk, verifyBundle, hasErrors, formatVerifyBundleResult } =
|
|
570
|
-
commands;
|
|
552
|
+
const { bundleSdk, verifyBundle, hasErrors, formatVerifyBundleResult } = commands
|
|
571
553
|
|
|
572
|
-
const hosts = resolveHosts(options.hosts)
|
|
554
|
+
const hosts = resolveHosts(options.hosts)
|
|
573
555
|
|
|
574
|
-
logger.info(`Running bundleSdk (hosts: ${hosts.join(
|
|
575
|
-
let bundleResult
|
|
556
|
+
logger.info(`Running bundleSdk (hosts: ${hosts.join(', ')})...`)
|
|
557
|
+
let bundleResult
|
|
576
558
|
try {
|
|
577
|
-
const bundleOpts = { projectRoot: projectDir, hosts }
|
|
578
|
-
if (options.configPath) bundleOpts.configPath = options.configPath
|
|
579
|
-
bundleResult = await bundleSdk(bundleOpts)
|
|
559
|
+
const bundleOpts = { projectRoot: projectDir, hosts }
|
|
560
|
+
if (options.configPath) bundleOpts.configPath = options.configPath
|
|
561
|
+
bundleResult = await bundleSdk(bundleOpts)
|
|
580
562
|
} catch (err) {
|
|
581
|
-
throw new QvacForgePluginError(
|
|
582
|
-
`bundleSdk failed: ${err?.message || err}`,
|
|
583
|
-
);
|
|
563
|
+
throw new QvacForgePluginError(`bundleSdk failed: ${err?.message || err}`)
|
|
584
564
|
}
|
|
585
565
|
|
|
586
|
-
const addonCount = bundleResult.addons.length
|
|
587
|
-
logger.info(
|
|
588
|
-
`bundleSdk: ${addonCount} native addon${addonCount === 1 ? "" : "s"} in bundle`,
|
|
589
|
-
);
|
|
566
|
+
const addonCount = bundleResult.addons.length
|
|
567
|
+
logger.info(`bundleSdk: ${addonCount} native addon${addonCount === 1 ? '' : 's'} in bundle`)
|
|
590
568
|
|
|
591
|
-
logger.info(`Running verifyBundle (hosts: ${hosts.join(
|
|
592
|
-
let verifyResult
|
|
569
|
+
logger.info(`Running verifyBundle (hosts: ${hosts.join(', ')})...`)
|
|
570
|
+
let verifyResult
|
|
593
571
|
try {
|
|
594
572
|
const verifyOpts = {
|
|
595
573
|
projectRoot: projectDir,
|
|
596
574
|
addonsSource: bundleResult.bundlePath,
|
|
597
|
-
hosts
|
|
598
|
-
}
|
|
599
|
-
if (options.configPath) verifyOpts.configPath = options.configPath
|
|
600
|
-
verifyResult = await verifyBundle(verifyOpts)
|
|
575
|
+
hosts
|
|
576
|
+
}
|
|
577
|
+
if (options.configPath) verifyOpts.configPath = options.configPath
|
|
578
|
+
verifyResult = await verifyBundle(verifyOpts)
|
|
601
579
|
} catch (err) {
|
|
602
|
-
throw new QvacForgePluginError(
|
|
603
|
-
`verifyBundle threw: ${err?.message || err}`,
|
|
604
|
-
);
|
|
580
|
+
throw new QvacForgePluginError(`verifyBundle threw: ${err?.message || err}`)
|
|
605
581
|
}
|
|
606
582
|
|
|
607
583
|
if (hasErrors(verifyResult)) {
|
|
608
584
|
throw new QvacForgePluginError(
|
|
609
|
-
`verifyBundle reported errors:\n${formatVerifyBundleResult(verifyResult)}
|
|
610
|
-
)
|
|
585
|
+
`verifyBundle reported errors:\n${formatVerifyBundleResult(verifyResult)}`
|
|
586
|
+
)
|
|
611
587
|
}
|
|
612
588
|
|
|
613
589
|
if (verifyResult.issues.length > 0) {
|
|
614
|
-
logger.warn(
|
|
615
|
-
`verifyBundle produced warnings:\n${formatVerifyBundleResult(verifyResult)}`,
|
|
616
|
-
);
|
|
590
|
+
logger.warn(`verifyBundle produced warnings:\n${formatVerifyBundleResult(verifyResult)}`)
|
|
617
591
|
} else {
|
|
618
592
|
logger.info(
|
|
619
|
-
`verifyBundle: ${verifyResult.addons.length} addon${verifyResult.addons.length === 1 ?
|
|
620
|
-
)
|
|
593
|
+
`verifyBundle: ${verifyResult.addons.length} addon${verifyResult.addons.length === 1 ? '' : 's'} OK`
|
|
594
|
+
)
|
|
621
595
|
}
|
|
622
596
|
|
|
623
|
-
return bundleResult
|
|
597
|
+
return bundleResult
|
|
624
598
|
}
|
|
625
599
|
|
|
626
600
|
// ============================================
|
|
@@ -628,7 +602,7 @@ async function runBundleAndVerify(commands, projectDir, options) {
|
|
|
628
602
|
// ============================================
|
|
629
603
|
|
|
630
604
|
class QvacForgePlugin extends PluginBase {
|
|
631
|
-
name =
|
|
605
|
+
name = 'qvac'
|
|
632
606
|
|
|
633
607
|
/**
|
|
634
608
|
* @param {object} [config]
|
|
@@ -638,45 +612,43 @@ class QvacForgePlugin extends PluginBase {
|
|
|
638
612
|
* @param {"off"|"error"|"warn"|"info"|"debug"} [config.logLevel]
|
|
639
613
|
*/
|
|
640
614
|
constructor(config = {}) {
|
|
641
|
-
super(config)
|
|
642
|
-
this.projectDir = config.projectDir || process.cwd()
|
|
643
|
-
this.configPath = config.configPath || null
|
|
644
|
-
this.hosts = Array.isArray(config.hosts) ? config.hosts : null
|
|
615
|
+
super(config)
|
|
616
|
+
this.projectDir = config.projectDir || process.cwd()
|
|
617
|
+
this.configPath = config.configPath || null
|
|
618
|
+
this.hosts = Array.isArray(config.hosts) ? config.hosts : null
|
|
645
619
|
|
|
646
|
-
if (config.logLevel) setLogLevel(config.logLevel)
|
|
620
|
+
if (config.logLevel) setLogLevel(config.logLevel)
|
|
647
621
|
|
|
648
622
|
// Cache for resolveForgeConfig double-fire (package + make).
|
|
649
|
-
this._cache = null
|
|
650
|
-
this._pruneHook = null
|
|
623
|
+
this._cache = null
|
|
624
|
+
this._pruneHook = null
|
|
651
625
|
|
|
652
|
-
logger.debug(
|
|
653
|
-
logger.debug(`Project directory: ${this.projectDir}`)
|
|
626
|
+
logger.debug('QvacForgePlugin initialized')
|
|
627
|
+
logger.debug(`Project directory: ${this.projectDir}`)
|
|
654
628
|
}
|
|
655
629
|
|
|
656
630
|
getHooks() {
|
|
657
631
|
return {
|
|
658
|
-
resolveForgeConfig: this.configurePackager.bind(this)
|
|
659
|
-
}
|
|
632
|
+
resolveForgeConfig: this.configurePackager.bind(this)
|
|
633
|
+
}
|
|
660
634
|
}
|
|
661
635
|
|
|
662
636
|
async configurePackager(forgeConfig) {
|
|
663
|
-
logger.info(
|
|
637
|
+
logger.info('Configuring packager for QVAC...')
|
|
664
638
|
|
|
665
639
|
if (!forgeConfig.packagerConfig) {
|
|
666
|
-
forgeConfig.packagerConfig = {}
|
|
640
|
+
forgeConfig.packagerConfig = {}
|
|
667
641
|
}
|
|
668
642
|
|
|
669
643
|
// 1. Block macOS universal builds early.
|
|
670
|
-
this.checkForUniversalArch(forgeConfig)
|
|
644
|
+
this.checkForUniversalArch(forgeConfig)
|
|
671
645
|
|
|
672
646
|
// 2. Force asar: false (Bare worker can't load from asar). Truthy check
|
|
673
647
|
// catches both `asar: true` and `asar: { unpack: ... }` object configs.
|
|
674
648
|
if (forgeConfig.packagerConfig.asar) {
|
|
675
|
-
logger.warn(
|
|
676
|
-
"asar is enabled — Bare worker may fail to load. Overriding to false.",
|
|
677
|
-
);
|
|
649
|
+
logger.warn('asar is enabled — Bare worker may fail to load. Overriding to false.')
|
|
678
650
|
}
|
|
679
|
-
forgeConfig.packagerConfig.asar = false
|
|
651
|
+
forgeConfig.packagerConfig.asar = false
|
|
680
652
|
|
|
681
653
|
// 3. Bundle + verify (cached across resolveForgeConfig invocations).
|
|
682
654
|
// `hosts` resolution: explicit config wins, then CLI/config-derived
|
|
@@ -685,35 +657,25 @@ class QvacForgePlugin extends PluginBase {
|
|
|
685
657
|
// verifyBundle (asserts prebuild availability) — passing different
|
|
686
658
|
// sets silently produces inconsistent builds.
|
|
687
659
|
if (this._cache === null) {
|
|
688
|
-
const detected = this.hosts ? null : detectTargetHosts(forgeConfig)
|
|
660
|
+
const detected = this.hosts ? null : detectTargetHosts(forgeConfig)
|
|
689
661
|
if (detected && !this.hosts) {
|
|
690
|
-
logger.info(`Detected target hosts from CLI/config: ${detected.join(
|
|
662
|
+
logger.info(`Detected target hosts from CLI/config: ${detected.join(', ')}`)
|
|
691
663
|
}
|
|
692
|
-
const commands = await loadSdkCommands()
|
|
693
|
-
const bundleResult = await runBundleAndVerify(
|
|
694
|
-
|
|
695
|
-
this.
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
},
|
|
700
|
-
);
|
|
701
|
-
const exclusions = computeExclusions(
|
|
702
|
-
bundleResult.addons,
|
|
703
|
-
this.projectDir,
|
|
704
|
-
);
|
|
705
|
-
this._cache = { bundleResult, exclusions };
|
|
664
|
+
const commands = await loadSdkCommands()
|
|
665
|
+
const bundleResult = await runBundleAndVerify(commands, this.projectDir, {
|
|
666
|
+
configPath: this.configPath,
|
|
667
|
+
hosts: this.hosts || detected
|
|
668
|
+
})
|
|
669
|
+
const exclusions = computeExclusions(bundleResult.addons, this.projectDir)
|
|
670
|
+
this._cache = { bundleResult, exclusions }
|
|
706
671
|
} else {
|
|
707
|
-
logger.debug(
|
|
672
|
+
logger.debug('Reusing cached bundleSdk result.')
|
|
708
673
|
}
|
|
709
|
-
const { exclusions } = this._cache
|
|
674
|
+
const { exclusions } = this._cache
|
|
710
675
|
|
|
711
676
|
// 4. Merge ignore patterns to exclude unused addons + mobile prebuilds.
|
|
712
|
-
const existingIgnore = forgeConfig.packagerConfig.ignore
|
|
713
|
-
forgeConfig.packagerConfig.ignore = createIgnore(
|
|
714
|
-
exclusions,
|
|
715
|
-
existingIgnore,
|
|
716
|
-
);
|
|
677
|
+
const existingIgnore = forgeConfig.packagerConfig.ignore
|
|
678
|
+
forgeConfig.packagerConfig.ignore = createIgnore(exclusions, existingIgnore)
|
|
717
679
|
|
|
718
680
|
// 5. afterPrune hook for prebuild pruning + excluded addon dir cleanup.
|
|
719
681
|
// Forge calls resolveForgeConfig multiple times during `make` (once for
|
|
@@ -721,18 +683,15 @@ class QvacForgePlugin extends PluginBase {
|
|
|
721
683
|
// must not append the hook on each pass, otherwise Packager's afterPrune
|
|
722
684
|
// fires it N times and we walk the already-pruned tree on every repeat.
|
|
723
685
|
if (this._pruneHook === null) {
|
|
724
|
-
this._pruneHook = this.createPruneHook(exclusions)
|
|
686
|
+
this._pruneHook = this.createPruneHook(exclusions)
|
|
725
687
|
}
|
|
726
|
-
const existingAfterPrune = toArray(forgeConfig.packagerConfig.afterPrune)
|
|
688
|
+
const existingAfterPrune = toArray(forgeConfig.packagerConfig.afterPrune)
|
|
727
689
|
if (!existingAfterPrune.includes(this._pruneHook)) {
|
|
728
|
-
forgeConfig.packagerConfig.afterPrune = [
|
|
729
|
-
...existingAfterPrune,
|
|
730
|
-
this._pruneHook,
|
|
731
|
-
];
|
|
690
|
+
forgeConfig.packagerConfig.afterPrune = [...existingAfterPrune, this._pruneHook]
|
|
732
691
|
}
|
|
733
692
|
|
|
734
|
-
logger.debug(
|
|
735
|
-
return forgeConfig
|
|
693
|
+
logger.debug('Packager configuration complete')
|
|
694
|
+
return forgeConfig
|
|
736
695
|
}
|
|
737
696
|
|
|
738
697
|
/**
|
|
@@ -749,58 +708,56 @@ class QvacForgePlugin extends PluginBase {
|
|
|
749
708
|
const universalMessage =
|
|
750
709
|
`macOS universal packaging is not supported by @qvac/sdk/electron-forge. ` +
|
|
751
710
|
`Native addon prebuilds are architecture-specific and this plugin currently only supports single-arch packaging. ` +
|
|
752
|
-
`Build separate darwin-arm64 and darwin-x64 packages instead
|
|
711
|
+
`Build separate darwin-arm64 and darwin-x64 packages instead.`
|
|
753
712
|
|
|
754
|
-
if (forgeConfig?.packagerConfig?.arch ===
|
|
755
|
-
throw new QvacForgePluginError(universalMessage)
|
|
713
|
+
if (forgeConfig?.packagerConfig?.arch === 'universal') {
|
|
714
|
+
throw new QvacForgePluginError(universalMessage)
|
|
756
715
|
}
|
|
757
716
|
|
|
758
|
-
const args = process.argv.slice(2)
|
|
759
|
-
let arch = null
|
|
717
|
+
const args = process.argv.slice(2)
|
|
718
|
+
let arch = null
|
|
760
719
|
for (let i = 0; i < args.length; i += 1) {
|
|
761
|
-
const arg = args[i]
|
|
720
|
+
const arg = args[i]
|
|
762
721
|
|
|
763
|
-
if (arg ===
|
|
764
|
-
arch = args[i + 1] || null
|
|
765
|
-
continue
|
|
722
|
+
if (arg === '--arch' || arg === '-a') {
|
|
723
|
+
arch = args[i + 1] || null
|
|
724
|
+
continue
|
|
766
725
|
}
|
|
767
726
|
|
|
768
|
-
if (typeof arg ===
|
|
769
|
-
arch = arg.slice(
|
|
770
|
-
continue
|
|
727
|
+
if (typeof arg === 'string' && arg.startsWith('--arch=')) {
|
|
728
|
+
arch = arg.slice('--arch='.length) || null
|
|
729
|
+
continue
|
|
771
730
|
}
|
|
772
731
|
}
|
|
773
732
|
|
|
774
|
-
if (arch ===
|
|
775
|
-
throw new QvacForgePluginError(universalMessage)
|
|
733
|
+
if (arch === 'universal') {
|
|
734
|
+
throw new QvacForgePluginError(universalMessage)
|
|
776
735
|
}
|
|
777
736
|
}
|
|
778
737
|
|
|
779
738
|
createPruneHook(exclusions = []) {
|
|
780
739
|
return (buildPath, electronVersion, platform, arch, done) => {
|
|
781
|
-
logger.info(`Pruning prebuilds for ${platform}-${arch}...`)
|
|
740
|
+
logger.info(`Pruning prebuilds for ${platform}-${arch}...`)
|
|
782
741
|
|
|
783
742
|
try {
|
|
784
|
-
const prebuildResult = prunePrebuildsForPath(buildPath, platform, arch)
|
|
785
|
-
const prebuildMb = (prebuildResult.bytes / 1024 / 1024).toFixed(1)
|
|
786
|
-
logger.info(
|
|
787
|
-
`Pruned ${prebuildResult.deleted} prebuild dirs (~${prebuildMb} MB reclaimed)`,
|
|
788
|
-
);
|
|
743
|
+
const prebuildResult = prunePrebuildsForPath(buildPath, platform, arch)
|
|
744
|
+
const prebuildMb = (prebuildResult.bytes / 1024 / 1024).toFixed(1)
|
|
745
|
+
logger.info(`Pruned ${prebuildResult.deleted} prebuild dirs (~${prebuildMb} MB reclaimed)`)
|
|
789
746
|
|
|
790
747
|
if (exclusions.length > 0) {
|
|
791
|
-
const cleanup = removeExcludedAddonDirs(buildPath, exclusions)
|
|
792
|
-
const cleanupMb = (cleanup.bytes / 1024 / 1024).toFixed(1)
|
|
748
|
+
const cleanup = removeExcludedAddonDirs(buildPath, exclusions)
|
|
749
|
+
const cleanupMb = (cleanup.bytes / 1024 / 1024).toFixed(1)
|
|
793
750
|
logger.info(
|
|
794
|
-
`Removed ${cleanup.removed} excluded addon dir${cleanup.removed === 1 ?
|
|
795
|
-
)
|
|
751
|
+
`Removed ${cleanup.removed} excluded addon dir${cleanup.removed === 1 ? '' : 's'} (~${cleanupMb} MB reclaimed)`
|
|
752
|
+
)
|
|
796
753
|
}
|
|
797
754
|
|
|
798
|
-
done()
|
|
755
|
+
done()
|
|
799
756
|
} catch (err) {
|
|
800
|
-
logger.error(`Prebuild pruning failed: ${err.message}`)
|
|
801
|
-
done(err)
|
|
757
|
+
logger.error(`Prebuild pruning failed: ${err.message}`)
|
|
758
|
+
done(err)
|
|
802
759
|
}
|
|
803
|
-
}
|
|
760
|
+
}
|
|
804
761
|
}
|
|
805
762
|
}
|
|
806
763
|
|
|
@@ -808,13 +765,13 @@ class QvacForgePlugin extends PluginBase {
|
|
|
808
765
|
// Exports
|
|
809
766
|
// ============================================
|
|
810
767
|
|
|
811
|
-
module.exports = QvacForgePlugin
|
|
812
|
-
module.exports.setLogLevel = setLogLevel
|
|
813
|
-
module.exports.QvacForgePluginError = QvacForgePluginError
|
|
768
|
+
module.exports = QvacForgePlugin
|
|
769
|
+
module.exports.setLogLevel = setLogLevel
|
|
770
|
+
module.exports.QvacForgePluginError = QvacForgePluginError
|
|
814
771
|
|
|
815
772
|
// Internal helpers exposed for unit tests. Not part of the stable API.
|
|
816
|
-
module.exports.createIgnore = createIgnore
|
|
817
|
-
module.exports.diffAddons = diffAddons
|
|
818
|
-
module.exports.detectTargetHosts = detectTargetHosts
|
|
819
|
-
module.exports.resolveHosts = resolveHosts
|
|
820
|
-
module.exports.runBundleAndVerify = runBundleAndVerify
|
|
773
|
+
module.exports.createIgnore = createIgnore
|
|
774
|
+
module.exports.diffAddons = diffAddons
|
|
775
|
+
module.exports.detectTargetHosts = detectTargetHosts
|
|
776
|
+
module.exports.resolveHosts = resolveHosts
|
|
777
|
+
module.exports.runBundleAndVerify = runBundleAndVerify
|