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.
Files changed (310) hide show
  1. package/CHANGELOG.md +295 -0
  2. package/LICENSE +21 -0
  3. package/LlamaCpp.podspec +33 -0
  4. package/LlamaCppCapacitor.podspec +33 -0
  5. package/Package.swift +29 -0
  6. package/README.md +93 -0
  7. package/android/build.gradle +88 -0
  8. package/android/src/main/AndroidManifest.xml +4 -0
  9. package/android/src/main/CMakeLists-arm64.txt +138 -0
  10. package/android/src/main/CMakeLists-x86_64.txt +141 -0
  11. package/android/src/main/CMakeLists.txt +138 -0
  12. package/android/src/main/java/ai/annadata/plugin/capacitor/LlamaCpp.java +1340 -0
  13. package/android/src/main/java/ai/annadata/plugin/capacitor/LlamaCppPlugin.java +814 -0
  14. package/android/src/main/java/ai/annadata/plugin/capacitor/ModelAdmissionController.java +214 -0
  15. package/android/src/main/jni-chat-session.cpp +261 -0
  16. package/android/src/main/jni-lora.cpp +197 -0
  17. package/android/src/main/jni-multimodal.cpp +167 -0
  18. package/android/src/main/jni-tts.cpp +290 -0
  19. package/android/src/main/jni-utils.h +148 -0
  20. package/android/src/main/jni.cpp +1808 -0
  21. package/android/src/main/jniLibs/arm64-v8a/libllama-cpp-arm64.so +0 -0
  22. package/android/src/main/res/.gitkeep +0 -0
  23. package/build-native.sh +280 -0
  24. package/cmake/desktop-metal-embed.cmake +30 -0
  25. package/cmake/desktop-sources.cmake +100 -0
  26. package/cmake/ggml-backends.cmake +44 -0
  27. package/cpp/LICENSE +21 -0
  28. package/cpp/README.md +15 -0
  29. package/cpp/anyascii.c +22223 -0
  30. package/cpp/anyascii.h +42 -0
  31. package/cpp/cap-completion.cpp +942 -0
  32. package/cpp/cap-completion.h +127 -0
  33. package/cpp/cap-embedding.cpp +193 -0
  34. package/cpp/cap-embedding.h +35 -0
  35. package/cpp/cap-ios-bridge.cpp +1810 -0
  36. package/cpp/cap-ios-bridge.h +61 -0
  37. package/cpp/cap-llama.cpp +412 -0
  38. package/cpp/cap-llama.h +161 -0
  39. package/cpp/cap-mtmd.hpp +602 -0
  40. package/cpp/cap-native-server.cpp +1095 -0
  41. package/cpp/cap-native-server.h +40 -0
  42. package/cpp/cap-tts.cpp +591 -0
  43. package/cpp/cap-tts.h +59 -0
  44. package/cpp/cap-wasm-fs.cpp +156 -0
  45. package/cpp/cap-wasm-jspi.cpp +19 -0
  46. package/cpp/cap-wasm-jspi.h +30 -0
  47. package/cpp/cap-wasm-vfs.cpp +22 -0
  48. package/cpp/chat-parser.cpp +393 -0
  49. package/cpp/chat-parser.h +120 -0
  50. package/cpp/chat.cpp +2315 -0
  51. package/cpp/chat.h +221 -0
  52. package/cpp/common.cpp +1664 -0
  53. package/cpp/common.h +744 -0
  54. package/cpp/ggml-alloc.c +1028 -0
  55. package/cpp/ggml-alloc.h +76 -0
  56. package/cpp/ggml-backend-impl.h +255 -0
  57. package/cpp/ggml-backend-reg.cpp +600 -0
  58. package/cpp/ggml-backend.cpp +2121 -0
  59. package/cpp/ggml-backend.h +354 -0
  60. package/cpp/ggml-common.h +1878 -0
  61. package/cpp/ggml-cpp.h +39 -0
  62. package/cpp/ggml-cpu/amx/amx.cpp +221 -0
  63. package/cpp/ggml-cpu/amx/amx.h +8 -0
  64. package/cpp/ggml-cpu/amx/common.h +91 -0
  65. package/cpp/ggml-cpu/amx/mmq.cpp +2512 -0
  66. package/cpp/ggml-cpu/amx/mmq.h +10 -0
  67. package/cpp/ggml-cpu/arch/arm/cpu-feats.cpp +94 -0
  68. package/cpp/ggml-cpu/arch/arm/quants.c +3650 -0
  69. package/cpp/ggml-cpu/arch/arm/repack.cpp +1891 -0
  70. package/cpp/ggml-cpu/arch/x86/cpu-feats.cpp +327 -0
  71. package/cpp/ggml-cpu/arch/x86/quants.c +3820 -0
  72. package/cpp/ggml-cpu/arch/x86/repack.cpp +6307 -0
  73. package/cpp/ggml-cpu/arch-fallback.h +215 -0
  74. package/cpp/ggml-cpu/binary-ops.cpp +158 -0
  75. package/cpp/ggml-cpu/binary-ops.h +16 -0
  76. package/cpp/ggml-cpu/common.h +73 -0
  77. package/cpp/ggml-cpu/ggml-cpu-impl.h +559 -0
  78. package/cpp/ggml-cpu/ggml-cpu.c +3578 -0
  79. package/cpp/ggml-cpu/ggml-cpu.cpp +672 -0
  80. package/cpp/ggml-cpu/ops.cpp +10587 -0
  81. package/cpp/ggml-cpu/ops.h +114 -0
  82. package/cpp/ggml-cpu/quants.c +1193 -0
  83. package/cpp/ggml-cpu/quants.h +97 -0
  84. package/cpp/ggml-cpu/repack.cpp +1982 -0
  85. package/cpp/ggml-cpu/repack.h +120 -0
  86. package/cpp/ggml-cpu/simd-mappings.h +1184 -0
  87. package/cpp/ggml-cpu/traits.cpp +36 -0
  88. package/cpp/ggml-cpu/traits.h +38 -0
  89. package/cpp/ggml-cpu/unary-ops.cpp +186 -0
  90. package/cpp/ggml-cpu/unary-ops.h +28 -0
  91. package/cpp/ggml-cpu/vec.cpp +348 -0
  92. package/cpp/ggml-cpu/vec.h +1121 -0
  93. package/cpp/ggml-cpu.h +145 -0
  94. package/cpp/ggml-impl.h +622 -0
  95. package/cpp/ggml-metal-impl.h +688 -0
  96. package/cpp/ggml-metal.h +66 -0
  97. package/cpp/ggml-metal.m +6833 -0
  98. package/cpp/ggml-metal.metal +10754 -0
  99. package/cpp/ggml-opt.cpp +1093 -0
  100. package/cpp/ggml-opt.h +256 -0
  101. package/cpp/ggml-quants.c +5324 -0
  102. package/cpp/ggml-quants.h +106 -0
  103. package/cpp/ggml-threading.cpp +12 -0
  104. package/cpp/ggml-threading.h +14 -0
  105. package/cpp/ggml.c +7108 -0
  106. package/cpp/ggml.h +2492 -0
  107. package/cpp/gguf.cpp +1358 -0
  108. package/cpp/gguf.h +202 -0
  109. package/cpp/json-partial.cpp +256 -0
  110. package/cpp/json-partial.h +38 -0
  111. package/cpp/json-schema-to-grammar.cpp +985 -0
  112. package/cpp/json-schema-to-grammar.h +21 -0
  113. package/cpp/llama-adapter.cpp +388 -0
  114. package/cpp/llama-adapter.h +76 -0
  115. package/cpp/llama-arch.cpp +2355 -0
  116. package/cpp/llama-arch.h +499 -0
  117. package/cpp/llama-batch.cpp +875 -0
  118. package/cpp/llama-batch.h +160 -0
  119. package/cpp/llama-chat.cpp +783 -0
  120. package/cpp/llama-chat.h +65 -0
  121. package/cpp/llama-context.cpp +2788 -0
  122. package/cpp/llama-context.h +306 -0
  123. package/cpp/llama-cparams.cpp +5 -0
  124. package/cpp/llama-cparams.h +41 -0
  125. package/cpp/llama-cpp.h +30 -0
  126. package/cpp/llama-grammar.cpp +1229 -0
  127. package/cpp/llama-grammar.h +173 -0
  128. package/cpp/llama-graph.cpp +1891 -0
  129. package/cpp/llama-graph.h +810 -0
  130. package/cpp/llama-hparams.cpp +180 -0
  131. package/cpp/llama-hparams.h +233 -0
  132. package/cpp/llama-impl.cpp +167 -0
  133. package/cpp/llama-impl.h +61 -0
  134. package/cpp/llama-io.cpp +15 -0
  135. package/cpp/llama-io.h +35 -0
  136. package/cpp/llama-kv-cache-iswa.cpp +318 -0
  137. package/cpp/llama-kv-cache-iswa.h +135 -0
  138. package/cpp/llama-kv-cache.cpp +2059 -0
  139. package/cpp/llama-kv-cache.h +374 -0
  140. package/cpp/llama-kv-cells.h +491 -0
  141. package/cpp/llama-memory-hybrid.cpp +258 -0
  142. package/cpp/llama-memory-hybrid.h +137 -0
  143. package/cpp/llama-memory-recurrent.cpp +1146 -0
  144. package/cpp/llama-memory-recurrent.h +179 -0
  145. package/cpp/llama-memory.cpp +59 -0
  146. package/cpp/llama-memory.h +119 -0
  147. package/cpp/llama-mmap.cpp +609 -0
  148. package/cpp/llama-mmap.h +68 -0
  149. package/cpp/llama-model-loader.cpp +1166 -0
  150. package/cpp/llama-model-loader.h +170 -0
  151. package/cpp/llama-model-saver.cpp +282 -0
  152. package/cpp/llama-model-saver.h +37 -0
  153. package/cpp/llama-model.cpp +19061 -0
  154. package/cpp/llama-model.h +491 -0
  155. package/cpp/llama-sampling.cpp +2575 -0
  156. package/cpp/llama-sampling.h +32 -0
  157. package/cpp/llama-vocab.cpp +3792 -0
  158. package/cpp/llama-vocab.h +176 -0
  159. package/cpp/llama.cpp +358 -0
  160. package/cpp/llama.h +1373 -0
  161. package/cpp/log.cpp +428 -0
  162. package/cpp/log.h +103 -0
  163. package/cpp/minja/chat-template.hpp +550 -0
  164. package/cpp/minja/minja.hpp +3009 -0
  165. package/cpp/nlohmann/json.hpp +25526 -0
  166. package/cpp/nlohmann/json_fwd.hpp +187 -0
  167. package/cpp/regex-partial.cpp +204 -0
  168. package/cpp/regex-partial.h +56 -0
  169. package/cpp/sampling.cpp +579 -0
  170. package/cpp/sampling.h +107 -0
  171. package/cpp/tools/mtmd/clip-impl.h +473 -0
  172. package/cpp/tools/mtmd/clip.cpp +4322 -0
  173. package/cpp/tools/mtmd/clip.h +106 -0
  174. package/cpp/tools/mtmd/miniaudio/miniaudio.h +93468 -0
  175. package/cpp/tools/mtmd/mtmd-audio.cpp +769 -0
  176. package/cpp/tools/mtmd/mtmd-audio.h +47 -0
  177. package/cpp/tools/mtmd/mtmd-helper.cpp +460 -0
  178. package/cpp/tools/mtmd/mtmd-helper.h +95 -0
  179. package/cpp/tools/mtmd/mtmd.cpp +1066 -0
  180. package/cpp/tools/mtmd/mtmd.h +302 -0
  181. package/cpp/tools/mtmd/stb/stb_image.h +7988 -0
  182. package/cpp/unicode-data.cpp +7034 -0
  183. package/cpp/unicode-data.h +20 -0
  184. package/cpp/unicode.cpp +1061 -0
  185. package/cpp/unicode.h +68 -0
  186. package/cpp/vendor/cpp-httplib/httplib.cpp +16509 -0
  187. package/cpp/vendor/cpp-httplib/httplib.h +3883 -0
  188. package/desktop/electron-builder.config.cjs +157 -0
  189. package/desktop/entitlements.mac.plist +12 -0
  190. package/desktop/package.json +11 -0
  191. package/desktop/resolve-package-root.cjs +88 -0
  192. package/desktop/src/main/backend-selector.cjs +148 -0
  193. package/desktop/src/main/gpu-probe.cjs +142 -0
  194. package/desktop/src/main/index.cjs +58 -0
  195. package/desktop/src/main/ipc-handlers.cjs +212 -0
  196. package/desktop/src/main/model-store.cjs +50 -0
  197. package/desktop/src/main/preload.cjs +39 -0
  198. package/desktop/src/main/sidecar-client.cjs +76 -0
  199. package/desktop/src/main/sidecar-manager.cjs +364 -0
  200. package/dist/docs.json +14357 -0
  201. package/dist/esm/definitions.d.ts +731 -0
  202. package/dist/esm/definitions.js +2 -0
  203. package/dist/esm/definitions.js.map +1 -0
  204. package/dist/esm/desktop.d.ts +37 -0
  205. package/dist/esm/desktop.js +133 -0
  206. package/dist/esm/desktop.js.map +1 -0
  207. package/dist/esm/index.d.ts +200 -0
  208. package/dist/esm/index.js +612 -0
  209. package/dist/esm/index.js.map +1 -0
  210. package/dist/esm/isomorphic/desktop.runtime.d.ts +37 -0
  211. package/dist/esm/isomorphic/desktop.runtime.js +36 -0
  212. package/dist/esm/isomorphic/desktop.runtime.js.map +1 -0
  213. package/dist/esm/isomorphic/errors.d.ts +6 -0
  214. package/dist/esm/isomorphic/errors.js +9 -0
  215. package/dist/esm/isomorphic/errors.js.map +1 -0
  216. package/dist/esm/isomorphic/model.admission.d.ts +17 -0
  217. package/dist/esm/isomorphic/model.admission.js +27 -0
  218. package/dist/esm/isomorphic/model.admission.js.map +1 -0
  219. package/dist/esm/isomorphic/model.scheduler.d.ts +31 -0
  220. package/dist/esm/isomorphic/model.scheduler.js +95 -0
  221. package/dist/esm/isomorphic/model.scheduler.js.map +1 -0
  222. package/dist/esm/isomorphic/provider.desktop.d.ts +40 -0
  223. package/dist/esm/isomorphic/provider.desktop.js +411 -0
  224. package/dist/esm/isomorphic/provider.desktop.js.map +1 -0
  225. package/dist/esm/isomorphic/provider.factory.d.ts +2 -0
  226. package/dist/esm/isomorphic/provider.factory.js +16 -0
  227. package/dist/esm/isomorphic/provider.factory.js.map +1 -0
  228. package/dist/esm/isomorphic/provider.interface.d.ts +76 -0
  229. package/dist/esm/isomorphic/provider.interface.js +2 -0
  230. package/dist/esm/isomorphic/provider.interface.js.map +1 -0
  231. package/dist/esm/isomorphic/provider.native.d.ts +18 -0
  232. package/dist/esm/isomorphic/provider.native.js +173 -0
  233. package/dist/esm/isomorphic/provider.native.js.map +1 -0
  234. package/dist/esm/isomorphic/provider.web.d.ts +88 -0
  235. package/dist/esm/isomorphic/provider.web.js +573 -0
  236. package/dist/esm/isomorphic/provider.web.js.map +1 -0
  237. package/dist/esm/isomorphic/sidecar-sse.d.ts +14 -0
  238. package/dist/esm/isomorphic/sidecar-sse.js +76 -0
  239. package/dist/esm/isomorphic/sidecar-sse.js.map +1 -0
  240. package/dist/esm/isomorphic/wasmMemoryCalibration.d.ts +26 -0
  241. package/dist/esm/isomorphic/wasmMemoryCalibration.js +60 -0
  242. package/dist/esm/isomorphic/wasmMemoryCalibration.js.map +1 -0
  243. package/dist/esm/isomorphic/wasmMemoryPolicy.d.ts +55 -0
  244. package/dist/esm/isomorphic/wasmMemoryPolicy.js +93 -0
  245. package/dist/esm/isomorphic/wasmMemoryPolicy.js.map +1 -0
  246. package/dist/esm/storage/manifest.d.ts +13 -0
  247. package/dist/esm/storage/manifest.js +87 -0
  248. package/dist/esm/storage/manifest.js.map +1 -0
  249. package/dist/esm/storage/opfs.store.d.ts +31 -0
  250. package/dist/esm/storage/opfs.store.js +241 -0
  251. package/dist/esm/storage/opfs.store.js.map +1 -0
  252. package/dist/esm/web.d.ts +206 -0
  253. package/dist/esm/web.js +521 -0
  254. package/dist/esm/web.js.map +1 -0
  255. package/dist/esm/workers/async-file.d.ts +13 -0
  256. package/dist/esm/workers/async-file.js +12 -0
  257. package/dist/esm/workers/async-file.js.map +1 -0
  258. package/dist/esm/workers/heapfs.d.ts +55 -0
  259. package/dist/esm/workers/heapfs.js +115 -0
  260. package/dist/esm/workers/heapfs.js.map +1 -0
  261. package/dist/esm/workers/wasm.engine.d.ts +86 -0
  262. package/dist/esm/workers/wasm.engine.js +504 -0
  263. package/dist/esm/workers/wasm.engine.js.map +1 -0
  264. package/dist/esm/workers/worker.protocol.d.ts +160 -0
  265. package/dist/esm/workers/worker.protocol.js +2 -0
  266. package/dist/esm/workers/worker.protocol.js.map +1 -0
  267. package/dist/plugin.cjs +3179 -0
  268. package/dist/plugin.cjs.map +1 -0
  269. package/dist/plugin.js +3181 -0
  270. package/dist/plugin.js.map +1 -0
  271. package/dist/wasm/llama_engine.d.ts +74 -0
  272. package/dist/wasm/llama_engine.js +1829 -0
  273. package/dist/wasm/llama_engine.wasm +0 -0
  274. package/dist/wasm/llama_engine_emscripten.mjs +2 -0
  275. package/dist/wasm/package.json +16 -0
  276. package/dist/workers/llm.worker.js +1226 -0
  277. package/dist/workers/llm.worker.js.map +7 -0
  278. package/extraResources/llama-wasm/llama_engine.d.ts +74 -0
  279. package/extraResources/llama-wasm/llama_engine.js +1829 -0
  280. package/extraResources/llama-wasm/llama_engine.wasm +0 -0
  281. package/extraResources/llama-wasm/llama_engine_emscripten.mjs +2 -0
  282. package/extraResources/llama-wasm/package.json +16 -0
  283. package/extraResources/sidecar/README.md +11 -0
  284. package/extraResources/sidecar/darwin-arm64 +0 -0
  285. package/extraResources/sidecar/darwin-x64 +0 -0
  286. package/ios/CMakeLists-arm64.txt +161 -0
  287. package/ios/CMakeLists-x86_64.txt +188 -0
  288. package/ios/CMakeLists.txt +161 -0
  289. package/ios/Frameworks/llama-cpp.framework/Info.plist +28 -0
  290. package/ios/Frameworks/llama-cpp.framework/llama-cpp +0 -0
  291. package/ios/Sources/LlamaCppCapacitor/LlamaCpp.swift +1365 -0
  292. package/ios/Sources/LlamaCppCapacitor/LlamaCppPlugin.swift +694 -0
  293. package/ios/Sources/LlamaCppCapacitor/LlamaNativeBridge.swift +349 -0
  294. package/ios/Sources/LlamaCppCapacitor/ModelAdmissionController.swift +177 -0
  295. package/ios/embed-metal-shaders.sh +24 -0
  296. package/ios/metal-embed.cmake +29 -0
  297. package/package.json +281 -0
  298. package/scripts/build-js-preserve-wasm.cjs +53 -0
  299. package/scripts/build-sidecar-linux.sh +6 -0
  300. package/scripts/build-sidecar-win.bat +19 -0
  301. package/scripts/build-sidecar.sh +184 -0
  302. package/scripts/embed-llama-ios-app-framework.sh +63 -0
  303. package/scripts/ensure-desktop-sidecar-bundle.cjs +103 -0
  304. package/scripts/ensure-llama-ios-xcframework.sh +108 -0
  305. package/scripts/fix-esm-extensions.cjs +45 -0
  306. package/scripts/prepare-js-dist.cjs +28 -0
  307. package/scripts/stage-desktop-resources.cjs +116 -0
  308. package/sidecar/CMakeLists.txt +192 -0
  309. package/sidecar/cap-sidecar-main.cpp +68 -0
  310. package/types/llama-cpp-pro.d.ts +441 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["// Native parameter types that match llama.rn exactly\nexport interface NativeEmbeddingParams {\n embd_normalize?: number;\n}\n\nexport interface NativeContextParams {\n model: string;\n /**\n * Chat template to override the default one from the model.\n */\n chat_template?: string;\n\n is_model_asset?: boolean;\n use_progress_callback?: boolean;\n\n n_ctx?: number;\n n_batch?: number;\n n_ubatch?: number;\n\n n_threads?: number;\n\n /**\n * Path to draft model for speculative decoding (mobile optimization)\n */\n draft_model?: string;\n /**\n * Number of tokens to predict speculatively (default: 3 for mobile)\n */\n speculative_samples?: number;\n /**\n * Enable mobile-optimized speculative decoding\n */\n mobile_speculative?: boolean;\n\n /**\n * Number of layers to offload to GPU (iOS, Android, Desktop)\n */\n n_gpu_layers?: number;\n /**\n * Skip GPU devices (iOS, Android, Desktop force-CPU mode)\n */\n no_gpu_devices?: boolean;\n\n /**\n * Enable flash attention, only recommended in GPU device (Experimental in llama.cpp)\n */\n flash_attn?: boolean;\n\n /**\n * KV cache data type for the K (Experimental in llama.cpp)\n */\n cache_type_k?: string;\n /**\n * KV cache data type for the V (Experimental in llama.cpp)\n */\n cache_type_v?: string;\n\n use_mlock?: boolean;\n use_mmap?: boolean;\n vocab_only?: boolean;\n\n /**\n * Single LoRA adapter path\n */\n lora?: string;\n /**\n * Single LoRA adapter scale\n */\n lora_scaled?: number;\n /**\n * LoRA adapter list\n */\n lora_list?: Array<{ path: string; scaled?: number }>;\n\n rope_freq_base?: number;\n rope_freq_scale?: number;\n\n pooling_type?: number;\n\n /**\n * Enable context shifting to handle prompts larger than context size\n */\n ctx_shift?: boolean;\n\n /**\n * Use a unified buffer across the input sequences when computing the attention.\n * Try to disable when n_seq_max > 1 for improved performance when the sequences do not share a large prefix.\n */\n kv_unified?: boolean;\n\n /**\n * Use full-size SWA cache (https://github.com/ggml-org/llama.cpp/pull/13194#issuecomment-2868343055)\n */\n swa_full?: boolean;\n\n /**\n * Number of layers to keep MoE weights on CPU\n */\n n_cpu_moe?: number;\n\n // Embedding params\n embedding?: boolean;\n embd_normalize?: number;\n}\n\nexport interface NativeCompletionParams {\n prompt: string;\n n_threads?: number;\n /**\n * Enable Jinja. Default: true if supported by the model\n */\n jinja?: boolean;\n /**\n * JSON schema for convert to grammar for structured JSON output.\n * It will be override by grammar if both are set.\n */\n json_schema?: string;\n /**\n * Set grammar for grammar-based sampling (GBNF format). Default: no grammar\n * This will override json_schema if both are provided.\n */\n grammar?: string;\n /**\n * Lazy grammar sampling, trigger by grammar_triggers. Default: false\n */\n grammar_lazy?: boolean;\n /**\n * Enable thinking if jinja is enabled. Default: true\n */\n enable_thinking?: boolean;\n /**\n * Force thinking to be open. Default: false\n */\n thinking_forced_open?: boolean;\n /**\n * Lazy grammar triggers. Default: []\n */\n grammar_triggers?: Array<{\n type: number;\n value: string;\n token: number;\n }>;\n preserved_tokens?: Array<string>;\n chat_format?: number;\n reasoning_format?: string;\n /**\n * Path to an image file to process before generating text.\n * When provided, the image will be processed and added to the context.\n * Requires multimodal support to be enabled via initMultimodal.\n */\n media_paths?: Array<string>;\n /**\n * Specify a JSON array of stopping strings.\n * These words will not be included in the completion, so make sure to add them to the prompt for the next iteration. Default: `[]`\n */\n stop?: Array<string>;\n /**\n * Set the maximum number of tokens to predict when generating text.\n * **Note:** May exceed the set limit slightly if the last token is a partial multibyte character.\n * When 0,no tokens will be generated but the prompt is evaluated into the cache. Default: `-1`, where `-1` is infinity.\n */\n n_predict?: number;\n /**\n * If greater than 0, the response also contains the probabilities of top N tokens for each generated token given the sampling settings.\n * Note that for temperature < 0 the tokens are sampled greedily but token probabilities are still being calculated via a simple softmax of the logits without considering any other sampler settings.\n * Default: `0`\n */\n n_probs?: number;\n /**\n * Limit the next token selection to the K most probable tokens. Default: `40`\n */\n top_k?: number;\n /**\n * Limit the next token selection to a subset of tokens with a cumulative probability above a threshold P. Default: `0.95`\n */\n top_p?: number;\n /**\n * The minimum probability for a token to be considered, relative to the probability of the most likely token. Default: `0.05`\n */\n min_p?: number;\n /**\n * Set the chance for token removal via XTC sampler. Default: `0.0`, which is disabled.\n */\n xtc_probability?: number;\n /**\n * Set a minimum probability threshold for tokens to be removed via XTC sampler. Default: `0.1` (> `0.5` disables XTC)\n */\n xtc_threshold?: number;\n /**\n * Enable locally typical sampling with parameter p. Default: `1.0`, which is disabled.\n */\n typical_p?: number;\n /**\n * Adjust the randomness of the generated text. Default: `0.8`\n */\n temperature?: number;\n /**\n * Last n tokens to consider for penalizing repetition. Default: `64`, where `0` is disabled and `-1` is ctx-size.\n */\n penalty_last_n?: number;\n /**\n * Control the repetition of token sequences in the generated text. Default: `1.0`\n */\n penalty_repeat?: number;\n /**\n * Repeat alpha frequency penalty. Default: `0.0`, which is disabled.\n */\n penalty_freq?: number;\n /**\n * Repeat alpha presence penalty. Default: `0.0`, which is disabled.\n */\n penalty_present?: number;\n /**\n * Enable Mirostat sampling, controlling perplexity during text generation. Default: `0`, where `0` is disabled, `1` is Mirostat, and `2` is Mirostat 2.0.\n */\n mirostat?: number;\n /**\n * Set the Mirostat target entropy, parameter tau. Default: `5.0`\n */\n mirostat_tau?: number;\n /**\n * Set the Mirostat learning rate, parameter eta. Default: `0.1`\n */\n mirostat_eta?: number;\n /**\n * Set the DRY (Don't Repeat Yourself) repetition penalty multiplier. Default: `0.0`, which is disabled.\n */\n dry_multiplier?: number;\n /**\n * Set the DRY repetition penalty base value. Default: `1.75`\n */\n dry_base?: number;\n /**\n * Tokens that extend repetition beyond this receive exponentially increasing penalty: multiplier * base ^ (length of repeating sequence before token - allowed length). Default: `2`\n */\n dry_allowed_length?: number;\n /**\n * How many tokens to scan for repetitions. Default: `-1`, where `0` is disabled and `-1` is context size.\n */\n dry_penalty_last_n?: number;\n /**\n * Specify an array of sequence breakers for DRY sampling. Only a JSON array of strings is accepted. Default: `['\\n', ':', '\"', '*']`\n */\n dry_sequence_breakers?: Array<string>;\n /**\n * Top n sigma sampling as described in academic paper \"Top-nσ: Not All Logits Are You Need\" https://arxiv.org/pdf/2411.07641. Default: `-1.0` (Disabled)\n */\n top_n_sigma?: number;\n\n /**\n * Ignore end of stream token and continue generating. Default: `false`\n */\n ignore_eos?: boolean;\n /**\n * Modify the likelihood of a token appearing in the generated text completion.\n * For example, use `\"logit_bias\": [[15043,1.0]]` to increase the likelihood of the token 'Hello', or `\"logit_bias\": [[15043,-1.0]]` to decrease its likelihood.\n * Setting the value to false, `\"logit_bias\": [[15043,false]]` ensures that the token `Hello` is never produced. The tokens can also be represented as strings,\n * e.g.`[[\"Hello, World!\",-0.5]]` will reduce the likelihood of all the individual tokens that represent the string `Hello, World!`, just like the `presence_penalty` does.\n * Default: `[]`\n */\n logit_bias?: Array<Array<number>>;\n /**\n * Set the random number generator (RNG) seed. Default: `-1`, which is a random seed.\n */\n seed?: number;\n\n /**\n * Guide tokens for the completion.\n * Help prevent hallucinations by forcing the TTS to use the correct words.\n * Default: `[]`\n */\n guide_tokens?: Array<number>;\n\n emit_partial_completion: boolean;\n}\n\nexport interface NativeCompletionTokenProbItem {\n tok_str: string;\n prob: number;\n}\n\nexport interface NativeCompletionTokenProb {\n content: string;\n probs: Array<NativeCompletionTokenProbItem>;\n}\n\nexport interface NativeCompletionResultTimings {\n prompt_n: number;\n prompt_ms: number;\n prompt_per_token_ms: number;\n prompt_per_second: number;\n predicted_n: number;\n predicted_ms: number;\n predicted_per_token_ms: number;\n predicted_per_second: number;\n}\n\nexport interface NativeCompletionResult {\n /**\n * Original text (Ignored reasoning_content / tool_calls)\n */\n text: string;\n /**\n * Reasoning content (parsed for reasoning model)\n */\n reasoning_content: string;\n /**\n * Tool calls (parsed from response)\n */\n tool_calls: Array<{\n type: 'function';\n function: {\n name: string;\n arguments: string; // JSON string of arguments\n };\n id?: string;\n }>;\n /**\n * Content text (Filtered text by reasoning_content / tool_calls)\n */\n content: string;\n\n chat_format: number;\n\n tokens_predicted: number;\n tokens_evaluated: number;\n truncated: boolean;\n stopped_eos: boolean;\n stopped_word: string;\n stopped_limit: number;\n stopping_word: string;\n context_full: boolean;\n interrupted: boolean;\n tokens_cached: number;\n timings: NativeCompletionResultTimings;\n\n completion_probabilities?: Array<NativeCompletionTokenProb>;\n audio_tokens?: Array<number>;\n}\n\nexport interface NativeTokenizeResult {\n tokens: Array<number>;\n /**\n * Whether the tokenization contains images\n */\n has_images: boolean;\n /**\n * Bitmap hashes of the images\n */\n bitmap_hashes: Array<number>;\n /**\n * Chunk positions of the text and images\n */\n chunk_pos: Array<number>;\n /**\n * Chunk positions of the images\n */\n chunk_pos_images: Array<number>;\n}\n\nexport interface NativeEmbeddingResult {\n embedding: Array<number>;\n}\n\nexport interface NativeLlamaContext {\n contextId: number;\n model: {\n desc: string;\n size: number;\n nEmbd: number;\n nParams: number;\n chatTemplates: {\n llamaChat: boolean; // Chat template in llama-chat.cpp\n minja: {\n // Chat template supported by minja.hpp\n default: boolean;\n defaultCaps: {\n tools: boolean;\n toolCalls: boolean;\n toolResponses: boolean;\n systemRole: boolean;\n parallelToolCalls: boolean;\n toolCallId: boolean;\n };\n toolUse: boolean;\n toolUseCaps: {\n tools: boolean;\n toolCalls: boolean;\n toolResponses: boolean;\n systemRole: boolean;\n parallelToolCalls: boolean;\n toolCallId: boolean;\n };\n };\n };\n metadata: Object;\n isChatTemplateSupported: boolean; // Deprecated\n };\n /**\n * Loaded library name for Android\n */\n androidLib?: string;\n gpu: boolean;\n reasonNoGPU: string;\n}\n\nexport interface NativeSessionLoadResult {\n tokens_loaded: number;\n prompt: string;\n}\n\nexport interface NativeLlamaMessagePart {\n type: 'text';\n text: string;\n}\n\nexport interface NativeLlamaChatMessage {\n role: string;\n content: string | Array<NativeLlamaMessagePart>;\n}\n\nexport interface FormattedChatResult {\n type: 'jinja' | 'llama-chat';\n prompt: string;\n has_media: boolean;\n media_paths?: Array<string>;\n}\n\nexport interface JinjaFormattedChatResult extends FormattedChatResult {\n chat_format?: number;\n grammar?: string;\n grammar_lazy?: boolean;\n grammar_triggers?: Array<{\n type: number;\n value: string;\n token: number;\n }>;\n thinking_forced_open?: boolean;\n preserved_tokens?: Array<string>;\n additional_stops?: Array<string>;\n}\n\nexport interface NativeImageProcessingResult {\n success: boolean;\n prompt: string;\n error?: string;\n}\n\nexport interface NativeRerankParams {\n normalize?: number;\n}\n\nexport interface NativeRerankResult {\n score: number;\n index: number;\n}\n\n// High-level types for the plugin interface\nexport interface LlamaCppMessagePart {\n type: string;\n text?: string;\n image_url?: {\n url?: string;\n };\n input_audio?: {\n format: string;\n data?: string;\n url?: string;\n };\n}\n\nexport interface LlamaCppOAICompatibleMessage {\n role: string;\n content?: string | LlamaCppMessagePart[];\n}\n\nexport interface ToolCall {\n type: 'function';\n id?: string;\n function: {\n name: string;\n arguments: string; // JSON string\n };\n}\n\nexport interface TokenData {\n token: string;\n completion_probabilities?: Array<NativeCompletionTokenProb>;\n // Parsed content from accumulated text\n content?: string;\n reasoning_content?: string;\n tool_calls?: Array<ToolCall>;\n accumulated_text?: string;\n}\n\nexport interface ContextParams extends Omit<\n NativeContextParams,\n 'cache_type_k' | 'cache_type_v' | 'pooling_type'\n> {\n cache_type_k?:\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 cache_type_v?:\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 pooling_type?: 'none' | 'mean' | 'cls' | 'last' | 'rank';\n}\n\nexport interface EmbeddingParams extends NativeEmbeddingParams {}\n\nexport interface RerankParams {\n normalize?: number;\n}\n\nexport interface RerankResult {\n score: number;\n index: number;\n document?: string;\n}\n\nexport interface CompletionResponseFormat {\n type: 'text' | 'json_object' | 'json_schema';\n json_schema?: {\n strict?: boolean;\n schema: object;\n };\n schema?: object; // for json_object type\n}\n\nexport interface CompletionBaseParams {\n prompt?: string;\n messages?: LlamaCppOAICompatibleMessage[];\n chatTemplate?: string; // deprecated\n chat_template?: string;\n jinja?: boolean;\n tools?: object;\n parallel_tool_calls?: object;\n tool_choice?: string;\n response_format?: CompletionResponseFormat;\n media_paths?: string[];\n add_generation_prompt?: boolean;\n /*\n * Timestamp in seconds since epoch to apply to chat template's strftime_now\n */\n now?: string | number;\n chat_template_kwargs?: Record<string, string>;\n /**\n * Prefill text to be used for chat parsing (Generation Prompt + Content)\n * Used for if last assistant message is for prefill purpose\n */\n prefill_text?: string;\n}\n\nexport interface CompletionParams extends Omit<\n NativeCompletionParams,\n 'emit_partial_completion' | 'prompt'\n> {\n prompt?: string;\n messages?: LlamaCppOAICompatibleMessage[];\n chatTemplate?: string; // deprecated\n chat_template?: string;\n jinja?: boolean;\n /**\n * GBNF grammar for structured output. Takes precedence over json_schema.\n */\n grammar?: string;\n tools?: object;\n parallel_tool_calls?: object;\n tool_choice?: string;\n response_format?: CompletionResponseFormat;\n media_paths?: string[];\n add_generation_prompt?: boolean;\n /*\n * Timestamp in seconds since epoch to apply to chat template's strftime_now\n */\n now?: string | number;\n chat_template_kwargs?: Record<string, string>;\n /**\n * Prefill text to be used for chat parsing (Generation Prompt + Content)\n * Used for if last assistant message is for prefill purpose\n */\n prefill_text?: string;\n}\n\nexport interface BenchResult {\n modelDesc: string;\n modelSize: number;\n modelNParams: number;\n ppAvg: number;\n ppStd: number;\n tgAvg: number;\n tgStd: number;\n}\n\n// Main plugin interface\nexport interface LlamaCppPlugin {\n // Core initialization and management\n toggleNativeLog(options: { enabled: boolean }): Promise<void>;\n setContextLimit(options: { limit: number }): Promise<void>;\n modelInfo(options: { path: string; skip?: string[] }): Promise<Object>;\n initContext(options: { contextId: number; params: NativeContextParams }): Promise<NativeLlamaContext>;\n releaseContext(options: { contextId: number }): Promise<void>;\n releaseAllContexts(): Promise<void>;\n\n // Chat and completion\n getFormattedChat(options: {\n contextId: number;\n messages: string;\n chatTemplate?: string;\n params?: {\n jinja?: boolean;\n json_schema?: string;\n tools?: string;\n parallel_tool_calls?: string;\n tool_choice?: string;\n enable_thinking?: boolean;\n add_generation_prompt?: boolean;\n now?: string;\n chat_template_kwargs?: string;\n };\n }): Promise<JinjaFormattedChatResult | string>;\n\n completion(options: {\n contextId: number;\n params: NativeCompletionParams;\n }): Promise<NativeCompletionResult>;\n\n // Chat-first methods (like llama-cli -sys)\n chat(options: {\n contextId: number;\n messages: LlamaCppOAICompatibleMessage[];\n system?: string; // Simple system prompt like llama-cli -sys\n chatTemplate?: string;\n params?: Omit<NativeCompletionParams, 'prompt' | 'messages'>;\n }): Promise<NativeCompletionResult>;\n\n // Simple chat with system prompt (like llama-cli -sys \"You are a helpful assistant\")\n chatWithSystem(options: {\n contextId: number;\n system: string;\n message: string;\n params?: Omit<NativeCompletionParams, 'prompt' | 'messages'>;\n }): Promise<NativeCompletionResult>;\n\n // Simple text generation (like llama-cli -p \"prompt\")\n generateText(options: {\n contextId: number;\n prompt: string;\n params?: Omit<NativeCompletionParams, 'prompt' | 'messages'>;\n }): Promise<NativeCompletionResult>;\n\n stopCompletion(options: { contextId: number }): Promise<void>;\n\n // Session management\n loadSession(options: {\n contextId: number;\n filepath: string;\n }): Promise<NativeSessionLoadResult>;\n\n saveSession(options: {\n contextId: number;\n filepath: string;\n size: number;\n }): Promise<number>;\n\n // Tokenization\n tokenize(options: {\n contextId: number;\n text: string;\n imagePaths?: Array<string>;\n }): Promise<NativeTokenizeResult>;\n\n detokenize(options: {\n contextId: number;\n tokens: number[];\n }): Promise<string>;\n\n // Embeddings and reranking\n embedding(options: {\n contextId: number;\n text: string;\n params: NativeEmbeddingParams;\n }): Promise<NativeEmbeddingResult>;\n\n rerank(options: {\n contextId: number;\n query: string;\n documents: Array<string>;\n params?: NativeRerankParams;\n }): Promise<Array<NativeRerankResult>>;\n\n // Benchmarking\n bench(options: {\n contextId: number;\n pp: number;\n tg: number;\n pl: number;\n nr: number;\n }): Promise<string>;\n\n // LoRA adapters\n applyLoraAdapters(options: {\n contextId: number;\n loraAdapters: Array<{ path: string; scaled?: number }>;\n }): Promise<void>;\n\n removeLoraAdapters(options: { contextId: number }): Promise<void>;\n\n getLoadedLoraAdapters(options: {\n contextId: number;\n }): Promise<Array<{ path: string; scaled?: number }>>;\n\n // Multimodal methods\n initMultimodal(options: {\n contextId: number;\n params: {\n path: string;\n use_gpu: boolean;\n };\n }): Promise<boolean>;\n\n isMultimodalEnabled(options: {\n contextId: number;\n }): Promise<boolean>;\n\n getMultimodalSupport(options: {\n contextId: number;\n }): Promise<{\n vision: boolean;\n audio: boolean;\n }>;\n\n releaseMultimodal(options: {\n contextId: number;\n }): Promise<void>;\n\n // TTS methods\n initVocoder(options: {\n contextId: number;\n params: {\n path: string;\n n_batch?: number;\n };\n }): Promise<boolean>;\n\n isVocoderEnabled(options: { contextId: number }): Promise<boolean>;\n\n getFormattedAudioCompletion(options: {\n contextId: number;\n speakerJsonStr: string;\n textToSpeak: string;\n }): Promise<{\n prompt: string;\n grammar?: string;\n }>;\n\n getAudioCompletionGuideTokens(options: {\n contextId: number;\n textToSpeak: string;\n }): Promise<Array<number>>;\n\n decodeAudioTokens(options: {\n contextId: number;\n tokens: number[];\n }): Promise<Array<number>>;\n\n releaseVocoder(options: { contextId: number }): Promise<void>;\n\n // Model download and management\n downloadModel(options: {\n url: string;\n filename: string;\n }): Promise<string>;\n\n getDownloadProgress(options: {\n url: string;\n }): Promise<{\n progress: number;\n completed: boolean;\n failed: boolean;\n errorMessage?: string;\n localPath?: string;\n downloadedBytes: number;\n totalBytes: number;\n }>;\n\n cancelDownload(options: {\n url: string;\n }): Promise<boolean>;\n\n getAvailableModels(): Promise<Array<{\n name: string;\n path: string;\n size: number;\n }>>;\n\n // Grammar utilities\n convertJsonSchemaToGrammar(options: {\n schema: string;\n }): Promise<string>;\n\n /**\n * Start an in-process HTTP server in native code (not the WebView). Binds to loopback by default.\n * Uses the same GGUF stack as initContext; exposes GET /health, GET /v1/models, POST /v1/chat/completions (OpenAI-shaped).\n * This is a lightweight cpp-httplib server — not the full upstream llama.cpp `llama-server` executable.\n */\n startNativeLlamaServer(options: {\n modelPath: string;\n host?: string;\n port?: number;\n params?: NativeContextParams;\n }): Promise<{ running: boolean }>;\n\n stopNativeLlamaServer(): Promise<void>;\n\n isNativeLlamaServerRunning(): Promise<{ running: boolean }>;\n\n // Events\n addListener(eventName: string, listenerFunc: (data: any) => void): Promise<void>;\n removeAllListeners(eventName: string): Promise<void>;\n}\n"]}
