cui-llama.rn 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +317 -319
  3. package/android/build.gradle +116 -116
  4. package/android/gradle.properties +5 -5
  5. package/android/src/main/AndroidManifest.xml +4 -4
  6. package/android/src/main/CMakeLists.txt +124 -124
  7. package/android/src/main/java/com/rnllama/LlamaContext.java +645 -645
  8. package/android/src/main/java/com/rnllama/RNLlama.java +695 -695
  9. package/android/src/main/java/com/rnllama/RNLlamaPackage.java +48 -48
  10. package/android/src/main/jni-utils.h +100 -100
  11. package/android/src/main/jni.cpp +1263 -1263
  12. package/android/src/main/jniLibs/arm64-v8a/librnllama.so +0 -0
  13. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8.so +0 -0
  14. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2.so +0 -0
  15. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod.so +0 -0
  16. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod_i8mm.so +0 -0
  17. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_i8mm.so +0 -0
  18. package/android/src/main/jniLibs/x86_64/librnllama.so +0 -0
  19. package/android/src/main/jniLibs/x86_64/librnllama_x86_64.so +0 -0
  20. package/android/src/newarch/java/com/rnllama/RNLlamaModule.java +135 -135
  21. package/android/src/oldarch/java/com/rnllama/RNLlamaModule.java +136 -136
  22. package/cpp/README.md +4 -4
  23. package/cpp/ggml-llama-sim.metallib +0 -0
  24. package/cpp/ggml-llama.metallib +0 -0
  25. package/cpp/ggml-metal-impl.h +597 -597
  26. package/cpp/ggml-metal.m +4 -0
  27. package/cpp/ggml.h +1 -1
  28. package/cpp/rn-llama.cpp +873 -873
  29. package/cpp/rn-llama.h +138 -138
  30. package/cpp/sampling.h +107 -107
  31. package/cpp/unicode-data.cpp +7034 -7034
  32. package/cpp/unicode-data.h +20 -20
  33. package/cpp/unicode.cpp +849 -849
  34. package/cpp/unicode.h +66 -66
  35. package/ios/CMakeLists.txt +116 -108
  36. package/ios/RNLlama.h +7 -7
  37. package/ios/RNLlama.mm +418 -405
  38. package/ios/RNLlamaContext.h +57 -57
  39. package/ios/RNLlamaContext.mm +835 -835
  40. package/ios/rnllama.xcframework/Info.plist +74 -74
  41. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/binary-ops.h +16 -0
  42. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/chat.h +143 -0
  43. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/common.h +677 -0
  44. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/cpu-common.h +72 -0
  45. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-alloc.h +76 -0
  46. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-backend-impl.h +255 -0
  47. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-backend.h +354 -0
  48. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-common.h +1857 -0
  49. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpp.h +39 -0
  50. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-aarch64.h +8 -0
  51. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-impl.h +512 -0
  52. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-quants.h +63 -0
  53. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-traits.h +38 -0
  54. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu.h +138 -0
  55. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-impl.h +594 -0
  56. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-metal-impl.h +597 -0
  57. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-metal.h +66 -0
  58. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-opt.h +216 -0
  59. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-quants.h +100 -0
  60. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-threading.h +14 -0
  61. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml.h +2222 -0
  62. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/gguf.h +202 -0
  63. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/json-schema-to-grammar.h +21 -0
  64. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/json.hpp +24766 -0
  65. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-adapter.h +76 -0
  66. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-arch.h +428 -0
  67. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-batch.h +88 -0
  68. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-chat.h +56 -0
  69. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-context.h +265 -0
  70. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-cparams.h +38 -0
  71. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-cpp.h +30 -0
  72. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-grammar.h +173 -0
  73. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-graph.h +592 -0
  74. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-hparams.h +156 -0
  75. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-impl.h +61 -0
  76. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-io.h +35 -0
  77. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-kv-cache.h +213 -0
  78. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-memory.h +21 -0
  79. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-mmap.h +68 -0
  80. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-model-loader.h +169 -0
  81. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-model.h +409 -0
  82. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-sampling.h +32 -0
  83. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-vocab.h +125 -0
  84. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama.h +1434 -0
  85. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/log.h +132 -0
  86. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/minja/chat-template.hpp +537 -0
  87. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/minja/minja.hpp +2941 -0
  88. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ops.h +128 -0
  89. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/rn-llama.h +138 -0
  90. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/sampling.h +107 -0
  91. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/sgemm.h +14 -0
  92. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/simd-mappings.h +888 -0
  93. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/speculative.h +28 -0
  94. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/unary-ops.h +28 -0
  95. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/unicode-data.h +20 -0
  96. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/unicode.h +66 -0
  97. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/vec.h +802 -0
  98. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Info.plist +0 -0
  99. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/ggml-llama.metallib +0 -0
  100. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/rnllama +0 -0
  101. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/binary-ops.h +16 -0
  102. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/chat.h +143 -0
  103. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/common.h +677 -0
  104. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/cpu-common.h +72 -0
  105. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-alloc.h +76 -0
  106. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-backend-impl.h +255 -0
  107. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-backend.h +354 -0
  108. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-common.h +1857 -0
  109. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpp.h +39 -0
  110. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-aarch64.h +8 -0
  111. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-impl.h +512 -0
  112. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-quants.h +63 -0
  113. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-traits.h +38 -0
  114. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu.h +138 -0
  115. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-impl.h +594 -0
  116. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-metal-impl.h +597 -0
  117. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-metal.h +66 -0
  118. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-opt.h +216 -0
  119. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-quants.h +100 -0
  120. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-threading.h +14 -0
  121. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml.h +2222 -0
  122. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/gguf.h +202 -0
  123. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/json-schema-to-grammar.h +21 -0
  124. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/json.hpp +24766 -0
  125. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-adapter.h +76 -0
  126. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-arch.h +428 -0
  127. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-batch.h +88 -0
  128. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-chat.h +56 -0
  129. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-context.h +265 -0
  130. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-cparams.h +38 -0
  131. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-cpp.h +30 -0
  132. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-grammar.h +173 -0
  133. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-graph.h +592 -0
  134. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-hparams.h +156 -0
  135. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-impl.h +61 -0
  136. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-io.h +35 -0
  137. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-kv-cache.h +213 -0
  138. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-memory.h +21 -0
  139. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-mmap.h +68 -0
  140. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model-loader.h +169 -0
  141. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model.h +409 -0
  142. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-sampling.h +32 -0
  143. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-vocab.h +125 -0
  144. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama.h +1434 -0
  145. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/log.h +132 -0
  146. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/minja/chat-template.hpp +537 -0
  147. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/minja/minja.hpp +2941 -0
  148. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ops.h +128 -0
  149. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/rn-llama.h +138 -0
  150. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/sampling.h +107 -0
  151. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/sgemm.h +14 -0
  152. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/simd-mappings.h +888 -0
  153. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/speculative.h +28 -0
  154. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/unary-ops.h +28 -0
  155. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/unicode-data.h +20 -0
  156. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/unicode.h +66 -0
  157. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/vec.h +802 -0
  158. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Info.plist +0 -0
  159. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/_CodeSignature/CodeResources +101 -0
  160. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/ggml-llama-sim.metallib +0 -0
  161. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/rnllama +0 -0
  162. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/binary-ops.h +16 -0
  163. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/chat.h +143 -0
  164. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/common.h +677 -0
  165. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/cpu-common.h +72 -0
  166. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-alloc.h +76 -0
  167. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-backend-impl.h +255 -0
  168. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-backend.h +354 -0
  169. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-common.h +1857 -0
  170. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpp.h +39 -0
  171. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-aarch64.h +8 -0
  172. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-impl.h +512 -0
  173. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-quants.h +63 -0
  174. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-traits.h +38 -0
  175. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu.h +138 -0
  176. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-impl.h +594 -0
  177. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-metal-impl.h +597 -0
  178. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-metal.h +66 -0
  179. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-opt.h +216 -0
  180. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-quants.h +100 -0
  181. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-threading.h +14 -0
  182. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml.h +2222 -0
  183. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/gguf.h +202 -0
  184. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/json-schema-to-grammar.h +21 -0
  185. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/json.hpp +24766 -0
  186. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-adapter.h +76 -0
  187. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-arch.h +428 -0
  188. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-batch.h +88 -0
  189. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-chat.h +56 -0
  190. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-context.h +265 -0
  191. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-cparams.h +38 -0
  192. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-cpp.h +30 -0
  193. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-grammar.h +173 -0
  194. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-graph.h +592 -0
  195. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-hparams.h +156 -0
  196. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-impl.h +61 -0
  197. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-io.h +35 -0
  198. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-kv-cache.h +213 -0
  199. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-memory.h +21 -0
  200. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-mmap.h +68 -0
  201. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-model-loader.h +169 -0
  202. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-model.h +409 -0
  203. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-sampling.h +32 -0
  204. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-vocab.h +125 -0
  205. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama.h +1434 -0
  206. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/log.h +132 -0
  207. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/minja/chat-template.hpp +537 -0
  208. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/minja/minja.hpp +2941 -0
  209. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ops.h +128 -0
  210. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/rn-llama.h +138 -0
  211. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/sampling.h +107 -0
  212. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/sgemm.h +14 -0
  213. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/simd-mappings.h +888 -0
  214. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/speculative.h +28 -0
  215. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/unary-ops.h +28 -0
  216. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/unicode-data.h +20 -0
  217. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/unicode.h +66 -0
  218. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/vec.h +802 -0
  219. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Info.plist +0 -0
  220. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/ggml-llama.metallib +0 -0
  221. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/rnllama +0 -0
  222. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/binary-ops.h +16 -0
  223. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/chat.h +143 -0
  224. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/common.h +677 -0
  225. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/cpu-common.h +72 -0
  226. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-alloc.h +76 -0
  227. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-backend-impl.h +255 -0
  228. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-backend.h +354 -0
  229. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-common.h +1857 -0
  230. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpp.h +39 -0
  231. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-aarch64.h +8 -0
  232. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-impl.h +512 -0
  233. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-quants.h +63 -0
  234. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-traits.h +38 -0
  235. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu.h +138 -0
  236. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-impl.h +594 -0
  237. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-metal-impl.h +597 -0
  238. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-metal.h +66 -0
  239. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-opt.h +216 -0
  240. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-quants.h +100 -0
  241. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-threading.h +14 -0
  242. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml.h +2222 -0
  243. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/gguf.h +202 -0
  244. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/json-schema-to-grammar.h +21 -0
  245. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/json.hpp +24766 -0
  246. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-adapter.h +76 -0
  247. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-arch.h +428 -0
  248. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-batch.h +88 -0
  249. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-chat.h +56 -0
  250. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-context.h +265 -0
  251. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-cparams.h +38 -0
  252. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-cpp.h +30 -0
  253. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-grammar.h +173 -0
  254. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-graph.h +592 -0
  255. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-hparams.h +156 -0
  256. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-impl.h +61 -0
  257. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-io.h +35 -0
  258. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-kv-cache.h +213 -0
  259. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-memory.h +21 -0
  260. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-mmap.h +68 -0
  261. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model-loader.h +169 -0
  262. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model.h +409 -0
  263. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-sampling.h +32 -0
  264. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-vocab.h +125 -0
  265. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama.h +1434 -0
  266. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/log.h +132 -0
  267. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/minja/chat-template.hpp +537 -0
  268. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/minja/minja.hpp +2941 -0
  269. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ops.h +128 -0
  270. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/rn-llama.h +138 -0
  271. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/sampling.h +107 -0
  272. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/sgemm.h +14 -0
  273. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/simd-mappings.h +888 -0
  274. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/speculative.h +28 -0
  275. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/unary-ops.h +28 -0
  276. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/unicode-data.h +20 -0
  277. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/unicode.h +66 -0
  278. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/vec.h +802 -0
  279. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Info.plist +0 -0
  280. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/_CodeSignature/CodeResources +101 -0
  281. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/ggml-llama-sim.metallib +0 -0
  282. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/rnllama +0 -0
  283. package/jest/mock.js +203 -203
  284. package/lib/commonjs/NativeRNLlama.js +1 -2
  285. package/lib/commonjs/NativeRNLlama.js.map +1 -1
  286. package/lib/commonjs/chat.js.map +1 -1
  287. package/lib/commonjs/grammar.js +12 -31
  288. package/lib/commonjs/grammar.js.map +1 -1
  289. package/lib/commonjs/index.js +47 -47
  290. package/lib/commonjs/index.js.map +1 -1
  291. package/lib/commonjs/package.json +1 -0
  292. package/lib/module/NativeRNLlama.js +2 -0
  293. package/lib/module/NativeRNLlama.js.map +1 -1
  294. package/lib/module/chat.js +2 -0
  295. package/lib/module/chat.js.map +1 -1
  296. package/lib/module/grammar.js +14 -31
  297. package/lib/module/grammar.js.map +1 -1
  298. package/lib/module/index.js +47 -45
  299. package/lib/module/index.js.map +1 -1
  300. package/lib/module/package.json +1 -0
  301. package/lib/typescript/NativeRNLlama.d.ts +6 -4
  302. package/lib/typescript/NativeRNLlama.d.ts.map +1 -1
  303. package/lib/typescript/index.d.ts.map +1 -1
  304. package/llama-rn.podspec +48 -48
  305. package/package.json +233 -233
  306. package/src/NativeRNLlama.ts +426 -426
  307. package/src/chat.ts +44 -44
  308. package/src/grammar.ts +854 -854
  309. package/src/index.ts +495 -487
