llama-cpp-pro 0.2.2
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/CHANGELOG.md +295 -0
- package/LICENSE +21 -0
- package/LlamaCpp.podspec +33 -0
- package/LlamaCppCapacitor.podspec +33 -0
- package/Package.swift +29 -0
- package/README.md +93 -0
- package/android/build.gradle +88 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/CMakeLists-arm64.txt +138 -0
- package/android/src/main/CMakeLists-x86_64.txt +141 -0
- package/android/src/main/CMakeLists.txt +138 -0
- package/android/src/main/java/ai/annadata/plugin/capacitor/LlamaCpp.java +1340 -0
- package/android/src/main/java/ai/annadata/plugin/capacitor/LlamaCppPlugin.java +814 -0
- package/android/src/main/java/ai/annadata/plugin/capacitor/ModelAdmissionController.java +214 -0
- package/android/src/main/jni-chat-session.cpp +261 -0
- package/android/src/main/jni-lora.cpp +197 -0
- package/android/src/main/jni-multimodal.cpp +167 -0
- package/android/src/main/jni-tts.cpp +290 -0
- package/android/src/main/jni-utils.h +148 -0
- package/android/src/main/jni.cpp +1808 -0
- package/android/src/main/jniLibs/arm64-v8a/libllama-cpp-arm64.so +0 -0
- package/android/src/main/res/.gitkeep +0 -0
- package/build-native.sh +280 -0
- package/cmake/desktop-metal-embed.cmake +30 -0
- package/cmake/desktop-sources.cmake +100 -0
- package/cmake/ggml-backends.cmake +44 -0
- package/cpp/LICENSE +21 -0
- package/cpp/README.md +15 -0
- package/cpp/anyascii.c +22223 -0
- package/cpp/anyascii.h +42 -0
- package/cpp/cap-completion.cpp +942 -0
- package/cpp/cap-completion.h +127 -0
- package/cpp/cap-embedding.cpp +193 -0
- package/cpp/cap-embedding.h +35 -0
- package/cpp/cap-ios-bridge.cpp +1810 -0
- package/cpp/cap-ios-bridge.h +61 -0
- package/cpp/cap-llama.cpp +412 -0
- package/cpp/cap-llama.h +161 -0
- package/cpp/cap-mtmd.hpp +602 -0
- package/cpp/cap-native-server.cpp +1095 -0
- package/cpp/cap-native-server.h +40 -0
- package/cpp/cap-tts.cpp +591 -0
- package/cpp/cap-tts.h +59 -0
- package/cpp/cap-wasm-fs.cpp +156 -0
- package/cpp/cap-wasm-jspi.cpp +19 -0
- package/cpp/cap-wasm-jspi.h +30 -0
- package/cpp/cap-wasm-vfs.cpp +22 -0
- package/cpp/chat-parser.cpp +393 -0
- package/cpp/chat-parser.h +120 -0
- package/cpp/chat.cpp +2315 -0
- package/cpp/chat.h +221 -0
- package/cpp/common.cpp +1664 -0
- package/cpp/common.h +744 -0
- package/cpp/ggml-alloc.c +1028 -0
- package/cpp/ggml-alloc.h +76 -0
- package/cpp/ggml-backend-impl.h +255 -0
- package/cpp/ggml-backend-reg.cpp +600 -0
- package/cpp/ggml-backend.cpp +2121 -0
- package/cpp/ggml-backend.h +354 -0
- package/cpp/ggml-common.h +1878 -0
- package/cpp/ggml-cpp.h +39 -0
- package/cpp/ggml-cpu/amx/amx.cpp +221 -0
- package/cpp/ggml-cpu/amx/amx.h +8 -0
- package/cpp/ggml-cpu/amx/common.h +91 -0
- package/cpp/ggml-cpu/amx/mmq.cpp +2512 -0
- package/cpp/ggml-cpu/amx/mmq.h +10 -0
- package/cpp/ggml-cpu/arch/arm/cpu-feats.cpp +94 -0
- package/cpp/ggml-cpu/arch/arm/quants.c +3650 -0
- package/cpp/ggml-cpu/arch/arm/repack.cpp +1891 -0
- package/cpp/ggml-cpu/arch/x86/cpu-feats.cpp +327 -0
- package/cpp/ggml-cpu/arch/x86/quants.c +3820 -0
- package/cpp/ggml-cpu/arch/x86/repack.cpp +6307 -0
- package/cpp/ggml-cpu/arch-fallback.h +215 -0
- package/cpp/ggml-cpu/binary-ops.cpp +158 -0
- package/cpp/ggml-cpu/binary-ops.h +16 -0
- package/cpp/ggml-cpu/common.h +73 -0
- package/cpp/ggml-cpu/ggml-cpu-impl.h +559 -0
- package/cpp/ggml-cpu/ggml-cpu.c +3578 -0
- package/cpp/ggml-cpu/ggml-cpu.cpp +672 -0
- package/cpp/ggml-cpu/ops.cpp +10587 -0
- package/cpp/ggml-cpu/ops.h +114 -0
- package/cpp/ggml-cpu/quants.c +1193 -0
- package/cpp/ggml-cpu/quants.h +97 -0
- package/cpp/ggml-cpu/repack.cpp +1982 -0
- package/cpp/ggml-cpu/repack.h +120 -0
- package/cpp/ggml-cpu/simd-mappings.h +1184 -0
- package/cpp/ggml-cpu/traits.cpp +36 -0
- package/cpp/ggml-cpu/traits.h +38 -0
- package/cpp/ggml-cpu/unary-ops.cpp +186 -0
- package/cpp/ggml-cpu/unary-ops.h +28 -0
- package/cpp/ggml-cpu/vec.cpp +348 -0
- package/cpp/ggml-cpu/vec.h +1121 -0
- package/cpp/ggml-cpu.h +145 -0
- package/cpp/ggml-impl.h +622 -0
- package/cpp/ggml-metal-impl.h +688 -0
- package/cpp/ggml-metal.h +66 -0
- package/cpp/ggml-metal.m +6833 -0
- package/cpp/ggml-metal.metal +10754 -0
- package/cpp/ggml-opt.cpp +1093 -0
- package/cpp/ggml-opt.h +256 -0
- package/cpp/ggml-quants.c +5324 -0
- package/cpp/ggml-quants.h +106 -0
- package/cpp/ggml-threading.cpp +12 -0
- package/cpp/ggml-threading.h +14 -0
- package/cpp/ggml.c +7108 -0
- package/cpp/ggml.h +2492 -0
- package/cpp/gguf.cpp +1358 -0
- package/cpp/gguf.h +202 -0
- package/cpp/json-partial.cpp +256 -0
- package/cpp/json-partial.h +38 -0
- package/cpp/json-schema-to-grammar.cpp +985 -0
- package/cpp/json-schema-to-grammar.h +21 -0
- package/cpp/llama-adapter.cpp +388 -0
- package/cpp/llama-adapter.h +76 -0
- package/cpp/llama-arch.cpp +2355 -0
- package/cpp/llama-arch.h +499 -0
- package/cpp/llama-batch.cpp +875 -0
- package/cpp/llama-batch.h +160 -0
- package/cpp/llama-chat.cpp +783 -0
- package/cpp/llama-chat.h +65 -0
- package/cpp/llama-context.cpp +2788 -0
- package/cpp/llama-context.h +306 -0
- package/cpp/llama-cparams.cpp +5 -0
- package/cpp/llama-cparams.h +41 -0
- package/cpp/llama-cpp.h +30 -0
- package/cpp/llama-grammar.cpp +1229 -0
- package/cpp/llama-grammar.h +173 -0
- package/cpp/llama-graph.cpp +1891 -0
- package/cpp/llama-graph.h +810 -0
- package/cpp/llama-hparams.cpp +180 -0
- package/cpp/llama-hparams.h +233 -0
- package/cpp/llama-impl.cpp +167 -0
- package/cpp/llama-impl.h +61 -0
- package/cpp/llama-io.cpp +15 -0
- package/cpp/llama-io.h +35 -0
- package/cpp/llama-kv-cache-iswa.cpp +318 -0
- package/cpp/llama-kv-cache-iswa.h +135 -0
- package/cpp/llama-kv-cache.cpp +2059 -0
- package/cpp/llama-kv-cache.h +374 -0
- package/cpp/llama-kv-cells.h +491 -0
- package/cpp/llama-memory-hybrid.cpp +258 -0
- package/cpp/llama-memory-hybrid.h +137 -0
- package/cpp/llama-memory-recurrent.cpp +1146 -0
- package/cpp/llama-memory-recurrent.h +179 -0
- package/cpp/llama-memory.cpp +59 -0
- package/cpp/llama-memory.h +119 -0
- package/cpp/llama-mmap.cpp +609 -0
- package/cpp/llama-mmap.h +68 -0
- package/cpp/llama-model-loader.cpp +1166 -0
- package/cpp/llama-model-loader.h +170 -0
- package/cpp/llama-model-saver.cpp +282 -0
- package/cpp/llama-model-saver.h +37 -0
- package/cpp/llama-model.cpp +19061 -0
- package/cpp/llama-model.h +491 -0
- package/cpp/llama-sampling.cpp +2575 -0
- package/cpp/llama-sampling.h +32 -0
- package/cpp/llama-vocab.cpp +3792 -0
- package/cpp/llama-vocab.h +176 -0
- package/cpp/llama.cpp +358 -0
- package/cpp/llama.h +1373 -0
- package/cpp/log.cpp +428 -0
- package/cpp/log.h +103 -0
- package/cpp/minja/chat-template.hpp +550 -0
- package/cpp/minja/minja.hpp +3009 -0
- package/cpp/nlohmann/json.hpp +25526 -0
- package/cpp/nlohmann/json_fwd.hpp +187 -0
- package/cpp/regex-partial.cpp +204 -0
- package/cpp/regex-partial.h +56 -0
- package/cpp/sampling.cpp +579 -0
- package/cpp/sampling.h +107 -0
- package/cpp/tools/mtmd/clip-impl.h +473 -0
- package/cpp/tools/mtmd/clip.cpp +4322 -0
- package/cpp/tools/mtmd/clip.h +106 -0
- package/cpp/tools/mtmd/miniaudio/miniaudio.h +93468 -0
- package/cpp/tools/mtmd/mtmd-audio.cpp +769 -0
- package/cpp/tools/mtmd/mtmd-audio.h +47 -0
- package/cpp/tools/mtmd/mtmd-helper.cpp +460 -0
- package/cpp/tools/mtmd/mtmd-helper.h +95 -0
- package/cpp/tools/mtmd/mtmd.cpp +1066 -0
- package/cpp/tools/mtmd/mtmd.h +302 -0
- package/cpp/tools/mtmd/stb/stb_image.h +7988 -0
- package/cpp/unicode-data.cpp +7034 -0
- package/cpp/unicode-data.h +20 -0
- package/cpp/unicode.cpp +1061 -0
- package/cpp/unicode.h +68 -0
- package/cpp/vendor/cpp-httplib/httplib.cpp +16509 -0
- package/cpp/vendor/cpp-httplib/httplib.h +3883 -0
- package/desktop/electron-builder.config.cjs +157 -0
- package/desktop/entitlements.mac.plist +12 -0
- package/desktop/package.json +11 -0
- package/desktop/resolve-package-root.cjs +88 -0
- package/desktop/src/main/backend-selector.cjs +148 -0
- package/desktop/src/main/gpu-probe.cjs +142 -0
- package/desktop/src/main/index.cjs +58 -0
- package/desktop/src/main/ipc-handlers.cjs +212 -0
- package/desktop/src/main/model-store.cjs +50 -0
- package/desktop/src/main/preload.cjs +39 -0
- package/desktop/src/main/sidecar-client.cjs +76 -0
- package/desktop/src/main/sidecar-manager.cjs +364 -0
- package/dist/docs.json +14357 -0
- package/dist/esm/definitions.d.ts +731 -0
- package/dist/esm/definitions.js +2 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/desktop.d.ts +37 -0
- package/dist/esm/desktop.js +133 -0
- package/dist/esm/desktop.js.map +1 -0
- package/dist/esm/index.d.ts +200 -0
- package/dist/esm/index.js +612 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/isomorphic/desktop.runtime.d.ts +37 -0
- package/dist/esm/isomorphic/desktop.runtime.js +36 -0
- package/dist/esm/isomorphic/desktop.runtime.js.map +1 -0
- package/dist/esm/isomorphic/errors.d.ts +6 -0
- package/dist/esm/isomorphic/errors.js +9 -0
- package/dist/esm/isomorphic/errors.js.map +1 -0
- package/dist/esm/isomorphic/model.admission.d.ts +17 -0
- package/dist/esm/isomorphic/model.admission.js +27 -0
- package/dist/esm/isomorphic/model.admission.js.map +1 -0
- package/dist/esm/isomorphic/model.scheduler.d.ts +31 -0
- package/dist/esm/isomorphic/model.scheduler.js +95 -0
- package/dist/esm/isomorphic/model.scheduler.js.map +1 -0
- package/dist/esm/isomorphic/provider.desktop.d.ts +40 -0
- package/dist/esm/isomorphic/provider.desktop.js +411 -0
- package/dist/esm/isomorphic/provider.desktop.js.map +1 -0
- package/dist/esm/isomorphic/provider.factory.d.ts +2 -0
- package/dist/esm/isomorphic/provider.factory.js +16 -0
- package/dist/esm/isomorphic/provider.factory.js.map +1 -0
- package/dist/esm/isomorphic/provider.interface.d.ts +76 -0
- package/dist/esm/isomorphic/provider.interface.js +2 -0
- package/dist/esm/isomorphic/provider.interface.js.map +1 -0
- package/dist/esm/isomorphic/provider.native.d.ts +18 -0
- package/dist/esm/isomorphic/provider.native.js +173 -0
- package/dist/esm/isomorphic/provider.native.js.map +1 -0
- package/dist/esm/isomorphic/provider.web.d.ts +88 -0
- package/dist/esm/isomorphic/provider.web.js +573 -0
- package/dist/esm/isomorphic/provider.web.js.map +1 -0
- package/dist/esm/isomorphic/sidecar-sse.d.ts +14 -0
- package/dist/esm/isomorphic/sidecar-sse.js +76 -0
- package/dist/esm/isomorphic/sidecar-sse.js.map +1 -0
- package/dist/esm/isomorphic/wasmMemoryCalibration.d.ts +26 -0
- package/dist/esm/isomorphic/wasmMemoryCalibration.js +60 -0
- package/dist/esm/isomorphic/wasmMemoryCalibration.js.map +1 -0
- package/dist/esm/isomorphic/wasmMemoryPolicy.d.ts +55 -0
- package/dist/esm/isomorphic/wasmMemoryPolicy.js +93 -0
- package/dist/esm/isomorphic/wasmMemoryPolicy.js.map +1 -0
- package/dist/esm/storage/manifest.d.ts +13 -0
- package/dist/esm/storage/manifest.js +87 -0
- package/dist/esm/storage/manifest.js.map +1 -0
- package/dist/esm/storage/opfs.store.d.ts +31 -0
- package/dist/esm/storage/opfs.store.js +241 -0
- package/dist/esm/storage/opfs.store.js.map +1 -0
- package/dist/esm/web.d.ts +206 -0
- package/dist/esm/web.js +521 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/esm/workers/async-file.d.ts +13 -0
- package/dist/esm/workers/async-file.js +12 -0
- package/dist/esm/workers/async-file.js.map +1 -0
- package/dist/esm/workers/heapfs.d.ts +55 -0
- package/dist/esm/workers/heapfs.js +115 -0
- package/dist/esm/workers/heapfs.js.map +1 -0
- package/dist/esm/workers/wasm.engine.d.ts +86 -0
- package/dist/esm/workers/wasm.engine.js +504 -0
- package/dist/esm/workers/wasm.engine.js.map +1 -0
- package/dist/esm/workers/worker.protocol.d.ts +160 -0
- package/dist/esm/workers/worker.protocol.js +2 -0
- package/dist/esm/workers/worker.protocol.js.map +1 -0
- package/dist/plugin.cjs +3179 -0
- package/dist/plugin.cjs.map +1 -0
- package/dist/plugin.js +3181 -0
- package/dist/plugin.js.map +1 -0
- package/dist/wasm/llama_engine.d.ts +74 -0
- package/dist/wasm/llama_engine.js +1829 -0
- package/dist/wasm/llama_engine.wasm +0 -0
- package/dist/wasm/llama_engine_emscripten.mjs +2 -0
- package/dist/wasm/package.json +16 -0
- package/dist/workers/llm.worker.js +1226 -0
- package/dist/workers/llm.worker.js.map +7 -0
- package/extraResources/llama-wasm/llama_engine.d.ts +74 -0
- package/extraResources/llama-wasm/llama_engine.js +1829 -0
- package/extraResources/llama-wasm/llama_engine.wasm +0 -0
- package/extraResources/llama-wasm/llama_engine_emscripten.mjs +2 -0
- package/extraResources/llama-wasm/package.json +16 -0
- package/extraResources/sidecar/README.md +11 -0
- package/extraResources/sidecar/darwin-arm64 +0 -0
- package/extraResources/sidecar/darwin-x64 +0 -0
- package/ios/CMakeLists-arm64.txt +161 -0
- package/ios/CMakeLists-x86_64.txt +188 -0
- package/ios/CMakeLists.txt +161 -0
- package/ios/Frameworks/llama-cpp.framework/Info.plist +28 -0
- package/ios/Frameworks/llama-cpp.framework/llama-cpp +0 -0
- package/ios/Sources/LlamaCppCapacitor/LlamaCpp.swift +1365 -0
- package/ios/Sources/LlamaCppCapacitor/LlamaCppPlugin.swift +694 -0
- package/ios/Sources/LlamaCppCapacitor/LlamaNativeBridge.swift +349 -0
- package/ios/Sources/LlamaCppCapacitor/ModelAdmissionController.swift +177 -0
- package/ios/embed-metal-shaders.sh +24 -0
- package/ios/metal-embed.cmake +29 -0
- package/package.json +281 -0
- package/scripts/build-js-preserve-wasm.cjs +53 -0
- package/scripts/build-sidecar-linux.sh +6 -0
- package/scripts/build-sidecar-win.bat +19 -0
- package/scripts/build-sidecar.sh +184 -0
- package/scripts/embed-llama-ios-app-framework.sh +63 -0
- package/scripts/ensure-desktop-sidecar-bundle.cjs +103 -0
- package/scripts/ensure-llama-ios-xcframework.sh +108 -0
- package/scripts/fix-esm-extensions.cjs +45 -0
- package/scripts/prepare-js-dist.cjs +28 -0
- package/scripts/stage-desktop-resources.cjs +116 -0
- package/sidecar/CMakeLists.txt +192 -0
- package/sidecar/cap-sidecar-main.cpp +68 -0
- package/types/llama-cpp-pro.d.ts +441 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/isomorphic/errors.js","esm/isomorphic/model.admission.js","esm/isomorphic/wasmMemoryCalibration.js","esm/isomorphic/wasmMemoryPolicy.js","esm/isomorphic/model.scheduler.js","esm/isomorphic/provider.native.js","esm/storage/manifest.js","esm/storage/opfs.store.js","esm/isomorphic/provider.web.js","esm/isomorphic/desktop.runtime.js","esm/isomorphic/sidecar-sse.js","esm/isomorphic/provider.desktop.js","esm/isomorphic/provider.factory.js","esm/web.js","esm/desktop.js","esm/index.js"],"sourcesContent":["export class LlmError extends Error {\n constructor(code, message, meta) {\n super(message);\n this.name = 'LlmError';\n this.code = code;\n this.meta = meta;\n }\n}\n//# sourceMappingURL=errors.js.map","export function canAdmitModel(input) {\n var _a, _b;\n const multiplier = (_a = input.estimatedMultiplier) !== null && _a !== void 0 ? _a : 1.5;\n const reserveBytes = (_b = input.reserveBytes) !== null && _b !== void 0 ? _b : 512 * 1024 * 1024; // 512MB default reserve\n const estimatedBytes = Math.ceil(input.modelBytes * multiplier);\n if (input.currentlyLoaded >= input.maxModels) {\n return {\n allow: false,\n deniedBy: 'limit',\n reason: `Model limit reached (${input.maxModels})`,\n estimatedBytes,\n };\n }\n if (typeof input.memory.freeBytes === 'number') {\n const postLoadFree = input.memory.freeBytes - estimatedBytes;\n if (postLoadFree < reserveBytes) {\n return {\n allow: false,\n deniedBy: 'memory',\n reason: 'Insufficient free memory after reserve threshold',\n estimatedBytes,\n };\n }\n }\n return { allow: true, estimatedBytes };\n}\n//# sourceMappingURL=model.admission.js.map","const WARM_HEAP_BYTES = 64 * 1024 * 1024;\n/** Bytes used for scheduling — measured when calibrated, else estimate. */\nexport function resolveFootprintBytes(entry, fallbackEstimate) {\n if (typeof entry === 'number' && entry > 0)\n return entry;\n if (entry && typeof entry === 'object') {\n if (typeof entry.measuredBytes === 'number' && entry.measuredBytes > 0) {\n return entry.measuredBytes;\n }\n if (entry.estimatedBytes > 0)\n return entry.estimatedBytes;\n }\n return fallbackEstimate;\n}\n/** Attribute heap growth to one model load (delta from linear before → after). */\nexport function calibrateFootprintFromLinearDelta(linearBefore, linearAfter, estimatedBytes, options) {\n const delta = Math.max(0, linearAfter - linearBefore);\n if ((options === null || options === void 0 ? void 0 : options.firstModelInHeap) && linearAfter > WARM_HEAP_BYTES) {\n return linearAfter;\n }\n if (delta > 0) {\n return delta;\n }\n return estimatedBytes;\n}\nexport function createFootprintEntry(fileBytes, estimatedBytes) {\n return { fileBytes, estimatedBytes };\n}\nexport function applyCalibration(entry, linearBefore, linearAfter, firstModelInHeap) {\n const measuredBytes = calibrateFootprintFromLinearDelta(linearBefore, linearAfter, entry.estimatedBytes, { firstModelInHeap });\n return Object.assign(Object.assign({}, entry), { measuredBytes,\n linearBefore,\n linearAfter, calibratedAt: Date.now() });\n}\nexport function sumResidentFootprintBytes(footprints, excludeModelId) {\n let sum = 0;\n for (const [id, entry] of footprints) {\n if (excludeModelId && id === excludeModelId)\n continue;\n const fallback = typeof entry === 'object' ? entry.estimatedBytes : 0;\n sum += resolveFootprintBytes(entry, fallback);\n }\n return sum;\n}\n/** Project WASM pool usage after admitting one more model (footprint-based). */\nexport function projectWasmAfterLoad(input) {\n var _a;\n const linear = input.wasmLinearBytes;\n const nextBytes = (_a = input.candidateMeasuredBytes) !== null && _a !== void 0 ? _a : input.candidateEstimateBytes;\n // Prefer calibrated footprints over linear heap size. Linear may include unused\n // pre-grown headroom (or a prior failed grow to MAXIMUM_MEMORY).\n if (input.residentModelCount > 0) {\n return input.residentFootprintBytes + nextBytes;\n }\n if (linear > WARM_HEAP_BYTES) {\n return nextBytes;\n }\n return Math.max(linear, nextBytes);\n}\n//# sourceMappingURL=wasmMemoryCalibration.js.map","import { projectWasmAfterLoad } from './wasmMemoryCalibration';\n/** Max concurrent GGUF contexts in one WASM worker (matches n_threads slot policy). */\nexport const WASM_MAX_CONCURRENT_MODELS = 5;\n/** Emscripten MAXIMUM_MEMORY — absolute hard limit from build (2 GiB). */\nexport const WASM_EMSCRIPTEN_MAX_BYTES = 2147483648;\n/** WASM pool planning cap — aligned with Emscripten max (was 1536 MB). */\nexport const WASM_POOL_CEILING_BYTES = WASM_EMSCRIPTEN_MAX_BYTES;\n/** Keep this much headroom free inside the WASM pool after a load. */\nexport const WASM_POOL_RESERVE_BYTES = 64 * 1024 * 1024;\n/**\n * Estimate WASM linear memory for one model (weights + context/KV headroom).\n * PWA loads via async OPFS — weights are not fully duplicated in heap (not 2× file).\n * Observed: LFM2 ~697 MB GGUF → ~940 MB WASM; BGE ~17 MB → ~150–200 MB.\n */\nexport function estimateModelWasmFootprint(fileBytes, opts = {}) {\n if (!(fileBytes > 0))\n return 20 * 1024 * 1024;\n const embedding = opts.embedding === true;\n const n_ctx = typeof opts.n_ctx === 'number' && opts.n_ctx > 0 ? opts.n_ctx : embedding ? 256 : 512;\n const n_batch = typeof opts.n_batch === 'number' && opts.n_batch > 0 ? opts.n_batch : embedding ? 32 : 16;\n // Async OPFS: ~1.3× file for large chat; embed models are lighter.\n const weightMultiplier = embedding ? 1.25 : fileBytes > 200 * 1024 * 1024 ? 1.32 : 1.2;\n const ctxBytes = n_ctx * n_batch * 4096;\n const proportional = Math.ceil(fileBytes * 0.12);\n const minHeadroom = embedding ? 48 * 1024 * 1024 : 96 * 1024 * 1024;\n const headroom = Math.max(minHeadroom, proportional, ctxBytes);\n return Math.ceil(fileBytes * weightMultiplier + headroom);\n}\nexport function canAdmitWasmModelLoad(input) {\n var _a, _b, _c, _d, _e, _f, _g;\n const maxModels = (_a = input.maxModels) !== null && _a !== void 0 ? _a : WASM_MAX_CONCURRENT_MODELS;\n const ceiling = (_b = input.wasmPoolCeilingBytes) !== null && _b !== void 0 ? _b : WASM_POOL_CEILING_BYTES;\n const reserve = (_c = input.reserveBytes) !== null && _c !== void 0 ? _c : WASM_POOL_RESERVE_BYTES;\n const estimated = estimateModelWasmFootprint(input.fileBytes, (_d = input.loadOpts) !== null && _d !== void 0 ? _d : {});\n if (input.currentlyLoaded >= maxModels) {\n return {\n allow: false,\n deniedBy: 'limit',\n reason: `Model slot limit reached (${maxModels} concurrent WASM contexts)`,\n estimatedFootprintBytes: estimated,\n };\n }\n const linear = (_e = input.wasmLinearBytes) !== null && _e !== void 0 ? _e : 0;\n const loadedFootprint = (_f = input.loadedFootprintBytes) !== null && _f !== void 0 ? _f : 0;\n const projectedWasm = projectWasmAfterLoad({\n wasmLinearBytes: linear,\n residentModelCount: input.currentlyLoaded,\n residentFootprintBytes: loadedFootprint,\n candidateEstimateBytes: estimated,\n candidateMeasuredBytes: input.candidateMeasuredBytes,\n });\n const admitLimit = Math.min(ceiling, WASM_EMSCRIPTEN_MAX_BYTES) - reserve;\n if (projectedWasm > admitLimit) {\n return {\n allow: false,\n deniedBy: 'wasm_pool',\n reason: `WASM pool would exceed ${(ceiling / 1024 / 1024).toFixed(0)} MB ` +\n `(projected ${(projectedWasm / 1024 / 1024).toFixed(0)} MB, ` +\n `GGUF ${(input.fileBytes / 1024 / 1024).toFixed(0)} MB → est. WASM ~${(estimated / 1024 / 1024).toFixed(0)} MB)`,\n estimatedFootprintBytes: estimated,\n projectedWasmBytes: projectedWasm,\n };\n }\n if (typeof ((_g = input.browserMemory) === null || _g === void 0 ? void 0 : _g.freeBytes) === 'number') {\n const browserReserve = 256 * 1024 * 1024;\n const postFree = input.browserMemory.freeBytes - estimated;\n if (postFree < browserReserve) {\n return {\n allow: false,\n deniedBy: 'browser_memory',\n reason: 'Insufficient browser JS heap after model load reserve',\n estimatedFootprintBytes: estimated,\n projectedWasmBytes: projectedWasm,\n };\n }\n }\n return {\n allow: true,\n estimatedFootprintBytes: estimated,\n projectedWasmBytes: projectedWasm,\n };\n}\nexport function wasmMemoryPressure(wasmLinearBytes, ceilingBytes = WASM_POOL_CEILING_BYTES) {\n if (!(wasmLinearBytes > 0) || !(ceilingBytes > 0))\n return 'unknown';\n const ratio = wasmLinearBytes / ceilingBytes;\n if (ratio >= 0.85)\n return 'high';\n if (ratio >= 0.7)\n return 'medium';\n return 'low';\n}\n//# sourceMappingURL=wasmMemoryPolicy.js.map","import { canAdmitModel } from './model.admission';\nimport { canAdmitWasmModelLoad, estimateModelWasmFootprint, WASM_MAX_CONCURRENT_MODELS, WASM_POOL_CEILING_BYTES, } from './wasmMemoryPolicy';\nimport { LlmError } from './errors';\nexport class DefaultModelScheduler {\n constructor(maxModels = WASM_MAX_CONCURRENT_MODELS) {\n this.maxModels = maxModels;\n this.loaded = new Set();\n this.footprints = new Map();\n }\n ensureCapacity(modelId, modelBytes, memory, reserveBytes, wasm) {\n var _a, _b, _c, _d;\n if (this.loaded.has(modelId))\n return;\n const loadOpts = wasm === null || wasm === void 0 ? void 0 : wasm.loadOpts;\n const estimatedFootprint = estimateModelWasmFootprint(modelBytes, loadOpts !== null && loadOpts !== void 0 ? loadOpts : {});\n if (!(wasm === null || wasm === void 0 ? void 0 : wasm.skipWasm)) {\n const wasmAdmission = canAdmitWasmModelLoad({\n modelId,\n fileBytes: modelBytes,\n loadOpts,\n currentlyLoaded: this.loaded.size,\n maxModels: this.maxModels,\n wasmLinearBytes: wasm === null || wasm === void 0 ? void 0 : wasm.wasmLinearBytes,\n wasmPoolCeilingBytes: (_a = wasm === null || wasm === void 0 ? void 0 : wasm.wasmPoolCeilingBytes) !== null && _a !== void 0 ? _a : WASM_POOL_CEILING_BYTES,\n loadedFootprintBytes: this.totalFootprintBytes(),\n reserveBytes,\n browserMemory: memory,\n });\n if (!wasmAdmission.allow) {\n const code = wasmAdmission.deniedBy === 'limit' ? 'MODEL_LIMIT_REACHED' : 'INSUFFICIENT_MEMORY';\n throw new LlmError(code, (_b = wasmAdmission.reason) !== null && _b !== void 0 ? _b : 'WASM model admission rejected', {\n modelId,\n estimatedBytes: wasmAdmission.estimatedFootprintBytes,\n projectedWasmBytes: wasmAdmission.projectedWasmBytes,\n deniedBy: wasmAdmission.deniedBy,\n });\n }\n }\n const admission = canAdmitModel({\n modelId,\n modelBytes,\n currentlyLoaded: this.loaded.size,\n maxModels: this.maxModels,\n memory,\n reserveBytes,\n estimatedMultiplier: estimatedFootprint / Math.max(modelBytes, 1),\n });\n if (!admission.allow) {\n if (admission.deniedBy === 'memory') {\n throw new LlmError('INSUFFICIENT_MEMORY', (_c = admission.reason) !== null && _c !== void 0 ? _c : 'Model admission rejected by memory guard', {\n modelId,\n estimatedBytes: admission.estimatedBytes,\n });\n }\n throw new LlmError('MODEL_LIMIT_REACHED', (_d = admission.reason) !== null && _d !== void 0 ? _d : 'Model admission rejected by limit', {\n modelId,\n estimatedBytes: admission.estimatedBytes,\n });\n }\n }\n markLoaded(modelId, modelBytes, loadOpts, measuredFootprintBytes) {\n this.loaded.add(modelId);\n if (typeof modelBytes === 'number' && modelBytes > 0) {\n const estimate = estimateModelWasmFootprint(modelBytes, loadOpts !== null && loadOpts !== void 0 ? loadOpts : {});\n this.footprints.set(modelId, typeof measuredFootprintBytes === 'number' && measuredFootprintBytes > 0\n ? measuredFootprintBytes\n : estimate);\n }\n }\n /** Replace formula footprint with post-load measured WASM bytes. */\n calibrateFootprint(modelId, measuredFootprintBytes) {\n if (!(measuredFootprintBytes > 0))\n return;\n if (this.loaded.has(modelId)) {\n this.footprints.set(modelId, measuredFootprintBytes);\n }\n }\n getFootprintBytes(modelId) {\n return this.footprints.get(modelId);\n }\n markUnloaded(modelId) {\n this.loaded.delete(modelId);\n this.footprints.delete(modelId);\n }\n listLoaded() {\n return [...this.loaded];\n }\n totalFootprintBytes() {\n let sum = 0;\n for (const bytes of this.footprints.values())\n sum += bytes;\n return sum;\n }\n}\n//# sourceMappingURL=model.scheduler.js.map","import { Capacitor, registerPlugin } from '@capacitor/core';\nimport { LlmError } from './errors';\nimport { DefaultModelScheduler } from './model.scheduler';\nconst EVENT_ON_TOKEN = '@LlamaCpp_onToken';\nconst MAX_MODELS = 5;\n/** Prefer the plugin instance registered by src/index.ts. */\nconst getPlugin = () => {\n var _a, _b, _c, _d;\n const caps = Capacitor;\n return ((_d = (_b = (_a = caps.Plugins) === null || _a === void 0 ? void 0 : _a.LlamaCpp) !== null && _b !== void 0 ? _b : (_c = caps.getPlugin) === null || _c === void 0 ? void 0 : _c.call(caps, 'LlamaCpp')) !== null && _d !== void 0 ? _d : registerPlugin('LlamaCpp'));\n};\nexport class NativeProvider {\n constructor() {\n this.platform = 'native';\n this.contextByModel = new Map();\n this.nextContextId = 1;\n this.scheduler = new DefaultModelScheduler(MAX_MODELS);\n }\n async initialize(opts) {\n await getPlugin().setContextLimit({ limit: MAX_MODELS });\n await this.loadModel(opts);\n }\n async loadModel(opts) {\n if (!opts.modelId) {\n throw new LlmError('INVALID_REQUEST', 'modelId is required');\n }\n if (!opts.modelPath) {\n throw new LlmError('INVALID_REQUEST', 'modelPath is required on native provider');\n }\n if (this.contextByModel.has(opts.modelId)) {\n return;\n }\n const modelBytes = typeof opts.modelBytes === 'number' ? opts.modelBytes : 0;\n const reserveBytes = typeof opts.reserveBytes === 'number' ? opts.reserveBytes : undefined;\n const memory = await this.getMemorySnapshot();\n if (typeof opts.availableMemoryBytes === 'number') {\n memory.freeBytes = opts.availableMemoryBytes;\n }\n if (typeof opts.totalMemoryBytes === 'number') {\n memory.totalBytes = opts.totalMemoryBytes;\n }\n this.scheduler.ensureCapacity(opts.modelId, modelBytes, memory, reserveBytes);\n const contextId = this.nextContextId++;\n await getPlugin().initContext({\n contextId,\n params: {\n model: opts.modelPath,\n n_ctx: opts.n_ctx,\n n_threads: opts.n_threads,\n embedding: opts.embedding,\n },\n });\n this.contextByModel.set(opts.modelId, contextId);\n this.scheduler.markLoaded(opts.modelId);\n }\n async unloadModel(modelId) {\n const contextId = this.contextByModel.get(modelId);\n if (contextId === undefined) {\n return;\n }\n await getPlugin().releaseContext({ contextId });\n this.contextByModel.delete(modelId);\n this.scheduler.markUnloaded(modelId);\n }\n async generate(req) {\n var _a, _b;\n const contextId = this.contextByModel.get(req.modelId);\n if (contextId === undefined) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${req.modelId}' is not loaded`);\n }\n const prompt = (_a = req.prompt) !== null && _a !== void 0 ? _a : (_b = req.messages) === null || _b === void 0 ? void 0 : _b.map((m) => `${m.role}: ${m.content}`).join('\\n');\n if (!prompt) {\n throw new LlmError('INVALID_REQUEST', 'prompt or messages is required');\n }\n const completion = await getPlugin().completion({\n contextId,\n params: {\n prompt,\n n_predict: req.max_tokens,\n temperature: req.temperature,\n emit_partial_completion: false,\n },\n });\n return {\n text: completion.content || completion.text || '',\n tokens_predicted: completion.tokens_predicted || 0,\n tokens_evaluated: completion.tokens_evaluated || 0,\n finish_reason: completion.stopped_limit ? 'length' : 'stop',\n };\n }\n async generateStream(req, onToken) {\n var _a, _b, _c;\n const contextId = this.contextByModel.get(req.modelId);\n if (contextId === undefined) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${req.modelId}' is not loaded`);\n }\n const prompt = (_a = req.prompt) !== null && _a !== void 0 ? _a : (_b = req.messages) === null || _b === void 0 ? void 0 : _b.map((m) => `${m.role}: ${m.content}`).join('\\n');\n if (!prompt) {\n throw new LlmError('INVALID_REQUEST', 'prompt or messages is required');\n }\n let tokenIndex = 0;\n const listener = await getPlugin().addListener(EVENT_ON_TOKEN, (evt) => {\n var _a, _b;\n if (evt.contextId !== contextId)\n return;\n const token = (_b = (_a = evt.tokenResult) === null || _a === void 0 ? void 0 : _a.token) !== null && _b !== void 0 ? _b : '';\n if (!token)\n return;\n onToken({ modelId: req.modelId, token, index: tokenIndex++ });\n });\n try {\n const completion = await getPlugin().completion({\n contextId,\n params: {\n prompt,\n n_predict: req.max_tokens,\n temperature: req.temperature,\n emit_partial_completion: true,\n },\n });\n return {\n text: completion.content || completion.text || '',\n tokens_predicted: completion.tokens_predicted || 0,\n tokens_evaluated: completion.tokens_evaluated || 0,\n finish_reason: completion.stopped_limit ? 'length' : 'stop',\n };\n }\n finally {\n (_c = listener === null || listener === void 0 ? void 0 : listener.remove) === null || _c === void 0 ? void 0 : _c.call(listener);\n }\n }\n async embed(req) {\n const contextId = this.contextByModel.get(req.modelId);\n if (contextId === undefined) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${req.modelId}' is not loaded`);\n }\n const inputs = Array.isArray(req.input) ? req.input : [req.input];\n const vectors = [];\n for (const text of inputs) {\n const res = await getPlugin().embedding({\n contextId,\n text,\n params: {},\n });\n vectors.push(res.embedding || []);\n }\n return { vectors };\n }\n async getMemorySnapshot() {\n var _a;\n const memoryFromPerformance = (_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.performance) === null || _a === void 0 ? void 0 : _a.memory;\n if (memoryFromPerformance) {\n const totalBytes = Number(memoryFromPerformance.jsHeapSizeLimit);\n const usedBytes = Number(memoryFromPerformance.usedJSHeapSize);\n const freeBytes = Number(memoryFromPerformance.jsHeapSizeLimit - memoryFromPerformance.usedJSHeapSize);\n const usedRatio = totalBytes > 0 ? usedBytes / totalBytes : 0;\n const pressure = usedRatio >= 0.85 ? 'high' : usedRatio >= 0.7 ? 'medium' : 'low';\n return { totalBytes, usedBytes, freeBytes, pressure };\n }\n return { pressure: 'unknown' };\n }\n async health() {\n return {\n ok: true,\n details: {\n loadedModels: this.contextByModel.size,\n maxModels: MAX_MODELS,\n schedulerLoadedModels: this.scheduler.listLoaded().length,\n },\n };\n }\n}\n//# sourceMappingURL=provider.native.js.map","import { LlmError } from '../isomorphic/errors';\nconst MANIFEST_FILE = '.llm-manifest.json';\nconst getStorageApi = () => {\n var _a;\n const storageApi = (_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _a === void 0 ? void 0 : _a.storage;\n if (!storageApi || typeof storageApi.getDirectory !== 'function') {\n throw new LlmError('STORAGE_UNAVAILABLE', 'OPFS is not available in this runtime. navigator.storage.getDirectory is missing.');\n }\n return storageApi;\n};\nconst getRootDirectory = async () => {\n const storageApi = getStorageApi();\n try {\n return await storageApi.getDirectory();\n }\n catch (error) {\n throw new LlmError('STORAGE_IO_FAILED', 'Failed to access OPFS root directory.', {\n cause: String(error),\n });\n }\n};\nconst readTextFile = async (fileHandle) => {\n const file = await fileHandle.getFile();\n return file.text();\n};\nconst writeTextFile = async (fileHandle, content) => {\n const writable = await fileHandle.createWritable();\n try {\n await writable.write(content);\n }\n finally {\n await writable.close();\n }\n};\nasync function loadManifestInternal() {\n const root = await getRootDirectory();\n try {\n const handle = await root.getFileHandle(MANIFEST_FILE, { create: true });\n const content = await readTextFile(handle);\n if (!content.trim()) {\n return {};\n }\n const parsed = JSON.parse(content);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return {};\n }\n return parsed;\n }\n catch (error) {\n throw new LlmError('STORAGE_IO_FAILED', 'Failed to read OPFS manifest.', {\n cause: String(error),\n });\n }\n}\nasync function saveManifestInternal(manifest) {\n const root = await getRootDirectory();\n try {\n const handle = await root.getFileHandle(MANIFEST_FILE, { create: true });\n await writeTextFile(handle, JSON.stringify(manifest, null, 2));\n }\n catch (error) {\n throw new LlmError('STORAGE_IO_FAILED', 'Failed to write OPFS manifest.', {\n cause: String(error),\n });\n }\n}\nexport async function listManifestEntries() {\n const manifest = await loadManifestInternal();\n return Object.values(manifest);\n}\nexport async function getManifestEntry(modelId) {\n const manifest = await loadManifestInternal();\n return manifest[modelId];\n}\nexport async function upsertManifestEntry(entry) {\n const manifest = await loadManifestInternal();\n manifest[entry.modelId] = entry;\n await saveManifestInternal(manifest);\n}\nexport async function removeManifestEntry(modelId) {\n const manifest = await loadManifestInternal();\n if (manifest[modelId]) {\n delete manifest[modelId];\n await saveManifestInternal(manifest);\n }\n}\n//# sourceMappingURL=manifest.js.map","import { LlmError } from '../isomorphic/errors';\nimport { getManifestEntry, listManifestEntries, removeManifestEntry, upsertManifestEntry, } from './manifest';\nconst MODELS_DIR = 'models';\nconst getStorageApi = () => {\n var _a;\n const storageApi = (_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _a === void 0 ? void 0 : _a.storage;\n if (!storageApi || typeof storageApi.getDirectory !== 'function') {\n throw new LlmError('STORAGE_UNAVAILABLE', 'OPFS is not available in this runtime. navigator.storage.getDirectory is missing.');\n }\n return storageApi;\n};\nconst getRootDirectory = async () => {\n const storageApi = getStorageApi();\n try {\n return await storageApi.getDirectory();\n }\n catch (error) {\n throw new LlmError('STORAGE_IO_FAILED', 'Failed to access OPFS root directory.', {\n cause: String(error),\n });\n }\n};\nconst sanitizeModelId = (modelId) => modelId.replace(/[^a-zA-Z0-9._-]/g, '_');\nconst pathForModelId = (modelId) => `${MODELS_DIR}/${sanitizeModelId(modelId)}.gguf`;\nconst ensureParentDirAndFileHandle = async (path, create = true) => {\n const root = await getRootDirectory();\n const parts = path.split('/').filter(Boolean);\n const fileName = parts.pop();\n if (!fileName) {\n throw new LlmError('STORAGE_IO_FAILED', `Invalid OPFS path '${path}'.`);\n }\n let current = root;\n for (const dir of parts) {\n current = await current.getDirectoryHandle(dir, { create: true });\n }\n return current.getFileHandle(fileName, { create });\n};\nconst writeStreamToFile = async (res, fileHandle, onProgress, signal) => {\n var _a;\n const writable = await fileHandle.createWritable();\n const total = Number((_a = res.headers.get('content-length')) !== null && _a !== void 0 ? _a : 0);\n let written = 0;\n try {\n if (!res.body) {\n const buf = await res.arrayBuffer();\n await writable.write(buf);\n written += buf.byteLength;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(written, total || written);\n return written;\n }\n const reader = res.body.getReader();\n while (true) {\n if (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n reader.cancel();\n throw new LlmError('MODEL_DOWNLOAD_FAILED', 'Download aborted by caller.');\n }\n const { value, done } = await reader.read();\n if (done)\n break;\n if (value) {\n await writable.write(value);\n written += value.byteLength;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(written, total || written);\n }\n }\n return written;\n }\n finally {\n await writable.close();\n }\n};\nexport async function ensureModelInOpfs(modelId, modelUrl, onProgress, signal) {\n if (!modelId) {\n throw new LlmError('INVALID_REQUEST', 'modelId is required for OPFS storage.');\n }\n if (!modelUrl) {\n throw new LlmError('INVALID_REQUEST', 'modelUrl is required for OPFS storage.');\n }\n const existing = await getManifestEntry(modelId);\n if (existing) {\n await upsertManifestEntry(Object.assign(Object.assign({}, existing), { lastUsedAt: Date.now() }));\n return Object.assign(Object.assign({}, existing), { lastUsedAt: Date.now() });\n }\n let res;\n try {\n res = await fetch(modelUrl, signal ? { signal } : undefined);\n }\n catch (error) {\n const isAbort = error instanceof Error && error.name === 'AbortError';\n throw new LlmError('MODEL_DOWNLOAD_FAILED', isAbort\n ? `Download of model '${modelId}' was cancelled.`\n : `Failed to download model '${modelId}'.`, { modelId, modelUrl, cause: String(error) });\n }\n if (!res.ok) {\n throw new LlmError('MODEL_DOWNLOAD_FAILED', `Failed to download model '${modelId}': HTTP ${res.status}`, {\n modelId,\n modelUrl,\n status: res.status,\n });\n }\n const path = pathForModelId(modelId);\n let sizeBytes = 0;\n try {\n const fileHandle = await ensureParentDirAndFileHandle(path, true);\n sizeBytes = await writeStreamToFile(res, fileHandle, onProgress, signal);\n }\n catch (error) {\n throw new LlmError('STORAGE_IO_FAILED', `Failed to persist model '${modelId}' in OPFS.`, {\n modelId,\n path,\n cause: String(error),\n });\n }\n const now = Date.now();\n const entry = {\n modelId,\n path,\n sizeBytes,\n sourceUrl: modelUrl,\n createdAt: now,\n lastUsedAt: now,\n };\n await upsertManifestEntry(entry);\n return entry;\n}\n/**\n * Choice 3 — primary web model load path.\n * Opens an OPFS FileSystemSyncAccessHandle in the worker and reads the\n * model in fixed-size chunks (default 4MB). Chunks are streamed into WASM\n * MEMFS; the full GGUF is never materialised as a single JS ArrayBuffer.\n *\n * Worker-only: createSyncAccessHandle is not available on the main thread.\n */\nexport const OPFS_MODEL_CHUNK_BYTES = 4 * 1024 * 1024;\nexport async function openOpfsModelSyncReader(modelId) {\n const entry = await getManifestEntry(modelId);\n if (!entry) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${modelId}' is not present in OPFS manifest.`);\n }\n const fileHandle = await ensureParentDirAndFileHandle(entry.path, false);\n if (typeof fileHandle.createSyncAccessHandle !== 'function') {\n throw new LlmError('STORAGE_UNAVAILABLE', 'OPFS sync access handles are not available in this browser/worker context.', { modelId });\n }\n let accessHandle;\n try {\n accessHandle = await fileHandle.createSyncAccessHandle();\n }\n catch (error) {\n throw new LlmError('STORAGE_IO_FAILED', `Failed to open OPFS sync handle for '${modelId}'.`, {\n modelId,\n path: entry.path,\n cause: String(error),\n });\n }\n const sizeBytes = accessHandle.getSize();\n await upsertManifestEntry(Object.assign(Object.assign({}, entry), { lastUsedAt: Date.now() }));\n return {\n sizeBytes,\n readChunk(offset, length = OPFS_MODEL_CHUNK_BYTES) {\n const toRead = Math.min(length, sizeBytes - offset);\n if (toRead <= 0) {\n return new Uint8Array(0);\n }\n const buf = new Uint8Array(toRead);\n const bytesRead = accessHandle.read(buf, { at: offset });\n return buf.subarray(0, bytesRead);\n },\n close() {\n accessHandle.close();\n },\n };\n}\n/**\n * Read the model from OPFS as an ArrayBuffer (fallback when sync handles\n * are unavailable). Prefer openOpfsModelSyncReader in workers.\n */\nexport async function readModelBufferFromOpfs(modelId) {\n const file = await readModelFromOpfs(modelId);\n const buffer = await file.arrayBuffer();\n return { buffer, sizeBytes: file.size };\n}\nexport async function readModelFromOpfs(modelId) {\n const entry = await getManifestEntry(modelId);\n if (!entry) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${modelId}' is not present in OPFS manifest.`);\n }\n try {\n const fileHandle = await ensureParentDirAndFileHandle(entry.path, false);\n const file = await fileHandle.getFile();\n await upsertManifestEntry(Object.assign(Object.assign({}, entry), { lastUsedAt: Date.now() }));\n return file;\n }\n catch (error) {\n throw new LlmError('STORAGE_IO_FAILED', `Failed to read model '${modelId}' from OPFS.`, {\n modelId,\n path: entry.path,\n cause: String(error),\n });\n }\n}\nexport async function removeModelFromOpfs(modelId) {\n const entry = await getManifestEntry(modelId);\n if (!entry)\n return;\n const root = await getRootDirectory();\n const parts = entry.path.split('/').filter(Boolean);\n const fileName = parts.pop();\n if (!fileName) {\n await removeManifestEntry(modelId);\n return;\n }\n try {\n let current = root;\n for (const dir of parts) {\n current = await current.getDirectoryHandle(dir, { create: false });\n }\n await current.removeEntry(fileName);\n }\n catch (error) {\n // Keep manifest cleanup deterministic even if file was already gone.\n if (!(error instanceof Error) || !/not found/i.test(error.message)) {\n throw new LlmError('STORAGE_IO_FAILED', `Failed to remove model '${modelId}' from OPFS.`, {\n modelId,\n path: entry.path,\n cause: String(error),\n });\n }\n }\n finally {\n await removeManifestEntry(modelId);\n }\n}\nexport async function getOpfsUsage() {\n var _a, _b, _c;\n const entries = await listManifestEntries();\n const usedBytes = entries.reduce((sum, e) => sum + (e.sizeBytes || 0), 0);\n const estimate = await ((_c = (_b = (_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _a === void 0 ? void 0 : _a.storage) === null || _b === void 0 ? void 0 : _b.estimate) === null || _c === void 0 ? void 0 : _c.call(_b));\n const quotaBytes = typeof (estimate === null || estimate === void 0 ? void 0 : estimate.quota) === 'number' ? estimate.quota : undefined;\n return { usedBytes, quotaBytes };\n}\n//# sourceMappingURL=opfs.store.js.map","import { LlmError } from './errors';\nimport { DefaultModelScheduler } from './model.scheduler';\nimport { WASM_MAX_CONCURRENT_MODELS, WASM_POOL_CEILING_BYTES, wasmMemoryPressure, } from './wasmMemoryPolicy';\nimport { ensureModelInOpfs, getOpfsUsage, } from '../storage/opfs.store';\nimport { getManifestEntry } from '../storage/manifest';\n// ---------------------------------------------------------------------------\n// Fix #10: Pre-flight capability checks\n// ---------------------------------------------------------------------------\n/** Verify that the browser supports everything the web WASM path needs. */\nexport function checkWasmCapabilities() {\n var _a, _b;\n const missing = [];\n if (typeof WebAssembly !== 'object' || typeof WebAssembly.instantiate !== 'function') {\n missing.push('WebAssembly');\n }\n if (typeof (globalThis === null || globalThis === void 0 ? void 0 : globalThis.Worker) === 'undefined') {\n missing.push('Worker');\n }\n if (typeof ((_b = (_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _a === void 0 ? void 0 : _a.storage) === null || _b === void 0 ? void 0 : _b.getDirectory) !== 'function') {\n missing.push('OPFS (navigator.storage.getDirectory)');\n }\n // WASM threads (needed for multi-threaded inference) require cross-origin\n // isolation. Warn but don't block — single-threaded inference still works.\n const coi = (globalThis === null || globalThis === void 0 ? void 0 : globalThis.crossOriginIsolated) === true;\n const hasShared = typeof SharedArrayBuffer !== 'undefined';\n if (!coi || !hasShared) {\n // Not a hard failure — single-threaded WASM still functions.\n // Callers can check this separately via checkCrossOriginIsolation().\n }\n return { supported: missing.length === 0, missing };\n}\n/** Returns true only when COOP/COEP headers are set for WASM threads. */\nexport function checkCrossOriginIsolation() {\n return ((globalThis === null || globalThis === void 0 ? void 0 : globalThis.crossOriginIsolated) === true &&\n typeof SharedArrayBuffer !== 'undefined');\n}\nconst toError = (code, message, meta) => {\n const knownCodes = [\n 'MODEL_NOT_LOADED',\n 'MODEL_LIMIT_REACHED',\n 'INSUFFICIENT_MEMORY',\n 'MODEL_DOWNLOAD_FAILED',\n 'STORAGE_UNAVAILABLE',\n 'STORAGE_IO_FAILED',\n 'UNSUPPORTED_PLATFORM',\n 'WASM_INIT_FAILED',\n 'NATIVE_PLUGIN_UNAVAILABLE',\n 'INFERENCE_FAILED',\n 'INVALID_REQUEST',\n ];\n const normalizedCode = knownCodes.includes(code) ? code : 'INFERENCE_FAILED';\n const text = message == null || message === ''\n ? 'Unknown inference error'\n : typeof message === 'string'\n ? message\n : String(message);\n return new LlmError(normalizedCode, text, meta);\n};\n// ---------------------------------------------------------------------------\n// Fix #11: Cross-browser memory snapshot using storage.estimate() fallback\n// ---------------------------------------------------------------------------\nasync function getMemorySnapshotCrossBrowser() {\n var _a, _b, _c, _d;\n // performance.memory is Chromium-only and non-standard. Use it when present,\n // otherwise fall back to storage.estimate() which is universally available.\n const perfMem = (_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.performance) === null || _a === void 0 ? void 0 : _a.memory;\n if (perfMem && typeof perfMem.jsHeapSizeLimit === 'number' && perfMem.jsHeapSizeLimit > 0) {\n const totalBytes = Number(perfMem.jsHeapSizeLimit);\n const usedBytes = Number(perfMem.usedJSHeapSize);\n const freeBytes = totalBytes - usedBytes;\n const usedRatio = usedBytes / totalBytes;\n const pressure = usedRatio >= 0.85 ? 'high' : usedRatio >= 0.7 ? 'medium' : 'low';\n return { totalBytes, usedBytes, freeBytes, pressure };\n }\n // Fallback: use OPFS storage quota as a coarse proxy for available memory.\n // Not perfect but gives the admission controller a real number to work with\n // on Safari/Firefox instead of always returning undefined (which caused the\n // memory guard to be silently bypassed — fix #11).\n try {\n const est = await ((_d = (_c = (_b = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _b === void 0 ? void 0 : _b.storage) === null || _c === void 0 ? void 0 : _c.estimate) === null || _d === void 0 ? void 0 : _d.call(_c));\n if (est && typeof est.quota === 'number' && typeof est.usage === 'number') {\n const totalBytes = est.quota;\n const usedBytes = est.usage;\n const freeBytes = totalBytes - usedBytes;\n const usedRatio = totalBytes > 0 ? usedBytes / totalBytes : 0;\n const pressure = usedRatio >= 0.85 ? 'high' : usedRatio >= 0.7 ? 'medium' : 'low';\n return { totalBytes, usedBytes, freeBytes, pressure };\n }\n }\n catch (_e) {\n // ignore\n }\n return { pressure: 'unknown' };\n}\n// ---------------------------------------------------------------------------\n// WebProvider\n// ---------------------------------------------------------------------------\nexport class WebProvider {\n constructor(workerFactoryOverride) {\n this.workerFactoryOverride = workerFactoryOverride;\n this.platform = 'web';\n this.loadedModelIds = new Set();\n this.worker = null;\n this.reqCounter = 0;\n this.pending = new Map();\n // Fix #5: wire the scheduler so admission control is enforced on the web path.\n this.scheduler = new DefaultModelScheduler(WASM_MAX_CONCURRENT_MODELS);\n }\n static setWorkerFactory(factory) {\n WebProvider.globalWorkerFactory = factory;\n }\n // Fix #15: resolve compiled worker .js first; fall back to .ts for dev.\n resolveWorkerUrl() {\n const customUrl = globalThis === null || globalThis === void 0 ? void 0 : globalThis.__LLAMA_WORKER_URL__;\n if (typeof customUrl === 'string' && customUrl.length > 0) {\n return customUrl;\n }\n try {\n const metaUrl = new Function('return import.meta.url')();\n return new URL('../../dist/workers/llm.worker.js', metaUrl);\n }\n catch (_a) {\n return '/dist/workers/llm.worker.js';\n }\n }\n defaultWorkerFactory() {\n return new Worker(this.resolveWorkerUrl(), { type: 'module' });\n }\n ensureWorker() {\n var _a, _b;\n if (this.worker)\n return this.worker;\n const factory = (_b = (_a = this.workerFactoryOverride) !== null && _a !== void 0 ? _a : WebProvider.globalWorkerFactory) !== null && _b !== void 0 ? _b : (() => this.defaultWorkerFactory());\n const worker = factory();\n worker.onmessage = (evt) => {\n var _a, _b;\n const message = evt.data;\n const request = this.pending.get(message.id);\n if (!request)\n return;\n if (message.type === 'TOKEN') {\n (_a = request.onToken) === null || _a === void 0 ? void 0 : _a.call(request, {\n modelId: message.modelId,\n token: message.token,\n index: message.index,\n });\n return;\n }\n if (message.type === 'PROGRESS') {\n (_b = request.onProgress) === null || _b === void 0 ? void 0 : _b.call(request, message.downloaded, message.total);\n return;\n }\n if (message.type === 'RESULT') {\n this.pending.delete(message.id);\n request.resolve(message.payload);\n return;\n }\n this.pending.delete(message.id);\n request.reject(toError(message.code, message.message, message.meta));\n };\n worker.onerror = (evt) => {\n const err = toError('INFERENCE_FAILED', `Web worker error: ${evt.message || 'unknown worker error'}`);\n for (const [id, req] of this.pending.entries()) {\n this.pending.delete(id);\n req.reject(err);\n }\n };\n this.worker = worker;\n return worker;\n }\n sendRequest(request, onToken, onProgress) {\n const worker = this.ensureWorker();\n const id = `req_${Date.now()}_${this.reqCounter++}`;\n const message = Object.assign(Object.assign({}, request), { id });\n return new Promise((resolve, reject) => {\n this.pending.set(id, { resolve, reject, onToken, onProgress });\n try {\n // Fix #9: no Transferable[] needed — the ArrayBuffer lives in the worker\n worker.postMessage(message);\n }\n catch (error) {\n this.pending.delete(id);\n reject(toError('INFERENCE_FAILED', 'Failed to post request to wasm worker.', {\n cause: String(error),\n requestType: request.type,\n }));\n }\n });\n }\n async initialize(opts) {\n // Fix #10: gate on capability check before touching the worker.\n // Skip when a custom worker factory is injected (tests / custom hosts).\n const usingCustomWorker = !!this.workerFactoryOverride || !!WebProvider.globalWorkerFactory;\n if (!usingCustomWorker) {\n const caps = checkWasmCapabilities();\n if (!caps.supported) {\n throw new LlmError('UNSUPPORTED_PLATFORM', `Missing browser capabilities for WASM inference: ${caps.missing.join(', ')}`, { missing: caps.missing });\n }\n }\n await this.sendRequest({ type: 'INIT' });\n await this.loadModel(opts);\n }\n async loadModel(opts) {\n var _a, _b, _c;\n if (!opts.modelId) {\n throw new LlmError('INVALID_REQUEST', 'modelId is required');\n }\n if (this.loadedModelIds.has(opts.modelId)) {\n return;\n }\n const existing = await getManifestEntry(opts.modelId);\n if (!existing && !opts.modelUrl) {\n throw new LlmError('INVALID_REQUEST', 'modelUrl is required for first-time web load when model is not cached in OPFS.');\n }\n // Download and persist to OPFS if needed (#6: with progress events).\n if (!existing && opts.modelUrl) {\n await ensureModelInOpfs(opts.modelId, opts.modelUrl, opts.onProgress);\n }\n // Fix #5: enforce admission control (memory guard + slot limit) BEFORE\n // asking the worker to load, using a real memory snapshot (#11).\n const memory = await getMemorySnapshotCrossBrowser();\n const wasmMemory = await this.fetchWorkerMemory().catch(() => ({}));\n const wasmLinearBytes = typeof wasmMemory.wasmLinearBytes === 'number' ? wasmMemory.wasmLinearBytes : undefined;\n const manifestEntry = existing !== null && existing !== void 0 ? existing : (await getManifestEntry(opts.modelId));\n const modelBytes = (_a = manifestEntry === null || manifestEntry === void 0 ? void 0 : manifestEntry.sizeBytes) !== null && _a !== void 0 ? _a : 0;\n this.scheduler.ensureCapacity(opts.modelId, modelBytes, memory, undefined, {\n wasmLinearBytes,\n wasmPoolCeilingBytes: WASM_POOL_CEILING_BYTES,\n loadOpts: {\n n_ctx: opts.n_ctx,\n n_batch: opts.n_batch,\n embedding: opts.embedding,\n },\n });\n // Fix #9: send modelId only — the worker reads from OPFS internally.\n const loadResult = await this.sendRequest({\n type: 'LOAD_MODEL',\n modelId: opts.modelId,\n opts: {\n modelPath: (_c = (_b = opts.modelPath) !== null && _b !== void 0 ? _b : opts.model_path) !== null && _c !== void 0 ? _c : manifestEntry === null || manifestEntry === void 0 ? void 0 : manifestEntry.path,\n modelBytes,\n n_ctx: opts.n_ctx,\n n_batch: opts.n_batch,\n n_gpu_layers: opts.n_gpu_layers,\n n_threads: opts.n_threads,\n embedding: opts.embedding,\n use_mmap: opts.use_mmap,\n preferVfsStreaming: opts.preferVfsStreaming,\n },\n }, undefined, opts.onProgress);\n let measuredFootprint = loadResult.measuredFootprintBytes;\n if (!(typeof measuredFootprint === 'number' && measuredFootprint > 0)) {\n const workerMem = await this.fetchWorkerMemory().catch(() => ({}));\n measuredFootprint = this.readMeasuredFootprintFromWorker(workerMem, opts.modelId);\n }\n this.loadedModelIds.add(opts.modelId);\n this.scheduler.markLoaded(opts.modelId, modelBytes, {\n n_ctx: opts.n_ctx,\n n_batch: opts.n_batch,\n embedding: opts.embedding,\n }, measuredFootprint);\n if (typeof measuredFootprint === 'number' && measuredFootprint > 0) {\n this.scheduler.calibrateFootprint(opts.modelId, measuredFootprint);\n }\n }\n readMeasuredFootprintFromWorker(workerMem, modelId) {\n const models = workerMem.loadedModels;\n if (!Array.isArray(models))\n return undefined;\n for (const row of models) {\n if (!row || typeof row !== 'object')\n continue;\n const entry = row;\n if (entry.modelId !== modelId)\n continue;\n if (typeof entry.measuredFootprintBytes === 'number' && entry.measuredFootprintBytes > 0) {\n return entry.measuredFootprintBytes;\n }\n }\n return undefined;\n }\n async unloadModel(modelId) {\n if (!this.loadedModelIds.has(modelId)) {\n return;\n }\n await this.sendRequest({ type: 'UNLOAD_MODEL', modelId });\n this.loadedModelIds.delete(modelId);\n this.scheduler.markUnloaded(modelId);\n }\n async generate(req) {\n if (!this.loadedModelIds.has(req.modelId)) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${req.modelId}' is not loaded`);\n }\n return this.sendRequest({\n type: 'GENERATE',\n modelId: req.modelId,\n req: {\n prompt: req.prompt,\n messages: req.messages,\n max_tokens: req.max_tokens,\n temperature: req.temperature,\n stream: false,\n },\n });\n }\n async generateStream(req, onToken) {\n if (!this.loadedModelIds.has(req.modelId)) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${req.modelId}' is not loaded`);\n }\n return this.sendRequest({\n type: 'GENERATE',\n modelId: req.modelId,\n req: {\n prompt: req.prompt,\n messages: req.messages,\n max_tokens: req.max_tokens,\n temperature: req.temperature,\n stream: true,\n },\n }, onToken);\n }\n async embed(req) {\n if (!this.loadedModelIds.has(req.modelId)) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${req.modelId}' is not loaded`);\n }\n return this.sendRequest({\n type: 'EMBED',\n modelId: req.modelId,\n input: req.input,\n });\n }\n // Fix #11: use cross-browser memory snapshot instead of performance.memory only.\n async getMemorySnapshot() {\n return getMemorySnapshotCrossBrowser();\n }\n /** Worker WASM linear memory + loaded-model registry (for scheduling UI). */\n async fetchWorkerMemory() {\n return this.sendRequest({ type: 'MEMORY' });\n }\n async getWasmMemoryStatus() {\n const [browser, workerRaw] = await Promise.all([\n getMemorySnapshotCrossBrowser(),\n this.fetchWorkerMemory().catch(() => ({})),\n ]);\n const worker = workerRaw;\n const wasmLinearBytes = typeof worker.wasmLinearBytes === 'number' ? worker.wasmLinearBytes : undefined;\n return {\n browser,\n worker,\n wasmLinearBytes,\n wasmPoolCeilingBytes: WASM_POOL_CEILING_BYTES,\n wasmHeadroomBytes: typeof wasmLinearBytes === 'number'\n ? Math.max(0, WASM_POOL_CEILING_BYTES - wasmLinearBytes)\n : undefined,\n pressure: typeof wasmLinearBytes === 'number'\n ? wasmMemoryPressure(wasmLinearBytes, WASM_POOL_CEILING_BYTES)\n : browser.pressure,\n loadedModels: this.loadedModelIds.size,\n maxModels: WASM_MAX_CONCURRENT_MODELS,\n schedulerFootprintBytes: this.scheduler.totalFootprintBytes(),\n };\n }\n async tokenize(modelId, text) {\n if (!this.loadedModelIds.has(modelId)) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${modelId}' is not loaded`);\n }\n return this.sendRequest({ type: 'TOKENIZE', modelId, text });\n }\n async detokenize(modelId, tokens) {\n if (!this.loadedModelIds.has(modelId)) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${modelId}' is not loaded`);\n }\n return this.sendRequest({ type: 'DETOKENIZE', modelId, tokens });\n }\n async convertJsonSchemaToGrammar(schemaJson) {\n // CONVERT_GRAMMAR is context-free — no model needs to be loaded.\n // The worker must be initialised (INIT sent), but that happens on first use.\n const result = await this.sendRequest({\n type: 'CONVERT_GRAMMAR',\n schemaJson,\n });\n return result.grammar;\n }\n requireLoaded(modelId) {\n if (!this.loadedModelIds.has(modelId)) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${modelId}' is not loaded`);\n }\n }\n async rerank(modelId, query, documents) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'RERANK',\n modelId,\n query,\n documents,\n });\n return result.results;\n }\n async bench(modelId, pp, tg, pl, nr) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'BENCH',\n modelId,\n pp,\n tg,\n pl,\n nr,\n });\n return result.result;\n }\n async saveSession(modelId, filepath, tokenSize) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'SAVE_SESSION',\n modelId,\n filepath,\n tokenSize,\n });\n return result.tokens_saved;\n }\n async loadSession(modelId, filepath) {\n this.requireLoaded(modelId);\n return this.sendRequest({\n type: 'LOAD_SESSION',\n modelId,\n filepath,\n });\n }\n async applyLoraAdapters(modelId, loraAdapters) {\n this.requireLoaded(modelId);\n await this.sendRequest({\n type: 'APPLY_LORA',\n modelId,\n loraAdapters,\n });\n }\n async removeLoraAdapters(modelId) {\n this.requireLoaded(modelId);\n await this.sendRequest({ type: 'REMOVE_LORA', modelId });\n }\n async getLoadedLoraAdapters(modelId) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'GET_LORA',\n modelId,\n });\n return result.adapters;\n }\n async initMultimodal(modelId, path, useGpu = false) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'INIT_MULTIMODAL',\n modelId,\n path,\n useGpu,\n });\n return !!result.ok;\n }\n async isMultimodalEnabled(modelId) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'MULTIMODAL_STATUS',\n modelId,\n });\n return !!result.enabled;\n }\n async getMultimodalSupport(modelId) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'MULTIMODAL_STATUS',\n modelId,\n });\n return { vision: !!result.vision, audio: !!result.audio };\n }\n async releaseMultimodal(modelId) {\n await this.sendRequest({ type: 'RELEASE_MULTIMODAL', modelId });\n }\n async initVocoder(modelId, path, nBatch = 512) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'INIT_VOCODER',\n modelId,\n path,\n nBatch,\n });\n return !!result.ok;\n }\n async isVocoderEnabled(modelId) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'VOCODER_ENABLED',\n modelId,\n });\n return !!result.enabled;\n }\n async releaseVocoder(modelId) {\n await this.sendRequest({ type: 'RELEASE_VOCODER', modelId });\n }\n async getFormattedAudioCompletion(modelId, speaker, textToSpeak) {\n this.requireLoaded(modelId);\n return this.sendRequest({\n type: 'FORMATTED_AUDIO',\n modelId,\n speakerJson: speaker ? JSON.stringify(speaker) : '',\n textToSpeak,\n });\n }\n async getAudioCompletionGuideTokens(modelId, textToSpeak) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'AUDIO_GUIDE_TOKENS',\n modelId,\n textToSpeak,\n });\n return result.tokens;\n }\n async decodeAudioTokens(modelId, tokens) {\n this.requireLoaded(modelId);\n const result = await this.sendRequest({\n type: 'DECODE_AUDIO_TOKENS',\n modelId,\n tokens,\n });\n return result.audio;\n }\n /**\n * Terminate the worker mid-inference. WASM is single-threaded, so posting\n * an abort message cannot be received while generate() is running. Worker\n * termination is the only reliable interrupt. The model will need to be\n * reloaded on the next generate() call.\n */\n stopGeneration() {\n if (!this.worker)\n return;\n this.worker.terminate();\n this.worker = null;\n const interrupted = toError('INFERENCE_FAILED', 'Generation stopped by caller.');\n for (const [id, req] of this.pending.entries()) {\n this.pending.delete(id);\n req.reject(interrupted);\n }\n // Worker is gone, so all previously tracked model IDs are invalid.\n this.loadedModelIds.clear();\n for (const id of this.scheduler.listLoaded()) {\n this.scheduler.markUnloaded(id);\n }\n }\n async health() {\n const usage = await getOpfsUsage().catch(() => ({\n usedBytes: 0,\n quotaBytes: undefined,\n }));\n const workerHealth = await this.sendRequest({ type: 'HEALTH' }).catch((error) => ({\n ok: false,\n message: error instanceof Error ? error.message : String(error),\n }));\n const workerRecord = workerHealth;\n const workerDetails = workerRecord.details;\n return {\n ok: !!(workerHealth === null || workerHealth === void 0 ? void 0 : workerHealth.ok),\n details: {\n loadedModels: this.loadedModelIds.size,\n opfsUsedBytes: usage.usedBytes,\n opfsQuotaBytes: usage.quotaBytes,\n worker: workerHealth,\n crossOriginIsolated: checkCrossOriginIsolation(),\n wasmJspi: workerDetails === null || workerDetails === void 0 ? void 0 : workerDetails.wasmJspi,\n wasmPthread: workerDetails === null || workerDetails === void 0 ? void 0 : workerDetails.wasmPthread,\n },\n };\n }\n}\n//# sourceMappingURL=provider.web.js.map","/**\n * Detect desktop (Electron / Tauri / Node) runtime vs mobile browser.\n */\nexport function isElectronRuntime() {\n if (typeof process !== 'undefined' && process.versions && process.versions.electron) {\n return true;\n }\n return false;\n}\nexport function isDesktopRuntime() {\n if (isElectronRuntime())\n return true;\n if (typeof globalThis !== 'undefined' && globalThis.__annadataDesktop) {\n return true;\n }\n return false;\n}\n/** Sidecar HTTP port injected by Electron preload / main process. */\nexport function getDesktopSidecarPort() {\n const g = globalThis;\n if (typeof g.__annadataSidecarPort === 'number' && g.__annadataSidecarPort > 0) {\n return g.__annadataSidecarPort;\n }\n if (typeof process !== 'undefined' && process.env.LLAMA_SIDECAR_PORT) {\n const p = parseInt(process.env.LLAMA_SIDECAR_PORT, 10);\n if (!Number.isNaN(p) && p > 0)\n return p;\n }\n return null;\n}\nexport function getDesktopBridge() {\n var _a;\n const g = globalThis;\n return (_a = g.annadataLlama) !== null && _a !== void 0 ? _a : null;\n}\n//# sourceMappingURL=desktop.runtime.js.map","/** Extract a token string from one SSE `data:` JSON payload (empty if none). */\nexport function extractSidecarSseToken(payload, kind) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (payload === '[DONE]') {\n return '';\n }\n try {\n const chunk = JSON.parse(payload);\n if (kind === 'chat') {\n return (_d = (_c = (_b = (_a = chunk.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.delta) === null || _c === void 0 ? void 0 : _c.content) !== null && _d !== void 0 ? _d : '';\n }\n return (_g = (_f = (_e = chunk.choices) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.text) !== null && _g !== void 0 ? _g : '';\n }\n catch (_h) {\n return '';\n }\n}\n/** Parse a single SSE line; returns a token when present. */\nexport function parseSidecarSseLine(line, kind) {\n if (!line.startsWith('data: ')) {\n return null;\n }\n const payload = line.slice(6).trim();\n if (payload === '[DONE]') {\n return null;\n }\n const token = extractSidecarSseToken(payload, kind);\n return token ? token : null;\n}\n/** Buffers decoded stream bytes into complete newline-delimited lines. */\nexport class SidecarSseLineParser {\n constructor() {\n this.buffer = '';\n }\n feed(chunk) {\n var _a;\n this.buffer += chunk;\n const lines = this.buffer.split('\\n');\n this.buffer = (_a = lines.pop()) !== null && _a !== void 0 ? _a : '';\n return lines;\n }\n flush() {\n if (!this.buffer) {\n return [];\n }\n const line = this.buffer;\n this.buffer = '';\n return [line];\n }\n}\n/** Read token chunks from a fetch `ReadableStream` body. */\nexport async function readSidecarSseTokens(body, kind, onToken) {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n const parser = new SidecarSseLineParser();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n const lines = parser.feed(decoder.decode(value, { stream: true }));\n for (const line of lines) {\n const token = parseSidecarSseLine(line, kind);\n if (token) {\n onToken(token);\n }\n }\n }\n for (const line of parser.flush()) {\n const token = parseSidecarSseLine(line, kind);\n if (token) {\n onToken(token);\n }\n }\n}\n//# sourceMappingURL=sidecar-sse.js.map","import { getDesktopBridge, getDesktopSidecarPort } from './desktop.runtime';\nimport { readSidecarSseTokens } from './sidecar-sse';\nimport { WebProvider } from './provider.web';\nimport { LlmError } from './errors';\nimport { DefaultModelScheduler } from './model.scheduler';\nimport { WASM_MAX_CONCURRENT_MODELS } from './wasmMemoryPolicy';\nconst MAX_MODELS = WASM_MAX_CONCURRENT_MODELS;\n/**\n * Desktop LLM provider: native sidecar (HTTP) for GPU/CPU inference;\n * WASM worker for multimodal, LoRA, TTS, bench (inherited via composition).\n * Sidecar path supports up to 5 concurrent models with admission control.\n */\nexport class DesktopProvider extends WebProvider {\n constructor() {\n super(...arguments);\n this.platform = 'desktop';\n this.sidecarPort = null;\n this.sidecarScheduler = new DefaultModelScheduler(MAX_MODELS);\n this.sidecarLoadedModels = new Set();\n this.modelPaths = new Map();\n }\n getPort() {\n if (this.sidecarPort != null)\n return this.sidecarPort;\n const p = getDesktopSidecarPort();\n if (p == null) {\n throw new LlmError('NATIVE_PLUGIN_UNAVAILABLE', 'Desktop sidecar port not set. Register desktop IPC handlers and preload bridge.');\n }\n this.sidecarPort = p;\n return p;\n }\n sidecarAvailable() {\n try {\n this.getPort();\n return true;\n }\n catch (_a) {\n return false;\n }\n }\n async getDesktopMemorySnapshot() {\n const bridge = getDesktopBridge();\n if (bridge === null || bridge === void 0 ? void 0 : bridge.getMemorySnapshot) {\n return bridge.getMemorySnapshot();\n }\n return super.getMemorySnapshot();\n }\n mapSidecarHttpError(status, text) {\n if (status === 429 || text.includes('model_limit_reached') || text.includes('Model limit')) {\n return new LlmError('MODEL_LIMIT_REACHED', text.slice(0, 200));\n }\n if (text.includes('INSUFFICIENT') || text.includes('memory')) {\n return new LlmError('INSUFFICIENT_MEMORY', text.slice(0, 200));\n }\n if (status === 404 && text.includes('model_not_found')) {\n return new LlmError('MODEL_NOT_LOADED', text.slice(0, 200));\n }\n return new LlmError('INFERENCE_FAILED', `Sidecar HTTP ${status}: ${text.slice(0, 200)}`);\n }\n async sidecarFetch(path, method, body, timeoutMs = 120000) {\n var _a;\n const port = this.getPort();\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n try {\n const res = await fetch(`http://127.0.0.1:${port}${path}`, {\n method,\n headers: { 'Content-Type': 'application/json' },\n body: body != null ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n if (!res.ok) {\n const text = await res.text();\n throw this.mapSidecarHttpError(res.status, text);\n }\n const ct = (_a = res.headers.get('content-type')) !== null && _a !== void 0 ? _a : '';\n if (ct.includes('application/json')) {\n return (await res.json());\n }\n return {};\n }\n finally {\n clearTimeout(timer);\n }\n }\n async ensureSidecarProcess(opts) {\n var _a;\n if (this.sidecarAvailable()) {\n return;\n }\n const bridge = getDesktopBridge();\n if (!(bridge === null || bridge === void 0 ? void 0 : bridge.ensureSidecar)) {\n throw new LlmError('NATIVE_PLUGIN_UNAVAILABLE', 'Desktop IPC bridge not available — register ipc-handlers in Electron main.');\n }\n const payload = {\n modelId: opts === null || opts === void 0 ? void 0 : opts.modelId,\n n_ctx: opts === null || opts === void 0 ? void 0 : opts.n_ctx,\n n_gpu_layers: opts === null || opts === void 0 ? void 0 : opts.n_gpu_layers,\n n_threads: opts === null || opts === void 0 ? void 0 : opts.n_threads,\n embedding: opts === null || opts === void 0 ? void 0 : opts.embedding,\n };\n if (opts === null || opts === void 0 ? void 0 : opts.modelPath) {\n payload.modelPath = opts.modelPath;\n }\n const result = await bridge.ensureSidecar(payload);\n if (!(result === null || result === void 0 ? void 0 : result.ok) || !result.port) {\n throw new LlmError('NATIVE_PLUGIN_UNAVAILABLE', `Sidecar failed to start: ${(_a = result === null || result === void 0 ? void 0 : result.reason) !== null && _a !== void 0 ? _a : 'unknown'}`);\n }\n this.setSidecarPort(result.port);\n }\n requireSidecarModel(modelId) {\n if (!this.sidecarLoadedModels.has(modelId)) {\n throw new LlmError('MODEL_NOT_LOADED', `Model '${modelId}' is not loaded on desktop sidecar`);\n }\n }\n async setContextLimit(limit) {\n const clamped = Math.min(MAX_MODELS, Math.max(1, Math.floor(limit)));\n this.sidecarScheduler = new DefaultModelScheduler(clamped);\n for (const modelId of this.sidecarLoadedModels) {\n this.sidecarScheduler.markLoaded(modelId);\n }\n if (this.sidecarAvailable()) {\n await this.sidecarFetch('/v1/internal/context-limit', 'POST', { limit: clamped }, 5000);\n }\n }\n listLoadedModels() {\n return this.sidecarScheduler.listLoaded();\n }\n async sidecarStreamChat(req, onToken) {\n var _a, _b;\n const port = this.getPort();\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 300000);\n let text = '';\n let index = 0;\n try {\n const res = await fetch(`http://127.0.0.1:${port}/v1/chat/completions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n model: req.modelId,\n messages: req.messages,\n prompt: req.prompt,\n max_tokens: (_a = req.max_tokens) !== null && _a !== void 0 ? _a : 256,\n temperature: (_b = req.temperature) !== null && _b !== void 0 ? _b : 0.7,\n stream: true,\n }),\n signal: controller.signal,\n });\n if (!res.ok || !res.body) {\n throw new LlmError('INFERENCE_FAILED', `Sidecar stream failed: ${res.status}`);\n }\n await readSidecarSseTokens(res.body, 'chat', (token) => {\n text += token;\n onToken({ modelId: req.modelId, token, index: index++ });\n });\n }\n finally {\n clearTimeout(timer);\n }\n return {\n text,\n tokens_predicted: index,\n tokens_evaluated: 0,\n finish_reason: 'stop',\n };\n }\n async sidecarStreamCompletion(req, onToken) {\n var _a, _b, _c;\n const port = this.getPort();\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 300000);\n let text = '';\n let index = 0;\n try {\n const res = await fetch(`http://127.0.0.1:${port}/v1/completions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n model: req.modelId,\n prompt: (_a = req.prompt) !== null && _a !== void 0 ? _a : '',\n max_tokens: (_b = req.max_tokens) !== null && _b !== void 0 ? _b : 256,\n temperature: (_c = req.temperature) !== null && _c !== void 0 ? _c : 0.7,\n stream: true,\n }),\n signal: controller.signal,\n });\n if (!res.ok || !res.body) {\n throw new LlmError('INFERENCE_FAILED', `Sidecar stream failed: ${res.status}`);\n }\n await readSidecarSseTokens(res.body, 'completion', (token) => {\n text += token;\n onToken({ modelId: req.modelId, token, index: index++ });\n });\n }\n finally {\n clearTimeout(timer);\n }\n return {\n text,\n tokens_predicted: index,\n tokens_evaluated: 0,\n finish_reason: 'stop',\n };\n }\n async initialize(opts) {\n if (!this.sidecarAvailable()) {\n await this.ensureSidecarProcess(opts);\n }\n if (!this.sidecarAvailable()) {\n await super.initialize(opts);\n return;\n }\n await this.loadModel(opts);\n }\n async loadModel(opts) {\n var _a;\n if (!opts.modelId) {\n throw new LlmError('INVALID_REQUEST', 'modelId is required');\n }\n await this.ensureSidecarProcess(opts);\n if (!this.sidecarAvailable()) {\n await super.loadModel(opts);\n return;\n }\n const modelPath = (_a = opts.modelPath) !== null && _a !== void 0 ? _a : opts.modelId;\n // Never register absolute filesystem paths as sidecar ids (DELETE route is single-segment).\n const modelId = (() => {\n const raw = opts.modelId;\n if (!raw.includes('/') && !raw.includes('\\\\'))\n return raw;\n const base = raw.split(/[/\\\\]/).pop() || raw;\n return base.replace(/\\.gguf$/i, '') || base;\n })();\n if (this.sidecarLoadedModels.has(modelId)) {\n return;\n }\n const modelBytes = typeof opts.modelBytes === 'number' ? opts.modelBytes : 0;\n // Sidecar (Metal/Accelerate) reclaims macOS inactive pages; keep a modest reserve.\n const reserveBytes = typeof opts.reserveBytes === 'number' ? opts.reserveBytes : 128 * 1024 * 1024;\n const memory = await this.getDesktopMemorySnapshot();\n if (typeof opts.availableMemoryBytes === 'number') {\n memory.freeBytes = opts.availableMemoryBytes;\n }\n if (typeof opts.totalMemoryBytes === 'number') {\n memory.totalBytes = opts.totalMemoryBytes;\n }\n // If host free RAM still looks absurdly low vs total (Node freemem quirk / no IPC),\n // treat a fraction of total as available rather than blocking every load.\n if (typeof memory.totalBytes === 'number' &&\n typeof memory.freeBytes === 'number' &&\n memory.totalBytes > 0 &&\n memory.freeBytes / memory.totalBytes < 0.05) {\n memory.freeBytes = Math.floor(memory.totalBytes * 0.45);\n }\n this.sidecarScheduler.ensureCapacity(modelId, modelBytes, memory, reserveBytes, {\n skipWasm: true,\n loadOpts: { n_ctx: opts.n_ctx, embedding: opts.embedding },\n });\n await this.sidecarFetch('/v1/internal/models/load', 'POST', {\n model_id: modelId,\n path: modelPath,\n n_ctx: opts.n_ctx,\n n_gpu_layers: opts.n_gpu_layers,\n n_threads: opts.n_threads,\n embedding: opts.embedding,\n }, 300000);\n this.sidecarLoadedModels.add(modelId);\n this.modelPaths.set(modelId, modelPath);\n this.sidecarScheduler.markLoaded(modelId, modelBytes, {\n n_ctx: opts.n_ctx,\n embedding: opts.embedding,\n });\n }\n async unloadModel(modelId) {\n if (!this.sidecarAvailable()) {\n await super.unloadModel(modelId);\n return;\n }\n const normalized = (() => {\n if (!modelId.includes('/') && !modelId.includes('\\\\'))\n return modelId;\n const base = modelId.split(/[/\\\\]/).pop() || modelId;\n return base.replace(/\\.gguf$/i, '') || base;\n })();\n if (!this.sidecarLoadedModels.has(normalized) && !this.sidecarLoadedModels.has(modelId)) {\n return;\n }\n const id = this.sidecarLoadedModels.has(normalized) ? normalized : modelId;\n try {\n await this.sidecarFetch(`/v1/internal/models/${encodeURIComponent(id)}`, 'DELETE', undefined, 60000);\n }\n catch (_a) {\n /* model may already be gone on sidecar */\n }\n this.sidecarLoadedModels.delete(id);\n this.sidecarLoadedModels.delete(modelId);\n this.modelPaths.delete(id);\n this.modelPaths.delete(modelId);\n this.sidecarScheduler.markUnloaded(id);\n }\n async generate(req) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;\n if (!this.sidecarAvailable()) {\n return super.generate(req);\n }\n this.requireSidecarModel(req.modelId);\n if (req.messages && req.messages.length > 0) {\n const data = await this.sidecarFetch('/v1/chat/completions', 'POST', {\n model: req.modelId,\n messages: req.messages,\n max_tokens: (_a = req.max_tokens) !== null && _a !== void 0 ? _a : 256,\n temperature: (_b = req.temperature) !== null && _b !== void 0 ? _b : 0.7,\n stream: false,\n });\n const text = (_f = (_e = (_d = (_c = data.choices) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.message) === null || _e === void 0 ? void 0 : _e.content) !== null && _f !== void 0 ? _f : '';\n return {\n text,\n tokens_predicted: (_h = (_g = data.usage) === null || _g === void 0 ? void 0 : _g.completion_tokens) !== null && _h !== void 0 ? _h : 0,\n tokens_evaluated: (_k = (_j = data.usage) === null || _j === void 0 ? void 0 : _j.prompt_tokens) !== null && _k !== void 0 ? _k : 0,\n finish_reason: 'stop',\n };\n }\n const data = await this.sidecarFetch('/v1/completions', 'POST', {\n model: req.modelId,\n prompt: (_l = req.prompt) !== null && _l !== void 0 ? _l : '',\n max_tokens: (_m = req.max_tokens) !== null && _m !== void 0 ? _m : 256,\n temperature: (_o = req.temperature) !== null && _o !== void 0 ? _o : 0.7,\n stream: false,\n });\n return {\n text: (_r = (_q = (_p = data.choices) === null || _p === void 0 ? void 0 : _p[0]) === null || _q === void 0 ? void 0 : _q.text) !== null && _r !== void 0 ? _r : '',\n tokens_predicted: (_t = (_s = data.usage) === null || _s === void 0 ? void 0 : _s.completion_tokens) !== null && _t !== void 0 ? _t : 0,\n tokens_evaluated: (_v = (_u = data.usage) === null || _u === void 0 ? void 0 : _u.prompt_tokens) !== null && _v !== void 0 ? _v : 0,\n finish_reason: 'stop',\n };\n }\n async generateStream(req, onToken) {\n if (!this.sidecarAvailable()) {\n return super.generateStream(req, onToken);\n }\n this.requireSidecarModel(req.modelId);\n if (req.messages && req.messages.length > 0) {\n return this.sidecarStreamChat(req, onToken);\n }\n return this.sidecarStreamCompletion(req, onToken);\n }\n async embed(req) {\n var _a;\n if (!this.sidecarAvailable()) {\n return super.embed(req);\n }\n this.requireSidecarModel(req.modelId);\n const input = Array.isArray(req.input) ? req.input : [req.input];\n const data = await this.sidecarFetch('/v1/embeddings', 'POST', { model: req.modelId, input });\n return { vectors: ((_a = data.data) !== null && _a !== void 0 ? _a : []).map((d) => { var _a; return (_a = d.embedding) !== null && _a !== void 0 ? _a : []; }) };\n }\n async tokenize(modelId, text) {\n if (!this.sidecarAvailable()) {\n return super.tokenize(modelId, text);\n }\n return super.tokenize(modelId, text);\n }\n async detokenize(modelId, tokens) {\n if (!this.sidecarAvailable()) {\n return super.detokenize(modelId, tokens);\n }\n return super.detokenize(modelId, tokens);\n }\n async getMemorySnapshot() {\n if (!this.sidecarAvailable()) {\n return super.getMemorySnapshot();\n }\n const memory = await this.getDesktopMemorySnapshot();\n try {\n const reg = await this.sidecarFetch('/v1/internal/memory', 'GET', undefined, 5000);\n return Object.assign(Object.assign({}, memory), { loadedModelCount: reg.loaded_count, maxModels: reg.max_models });\n }\n catch (_a) {\n return memory;\n }\n }\n async health() {\n if (!this.sidecarAvailable()) {\n return super.health();\n }\n try {\n const h = await this.sidecarFetch('/health', 'GET', undefined, 5000);\n return {\n ok: h.status === 'ok',\n details: {\n backend: 'sidecar',\n port: this.getPort(),\n platform: 'desktop',\n loadedModels: this.listLoadedModels(),\n registry: h.registry,\n },\n };\n }\n catch (err) {\n return { ok: false, details: { error: String(err) } };\n }\n }\n setSidecarPort(port) {\n this.sidecarPort = port;\n if (typeof globalThis !== 'undefined') {\n globalThis.__annadataSidecarPort = port;\n }\n }\n}\n//# sourceMappingURL=provider.desktop.js.map","import { Capacitor } from '@capacitor/core';\nimport { NativeProvider } from './provider.native';\nimport { WebProvider } from './provider.web';\nimport { DesktopProvider } from './provider.desktop';\nimport { isDesktopRuntime } from './desktop.runtime';\nexport function createLlmProvider() {\n if (isDesktopRuntime()) {\n return new DesktopProvider();\n }\n const platform = Capacitor.getPlatform();\n if (platform === 'ios' || platform === 'android') {\n return new NativeProvider();\n }\n return new WebProvider();\n}\n//# sourceMappingURL=provider.factory.js.map","import { WebProvider } from './isomorphic/provider.web';\nimport { ensureModelInOpfs } from './storage/opfs.store';\nimport { listManifestEntries } from './storage/manifest';\n// ---------------------------------------------------------------------------\n// Fix #4: LlamaCppWeb now delegates real inference work to WebProvider so\n// that calling the standard Capacitor LlamaCpp API on the web platform routes\n// through the WASM engine rather than throwing \"not supported\" errors.\n// ---------------------------------------------------------------------------\nconst MODEL_DESC_STUB = {\n desc: 'WASM model',\n size: 0,\n nEmbd: 0,\n nParams: 0,\n chatTemplates: {\n llamaChat: true,\n minja: {\n default: true,\n defaultCaps: {\n tools: false, toolCalls: false, toolResponses: false,\n systemRole: true, parallelToolCalls: false, toolCallId: false,\n },\n toolUse: false,\n toolUseCaps: {\n tools: false, toolCalls: false, toolResponses: false,\n systemRole: true, parallelToolCalls: false, toolCallId: false,\n },\n },\n },\n metadata: {},\n isChatTemplateSupported: true,\n};\n/**\n * Format a message array into a prompt string using the specified template.\n * Supports the four most common open-weight model formats. Defaults to ChatML.\n */\nfunction formatMessagesWithTemplate(messages, template) {\n const tpl = (template !== null && template !== void 0 ? template : 'chatml').toLowerCase();\n if (tpl === 'llama3' || tpl === 'llama-3') {\n const parts = messages.map((m) => `<|start_header_id|>${m.role}<|end_header_id|>\\n\\n${m.content}<|eot_id|>`);\n return `<|begin_of_text|>${parts.join('')}<|start_header_id|>assistant<|end_header_id|>\\n\\n`;\n }\n if (tpl === 'mistral') {\n // Mistral: [INST] user [/INST] assistant </s> [INST] ...\n let out = '';\n for (let i = 0; i < messages.length; i++) {\n const m = messages[i];\n if (m.role === 'system') {\n out += `[INST] ${m.content}\\n`;\n }\n else if (m.role === 'user') {\n out += `[INST] ${m.content} [/INST]`;\n }\n else if (m.role === 'assistant') {\n out += ` ${m.content}</s>`;\n }\n }\n return out;\n }\n if (tpl === 'gemma' || tpl === 'gemma2') {\n const parts = messages.map((m) => `<start_of_turn>${m.role}\\n${m.content}<end_of_turn>`);\n return `${parts.join('\\n')}\\n<start_of_turn>model\\n`;\n }\n // Default: ChatML — widely used by Qwen, Phi, Hermes, OpenChat, etc.\n const parts = messages.map((m) => `<|im_start|>${m.role}\\n${m.content}<|im_end|>`);\n return `${parts.join('\\n')}\\n<|im_start|>assistant\\n`;\n}\nconst activeDownloads = new Map();\n/** Map a user-facing path to a WASM VFS path (MEMFS /tmp). */\nfunction vfsPathForWeb(filepath) {\n var _a;\n if (filepath.startsWith('/'))\n return filepath;\n const base = (_a = filepath.split(/[/\\\\]/).pop()) !== null && _a !== void 0 ? _a : 'file.bin';\n return `/tmp/${base}`;\n}\nexport class LlamaCppWeb {\n constructor() {\n this.provider = new WebProvider();\n // contextId → modelId\n this.contextToModel = new Map();\n // eventName → Set of listener callbacks\n this.listeners = new Map();\n }\n emitListener(eventName, data) {\n var _a;\n (_a = this.listeners.get(eventName)) === null || _a === void 0 ? void 0 : _a.forEach((cb) => cb(data));\n }\n hasListeners(eventName) {\n const set = this.listeners.get(eventName);\n return !!set && set.size > 0;\n }\n // -------------------------------------------------------------------------\n // Core initialization\n // -------------------------------------------------------------------------\n async toggleNativeLog() {\n // No-op on web; no native log callback to toggle.\n }\n async setContextLimit(_opts) {\n // No-op on web; WebProvider manages its own slot limit via DefaultModelScheduler.\n }\n async modelInfo({ path }) {\n var _a;\n const entry = await listManifestEntries().then((es) => es.find((e) => e.modelId === path || e.path === path));\n return Object.assign(Object.assign({}, MODEL_DESC_STUB), { path, desc: 'WASM model (web)', size: (_a = entry === null || entry === void 0 ? void 0 : entry.sizeBytes) !== null && _a !== void 0 ? _a : 0 });\n }\n async initContext({ contextId, params, }) {\n var _a;\n // Use the model path/URL as the modelId for the isomorphic layer.\n const modelId = params.model;\n await this.provider.initialize({\n modelId,\n modelPath: params.model,\n // If model is a URL, ensureModelInOpfs will download it; if it's an\n // OPFS-relative path, WebProvider will look it up in the manifest.\n modelUrl: ((_a = params.model) === null || _a === void 0 ? void 0 : _a.startsWith('http')) ? params.model : undefined,\n n_ctx: params.n_ctx,\n n_threads: params.n_threads,\n embedding: params.embedding,\n });\n this.contextToModel.set(contextId, modelId);\n return {\n contextId,\n gpu: false,\n reasonNoGPU: 'WebAssembly does not expose GPU acceleration in browsers',\n model: MODEL_DESC_STUB,\n };\n }\n async releaseContext({ contextId }) {\n const modelId = this.contextToModel.get(contextId);\n if (modelId) {\n await this.provider.unloadModel(modelId);\n this.contextToModel.delete(contextId);\n }\n }\n async releaseAllContexts() {\n for (const [contextId, modelId] of this.contextToModel.entries()) {\n await this.provider.unloadModel(modelId).catch(() => { });\n this.contextToModel.delete(contextId);\n }\n }\n // -------------------------------------------------------------------------\n // Chat and completion\n // -------------------------------------------------------------------------\n async getFormattedChat({ contextId, messages, chatTemplate, params, }) {\n const parsed = JSON.parse(messages);\n // If the provider exposes a native getFormattedChat (desktop sidecar or WASM with Jinja),\n // delegate to it so model-embedded templates are used instead of client-side formatters.\n const modelId = this.contextToModel.get(contextId);\n if (modelId && typeof this.provider.getFormattedChat === 'function') {\n try {\n return await this.provider.getFormattedChat(modelId, messages, chatTemplate, params);\n }\n catch (_a) {\n // Fall through to client-side formatting\n }\n }\n const prompt = formatMessagesWithTemplate(parsed, chatTemplate);\n return { type: 'llama-chat', prompt, has_media: false, media_paths: [] };\n }\n async completion({ contextId, params, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n const wantStream = this.hasListeners('@LlamaCpp_onToken');\n const generateFn = wantStream\n ? this.provider.generateStream.bind(this.provider, {\n modelId,\n prompt: params.prompt,\n max_tokens: params.n_predict,\n temperature: params.temperature,\n top_p: params.top_p,\n top_k: params.top_k,\n min_p: params.min_p,\n repeat_penalty: params.penalty_repeat,\n seed: params.seed,\n stop: params.stop,\n grammar: params.grammar,\n stream: true,\n }, (evt) => {\n this.emitListener('@LlamaCpp_onToken', {\n contextId,\n token: evt.token,\n index: evt.index,\n });\n })\n : () => this.provider.generate({\n modelId,\n prompt: params.prompt,\n max_tokens: params.n_predict,\n temperature: params.temperature,\n top_p: params.top_p,\n top_k: params.top_k,\n min_p: params.min_p,\n repeat_penalty: params.penalty_repeat,\n seed: params.seed,\n stop: params.stop,\n grammar: params.grammar,\n stream: false,\n });\n const result = await generateFn();\n return {\n text: result.text,\n content: result.text,\n reasoning_content: '',\n tool_calls: [],\n tokens_predicted: result.tokens_predicted,\n tokens_evaluated: result.tokens_evaluated,\n truncated: false,\n stopped_eos: result.finish_reason === 'stop',\n stopped_word: '',\n stopped_limit: result.finish_reason === 'length' ? 1 : 0,\n stopping_word: '',\n context_full: false,\n interrupted: result.finish_reason === 'error',\n tokens_cached: 0,\n chat_format: 0,\n timings: {\n prompt_n: result.tokens_evaluated,\n prompt_ms: 0,\n prompt_per_token_ms: 0,\n prompt_per_second: 0,\n predicted_n: result.tokens_predicted,\n predicted_ms: 0,\n predicted_per_token_ms: 0,\n predicted_per_second: 0,\n },\n };\n }\n // Fix #7: implement chat convenience helpers using proper template formatting\n async chat({ contextId, messages, system, chatTemplate, params }) {\n var _a;\n const allMessages = system\n ? [{ role: 'system', content: system }, ...messages]\n : messages;\n const formatted = await this.getFormattedChat({\n contextId,\n messages: JSON.stringify(allMessages),\n chatTemplate,\n params,\n });\n const prompt = (_a = formatted.prompt) !== null && _a !== void 0 ? _a : JSON.stringify(allMessages);\n return this.completion({ contextId, params: Object.assign(Object.assign({}, params), { prompt }) });\n }\n async chatWithSystem({ contextId, system, message, params }) {\n return this.chat({\n contextId,\n messages: [\n { role: 'system', content: system },\n { role: 'user', content: message },\n ],\n params,\n });\n }\n async generateText({ contextId, prompt, params }) {\n return this.completion({ contextId, params: Object.assign(Object.assign({}, params), { prompt }) });\n }\n async stopCompletion() {\n // Terminates the worker process; the model must be reloaded on the next call.\n this.provider.stopGeneration();\n }\n // -------------------------------------------------------------------------\n // Session management (WASM VFS — persist via /tmp paths in worker)\n // -------------------------------------------------------------------------\n async loadSession({ contextId, filepath, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n return this.provider.loadSession(modelId, vfsPathForWeb(filepath));\n }\n async saveSession({ contextId, filepath, size, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n return this.provider.saveSession(modelId, vfsPathForWeb(filepath), size);\n }\n // -------------------------------------------------------------------------\n // Tokenization\n // -------------------------------------------------------------------------\n async tokenize({ contextId, text, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n const result = await this.provider.tokenize(modelId, text);\n return {\n tokens: result.tokens,\n has_images: false,\n bitmap_hashes: [],\n chunk_pos: [],\n chunk_pos_images: [],\n };\n }\n async detokenize({ contextId, tokens, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n const result = await this.provider.detokenize(modelId, tokens);\n return result.text;\n }\n // -------------------------------------------------------------------------\n // Embeddings\n // -------------------------------------------------------------------------\n async embedding({ contextId, text }) {\n var _a;\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n const result = await this.provider.embed({ modelId, input: text });\n return { embedding: (_a = result.vectors[0]) !== null && _a !== void 0 ? _a : [] };\n }\n async rerank({ contextId, query, documents, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n return this.provider.rerank(modelId, query, documents);\n }\n // -------------------------------------------------------------------------\n // Benchmarking\n // -------------------------------------------------------------------------\n async bench({ contextId, pp, tg, pl, nr, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n return this.provider.bench(modelId, pp, tg, pl, nr);\n }\n // -------------------------------------------------------------------------\n // LoRA adapters\n // -------------------------------------------------------------------------\n async applyLoraAdapters({ contextId, loraAdapters, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n const mapped = loraAdapters.map((la) => (Object.assign(Object.assign({}, la), { path: vfsPathForWeb(la.path) })));\n await this.provider.applyLoraAdapters(modelId, mapped);\n }\n async removeLoraAdapters({ contextId }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n await this.provider.removeLoraAdapters(modelId);\n }\n async getLoadedLoraAdapters({ contextId, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n return this.provider.getLoadedLoraAdapters(modelId);\n }\n // -------------------------------------------------------------------------\n // Multimodal\n // -------------------------------------------------------------------------\n async initMultimodal({ contextId, params, }) {\n var _a;\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n return this.provider.initMultimodal(modelId, vfsPathForWeb(params.path), (_a = params.use_gpu) !== null && _a !== void 0 ? _a : false);\n }\n async isMultimodalEnabled({ contextId }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n return false;\n return this.provider.isMultimodalEnabled(modelId);\n }\n async getMultimodalSupport({ contextId }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n return { vision: false, audio: false };\n return this.provider.getMultimodalSupport(modelId);\n }\n async releaseMultimodal({ contextId }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n return;\n await this.provider.releaseMultimodal(modelId);\n }\n // -------------------------------------------------------------------------\n // TTS\n // -------------------------------------------------------------------------\n async initVocoder({ contextId, params, }) {\n var _a;\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n return this.provider.initVocoder(modelId, vfsPathForWeb(params.path), (_a = params.n_batch) !== null && _a !== void 0 ? _a : 512);\n }\n async isVocoderEnabled({ contextId }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n return false;\n return this.provider.isVocoderEnabled(modelId);\n }\n async getFormattedAudioCompletion({ contextId, speakerJsonStr, textToSpeak, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n const speaker = speakerJsonStr ? JSON.parse(speakerJsonStr) : null;\n return this.provider.getFormattedAudioCompletion(modelId, speaker, textToSpeak);\n }\n async getAudioCompletionGuideTokens({ contextId, textToSpeak, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n return this.provider.getAudioCompletionGuideTokens(modelId, textToSpeak);\n }\n async decodeAudioTokens({ contextId, tokens, }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n throw new Error('LlamaCppWeb: context not found');\n return this.provider.decodeAudioTokens(modelId, tokens);\n }\n async releaseVocoder({ contextId }) {\n const modelId = this.contextToModel.get(contextId);\n if (!modelId)\n return;\n await this.provider.releaseVocoder(modelId);\n }\n // -------------------------------------------------------------------------\n // Fix #8: Model download / management — implemented via OPFS (#8)\n // -------------------------------------------------------------------------\n async downloadModel({ url, filename }) {\n const modelId = filename;\n const abortController = new AbortController();\n const entry = {\n abortController,\n promise: Promise.resolve(undefined),\n downloaded: 0,\n total: 0,\n completed: false,\n failed: false,\n errorMessage: undefined,\n localPath: undefined,\n };\n entry.promise = ensureModelInOpfs(modelId, url, (downloaded, total) => {\n entry.downloaded = downloaded;\n entry.total = total;\n this.emitListener('@LlamaCpp_onDownloadProgress', {\n url,\n modelId,\n downloaded,\n total,\n progress: total > 0 ? downloaded / total : 0,\n });\n }, abortController.signal)\n .then((manifest) => {\n entry.completed = true;\n entry.localPath = manifest.path;\n this.emitListener('@LlamaCpp_onDownloadComplete', { url, modelId, localPath: manifest.path });\n })\n .catch((err) => {\n const cancelled = abortController.signal.aborted;\n entry.failed = !cancelled;\n entry.errorMessage = err.message;\n if (!cancelled) {\n this.emitListener('@LlamaCpp_onDownloadError', { url, modelId, error: err.message });\n }\n });\n activeDownloads.set(url, entry);\n return modelId;\n }\n async getDownloadProgress({ url }) {\n const dl = activeDownloads.get(url);\n if (!dl) {\n return { progress: 0, completed: false, failed: false, downloadedBytes: 0, totalBytes: 0 };\n }\n const progress = dl.total > 0 ? dl.downloaded / dl.total : 0;\n return {\n progress,\n completed: dl.completed,\n failed: dl.failed,\n errorMessage: dl.errorMessage,\n localPath: dl.localPath,\n downloadedBytes: dl.downloaded,\n totalBytes: dl.total,\n };\n }\n async cancelDownload({ url }) {\n const entry = activeDownloads.get(url);\n if (!entry)\n return false;\n entry.abortController.abort();\n activeDownloads.delete(url);\n return true;\n }\n async getAvailableModels() {\n const entries = await listManifestEntries();\n return entries.map((e) => ({\n name: e.modelId,\n path: e.path,\n size: e.sizeBytes,\n }));\n }\n // -------------------------------------------------------------------------\n // Grammar utilities\n // -------------------------------------------------------------------------\n async convertJsonSchemaToGrammar({ schema, }) {\n return this.provider.convertJsonSchemaToGrammar(schema);\n }\n // -------------------------------------------------------------------------\n // Native server (not available on web)\n // -------------------------------------------------------------------------\n async startNativeLlamaServer(_options) {\n throw new Error('LlamaCppWeb: native server is only available on iOS/Android/Desktop');\n }\n async stopNativeLlamaServer() { }\n async isNativeLlamaServerRunning() {\n return { running: false };\n }\n // -------------------------------------------------------------------------\n // Events\n // -------------------------------------------------------------------------\n async addListener(eventName, listenerFunc) {\n if (!this.listeners.has(eventName)) {\n this.listeners.set(eventName, new Set());\n }\n this.listeners.get(eventName).add(listenerFunc);\n }\n async removeAllListeners() {\n this.listeners.clear();\n }\n}\nexport * from './definitions';\n//# sourceMappingURL=web.js.map","import { LlamaCppWeb } from './web';\nimport { DesktopProvider } from './isomorphic/provider.desktop';\nimport { getDesktopBridge } from './isomorphic/desktop.runtime';\nconst MODEL_DESC_DESKTOP = {\n desc: 'Desktop sidecar model',\n size: 0,\n nEmbd: 0,\n nParams: 0,\n chatTemplates: {\n llamaChat: true,\n minja: {\n default: true,\n defaultCaps: {\n tools: false, toolCalls: false, toolResponses: false,\n systemRole: true, parallelToolCalls: false, toolCallId: false,\n },\n toolUse: false,\n toolUseCaps: {\n tools: false, toolCalls: false, toolResponses: false,\n systemRole: true, parallelToolCalls: false, toolCallId: false,\n },\n },\n },\n metadata: {},\n isChatTemplateSupported: true,\n};\n/** Sidecar DELETE route is `/v1/internal/models/([^/]+)` — never use absolute paths as ids. */\nfunction sidecarModelIdFromPath(modelPath) {\n const base = modelPath.split(/[/\\\\]/).pop() || modelPath;\n return base.replace(/\\.gguf$/i, '') || base;\n}\n/**\n * Capacitor LlamaCpp implementation for Electron desktop.\n * Core inference (chat, completion, embeddings) uses the native GPU/CPU sidecar.\n * Multimodal, LoRA, TTS, and benchmarking use the WASM worker (same as PWA).\n */\nexport class LlamaCppDesktop extends LlamaCppWeb {\n constructor() {\n super();\n this.sidecarActive = false;\n this.gpuEnabled = false;\n this.desktopProvider = new DesktopProvider();\n this.provider =\n this.desktopProvider;\n }\n async initContext({ contextId, params, }) {\n var _a;\n const modelPath = params.model;\n const modelId = sidecarModelIdFromPath(modelPath);\n const bridge = getDesktopBridge();\n if (bridge === null || bridge === void 0 ? void 0 : bridge.ensureSidecar) {\n const result = await bridge.ensureSidecar({\n modelPath,\n modelId,\n n_ctx: params.n_ctx,\n n_gpu_layers: params.n_gpu_layers,\n n_threads: params.n_threads,\n embedding: params.embedding,\n });\n if ((result === null || result === void 0 ? void 0 : result.ok) && result.port) {\n this.desktopProvider.setSidecarPort(result.port);\n await this.desktopProvider.loadModel({\n modelId,\n modelPath,\n n_ctx: params.n_ctx,\n n_gpu_layers: params.n_gpu_layers,\n n_threads: params.n_threads,\n embedding: params.embedding,\n });\n this.sidecarActive = true;\n this.gpuEnabled = !!result.gpuEnabled;\n this.contextToModel.set(contextId, modelId);\n return {\n contextId,\n gpu: this.gpuEnabled,\n reasonNoGPU: this.gpuEnabled ? '' : ((_a = result.reasonNoGpu) !== null && _a !== void 0 ? _a : 'CPU-only inference'),\n model: MODEL_DESC_DESKTOP,\n };\n }\n }\n const fallback = await super.initContext({ contextId, params });\n this.sidecarActive = false;\n return fallback;\n }\n async setContextLimit(opts) {\n await this.desktopProvider.setContextLimit(opts.limit);\n }\n async releaseContext({ contextId }) {\n const modelId = this.contextToModel.get(contextId);\n if (modelId && this.sidecarActive) {\n await this.desktopProvider.unloadModel(modelId);\n }\n await super.releaseContext({ contextId });\n }\n async startNativeLlamaServer(options) {\n var _a, _b, _c, _d;\n const bridge = getDesktopBridge();\n if (!(bridge === null || bridge === void 0 ? void 0 : bridge.ensureSidecar)) {\n throw new Error('LlamaCppDesktop: IPC bridge not available — register ipc-handlers in main process');\n }\n const result = await bridge.ensureSidecar({\n modelPath: options.modelPath,\n modelId: sidecarModelIdFromPath(options.modelPath),\n host: (_a = options.host) !== null && _a !== void 0 ? _a : '127.0.0.1',\n port: options.port,\n n_ctx: (_b = options.params) === null || _b === void 0 ? void 0 : _b.n_ctx,\n n_gpu_layers: (_c = options.params) === null || _c === void 0 ? void 0 : _c.n_gpu_layers,\n n_threads: (_d = options.params) === null || _d === void 0 ? void 0 : _d.n_threads,\n });\n if ((result === null || result === void 0 ? void 0 : result.ok) && result.port) {\n this.desktopProvider.setSidecarPort(result.port);\n this.sidecarActive = true;\n return { running: true };\n }\n return { running: false };\n }\n async isNativeLlamaServerRunning() {\n const bridge = getDesktopBridge();\n if (bridge === null || bridge === void 0 ? void 0 : bridge.getSidecarStatus) {\n const st = await bridge.getSidecarStatus();\n return { running: !!(st === null || st === void 0 ? void 0 : st.running) };\n }\n return { running: this.sidecarActive };\n }\n async stopNativeLlamaServer() {\n const bridge = getDesktopBridge();\n if (bridge === null || bridge === void 0 ? void 0 : bridge.stopSidecar) {\n await bridge.stopSidecar();\n }\n this.sidecarActive = false;\n }\n}\n//# sourceMappingURL=desktop.js.map","var _a;\nimport { __rest } from \"tslib\";\nimport { registerPlugin } from '@capacitor/core';\n// Constants\nexport const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = '<__media__>';\n// Event names\nconst EVENT_ON_INIT_CONTEXT_PROGRESS = '@LlamaCpp_onInitContextProgress';\nconst EVENT_ON_TOKEN = '@LlamaCpp_onToken';\nconst EVENT_ON_NATIVE_LOG = '@LlamaCpp_onNativeLog';\n// Register the plugin — web uses WASM; Electron desktop uses sidecar (via LlamaCppDesktop).\nconst LlamaCpp = registerPlugin('LlamaCpp', {\n web: () => import('./isomorphic/desktop.runtime').then(async ({ isDesktopRuntime }) => {\n if (isDesktopRuntime()) {\n const m = await import('./desktop');\n return new m.LlamaCppDesktop();\n }\n const w = await import('./web');\n return new w.LlamaCppWeb();\n }),\n});\n// Log listeners management\nconst logListeners = [];\n// Best-effort wiring: Capacitor stubs can throw synchronously when a platform\n// implementation is not ready yet (Node/CJS load, first paint before web impl).\ntry {\n const sub = LlamaCpp.addListener(EVENT_ON_NATIVE_LOG, (evt) => {\n logListeners.forEach((listener) => listener(evt.level, evt.text));\n });\n if (sub && typeof sub.catch === 'function') {\n sub.catch(() => { });\n }\n}\ncatch (_b) {\n /* ignore until platform impl is loaded */\n}\ntry {\n const p = (_a = LlamaCpp.toggleNativeLog) === null || _a === void 0 ? void 0 : _a.call(LlamaCpp, { enabled: false });\n if (p && typeof p.catch === 'function') {\n p.catch(() => { });\n }\n}\ncatch (_c) {\n /* ignore unimplemented / sync stub throw */\n}\nexport const RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER = LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER;\nconst validCacheTypes = [\n 'f16',\n 'f32',\n 'bf16',\n 'q8_0',\n 'q4_0',\n 'q4_1',\n 'iq4_nl',\n 'q5_0',\n 'q5_1',\n];\nconst getJsonSchema = (responseFormat) => {\n var _a;\n if ((responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.type) === 'json_schema') {\n return (_a = responseFormat.json_schema) === null || _a === void 0 ? void 0 : _a.schema;\n }\n if ((responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.type) === 'json_object') {\n return responseFormat.schema || {};\n }\n return null;\n};\n// Utility function to convert JSON schema to GBNF grammar\nconst jsonSchemaToGrammar = async (schema) => {\n // This will call the native method to convert JSON schema to GBNF\n // For now, we'll return a basic implementation\n try {\n const result = await LlamaCpp.convertJsonSchemaToGrammar({ schema: JSON.stringify(schema) });\n return result;\n }\n catch (error) {\n console.warn('Failed to convert JSON schema to GBNF, using fallback:', error);\n // Fallback for basic object structure\n return `root ::= \"{\" ws object_content ws \"}\"\nobject_content ::= string_field (\",\" ws string_field)*\nstring_field ::= \"\\\\\"\" [a-zA-Z_][a-zA-Z0-9_]* \"\\\\\"\" ws \":\" ws value\nvalue ::= string | number | boolean | \"null\"\nstring ::= \"\\\\\"\" [^\"]* \"\\\\\"\"\nnumber ::= \"-\"? [0-9]+ (\".\" [0-9]+)?\nboolean ::= \"true\" | \"false\"\nws ::= [ \\\\t\\\\n]*`;\n }\n};\nexport class LlamaContext {\n constructor({ contextId, gpu, reasonNoGPU, model }) {\n this.gpu = false;\n this.reasonNoGPU = '';\n this.id = contextId;\n this.gpu = gpu;\n this.reasonNoGPU = reasonNoGPU;\n this.model = model;\n }\n /**\n * Load cached prompt & completion state from a file.\n */\n async loadSession(filepath) {\n let path = filepath;\n if (path.startsWith('file://'))\n path = path.slice(7);\n return LlamaCpp.loadSession({ contextId: this.id, filepath: path });\n }\n /**\n * Save current cached prompt & completion state to a file.\n */\n async saveSession(filepath, options) {\n return LlamaCpp.saveSession({\n contextId: this.id,\n filepath,\n size: (options === null || options === void 0 ? void 0 : options.tokenSize) || -1\n });\n }\n isLlamaChatSupported() {\n return !!this.model.chatTemplates.llamaChat;\n }\n isJinjaSupported() {\n const { minja } = this.model.chatTemplates;\n return !!(minja === null || minja === void 0 ? void 0 : minja.toolUse) || !!(minja === null || minja === void 0 ? void 0 : minja.default);\n }\n async getFormattedChat(messages, template, params) {\n var _a;\n const mediaPaths = [];\n const chat = messages.map((msg) => {\n if (Array.isArray(msg.content)) {\n const content = msg.content.map((part) => {\n var _a;\n // Handle multimodal content\n if (part.type === 'image_url') {\n let path = ((_a = part.image_url) === null || _a === void 0 ? void 0 : _a.url) || '';\n if (path === null || path === void 0 ? void 0 : path.startsWith('file://'))\n path = path.slice(7);\n mediaPaths.push(path);\n return {\n type: 'text',\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\n };\n }\n else if (part.type === 'input_audio') {\n const { input_audio: audio } = part;\n if (!audio)\n throw new Error('input_audio is required');\n const { format } = audio;\n if (format != 'wav' && format != 'mp3') {\n throw new Error(`Unsupported audio format: ${format}`);\n }\n if (audio.url) {\n const path = audio.url.replace(/file:\\/\\//, '');\n mediaPaths.push(path);\n }\n else if (audio.data) {\n mediaPaths.push(audio.data);\n }\n return {\n type: 'text',\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\n };\n }\n return part;\n });\n return Object.assign(Object.assign({}, msg), { content });\n }\n return msg;\n });\n const useJinja = this.isJinjaSupported() && (params === null || params === void 0 ? void 0 : params.jinja);\n let tmpl;\n if (template)\n tmpl = template; // Force replace if provided\n const jsonSchema = getJsonSchema(params === null || params === void 0 ? void 0 : params.response_format);\n const result = await LlamaCpp.getFormattedChat({\n contextId: this.id,\n messages: JSON.stringify(chat),\n chatTemplate: tmpl,\n params: {\n jinja: useJinja,\n json_schema: jsonSchema ? JSON.stringify(jsonSchema) : undefined,\n tools: (params === null || params === void 0 ? void 0 : params.tools) ? JSON.stringify(params.tools) : undefined,\n parallel_tool_calls: (params === null || params === void 0 ? void 0 : params.parallel_tool_calls)\n ? JSON.stringify(params.parallel_tool_calls)\n : undefined,\n tool_choice: params === null || params === void 0 ? void 0 : params.tool_choice,\n enable_thinking: (_a = params === null || params === void 0 ? void 0 : params.enable_thinking) !== null && _a !== void 0 ? _a : true,\n add_generation_prompt: params === null || params === void 0 ? void 0 : params.add_generation_prompt,\n now: typeof (params === null || params === void 0 ? void 0 : params.now) === 'number' ? params.now.toString() : params === null || params === void 0 ? void 0 : params.now,\n chat_template_kwargs: (params === null || params === void 0 ? void 0 : params.chat_template_kwargs) ? JSON.stringify(Object.entries(params.chat_template_kwargs).reduce((acc, [key, value]) => {\n acc[key] = JSON.stringify(value); // Each value is a stringified JSON object\n return acc;\n }, {})) : undefined,\n },\n });\n if (!useJinja) {\n return {\n type: 'llama-chat',\n prompt: result,\n has_media: mediaPaths.length > 0,\n media_paths: mediaPaths,\n };\n }\n const jinjaResult = result;\n jinjaResult.type = 'jinja';\n jinjaResult.has_media = mediaPaths.length > 0;\n jinjaResult.media_paths = mediaPaths;\n return jinjaResult;\n }\n /**\n * Generate a completion based on the provided parameters\n * @param params Completion parameters including prompt or messages\n * @param callback Optional callback for token-by-token streaming\n * @returns Promise resolving to the completion result\n *\n * Note: For multimodal support, you can include an media_paths parameter.\n * This will process the images and add them to the context before generating text.\n * Multimodal support must be enabled via initMultimodal() first.\n */\n async completion(params, callback) {\n const nativeParams = Object.assign(Object.assign({}, params), { prompt: params.prompt || '', emit_partial_completion: !!callback });\n if (params.messages) {\n const formattedResult = await this.getFormattedChat(params.messages, params.chat_template || params.chatTemplate, {\n jinja: params.jinja,\n tools: params.tools,\n parallel_tool_calls: params.parallel_tool_calls,\n tool_choice: params.tool_choice,\n enable_thinking: params.enable_thinking,\n add_generation_prompt: params.add_generation_prompt,\n now: params.now,\n chat_template_kwargs: params.chat_template_kwargs,\n });\n if (formattedResult.type === 'jinja') {\n const jinjaResult = formattedResult;\n nativeParams.prompt = jinjaResult.prompt || '';\n if (typeof jinjaResult.chat_format === 'number')\n nativeParams.chat_format = jinjaResult.chat_format;\n if (jinjaResult.grammar)\n nativeParams.grammar = jinjaResult.grammar;\n if (typeof jinjaResult.grammar_lazy === 'boolean')\n nativeParams.grammar_lazy = jinjaResult.grammar_lazy;\n if (jinjaResult.grammar_triggers)\n nativeParams.grammar_triggers = jinjaResult.grammar_triggers;\n if (jinjaResult.preserved_tokens)\n nativeParams.preserved_tokens = jinjaResult.preserved_tokens;\n if (jinjaResult.additional_stops) {\n if (!nativeParams.stop)\n nativeParams.stop = [];\n nativeParams.stop.push(...jinjaResult.additional_stops);\n }\n if (jinjaResult.has_media) {\n nativeParams.media_paths = jinjaResult.media_paths;\n }\n }\n else if (formattedResult.type === 'llama-chat') {\n const llamaChatResult = formattedResult;\n nativeParams.prompt = llamaChatResult.prompt || '';\n if (llamaChatResult.has_media) {\n nativeParams.media_paths = llamaChatResult.media_paths;\n }\n }\n }\n else {\n nativeParams.prompt = params.prompt || '';\n }\n // If media_paths were explicitly provided or extracted from messages, use them\n if (!nativeParams.media_paths && params.media_paths) {\n nativeParams.media_paths = params.media_paths;\n }\n // Handle structured output and grammar\n if (params.grammar) {\n // Direct GBNF grammar takes precedence\n nativeParams.grammar = params.grammar;\n }\n else if (nativeParams.response_format && !nativeParams.grammar) {\n const jsonSchema = getJsonSchema(params.response_format);\n if (jsonSchema) {\n // Try to convert JSON schema to GBNF grammar\n try {\n nativeParams.grammar = await jsonSchemaToGrammar(jsonSchema);\n }\n catch (error) {\n console.warn('Failed to convert JSON schema to grammar, falling back to json_schema parameter:', error);\n nativeParams.json_schema = JSON.stringify(jsonSchema);\n }\n }\n }\n let tokenListener = callback &&\n LlamaCpp.addListener(EVENT_ON_TOKEN, (evt) => {\n const { contextId, tokenResult } = evt;\n if (contextId !== this.id)\n return;\n callback(tokenResult);\n });\n if (!nativeParams.prompt)\n throw new Error('Prompt is required');\n const promise = LlamaCpp.completion({ contextId: this.id, params: nativeParams });\n return promise\n .then((completionResult) => {\n tokenListener === null || tokenListener === void 0 ? void 0 : tokenListener.remove();\n tokenListener = null;\n return completionResult;\n })\n .catch((err) => {\n tokenListener === null || tokenListener === void 0 ? void 0 : tokenListener.remove();\n tokenListener = null;\n throw err;\n });\n }\n stopCompletion() {\n return LlamaCpp.stopCompletion({ contextId: this.id });\n }\n /**\n * Tokenize text or text with images\n * @param text Text to tokenize\n * @param params.media_paths Array of image paths to tokenize (if multimodal is enabled)\n * @returns Promise resolving to the tokenize result\n */\n tokenize(text, { media_paths: mediaPaths, } = {}) {\n return LlamaCpp.tokenize({ contextId: this.id, text, imagePaths: mediaPaths });\n }\n detokenize(tokens) {\n return LlamaCpp.detokenize({ contextId: this.id, tokens });\n }\n embedding(text, params) {\n return LlamaCpp.embedding({ contextId: this.id, text, params: params || {} });\n }\n /**\n * Rerank documents based on relevance to a query\n * @param query The query text to rank documents against\n * @param documents Array of document texts to rank\n * @param params Optional reranking parameters\n * @returns Promise resolving to an array of ranking results with scores and indices\n */\n async rerank(query, documents, params) {\n const results = await LlamaCpp.rerank({\n contextId: this.id,\n query,\n documents,\n params: params || {}\n });\n // Sort by score descending and add document text if requested\n return results\n .map((result) => (Object.assign(Object.assign({}, result), { document: documents[result.index] })))\n .sort((a, b) => b.score - a.score);\n }\n async bench(pp, tg, pl, nr) {\n const result = await LlamaCpp.bench({ contextId: this.id, pp, tg, pl, nr });\n const [modelDesc, modelSize, modelNParams, ppAvg, ppStd, tgAvg, tgStd] = JSON.parse(result);\n return {\n modelDesc,\n modelSize,\n modelNParams,\n ppAvg,\n ppStd,\n tgAvg,\n tgStd,\n };\n }\n async applyLoraAdapters(loraList) {\n let loraAdapters = [];\n if (loraList)\n loraAdapters = loraList.map((l) => ({\n path: l.path.replace(/file:\\/\\//, ''),\n scaled: l.scaled,\n }));\n return LlamaCpp.applyLoraAdapters({ contextId: this.id, loraAdapters });\n }\n async removeLoraAdapters() {\n return LlamaCpp.removeLoraAdapters({ contextId: this.id });\n }\n async getLoadedLoraAdapters() {\n return LlamaCpp.getLoadedLoraAdapters({ contextId: this.id });\n }\n /**\n * Initialize multimodal support with a mmproj file\n * @param params Parameters for multimodal support\n * @param params.path Path to the multimodal projector file\n * @param params.use_gpu Whether to use GPU\n * @returns Promise resolving to true if initialization was successful\n */\n async initMultimodal({ path, use_gpu: useGpu, }) {\n if (path.startsWith('file://'))\n path = path.slice(7);\n return LlamaCpp.initMultimodal({\n contextId: this.id,\n params: {\n path,\n use_gpu: useGpu !== null && useGpu !== void 0 ? useGpu : true,\n },\n });\n }\n /**\n * Check if multimodal support is enabled\n * @returns Promise resolving to true if multimodal is enabled\n */\n async isMultimodalEnabled() {\n return await LlamaCpp.isMultimodalEnabled({ contextId: this.id });\n }\n /**\n * Check multimodal support\n * @returns Promise resolving to an object with vision and audio support\n */\n async getMultimodalSupport() {\n return await LlamaCpp.getMultimodalSupport({ contextId: this.id });\n }\n /**\n * Release multimodal support\n * @returns Promise resolving to void\n */\n async releaseMultimodal() {\n return await LlamaCpp.releaseMultimodal({ contextId: this.id });\n }\n /**\n * Initialize TTS support with a vocoder model\n * @param params Parameters for TTS support\n * @param params.path Path to the vocoder model\n * @param params.n_batch Batch size for the vocoder model\n * @returns Promise resolving to true if initialization was successful\n */\n async initVocoder({ path, n_batch: nBatch }) {\n if (path.startsWith('file://'))\n path = path.slice(7);\n return await LlamaCpp.initVocoder({\n contextId: this.id,\n params: { path, n_batch: nBatch }\n });\n }\n /**\n * Check if TTS support is enabled\n * @returns Promise resolving to true if TTS is enabled\n */\n async isVocoderEnabled() {\n return await LlamaCpp.isVocoderEnabled({ contextId: this.id });\n }\n /**\n * Get a formatted audio completion prompt\n * @param speakerJsonStr JSON string representing the speaker\n * @param textToSpeak Text to speak\n * @returns Promise resolving to the formatted audio completion result with prompt and grammar\n */\n async getFormattedAudioCompletion(speaker, textToSpeak) {\n return await LlamaCpp.getFormattedAudioCompletion({\n contextId: this.id,\n speakerJsonStr: speaker ? JSON.stringify(speaker) : '',\n textToSpeak,\n });\n }\n /**\n * Get guide tokens for audio completion\n * @param textToSpeak Text to speak\n * @returns Promise resolving to the guide tokens\n */\n async getAudioCompletionGuideTokens(textToSpeak) {\n return await LlamaCpp.getAudioCompletionGuideTokens({ contextId: this.id, textToSpeak });\n }\n /**\n * Decode audio tokens\n * @param tokens Array of audio tokens\n * @returns Promise resolving to the decoded audio tokens\n */\n async decodeAudioTokens(tokens) {\n return await LlamaCpp.decodeAudioTokens({ contextId: this.id, tokens });\n }\n /**\n * Release TTS support\n * @returns Promise resolving to void\n */\n async releaseVocoder() {\n return await LlamaCpp.releaseVocoder({ contextId: this.id });\n }\n async release() {\n return LlamaCpp.releaseContext({ contextId: this.id });\n }\n}\nexport async function toggleNativeLog(enabled) {\n return LlamaCpp.toggleNativeLog({ enabled });\n}\nexport function addNativeLogListener(listener) {\n logListeners.push(listener);\n return {\n remove: () => {\n logListeners.splice(logListeners.indexOf(listener), 1);\n },\n };\n}\nexport async function setContextLimit(limit) {\n return LlamaCpp.setContextLimit({ limit });\n}\n// Fix #14: pure monotonic counter — adding random() caused ID collisions when\n// counter + random happened to produce the same value on successive calls.\nlet contextIdCounter = 0;\nconst modelInfoSkip = [\n // Large fields\n 'tokenizer.ggml.tokens',\n 'tokenizer.ggml.token_type',\n 'tokenizer.ggml.merges',\n 'tokenizer.ggml.scores',\n];\nexport async function loadLlamaModelInfo(model) {\n let path = model;\n if (path.startsWith('file://'))\n path = path.slice(7);\n return LlamaCpp.modelInfo({ path, skip: modelInfoSkip });\n}\nconst poolTypeMap = {\n // -1 is unspecified as undefined\n none: 0,\n mean: 1,\n cls: 2,\n last: 3,\n rank: 4,\n};\nexport async function initLlama(_a, onProgress) {\n var { model, is_model_asset: isModelAsset, pooling_type: poolingType, lora, lora_list: loraList } = _a, rest = __rest(_a, [\"model\", \"is_model_asset\", \"pooling_type\", \"lora\", \"lora_list\"]);\n let path = model;\n if (path.startsWith('file://'))\n path = path.slice(7);\n let loraPath = lora;\n if (loraPath === null || loraPath === void 0 ? void 0 : loraPath.startsWith('file://'))\n loraPath = loraPath.slice(7);\n let loraAdapters = [];\n if (loraList)\n loraAdapters = loraList.map((l) => ({\n path: l.path.replace(/file:\\/\\//, ''),\n scaled: l.scaled,\n }));\n const contextId = ++contextIdCounter;\n let removeProgressListener = null;\n if (onProgress) {\n removeProgressListener = LlamaCpp.addListener(EVENT_ON_INIT_CONTEXT_PROGRESS, (evt) => {\n if (evt.contextId !== contextId)\n return;\n onProgress(evt.progress);\n });\n }\n const poolType = poolTypeMap[poolingType];\n if (rest.cache_type_k && !validCacheTypes.includes(rest.cache_type_k)) {\n console.warn(`[LlamaCpp] initLlama: Invalid cache K type: ${rest.cache_type_k}, falling back to f16`);\n delete rest.cache_type_k;\n }\n if (rest.cache_type_v && !validCacheTypes.includes(rest.cache_type_v)) {\n console.warn(`[LlamaCpp] initLlama: Invalid cache V type: ${rest.cache_type_v}, falling back to f16`);\n delete rest.cache_type_v;\n }\n // Log speculative decoding configuration if enabled\n if (rest.draft_model) {\n console.log(`🚀 Initializing with speculative decoding:\n - Main model: ${path}\n - Draft model: ${rest.draft_model}\n - Speculative samples: ${rest.speculative_samples || 3}\n - Mobile optimization: ${rest.mobile_speculative !== false ? 'enabled' : 'disabled'}`);\n }\n const { gpu, reasonNoGPU, model: modelDetails, androidLib, } = await LlamaCpp.initContext({\n contextId,\n params: Object.assign({ model: path, is_model_asset: !!isModelAsset, use_progress_callback: !!onProgress, pooling_type: poolType, lora: loraPath, lora_list: loraAdapters }, rest),\n }).catch((err) => {\n removeProgressListener === null || removeProgressListener === void 0 ? void 0 : removeProgressListener.remove();\n throw err;\n });\n removeProgressListener === null || removeProgressListener === void 0 ? void 0 : removeProgressListener.remove();\n return new LlamaContext({\n contextId,\n gpu,\n reasonNoGPU,\n model: modelDetails,\n androidLib,\n });\n}\nexport async function releaseAllLlama() {\n return LlamaCpp.releaseAllContexts();\n}\n// Model download and management functions\nexport async function downloadModel(url, filename) {\n return LlamaCpp.downloadModel({ url, filename });\n}\nexport async function getDownloadProgress(url) {\n return LlamaCpp.getDownloadProgress({ url });\n}\nexport async function cancelDownload(url) {\n return LlamaCpp.cancelDownload({ url });\n}\nexport async function getAvailableModels() {\n return LlamaCpp.getAvailableModels();\n}\n/**\n * Convert a JSON schema to GBNF grammar format\n * @param schema JSON schema object\n * @returns Promise resolving to GBNF grammar string\n */\nexport async function convertJsonSchemaToGrammar(schema) {\n return jsonSchemaToGrammar(schema);\n}\nexport const BuildInfo = {\n number: '1.0.0',\n commit: 'capacitor-llama-cpp',\n};\n// Re-export the plugin for direct access\nexport { LlamaCpp };\n// Isomorphic provider exports (Phase 0/1 scaffold)\nexport * from './isomorphic/provider.interface';\nexport * from './isomorphic/errors';\nexport * from './isomorphic/provider.factory';\nexport * from './isomorphic/provider.native';\nexport * from './isomorphic/provider.web';\nexport * from './isomorphic/provider.desktop';\nexport * from './isomorphic/desktop.runtime';\nexport { LlamaCppDesktop } from './desktop';\nexport * from './isomorphic/model.admission';\nexport * from './isomorphic/model.scheduler';\nexport * from './isomorphic/wasmMemoryPolicy';\nexport * from './isomorphic/wasmMemoryCalibration';\nexport * from './storage/manifest';\nexport * from './storage/opfs.store';\n//# sourceMappingURL=index.js.map"],"names":["EVENT_ON_TOKEN","MAX_MODELS","Capacitor","registerPlugin","getStorageApi","getRootDirectory","__rest"],"mappings":"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"}
|