@@ -0,0 +1,37 @@
1
+ import type { NativeContextParams, NativeLlamaContext } from './definitions';
2
+ import { LlamaCppWeb } from './web';
3
+ /**
4
+ * Capacitor LlamaCpp implementation for Electron desktop.
5
+ * Core inference (chat, completion, embeddings) uses the native GPU/CPU sidecar.
6
+ * Multimodal, LoRA, TTS, and benchmarking use the WASM worker (same as PWA).
7
+ */
8
+ export declare class LlamaCppDesktop extends LlamaCppWeb {
9
+ private desktopProvider;
10
+ private sidecarActive;
11
+ private gpuEnabled;
12
+ constructor();
13
+ initContext({ contextId, params, }: {
14
+ contextId: number;
15
+ params: NativeContextParams & {
16
+ embedding?: boolean;
17
+ };
18
+ }): Promise<NativeLlamaContext>;
19
+ setContextLimit(opts: {
20
+ limit: number;
21
+ }): Promise<void>;
22
+ releaseContext({ contextId }: {
23
+ contextId: number;
24
+ }): Promise<void>;
25
+ startNativeLlamaServer(options: {
26
+ modelPath: string;
27
+ host?: string;
28
+ port?: number;
29
+ params?: NativeContextParams;
30
+ }): Promise<{
31
+ running: boolean;
32
+ }>;
33
+ isNativeLlamaServerRunning(): Promise<{
34
+ running: boolean;
35
+ }>;
36
+ stopNativeLlamaServer(): Promise<void>;
37
+ }
@@ -0,0 +1,133 @@
1
+ import { LlamaCppWeb } from './web';
2
+ import { DesktopProvider } from './isomorphic/provider.desktop';
3
+ import { getDesktopBridge } from './isomorphic/desktop.runtime';
4
+ const MODEL_DESC_DESKTOP = {
5
+ desc: 'Desktop sidecar model',
6
+ size: 0,
7
+ nEmbd: 0,
8
+ nParams: 0,
9
+ chatTemplates: {
10
+ llamaChat: true,
11
+ minja: {
12
+ default: true,
13
+ defaultCaps: {
14
+ tools: false, toolCalls: false, toolResponses: false,
15
+ systemRole: true, parallelToolCalls: false, toolCallId: false,
16
+ },
17
+ toolUse: false,
18
+ toolUseCaps: {
19
+ tools: false, toolCalls: false, toolResponses: false,
20
+ systemRole: true, parallelToolCalls: false, toolCallId: false,
21
+ },
22
+ },
23
+ },
24
+ metadata: {},
25
+ isChatTemplateSupported: true,
26
+ };
27
+ /** Sidecar DELETE route is `/v1/internal/models/([^/]+)` — never use absolute paths as ids. */
28
+ function sidecarModelIdFromPath(modelPath) {
29
+ const base = modelPath.split(/[/\\]/).pop() || modelPath;
30
+ return base.replace(/\.gguf$/i, '') || base;
31
+ }
32
+ /**
33
+ * Capacitor LlamaCpp implementation for Electron desktop.
34
+ * Core inference (chat, completion, embeddings) uses the native GPU/CPU sidecar.
35
+ * Multimodal, LoRA, TTS, and benchmarking use the WASM worker (same as PWA).
36
+ */
37
+ export class LlamaCppDesktop extends LlamaCppWeb {
38
+ constructor() {
39
+ super();
40
+ this.sidecarActive = false;
41
+ this.gpuEnabled = false;
42
+ this.desktopProvider = new DesktopProvider();
43
+ this.provider =
44
+ this.desktopProvider;
45
+ }
46
+ async initContext({ contextId, params, }) {
47
+ var _a;
48
+ const modelPath = params.model;
49
+ const modelId = sidecarModelIdFromPath(modelPath);
50
+ const bridge = getDesktopBridge();
51
+ if (bridge === null || bridge === void 0 ? void 0 : bridge.ensureSidecar) {
52
+ const result = await bridge.ensureSidecar({
53
+ modelPath,
54
+ modelId,
55
+ n_ctx: params.n_ctx,
56
+ n_gpu_layers: params.n_gpu_layers,
57
+ n_threads: params.n_threads,
58
+ embedding: params.embedding,
59
+ });
60
+ if ((result === null || result === void 0 ? void 0 : result.ok) && result.port) {
61
+ this.desktopProvider.setSidecarPort(result.port);
62
+ await this.desktopProvider.loadModel({
63
+ modelId,
64
+ modelPath,
65
+ n_ctx: params.n_ctx,
66
+ n_gpu_layers: params.n_gpu_layers,
67
+ n_threads: params.n_threads,
68
+ embedding: params.embedding,
69
+ });
70
+ this.sidecarActive = true;
71
+ this.gpuEnabled = !!result.gpuEnabled;
72
+ this.contextToModel.set(contextId, modelId);
73
+ return {
74
+ contextId,
75
+ gpu: this.gpuEnabled,
76
+ reasonNoGPU: this.gpuEnabled ? '' : ((_a = result.reasonNoGpu) !== null && _a !== void 0 ? _a : 'CPU-only inference'),
77
+ model: MODEL_DESC_DESKTOP,
78
+ };
79
+ }
80
+ }
81
+ const fallback = await super.initContext({ contextId, params });
82
+ this.sidecarActive = false;
83
+ return fallback;
84
+ }
85
+ async setContextLimit(opts) {
86
+ await this.desktopProvider.setContextLimit(opts.limit);
87
+ }
88
+ async releaseContext({ contextId }) {
89
+ const modelId = this.contextToModel.get(contextId);
90
+ if (modelId && this.sidecarActive) {
91
+ await this.desktopProvider.unloadModel(modelId);
92
+ }
93
+ await super.releaseContext({ contextId });
94
+ }
95
+ async startNativeLlamaServer(options) {
96
+ var _a, _b, _c, _d;
97
+ const bridge = getDesktopBridge();
98
+ if (!(bridge === null || bridge === void 0 ? void 0 : bridge.ensureSidecar)) {
99
+ throw new Error('LlamaCppDesktop: IPC bridge not available — register ipc-handlers in main process');
100
+ }
101
+ const result = await bridge.ensureSidecar({
102
+ modelPath: options.modelPath,
103
+ modelId: sidecarModelIdFromPath(options.modelPath),
104
+ host: (_a = options.host) !== null && _a !== void 0 ? _a : '127.0.0.1',
105
+ port: options.port,
106
+ n_ctx: (_b = options.params) === null || _b === void 0 ? void 0 : _b.n_ctx,
107
+ n_gpu_layers: (_c = options.params) === null || _c === void 0 ? void 0 : _c.n_gpu_layers,
108
+ n_threads: (_d = options.params) === null || _d === void 0 ? void 0 : _d.n_threads,
109
+ });
110
+ if ((result === null || result === void 0 ? void 0 : result.ok) && result.port) {
111
+ this.desktopProvider.setSidecarPort(result.port);
112
+ this.sidecarActive = true;
113
+ return { running: true };
114
+ }
115
+ return { running: false };
116
+ }
117
+ async isNativeLlamaServerRunning() {
118
+ const bridge = getDesktopBridge();
119
+ if (bridge === null || bridge === void 0 ? void 0 : bridge.getSidecarStatus) {
120
+ const st = await bridge.getSidecarStatus();
121
+ return { running: !!(st === null || st === void 0 ? void 0 : st.running) };
122
+ }
123
+ return { running: this.sidecarActive };
124
+ }
125
+ async stopNativeLlamaServer() {
126
+ const bridge = getDesktopBridge();
127
+ if (bridge === null || bridge === void 0 ? void 0 : bridge.stopSidecar) {
128
+ await bridge.stopSidecar();
129
+ }
130
+ this.sidecarActive = false;
131
+ }
132
+ }
133
+ //# sourceMappingURL=desktop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../src/desktop.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NativeContextParams, NativeLlamaContext } from './definitions';\nimport { LlamaCppWeb } from './web';\nimport { DesktopProvider } from './isomorphic/provider.desktop';\nimport { getDesktopBridge } from './isomorphic/desktop.runtime';\nimport { WebProvider } from './isomorphic/provider.web';\n\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\n/** Sidecar DELETE route is `/v1/internal/models/([^/]+)` — never use absolute paths as ids. */\nfunction sidecarModelIdFromPath(modelPath: string): string {\n const base = modelPath.split(/[/\\\\]/).pop() || modelPath;\n return base.replace(/\\.gguf$/i, '') || base;\n}\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 private desktopProvider: DesktopProvider;\n private sidecarActive = false;\n private gpuEnabled = false;\n\n constructor() {\n super();\n this.desktopProvider = new DesktopProvider();\n (this as unknown as { provider: WebProvider }).provider =\n this.desktopProvider as unknown as WebProvider;\n }\n\n override async initContext({\n contextId,\n params,\n }: {\n contextId: number;\n params: NativeContextParams & { embedding?: boolean };\n }): Promise<NativeLlamaContext> {\n const modelPath = params.model;\n const modelId = sidecarModelIdFromPath(modelPath);\n const bridge = getDesktopBridge();\n\n if (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?.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 ? '' : (result.reasonNoGpu ?? 'CPU-only inference'),\n model: MODEL_DESC_DESKTOP,\n };\n }\n }\n\n const fallback = await super.initContext({ contextId, params });\n this.sidecarActive = false;\n return fallback;\n }\n\n async setContextLimit(opts: { limit: number }): Promise<void> {\n await this.desktopProvider.setContextLimit(opts.limit);\n }\n\n override async releaseContext({ contextId }: { contextId: number }): Promise<void> {\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\n override async startNativeLlamaServer(options: {\n modelPath: string;\n host?: string;\n port?: number;\n params?: NativeContextParams;\n }): Promise<{ running: boolean }> {\n const bridge = getDesktopBridge();\n if (!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: options.host ?? '127.0.0.1',\n port: options.port,\n n_ctx: options.params?.n_ctx,\n n_gpu_layers: options.params?.n_gpu_layers,\n n_threads: options.params?.n_threads,\n });\n if (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\n override async isNativeLlamaServerRunning(): Promise<{ running: boolean }> {\n const bridge = getDesktopBridge();\n if (bridge?.getSidecarStatus) {\n const st = await bridge.getSidecarStatus();\n return { running: !!st?.running };\n }\n return { running: this.sidecarActive };\n }\n\n override async stopNativeLlamaServer(): Promise<void> {\n const bridge = getDesktopBridge();\n if (bridge?.stopSidecar) {\n await bridge.stopSidecar();\n }\n this.sidecarActive = false;\n }\n}\n"]}
@@ -0,0 +1,200 @@
1
+ import type { NativeContextParams, NativeLlamaContext, NativeCompletionParams, NativeCompletionTokenProb, NativeCompletionResult, NativeTokenizeResult, NativeEmbeddingResult, NativeSessionLoadResult, NativeEmbeddingParams, NativeRerankParams, NativeRerankResult, NativeCompletionTokenProbItem, NativeCompletionResultTimings, JinjaFormattedChatResult, FormattedChatResult, NativeImageProcessingResult, LlamaCppMessagePart, LlamaCppOAICompatibleMessage, ContextParams, EmbeddingParams, RerankParams, RerankResult, CompletionResponseFormat, CompletionParams, BenchResult, LlamaCppPlugin, ToolCall, TokenData } from './definitions';
2
+ export declare const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = "<__media__>";
3
+ declare const LlamaCpp: LlamaCppPlugin;
4
+ export type RNLlamaMessagePart = LlamaCppMessagePart;
5
+ export type RNLlamaOAICompatibleMessage = LlamaCppOAICompatibleMessage;
6
+ export type { NativeContextParams, NativeLlamaContext, NativeCompletionParams, NativeCompletionTokenProb, NativeCompletionResult, NativeTokenizeResult, NativeEmbeddingResult, NativeSessionLoadResult, NativeEmbeddingParams, NativeRerankParams, NativeRerankResult, NativeCompletionTokenProbItem, NativeCompletionResultTimings, FormattedChatResult, JinjaFormattedChatResult, NativeImageProcessingResult, ContextParams, EmbeddingParams, RerankParams, RerankResult, CompletionResponseFormat, CompletionParams, BenchResult, ToolCall, TokenData, };
7
+ export declare const RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER = "<__media__>";
8
+ export declare class LlamaContext {
9
+ id: number;
10
+ gpu: boolean;
11
+ reasonNoGPU: string;
12
+ model: NativeLlamaContext['model'];
13
+ constructor({ contextId, gpu, reasonNoGPU, model }: NativeLlamaContext);
14
+ /**
15
+ * Load cached prompt & completion state from a file.
16
+ */
17
+ loadSession(filepath: string): Promise<NativeSessionLoadResult>;
18
+ /**
19
+ * Save current cached prompt & completion state to a file.
20
+ */
21
+ saveSession(filepath: string, options?: {
22
+ tokenSize: number;
23
+ }): Promise<number>;
24
+ isLlamaChatSupported(): boolean;
25
+ isJinjaSupported(): boolean;
26
+ getFormattedChat(messages: RNLlamaOAICompatibleMessage[], template?: string | null, params?: {
27
+ jinja?: boolean;
28
+ response_format?: CompletionResponseFormat;
29
+ tools?: object;
30
+ parallel_tool_calls?: object;
31
+ tool_choice?: string;
32
+ enable_thinking?: boolean;
33
+ add_generation_prompt?: boolean;
34
+ now?: string | number;
35
+ chat_template_kwargs?: Record<string, string>;
36
+ }): Promise<FormattedChatResult | JinjaFormattedChatResult>;
37
+ /**
38
+ * Generate a completion based on the provided parameters
39
+ * @param params Completion parameters including prompt or messages
40
+ * @param callback Optional callback for token-by-token streaming
41
+ * @returns Promise resolving to the completion result
42
+ *
43
+ * Note: For multimodal support, you can include an media_paths parameter.
44
+ * This will process the images and add them to the context before generating text.
45
+ * Multimodal support must be enabled via initMultimodal() first.
46
+ */
47
+ completion(params: CompletionParams, callback?: (data: TokenData) => void): Promise<NativeCompletionResult>;
48
+ stopCompletion(): Promise<void>;
49
+ /**
50
+ * Tokenize text or text with images
51
+ * @param text Text to tokenize
52
+ * @param params.media_paths Array of image paths to tokenize (if multimodal is enabled)
53
+ * @returns Promise resolving to the tokenize result
54
+ */
55
+ tokenize(text: string, { media_paths: mediaPaths, }?: {
56
+ media_paths?: string[];
57
+ }): Promise<NativeTokenizeResult>;
58
+ detokenize(tokens: number[]): Promise<string>;
59
+ embedding(text: string, params?: EmbeddingParams): Promise<NativeEmbeddingResult>;
60
+ /**
61
+ * Rerank documents based on relevance to a query
62
+ * @param query The query text to rank documents against
63
+ * @param documents Array of document texts to rank
64
+ * @param params Optional reranking parameters
65
+ * @returns Promise resolving to an array of ranking results with scores and indices
66
+ */
67
+ rerank(query: string, documents: string[], params?: RerankParams): Promise<RerankResult[]>;
68
+ bench(pp: number, tg: number, pl: number, nr: number): Promise<BenchResult>;
69
+ applyLoraAdapters(loraList: Array<{
70
+ path: string;
71
+ scaled?: number;
72
+ }>): Promise<void>;
73
+ removeLoraAdapters(): Promise<void>;
74
+ getLoadedLoraAdapters(): Promise<Array<{
75
+ path: string;
76
+ scaled?: number;
77
+ }>>;
78
+ /**
79
+ * Initialize multimodal support with a mmproj file
80
+ * @param params Parameters for multimodal support
81
+ * @param params.path Path to the multimodal projector file
82
+ * @param params.use_gpu Whether to use GPU
83
+ * @returns Promise resolving to true if initialization was successful
84
+ */
85
+ initMultimodal({ path, use_gpu: useGpu, }: {
86
+ path: string;
87
+ use_gpu?: boolean;
88
+ }): Promise<boolean>;
89
+ /**
90
+ * Check if multimodal support is enabled
91
+ * @returns Promise resolving to true if multimodal is enabled
92
+ */
93
+ isMultimodalEnabled(): Promise<boolean>;
94
+ /**
95
+ * Check multimodal support
96
+ * @returns Promise resolving to an object with vision and audio support
97
+ */
98
+ getMultimodalSupport(): Promise<{
99
+ vision: boolean;
100
+ audio: boolean;
101
+ }>;
102
+ /**
103
+ * Release multimodal support
104
+ * @returns Promise resolving to void
105
+ */
106
+ releaseMultimodal(): Promise<void>;
107
+ /**
108
+ * Initialize TTS support with a vocoder model
109
+ * @param params Parameters for TTS support
110
+ * @param params.path Path to the vocoder model
111
+ * @param params.n_batch Batch size for the vocoder model
112
+ * @returns Promise resolving to true if initialization was successful
113
+ */
114
+ initVocoder({ path, n_batch: nBatch }: {
115
+ path: string;
116
+ n_batch?: number;
117
+ }): Promise<boolean>;
118
+ /**
119
+ * Check if TTS support is enabled
120
+ * @returns Promise resolving to true if TTS is enabled
121
+ */
122
+ isVocoderEnabled(): Promise<boolean>;
123
+ /**
124
+ * Get a formatted audio completion prompt
125
+ * @param speakerJsonStr JSON string representing the speaker
126
+ * @param textToSpeak Text to speak
127
+ * @returns Promise resolving to the formatted audio completion result with prompt and grammar
128
+ */
129
+ getFormattedAudioCompletion(speaker: object | null, textToSpeak: string): Promise<{
130
+ prompt: string;
131
+ grammar?: string;
132
+ }>;
133
+ /**
134
+ * Get guide tokens for audio completion
135
+ * @param textToSpeak Text to speak
136
+ * @returns Promise resolving to the guide tokens
137
+ */
138
+ getAudioCompletionGuideTokens(textToSpeak: string): Promise<Array<number>>;
139
+ /**
140
+ * Decode audio tokens
141
+ * @param tokens Array of audio tokens
142
+ * @returns Promise resolving to the decoded audio tokens
143
+ */
144
+ decodeAudioTokens(tokens: number[]): Promise<Array<number>>;
145
+ /**
146
+ * Release TTS support
147
+ * @returns Promise resolving to void
148
+ */
149
+ releaseVocoder(): Promise<void>;
150
+ release(): Promise<void>;
151
+ }
152
+ export declare function toggleNativeLog(enabled: boolean): Promise<void>;
153
+ export declare function addNativeLogListener(listener: (level: string, text: string) => void): {
154
+ remove: () => void;
155
+ };
156
+ export declare function setContextLimit(limit: number): Promise<void>;
157
+ export declare function loadLlamaModelInfo(model: string): Promise<Object>;
158
+ export declare function initLlama({ model, is_model_asset: isModelAsset, pooling_type: poolingType, lora, lora_list: loraList, ...rest }: ContextParams, onProgress?: (progress: number) => void): Promise<LlamaContext>;
159
+ export declare function releaseAllLlama(): Promise<void>;
160
+ export declare function downloadModel(url: string, filename: string): Promise<string>;
161
+ export declare function getDownloadProgress(url: string): Promise<{
162
+ progress: number;
163
+ completed: boolean;
164
+ failed: boolean;
165
+ errorMessage?: string;
166
+ localPath?: string;
167
+ downloadedBytes: number;
168
+ totalBytes: number;
169
+ }>;
170
+ export declare function cancelDownload(url: string): Promise<boolean>;
171
+ export declare function getAvailableModels(): Promise<Array<{
172
+ name: string;
173
+ path: string;
174
+ size: number;
175
+ }>>;
176
+ /**
177
+ * Convert a JSON schema to GBNF grammar format
178
+ * @param schema JSON schema object
179
+ * @returns Promise resolving to GBNF grammar string
180
+ */
181
+ export declare function convertJsonSchemaToGrammar(schema: object): Promise<string>;
182
+ export declare const BuildInfo: {
183
+ number: string;
184
+ commit: string;
185
+ };
186
+ export { LlamaCpp };
187
+ export * from './isomorphic/provider.interface';
188
+ export * from './isomorphic/errors';
189
+ export * from './isomorphic/provider.factory';
190
+ export * from './isomorphic/provider.native';
191
+ export * from './isomorphic/provider.web';
192
+ export * from './isomorphic/provider.desktop';
193
+ export * from './isomorphic/desktop.runtime';
194
+ export { LlamaCppDesktop } from './desktop';
195
+ export * from './isomorphic/model.admission';
196
+ export * from './isomorphic/model.scheduler';
197
+ export * from './isomorphic/wasmMemoryPolicy';
198
+ export * from './isomorphic/wasmMemoryCalibration';
199
+ export * from './storage/manifest';
200
+ export * from './storage/opfs.store';