package/ios/RNLlama.mm CHANGED
@@ -1,405 +1,418 @@
1
- #import "RNLlama.h"
2
- #import "RNLlamaContext.h"
3
-
4
- #ifdef RCT_NEW_ARCH_ENABLED
5
- #import "RNLlamaSpec.h"
6
- #endif
7
-
8
- @implementation RNLlama
9
-
10
- NSMutableDictionary *llamaContexts;
11
- double llamaContextLimit = -1;
12
- dispatch_queue_t llamaDQueue;
13
-
14
- RCT_EXPORT_MODULE()
15
-
16
- RCT_EXPORT_METHOD(toggleNativeLog:(BOOL)enabled) {
17
- void (^onEmitLog)(NSString *level, NSString *text) = nil;
18
- if (enabled) {
19
- onEmitLog = ^(NSString *level, NSString *text) {
20
- [self sendEventWithName:@"@RNLlama_onNativeLog" body:@{ @"level": level, @"text": text }];
21
- };
22
- }
23
- [RNLlamaContext toggleNativeLog:enabled onEmitLog:onEmitLog];
24
- }
25
-
26
- RCT_EXPORT_METHOD(setContextLimit:(double)limit
27
- withResolver:(RCTPromiseResolveBlock)resolve
28
- withRejecter:(RCTPromiseRejectBlock)reject)
29
- {
30
- llamaContextLimit = limit;
31
- resolve(nil);
32
- }
33
-
34
- RCT_EXPORT_METHOD(modelInfo:(NSString *)path
35
- withSkip:(NSArray *)skip
36
- withResolver:(RCTPromiseResolveBlock)resolve
37
- withRejecter:(RCTPromiseRejectBlock)reject)
38
- {
39
- resolve([RNLlamaContext modelInfo:path skip:skip]);
40
- }
41
-
42
- RCT_EXPORT_METHOD(initContext:(double)contextId
43
- withContextParams:(NSDictionary *)contextParams
44
- withResolver:(RCTPromiseResolveBlock)resolve
45
- withRejecter:(RCTPromiseRejectBlock)reject)
46
- {
47
- NSNumber *contextIdNumber = [NSNumber numberWithDouble:contextId];
48
- if (llamaContexts[contextIdNumber] != nil) {
49
- reject(@"llama_error", @"Context already exists", nil);
50
- return;
51
- }
52
-
53
- if (llamaDQueue == nil) {
54
- llamaDQueue = dispatch_queue_create("com.rnllama", DISPATCH_QUEUE_SERIAL);
55
- }
56
-
57
- if (llamaContexts == nil) {
58
- llamaContexts = [[NSMutableDictionary alloc] init];
59
- }
60
-
61
- if (llamaContextLimit > -1 && [llamaContexts count] >= llamaContextLimit) {
62
- reject(@"llama_error", @"Context limit reached", nil);
63
- return;
64
- }
65
-
66
- @try {
67
- RNLlamaContext *context = [RNLlamaContext initWithParams:contextParams onProgress:^(unsigned int progress) {
68
- dispatch_async(dispatch_get_main_queue(), ^{
69
- [self sendEventWithName:@"@RNLlama_onInitContextProgress" body:@{ @"contextId": @(contextId), @"progress": @(progress) }];
70
- });
71
- }];
72
- if (![context isModelLoaded]) {
73
- reject(@"llama_cpp_error", @"Failed to load the model", nil);
74
- return;
75
- }
76
-
77
- [llamaContexts setObject:context forKey:contextIdNumber];
78
-
79
- resolve(@{
80
- @"gpu": @([context isMetalEnabled]),
81
- @"reasonNoGPU": [context reasonNoMetal],
82
- @"model": [context modelInfo],
83
- });
84
- } @catch (NSException *exception) {
85
- reject(@"llama_cpp_error", exception.reason, nil);
86
- }
87
- }
88
-
89
- RCT_EXPORT_METHOD(getFormattedChat:(double)contextId
90
- withMessages:(NSString *)messages
91
- withTemplate:(NSString *)chatTemplate
92
- withParams:(NSDictionary *)params
93
- withResolver:(RCTPromiseResolveBlock)resolve
94
- withRejecter:(RCTPromiseRejectBlock)reject)
95
- {
96
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
97
- if (context == nil) {
98
- reject(@"llama_error", @"Context not found", nil);
99
- return;
100
- }
101
- try {
102
- if ([params[@"jinja"] boolValue]) {
103
- NSString *jsonSchema = params[@"json_schema"];
104
- NSString *tools = params[@"tools"];
105
- bool parallelToolCalls = [params[@"parallel_tool_calls"] boolValue];
106
- NSString *toolChoice = params[@"tool_choice"];
107
- resolve([context getFormattedChatWithJinja:messages withChatTemplate:chatTemplate withJsonSchema:jsonSchema withTools:tools withParallelToolCalls:parallelToolCalls withToolChoice:toolChoice]);
108
- } else {
109
- resolve([context getFormattedChat:messages withChatTemplate:chatTemplate]);
110
- }
111
- } catch (const std::exception& e) { // catch cpp exceptions
112
- reject(@"llama_error", [NSString stringWithUTF8String:e.what()], nil);
113
- }
114
- }
115
-
116
- RCT_EXPORT_METHOD(loadSession:(double)contextId
117
- withFilePath:(NSString *)filePath
118
- withResolver:(RCTPromiseResolveBlock)resolve
119
- withRejecter:(RCTPromiseRejectBlock)reject)
120
- {
121
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
122
- if (context == nil) {
123
- reject(@"llama_error", @"Context not found", nil);
124
- return;
125
- }
126
- if ([context isPredicting]) {
127
- reject(@"llama_error", @"Context is busy", nil);
128
- return;
129
- }
130
- dispatch_async(llamaDQueue, ^{
131
- @try {
132
- @autoreleasepool {
133
- resolve([context loadSession:filePath]);
134
- }
135
- } @catch (NSException *exception) {
136
- reject(@"llama_cpp_error", exception.reason, nil);
137
- }
138
- });
139
- }
140
-
141
- RCT_EXPORT_METHOD(saveSession:(double)contextId
142
- withFilePath:(NSString *)filePath
143
- withSize:(double)size
144
- withResolver:(RCTPromiseResolveBlock)resolve
145
- withRejecter:(RCTPromiseRejectBlock)reject)
146
- {
147
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
148
- if (context == nil) {
149
- reject(@"llama_error", @"Context not found", nil);
150
- return;
151
- }
152
- if ([context isPredicting]) {
153
- reject(@"llama_error", @"Context is busy", nil);
154
- return;
155
- }
156
- dispatch_async(llamaDQueue, ^{
157
- @try {
158
- @autoreleasepool {
159
- int count = [context saveSession:filePath size:(int)size];
160
- resolve(@(count));
161
- }
162
- } @catch (NSException *exception) {
163
- reject(@"llama_cpp_error", exception.reason, nil);
164
- }
165
- });
166
- }
167
-
168
- - (NSArray *)supportedEvents {
169
- return@[
170
- @"@RNLlama_onInitContextProgress",
171
- @"@RNLlama_onToken",
172
- @"@RNLlama_onNativeLog",
173
- ];
174
- }
175
-
176
- RCT_EXPORT_METHOD(completion:(double)contextId
177
- withCompletionParams:(NSDictionary *)completionParams
178
- withResolver:(RCTPromiseResolveBlock)resolve
179
- withRejecter:(RCTPromiseRejectBlock)reject)
180
- {
181
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
182
- if (context == nil) {
183
- reject(@"llama_error", @"Context not found", nil);
184
- return;
185
- }
186
- if ([context isPredicting]) {
187
- reject(@"llama_error", @"Context is busy", nil);
188
- return;
189
- }
190
- dispatch_async(llamaDQueue, ^{
191
- @try {
192
- @autoreleasepool {
193
- NSDictionary* completionResult = [context completion:completionParams
194
- onToken:^(NSMutableDictionary *tokenResult) {
195
- if (![completionParams[@"emit_partial_completion"] boolValue]) return;
196
- dispatch_async(dispatch_get_main_queue(), ^{
197
- [self sendEventWithName:@"@RNLlama_onToken"
198
- body:@{
199
- @"contextId": [NSNumber numberWithDouble:contextId],
200
- @"tokenResult": tokenResult
201
- }
202
- ];
203
- [tokenResult release];
204
- });
205
- }
206
- ];
207
- resolve(completionResult);
208
- }
209
- } @catch (NSException *exception) {
210
- reject(@"llama_cpp_error", exception.reason, nil);
211
- [context stopCompletion];
212
- }
213
- });
214
-
215
- }
216
-
217
- RCT_EXPORT_METHOD(stopCompletion:(double)contextId
218
- withResolver:(RCTPromiseResolveBlock)resolve
219
- withRejecter:(RCTPromiseRejectBlock)reject)
220
- {
221
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
222
- if (context == nil) {
223
- reject(@"llama_error", @"Context not found", nil);
224
- return;
225
- }
226
- [context stopCompletion];
227
- resolve(nil);
228
- }
229
-
230
- RCT_EXPORT_METHOD(tokenize:(double)contextId
231
- text:(NSString *)text
232
- withResolver:(RCTPromiseResolveBlock)resolve
233
- withRejecter:(RCTPromiseRejectBlock)reject)
234
- {
235
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
236
- if (context == nil) {
237
- reject(@"llama_error", @"Context not found", nil);
238
- return;
239
- }
240
- NSMutableArray *tokens = [context tokenize:text];
241
- resolve(@{ @"tokens": tokens });
242
- [tokens release];
243
- }
244
-
245
- RCT_EXPORT_METHOD(detokenize:(double)contextId
246
- tokens:(NSArray *)tokens
247
- withResolver:(RCTPromiseResolveBlock)resolve
248
- withRejecter:(RCTPromiseRejectBlock)reject)
249
- {
250
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
251
- if (context == nil) {
252
- reject(@"llama_error", @"Context not found", nil);
253
- return;
254
- }
255
- resolve([context detokenize:tokens]);
256
- }
257
-
258
- RCT_EXPORT_METHOD(embedding:(double)contextId
259
- text:(NSString *)text
260
- params:(NSDictionary *)params
261
- withResolver:(RCTPromiseResolveBlock)resolve
262
- withRejecter:(RCTPromiseRejectBlock)reject)
263
- {
264
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
265
- if (context == nil) {
266
- reject(@"llama_error", @"Context not found", nil);
267
- return;
268
- }
269
- @try {
270
- NSDictionary *embedding = [context embedding:text params:params];
271
- resolve(embedding);
272
- } @catch (NSException *exception) {
273
- reject(@"llama_cpp_error", exception.reason, nil);
274
- }
275
- }
276
-
277
- RCT_EXPORT_METHOD(bench:(double)contextId
278
- pp:(int)pp
279
- tg:(int)tg
280
- pl:(int)pl
281
- nr:(int)nr
282
- withResolver:(RCTPromiseResolveBlock)resolve
283
- withRejecter:(RCTPromiseRejectBlock)reject)
284
- {
285
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
286
- if (context == nil) {
287
- reject(@"llama_error", @"Context not found", nil);
288
- return;
289
- }
290
- @try {
291
- NSString *benchResults = [context bench:pp tg:tg pl:pl nr:nr];
292
- resolve(benchResults);
293
- } @catch (NSException *exception) {
294
- reject(@"llama_cpp_error", exception.reason, nil);
295
- }
296
- }
297
-
298
- RCT_EXPORT_METHOD(applyLoraAdapters:(double)contextId
299
- withLoraAdapters:(NSArray *)loraAdapters
300
- withResolver:(RCTPromiseResolveBlock)resolve
301
- withRejecter:(RCTPromiseRejectBlock)reject)
302
- {
303
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
304
- if (context == nil) {
305
- reject(@"llama_error", @"Context not found", nil);
306
- return;
307
- }
308
- if ([context isPredicting]) {
309
- reject(@"llama_error", @"Context is busy", nil);
310
- return;
311
- }
312
- [context applyLoraAdapters:loraAdapters];
313
- resolve(nil);
314
- }
315
-
316
- RCT_EXPORT_METHOD(removeLoraAdapters:(double)contextId
317
- withResolver:(RCTPromiseResolveBlock)resolve
318
- withRejecter:(RCTPromiseRejectBlock)reject)
319
- {
320
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
321
- if (context == nil) {
322
- reject(@"llama_error", @"Context not found", nil);
323
- return;
324
- }
325
- if ([context isPredicting]) {
326
- reject(@"llama_error", @"Context is busy", nil);
327
- return;
328
- }
329
- [context removeLoraAdapters];
330
- resolve(nil);
331
- }
332
-
333
- RCT_EXPORT_METHOD(getLoadedLoraAdapters:(double)contextId
334
- withResolver:(RCTPromiseResolveBlock)resolve
335
- withRejecter:(RCTPromiseRejectBlock)reject)
336
- {
337
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
338
- if (context == nil) {
339
- reject(@"llama_error", @"Context not found", nil);
340
- return;
341
- }
342
- resolve([context getLoadedLoraAdapters]);
343
- }
344
-
345
- RCT_EXPORT_METHOD(releaseContext:(double)contextId
346
- withResolver:(RCTPromiseResolveBlock)resolve
347
- withRejecter:(RCTPromiseRejectBlock)reject)
348
- {
349
- RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
350
- if (context == nil) {
351
- reject(@"llama_error", @"Context not found", nil);
352
- return;
353
- }
354
- if (![context isModelLoaded]) {
355
- [context interruptLoad];
356
- }
357
- [context stopCompletion];
358
- dispatch_barrier_sync(llamaDQueue, ^{});
359
- [context invalidate];
360
- [llamaContexts removeObjectForKey:[NSNumber numberWithDouble:contextId]];
361
- resolve(nil);
362
- }
363
-
364
- RCT_EXPORT_METHOD(releaseAllContexts:(RCTPromiseResolveBlock)resolve
365
- withRejecter:(RCTPromiseRejectBlock)reject)
366
- {
367
- [self invalidate];
368
- resolve(nil);
369
- }
370
-
371
-
372
- - (void)invalidate {
373
- if (llamaContexts == nil) {
374
- return;
375
- }
376
-
377
- for (NSNumber *contextId in llamaContexts) {
378
- RNLlamaContext *context = llamaContexts[contextId];
379
- [context stopCompletion];
380
- dispatch_barrier_sync(llamaDQueue, ^{});
381
- [context invalidate];
382
- }
383
-
384
- [llamaContexts removeAllObjects];
385
- [llamaContexts release];
386
- llamaContexts = nil;
387
-
388
- if (llamaDQueue != nil) {
389
- dispatch_release(llamaDQueue);
390
- llamaDQueue = nil;
391
- }
392
-
393
- [super invalidate];
394
- }
395
-
396
- // Don't compile this code when we build for the old architecture.
397
- #ifdef RCT_NEW_ARCH_ENABLED
398
- - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
399
- (const facebook::react::ObjCTurboModule::InitParams &)params
400
- {
401
- return std::make_shared<facebook::react::NativeRNLlamaSpecJSI>(params);
402
- }
403
- #endif
404
-
405
- @end
1
+ #import "RNLlama.h"
2
+ #import "RNLlamaContext.h"
3
+
4
+ #ifdef RCT_NEW_ARCH_ENABLED
5
+ #import "RNLlamaSpec.h"
6
+ #endif
7
+
8
+ @implementation RNLlama
9
+
10
+ NSMutableDictionary *llamaContexts;
11
+ double llamaContextLimit = -1;
12
+ dispatch_queue_t llamaDQueue;
13
+
14
+ RCT_EXPORT_MODULE()
15
+
16
+ RCT_EXPORT_METHOD(toggleNativeLog:(BOOL)enabled) {
17
+ void (^onEmitLog)(NSString *level, NSString *text) = nil;
18
+ if (enabled) {
19
+ onEmitLog = ^(NSString *level, NSString *text) {
20
+ [self sendEventWithName:@"@RNLlama_onNativeLog" body:@{ @"level": level, @"text": text }];
21
+ };
22
+ }
23
+ [RNLlamaContext toggleNativeLog:enabled onEmitLog:onEmitLog];
24
+ }
25
+
26
+ RCT_EXPORT_METHOD(setContextLimit:(double)limit
27
+ withResolver:(RCTPromiseResolveBlock)resolve
28
+ withRejecter:(RCTPromiseRejectBlock)reject)
29
+ {
30
+ llamaContextLimit = limit;
31
+ resolve(nil);
32
+ }
33
+
34
+ RCT_EXPORT_METHOD(modelInfo:(NSString *)path
35
+ withSkip:(NSArray *)skip
36
+ withResolver:(RCTPromiseResolveBlock)resolve
37
+ withRejecter:(RCTPromiseRejectBlock)reject)
38
+ {
39
+ resolve([RNLlamaContext modelInfo:path skip:skip]);
40
+ }
41
+
42
+ RCT_EXPORT_METHOD(initContext:(double)contextId
43
+ withContextParams:(NSDictionary *)contextParams
44
+ withResolver:(RCTPromiseResolveBlock)resolve
45
+ withRejecter:(RCTPromiseRejectBlock)reject)
46
+ {
47
+ NSNumber *contextIdNumber = [NSNumber numberWithDouble:contextId];
48
+ if (llamaContexts[contextIdNumber] != nil) {
49
+ reject(@"llama_error", @"Context already exists", nil);
50
+ return;
51
+ }
52
+
53
+ if (llamaDQueue == nil) {
54
+ llamaDQueue = dispatch_queue_create("com.rnllama", DISPATCH_QUEUE_SERIAL);
55
+ }
56
+
57
+ if (llamaContexts == nil) {
58
+ llamaContexts = [[NSMutableDictionary alloc] init];
59
+ }
60
+
61
+ if (llamaContextLimit > -1 && [llamaContexts count] >= llamaContextLimit) {
62
+ reject(@"llama_error", @"Context limit reached", nil);
63
+ return;
64
+ }
65
+
66
+ @try {
67
+ RNLlamaContext *context = [RNLlamaContext initWithParams:contextParams onProgress:^(unsigned int progress) {
68
+ dispatch_async(dispatch_get_main_queue(), ^{
69
+ [self sendEventWithName:@"@RNLlama_onInitContextProgress" body:@{ @"contextId": @(contextId), @"progress": @(progress) }];
70
+ });
71
+ }];
72
+ if (![context isModelLoaded]) {
73
+ reject(@"llama_cpp_error", @"Failed to load the model", nil);
74
+ return;
75
+ }
76
+
77
+ [llamaContexts setObject:context forKey:contextIdNumber];
78
+
79
+ resolve(@{
80
+ @"gpu": @([context isMetalEnabled]),
81
+ @"reasonNoGPU": [context reasonNoMetal],
82
+ @"model": [context modelInfo],
83
+ });
84
+ } @catch (NSException *exception) {
85
+ reject(@"llama_cpp_error", exception.reason, nil);
86
+ }
87
+ }
88
+
89
+ RCT_EXPORT_METHOD(getFormattedChat:(double)contextId
90
+ withMessages:(NSString *)messages
91
+ withTemplate:(NSString *)chatTemplate
92
+ withParams:(NSDictionary *)params
93
+ withResolver:(RCTPromiseResolveBlock)resolve
94
+ withRejecter:(RCTPromiseRejectBlock)reject)
95
+ {
96
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
97
+ if (context == nil) {
98
+ reject(@"llama_error", @"Context not found", nil);
99
+ return;
100
+ }
101
+ try {
102
+ if ([params[@"jinja"] boolValue]) {
103
+ NSString *jsonSchema = params[@"json_schema"];
104
+ NSString *tools = params[@"tools"];
105
+ bool parallelToolCalls = [params[@"parallel_tool_calls"] boolValue];
106
+ NSString *toolChoice = params[@"tool_choice"];
107
+ resolve([context getFormattedChatWithJinja:messages withChatTemplate:chatTemplate withJsonSchema:jsonSchema withTools:tools withParallelToolCalls:parallelToolCalls withToolChoice:toolChoice]);
108
+ } else {
109
+ resolve([context getFormattedChat:messages withChatTemplate:chatTemplate]);
110
+ }
111
+ } catch (const std::exception& e) { // catch cpp exceptions
112
+ reject(@"llama_error", [NSString stringWithUTF8String:e.what()], nil);
113
+ }
114
+ }
115
+
116
+ RCT_EXPORT_METHOD(loadSession:(double)contextId
117
+ withFilePath:(NSString *)filePath
118
+ withResolver:(RCTPromiseResolveBlock)resolve
119
+ withRejecter:(RCTPromiseRejectBlock)reject)
120
+ {
121
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
122
+ if (context == nil) {
123
+ reject(@"llama_error", @"Context not found", nil);
124
+ return;
125
+ }
126
+ if ([context isPredicting]) {
127
+ reject(@"llama_error", @"Context is busy", nil);
128
+ return;
129
+ }
130
+ dispatch_async(llamaDQueue, ^{
131
+ @try {
132
+ @autoreleasepool {
133
+ resolve([context loadSession:filePath]);
134
+ }
135
+ } @catch (NSException *exception) {
136
+ reject(@"llama_cpp_error", exception.reason, nil);
137
+ }
138
+ });
139
+ }
140
+
141
+ RCT_EXPORT_METHOD(saveSession:(double)contextId
142
+ withFilePath:(NSString *)filePath
143
+ withSize:(double)size
144
+ withResolver:(RCTPromiseResolveBlock)resolve
145
+ withRejecter:(RCTPromiseRejectBlock)reject)
146
+ {
147
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
148
+ if (context == nil) {
149
+ reject(@"llama_error", @"Context not found", nil);
150
+ return;
151
+ }
152
+ if ([context isPredicting]) {
153
+ reject(@"llama_error", @"Context is busy", nil);
154
+ return;
155
+ }
156
+ dispatch_async(llamaDQueue, ^{
157
+ @try {
158
+ @autoreleasepool {
159
+ int count = [context saveSession:filePath size:(int)size];
160
+ resolve(@(count));
161
+ }
162
+ } @catch (NSException *exception) {
163
+ reject(@"llama_cpp_error", exception.reason, nil);
164
+ }
165
+ });
166
+ }
167
+
168
+ - (NSArray *)supportedEvents {
169
+ return@[
170
+ @"@RNLlama_onInitContextProgress",
171
+ @"@RNLlama_onToken",
172
+ @"@RNLlama_onNativeLog",
173
+ ];
174
+ }
175
+
176
+ RCT_EXPORT_METHOD(completion:(double)contextId
177
+ withCompletionParams:(NSDictionary *)completionParams
178
+ withResolver:(RCTPromiseResolveBlock)resolve
179
+ withRejecter:(RCTPromiseRejectBlock)reject)
180
+ {
181
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
182
+ if (context == nil) {
183
+ reject(@"llama_error", @"Context not found", nil);
184
+ return;
185
+ }
186
+ if ([context isPredicting]) {
187
+ reject(@"llama_error", @"Context is busy", nil);
188
+ return;
189
+ }
190
+ dispatch_async(llamaDQueue, ^{
191
+ @try {
192
+ @autoreleasepool {
193
+ NSDictionary* completionResult = [context completion:completionParams
194
+ onToken:^(NSMutableDictionary *tokenResult) {
195
+ if (![completionParams[@"emit_partial_completion"] boolValue]) return;
196
+ dispatch_async(dispatch_get_main_queue(), ^{
197
+ [self sendEventWithName:@"@RNLlama_onToken"
198
+ body:@{
199
+ @"contextId": [NSNumber numberWithDouble:contextId],
200
+ @"tokenResult": tokenResult
201
+ }
202
+ ];
203
+ [tokenResult release];
204
+ });
205
+ }
206
+ ];
207
+ resolve(completionResult);
208
+ }
209
+ } @catch (NSException *exception) {
210
+ reject(@"llama_cpp_error", exception.reason, nil);
211
+ [context stopCompletion];
212
+ }
213
+ });
214
+
215
+ }
216
+
217
+ RCT_EXPORT_METHOD(stopCompletion:(double)contextId
218
+ withResolver:(RCTPromiseResolveBlock)resolve
219
+ withRejecter:(RCTPromiseRejectBlock)reject)
220
+ {
221
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
222
+ if (context == nil) {
223
+ reject(@"llama_error", @"Context not found", nil);
224
+ return;
225
+ }
226
+ [context stopCompletion];
227
+ resolve(nil);
228
+ }
229
+
230
+ RCT_EXPORT_METHOD(tokenizeASync:(double)contextId
231
+ text:(NSString *)text
232
+ withResolver:(RCTPromiseResolveBlock)resolve
233
+ withRejecter:(RCTPromiseRejectBlock)reject)
234
+ {
235
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
236
+ if (context == nil) {
237
+ reject(@"llama_error", @"Context not found", nil);
238
+ return;
239
+ }
240
+ NSMutableArray *tokens = [context tokenize:text];
241
+ resolve(@{ @"tokens": tokens });
242
+ [tokens release];
243
+ }
244
+
245
+ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(tokenizeSync:(double)contextId
246
+ text:(NSString *)text)
247
+ {
248
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
249
+ if (context == nil) {
250
+ return @{ @"error": @"Context not found" };
251
+ }
252
+ NSMutableArray *tokens = [context tokenize:text];
253
+ NSDictionary *result = @{ @"tokens": tokens };
254
+ [tokens release];
255
+ return result;
256
+ }
257
+
258
+ RCT_EXPORT_METHOD(detokenize:(double)contextId
259
+ tokens:(NSArray *)tokens
260
+ withResolver:(RCTPromiseResolveBlock)resolve
261
+ withRejecter:(RCTPromiseRejectBlock)reject)
262
+ {
263
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
264
+ if (context == nil) {
265
+ reject(@"llama_error", @"Context not found", nil);
266
+ return;
267
+ }
268
+ resolve([context detokenize:tokens]);
269
+ }
270
+
271
+ RCT_EXPORT_METHOD(embedding:(double)contextId
272
+ text:(NSString *)text
273
+ params:(NSDictionary *)params
274
+ withResolver:(RCTPromiseResolveBlock)resolve
275
+ withRejecter:(RCTPromiseRejectBlock)reject)
276
+ {
277
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
278
+ if (context == nil) {
279
+ reject(@"llama_error", @"Context not found", nil);
280
+ return;
281
+ }
282
+ @try {
283
+ NSDictionary *embedding = [context embedding:text params:params];
284
+ resolve(embedding);
285
+ } @catch (NSException *exception) {
286
+ reject(@"llama_cpp_error", exception.reason, nil);
287
+ }
288
+ }
289
+
290
+ RCT_EXPORT_METHOD(bench:(double)contextId
291
+ pp:(int)pp
292
+ tg:(int)tg
293
+ pl:(int)pl
294
+ nr:(int)nr
295
+ withResolver:(RCTPromiseResolveBlock)resolve
296
+ withRejecter:(RCTPromiseRejectBlock)reject)
297
+ {
298
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
299
+ if (context == nil) {
300
+ reject(@"llama_error", @"Context not found", nil);
301
+ return;
302
+ }
303
+ @try {
304
+ NSString *benchResults = [context bench:pp tg:tg pl:pl nr:nr];
305
+ resolve(benchResults);
306
+ } @catch (NSException *exception) {
307
+ reject(@"llama_cpp_error", exception.reason, nil);
308
+ }
309
+ }
310
+
311
+ RCT_EXPORT_METHOD(applyLoraAdapters:(double)contextId
312
+ withLoraAdapters:(NSArray *)loraAdapters
313
+ withResolver:(RCTPromiseResolveBlock)resolve
314
+ withRejecter:(RCTPromiseRejectBlock)reject)
315
+ {
316
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
317
+ if (context == nil) {
318
+ reject(@"llama_error", @"Context not found", nil);
319
+ return;
320
+ }
321
+ if ([context isPredicting]) {
322
+ reject(@"llama_error", @"Context is busy", nil);
323
+ return;
324
+ }
325
+ [context applyLoraAdapters:loraAdapters];
326
+ resolve(nil);
327
+ }
328
+
329
+ RCT_EXPORT_METHOD(removeLoraAdapters:(double)contextId
330
+ withResolver:(RCTPromiseResolveBlock)resolve
331
+ withRejecter:(RCTPromiseRejectBlock)reject)
332
+ {
333
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
334
+ if (context == nil) {
335
+ reject(@"llama_error", @"Context not found", nil);
336
+ return;
337
+ }
338
+ if ([context isPredicting]) {
339
+ reject(@"llama_error", @"Context is busy", nil);
340
+ return;
341
+ }
342
+ [context removeLoraAdapters];
343
+ resolve(nil);
344
+ }
345
+
346
+ RCT_EXPORT_METHOD(getLoadedLoraAdapters:(double)contextId
347
+ withResolver:(RCTPromiseResolveBlock)resolve
348
+ withRejecter:(RCTPromiseRejectBlock)reject)
349
+ {
350
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
351
+ if (context == nil) {
352
+ reject(@"llama_error", @"Context not found", nil);
353
+ return;
354
+ }
355
+ resolve([context getLoadedLoraAdapters]);
356
+ }
357
+
358
+ RCT_EXPORT_METHOD(releaseContext:(double)contextId
359
+ withResolver:(RCTPromiseResolveBlock)resolve
360
+ withRejecter:(RCTPromiseRejectBlock)reject)
361
+ {
362
+ RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
363
+ if (context == nil) {
364
+ reject(@"llama_error", @"Context not found", nil);
365
+ return;
366
+ }
367
+ if (![context isModelLoaded]) {
368
+ [context interruptLoad];
369
+ }
370
+ [context stopCompletion];
371
+ dispatch_barrier_sync(llamaDQueue, ^{});
372
+ [context invalidate];
373
+ [llamaContexts removeObjectForKey:[NSNumber numberWithDouble:contextId]];
374
+ resolve(nil);
375
+ }
376
+
377
+ RCT_EXPORT_METHOD(releaseAllContexts:(RCTPromiseResolveBlock)resolve
378
+ withRejecter:(RCTPromiseRejectBlock)reject)
379
+ {
380
+ [self invalidate];
381
+ resolve(nil);
382
+ }
383
+
384
+
385
+ - (void)invalidate {
386
+ if (llamaContexts == nil) {
387
+ return;
388
+ }
389
+
390
+ for (NSNumber *contextId in llamaContexts) {
391
+ RNLlamaContext *context = llamaContexts[contextId];
392
+ [context stopCompletion];
393
+ dispatch_barrier_sync(llamaDQueue, ^{});
394
+ [context invalidate];
395
+ }
396
+
397
+ [llamaContexts removeAllObjects];
398
+ [llamaContexts release];
399
+ llamaContexts = nil;
400
+
401
+ if (llamaDQueue != nil) {
402
+ dispatch_release(llamaDQueue);
403
+ llamaDQueue = nil;
404
+ }
405
+
406
+ [super invalidate];
407
+ }
408
+
409
+ // Don't compile this code when we build for the old architecture.
410
+ #ifdef RCT_NEW_ARCH_ENABLED
411
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
412
+ (const facebook::react::ObjCTurboModule::InitParams &)params
413
+ {
414
+ return std::make_shared<facebook::react::NativeRNLlamaSpecJSI>(params);
415
+ }
416
+ #endif
417
+
418
+ @end