cactus-react-native 0.0.1

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 (272) hide show
  1. package/README.md +230 -0
  2. package/android/build.gradle +104 -0
  3. package/android/gradle.properties +5 -0
  4. package/android/src/main/AndroidManifest.xml +4 -0
  5. package/android/src/main/CMakeLists.txt +104 -0
  6. package/android/src/main/java/com/cactus/Cactus.java +646 -0
  7. package/android/src/main/java/com/cactus/CactusPackage.java +48 -0
  8. package/android/src/main/java/com/cactus/LlamaContext.java +579 -0
  9. package/android/src/main/jni-utils.h +100 -0
  10. package/android/src/main/jni.cpp +1254 -0
  11. package/android/src/main/jniLibs/arm64-v8a/libcactus.so +0 -0
  12. package/android/src/main/jniLibs/arm64-v8a/libcactus_v8.so +0 -0
  13. package/android/src/main/jniLibs/arm64-v8a/libcactus_v8_2.so +0 -0
  14. package/android/src/main/jniLibs/arm64-v8a/libcactus_v8_2_dotprod.so +0 -0
  15. package/android/src/main/jniLibs/arm64-v8a/libcactus_v8_2_dotprod_i8mm.so +0 -0
  16. package/android/src/main/jniLibs/arm64-v8a/libcactus_v8_2_i8mm.so +0 -0
  17. package/android/src/main/jniLibs/x86_64/libcactus.so +0 -0
  18. package/android/src/main/jniLibs/x86_64/libcactus_x86_64.so +0 -0
  19. package/android/src/newarch/java/com/cactus/CactusModule.java +124 -0
  20. package/android/src/oldarch/java/com/cactus/CactusModule.java +125 -0
  21. package/cactus-react-native.podspec +45 -0
  22. package/ios/CMakeLists.txt +109 -0
  23. package/ios/Cactus.h +6 -0
  24. package/ios/Cactus.mm +405 -0
  25. package/ios/CactusContext.h +57 -0
  26. package/ios/CactusContext.mm +835 -0
  27. package/ios/cactus.xcframework/info.plist +74 -0
  28. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus.h +133 -0
  29. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/chat.h +143 -0
  30. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/common.h +683 -0
  31. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-alloc.h +76 -0
  32. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-backend-impl.h +255 -0
  33. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-backend.h +354 -0
  34. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-common.h +1851 -0
  35. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpp.h +39 -0
  36. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpu-aarch64.h +8 -0
  37. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpu-impl.h +531 -0
  38. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpu-quants.h +63 -0
  39. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpu-traits.h +38 -0
  40. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpu.h +138 -0
  41. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-impl.h +567 -0
  42. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-metal-impl.h +530 -0
  43. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-metal.h +66 -0
  44. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-opt.h +216 -0
  45. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-quants.h +100 -0
  46. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-threading.h +14 -0
  47. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml.h +2221 -0
  48. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/gguf.h +202 -0
  49. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/json-schema-to-grammar.h +21 -0
  50. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/json.hpp +24766 -0
  51. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-adapter.h +76 -0
  52. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-arch.h +421 -0
  53. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-batch.h +88 -0
  54. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-chat.h +53 -0
  55. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-context.h +265 -0
  56. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-cparams.h +38 -0
  57. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-cpp.h +30 -0
  58. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-grammar.h +173 -0
  59. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-graph.h +574 -0
  60. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-hparams.h +148 -0
  61. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-impl.h +61 -0
  62. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-io.h +35 -0
  63. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-kv-cache.h +287 -0
  64. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-memory.h +21 -0
  65. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-mmap.h +68 -0
  66. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-model-loader.h +167 -0
  67. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-model.h +403 -0
  68. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-sampling.h +32 -0
  69. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-vocab.h +125 -0
  70. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama.h +1416 -0
  71. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/log.h +103 -0
  72. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/minja/chat-template.hpp +529 -0
  73. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/minja/minja.hpp +2915 -0
  74. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/sampling.h +107 -0
  75. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/sgemm.h +14 -0
  76. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/unicode-data.h +20 -0
  77. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/unicode.h +66 -0
  78. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Info.plist +0 -0
  79. package/ios/cactus.xcframework/ios-arm64/cactus.framework/cactus +0 -0
  80. package/ios/cactus.xcframework/ios-arm64/cactus.framework/ggml-llama.metallib +0 -0
  81. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/cactus.h +133 -0
  82. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/chat.h +143 -0
  83. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/common.h +683 -0
  84. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-alloc.h +76 -0
  85. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-backend-impl.h +255 -0
  86. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-backend.h +354 -0
  87. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-common.h +1851 -0
  88. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpp.h +39 -0
  89. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-aarch64.h +8 -0
  90. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-impl.h +531 -0
  91. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-quants.h +63 -0
  92. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-traits.h +38 -0
  93. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu.h +138 -0
  94. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-impl.h +567 -0
  95. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-metal-impl.h +530 -0
  96. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-metal.h +66 -0
  97. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-opt.h +216 -0
  98. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-quants.h +100 -0
  99. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-threading.h +14 -0
  100. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml.h +2221 -0
  101. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/gguf.h +202 -0
  102. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/json-schema-to-grammar.h +21 -0
  103. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/json.hpp +24766 -0
  104. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-adapter.h +76 -0
  105. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-arch.h +421 -0
  106. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-batch.h +88 -0
  107. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-chat.h +53 -0
  108. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-context.h +265 -0
  109. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-cparams.h +38 -0
  110. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-cpp.h +30 -0
  111. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-grammar.h +173 -0
  112. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-graph.h +574 -0
  113. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-hparams.h +148 -0
  114. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-impl.h +61 -0
  115. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-io.h +35 -0
  116. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-kv-cache.h +287 -0
  117. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-memory.h +21 -0
  118. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-mmap.h +68 -0
  119. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-model-loader.h +167 -0
  120. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-model.h +403 -0
  121. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-sampling.h +32 -0
  122. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-vocab.h +125 -0
  123. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama.h +1416 -0
  124. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/log.h +103 -0
  125. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/minja/chat-template.hpp +529 -0
  126. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/minja/minja.hpp +2915 -0
  127. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/sampling.h +107 -0
  128. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/sgemm.h +14 -0
  129. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/unicode-data.h +20 -0
  130. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/unicode.h +66 -0
  131. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Info.plist +0 -0
  132. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/_CodeSignature/CodeResources +101 -0
  133. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/cactus +0 -0
  134. package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/ggml-llama-sim.metallib +0 -0
  135. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/cactus.h +133 -0
  136. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/chat.h +143 -0
  137. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/common.h +683 -0
  138. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-alloc.h +76 -0
  139. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-backend-impl.h +255 -0
  140. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-backend.h +354 -0
  141. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-common.h +1851 -0
  142. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpp.h +39 -0
  143. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpu-aarch64.h +8 -0
  144. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpu-impl.h +531 -0
  145. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpu-quants.h +63 -0
  146. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpu-traits.h +38 -0
  147. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpu.h +138 -0
  148. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-impl.h +567 -0
  149. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-metal-impl.h +530 -0
  150. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-metal.h +66 -0
  151. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-opt.h +216 -0
  152. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-quants.h +100 -0
  153. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-threading.h +14 -0
  154. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml.h +2221 -0
  155. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/gguf.h +202 -0
  156. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/json-schema-to-grammar.h +21 -0
  157. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/json.hpp +24766 -0
  158. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-adapter.h +76 -0
  159. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-arch.h +421 -0
  160. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-batch.h +88 -0
  161. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-chat.h +53 -0
  162. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-context.h +265 -0
  163. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-cparams.h +38 -0
  164. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-cpp.h +30 -0
  165. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-grammar.h +173 -0
  166. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-graph.h +574 -0
  167. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-hparams.h +148 -0
  168. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-impl.h +61 -0
  169. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-io.h +35 -0
  170. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-kv-cache.h +287 -0
  171. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-memory.h +21 -0
  172. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-mmap.h +68 -0
  173. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-model-loader.h +167 -0
  174. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-model.h +403 -0
  175. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-sampling.h +32 -0
  176. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-vocab.h +125 -0
  177. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama.h +1416 -0
  178. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/log.h +103 -0
  179. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/minja/chat-template.hpp +529 -0
  180. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/minja/minja.hpp +2915 -0
  181. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/sampling.h +107 -0
  182. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/sgemm.h +14 -0
  183. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/unicode-data.h +20 -0
  184. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/unicode.h +66 -0
  185. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Info.plist +0 -0
  186. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/cactus +0 -0
  187. package/ios/cactus.xcframework/tvos-arm64/cactus.framework/ggml-llama.metallib +0 -0
  188. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/cactus.h +133 -0
  189. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/chat.h +143 -0
  190. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/common.h +683 -0
  191. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-alloc.h +76 -0
  192. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-backend-impl.h +255 -0
  193. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-backend.h +354 -0
  194. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-common.h +1851 -0
  195. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpp.h +39 -0
  196. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-aarch64.h +8 -0
  197. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-impl.h +531 -0
  198. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-quants.h +63 -0
  199. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-traits.h +38 -0
  200. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu.h +138 -0
  201. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-impl.h +567 -0
  202. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-metal-impl.h +530 -0
  203. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-metal.h +66 -0
  204. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-opt.h +216 -0
  205. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-quants.h +100 -0
  206. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-threading.h +14 -0
  207. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml.h +2221 -0
  208. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/gguf.h +202 -0
  209. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/json-schema-to-grammar.h +21 -0
  210. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/json.hpp +24766 -0
  211. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-adapter.h +76 -0
  212. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-arch.h +421 -0
  213. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-batch.h +88 -0
  214. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-chat.h +53 -0
  215. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-context.h +265 -0
  216. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-cparams.h +38 -0
  217. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-cpp.h +30 -0
  218. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-grammar.h +173 -0
  219. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-graph.h +574 -0
  220. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-hparams.h +148 -0
  221. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-impl.h +61 -0
  222. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-io.h +35 -0
  223. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-kv-cache.h +287 -0
  224. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-memory.h +21 -0
  225. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-mmap.h +68 -0
  226. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-model-loader.h +167 -0
  227. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-model.h +403 -0
  228. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-sampling.h +32 -0
  229. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-vocab.h +125 -0
  230. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama.h +1416 -0
  231. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/log.h +103 -0
  232. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/minja/chat-template.hpp +529 -0
  233. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/minja/minja.hpp +2915 -0
  234. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/sampling.h +107 -0
  235. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/sgemm.h +14 -0
  236. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/unicode-data.h +20 -0
  237. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/unicode.h +66 -0
  238. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Info.plist +0 -0
  239. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/_CodeSignature/CodeResources +101 -0
  240. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/cactus +0 -0
  241. package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/ggml-llama-sim.metallib +0 -0
  242. package/lib/commonjs/NativeCactus.js +9 -0
  243. package/lib/commonjs/NativeCactus.js.map +1 -0
  244. package/lib/commonjs/chat.js +37 -0
  245. package/lib/commonjs/chat.js.map +1 -0
  246. package/lib/commonjs/grammar.js +560 -0
  247. package/lib/commonjs/grammar.js.map +1 -0
  248. package/lib/commonjs/index.js +300 -0
  249. package/lib/commonjs/index.js.map +1 -0
  250. package/lib/commonjs/package.json +1 -0
  251. package/lib/module/NativeCactus.js +5 -0
  252. package/lib/module/NativeCactus.js.map +1 -0
  253. package/lib/module/chat.js +33 -0
  254. package/lib/module/chat.js.map +1 -0
  255. package/lib/module/grammar.js +553 -0
  256. package/lib/module/grammar.js.map +1 -0
  257. package/lib/module/index.js +277 -0
  258. package/lib/module/index.js.map +1 -0
  259. package/lib/module/package.json +1 -0
  260. package/lib/typescript/NativeCactus.d.ts +357 -0
  261. package/lib/typescript/NativeCactus.d.ts.map +1 -0
  262. package/lib/typescript/chat.d.ts +10 -0
  263. package/lib/typescript/chat.d.ts.map +1 -0
  264. package/lib/typescript/grammar.d.ts +37 -0
  265. package/lib/typescript/grammar.d.ts.map +1 -0
  266. package/lib/typescript/index.d.ts +96 -0
  267. package/lib/typescript/index.d.ts.map +1 -0
  268. package/package.json +223 -0
  269. package/src/NativeCactus.ts +418 -0
  270. package/src/chat.ts +44 -0
  271. package/src/grammar.ts +854 -0
  272. package/src/index.ts +482 -0
package/src/index.ts ADDED
@@ -0,0 +1,482 @@
1
+ import { NativeEventEmitter, DeviceEventEmitter, Platform } from 'react-native'
2
+ import type { DeviceEventEmitterStatic } from 'react-native'
3
+ import Cactus from './NativeCactus'
4
+ import type {
5
+ NativeContextParams,
6
+ NativeLlamaContext,
7
+ NativeCompletionParams,
8
+ NativeCompletionTokenProb,
9
+ NativeCompletionResult,
10
+ NativeTokenizeResult,
11
+ NativeEmbeddingResult,
12
+ NativeSessionLoadResult,
13
+ NativeEmbeddingParams,
14
+ NativeCompletionTokenProbItem,
15
+ NativeCompletionResultTimings,
16
+ JinjaFormattedChatResult,
17
+ } from './NativeCactus'
18
+ import type {
19
+ SchemaGrammarConverterPropOrder,
20
+ SchemaGrammarConverterBuiltinRule,
21
+ } from './grammar'
22
+ import { SchemaGrammarConverter, convertJsonSchemaToGrammar } from './grammar'
23
+ import type { CactusMessagePart, CactusOAICompatibleMessage } from './chat'
24
+ import { formatChat } from './chat'
25
+
26
+ export type {
27
+ NativeContextParams,
28
+ NativeLlamaContext,
29
+ NativeCompletionParams,
30
+ NativeCompletionTokenProb,
31
+ NativeCompletionResult,
32
+ NativeTokenizeResult,
33
+ NativeEmbeddingResult,
34
+ NativeSessionLoadResult,
35
+ NativeEmbeddingParams,
36
+ NativeCompletionTokenProbItem,
37
+ NativeCompletionResultTimings,
38
+ CactusMessagePart,
39
+ CactusOAICompatibleMessage,
40
+ JinjaFormattedChatResult,
41
+
42
+ // Deprecated
43
+ SchemaGrammarConverterPropOrder,
44
+ SchemaGrammarConverterBuiltinRule,
45
+ }
46
+
47
+ export { SchemaGrammarConverter, convertJsonSchemaToGrammar }
48
+
49
+ const EVENT_ON_INIT_CONTEXT_PROGRESS = '@Cactus_onInitContextProgress'
50
+ const EVENT_ON_TOKEN = '@Cactus_onToken'
51
+ const EVENT_ON_NATIVE_LOG = '@Cactus_onNativeLog'
52
+
53
+ let EventEmitter: NativeEventEmitter | DeviceEventEmitterStatic
54
+ if (Platform.OS === 'ios') {
55
+ // @ts-ignore
56
+ EventEmitter = new NativeEventEmitter(Cactus)
57
+ }
58
+ if (Platform.OS === 'android') {
59
+ EventEmitter = DeviceEventEmitter
60
+ }
61
+
62
+ const logListeners: Array<(level: string, text: string) => void> = []
63
+
64
+ // @ts-ignore
65
+ if (EventEmitter) {
66
+ EventEmitter.addListener(
67
+ EVENT_ON_NATIVE_LOG,
68
+ (evt: { level: string; text: string }) => {
69
+ logListeners.forEach((listener) => listener(evt.level, evt.text))
70
+ },
71
+ )
72
+ // Trigger unset to use default log callback
73
+ Cactus?.toggleNativeLog?.(false)?.catch?.(() => {})
74
+ }
75
+
76
+ export type TokenData = {
77
+ token: string
78
+ completion_probabilities?: Array<NativeCompletionTokenProb>
79
+ }
80
+
81
+ type TokenNativeEvent = {
82
+ contextId: number
83
+ tokenResult: TokenData
84
+ }
85
+
86
+ export type ContextParams = Omit<
87
+ NativeContextParams,
88
+ 'cache_type_k' | 'cache_type_v' | 'pooling_type'
89
+ > & {
90
+ cache_type_k?:
91
+ | 'f16'
92
+ | 'f32'
93
+ | 'q8_0'
94
+ | 'q4_0'
95
+ | 'q4_1'
96
+ | 'iq4_nl'
97
+ | 'q5_0'
98
+ | 'q5_1'
99
+ cache_type_v?:
100
+ | 'f16'
101
+ | 'f32'
102
+ | 'q8_0'
103
+ | 'q4_0'
104
+ | 'q4_1'
105
+ | 'iq4_nl'
106
+ | 'q5_0'
107
+ | 'q5_1'
108
+ pooling_type?: 'none' | 'mean' | 'cls' | 'last' | 'rank'
109
+ }
110
+
111
+ export type EmbeddingParams = NativeEmbeddingParams
112
+
113
+ export type CompletionResponseFormat = {
114
+ type: 'text' | 'json_object' | 'json_schema'
115
+ json_schema?: {
116
+ strict?: boolean
117
+ schema: object
118
+ }
119
+ schema?: object // for json_object type
120
+ }
121
+
122
+ export type CompletionBaseParams = {
123
+ prompt?: string
124
+ messages?: CactusOAICompatibleMessage[]
125
+ chatTemplate?: string // deprecated
126
+ chat_template?: string
127
+ jinja?: boolean
128
+ tools?: object
129
+ parallel_tool_calls?: object
130
+ tool_choice?: string
131
+ response_format?: CompletionResponseFormat
132
+ }
133
+ export type CompletionParams = Omit<
134
+ NativeCompletionParams,
135
+ 'emit_partial_completion' | 'prompt'
136
+ > &
137
+ CompletionBaseParams
138
+
139
+ export type BenchResult = {
140
+ modelDesc: string
141
+ modelSize: number
142
+ modelNParams: number
143
+ ppAvg: number
144
+ ppStd: number
145
+ tgAvg: number
146
+ tgStd: number
147
+ }
148
+
149
+ const getJsonSchema = (responseFormat?: CompletionResponseFormat) => {
150
+ if (responseFormat?.type === 'json_schema') {
151
+ return responseFormat.json_schema?.schema
152
+ }
153
+ if (responseFormat?.type === 'json_object') {
154
+ return responseFormat.schema || {}
155
+ }
156
+ return null
157
+ }
158
+
159
+ export class LlamaContext {
160
+ id: number
161
+
162
+ gpu: boolean = false
163
+
164
+ reasonNoGPU: string = ''
165
+
166
+ model: NativeLlamaContext['model']
167
+
168
+ constructor({ contextId, gpu, reasonNoGPU, model }: NativeLlamaContext) {
169
+ this.id = contextId
170
+ this.gpu = gpu
171
+ this.reasonNoGPU = reasonNoGPU
172
+ this.model = model
173
+ }
174
+
175
+ /**
176
+ * Load cached prompt & completion state from a file.
177
+ */
178
+ async loadSession(filepath: string): Promise<NativeSessionLoadResult> {
179
+ let path = filepath
180
+ if (path.startsWith('file://')) path = path.slice(7)
181
+ return Cactus.loadSession(this.id, path)
182
+ }
183
+
184
+ /**
185
+ * Save current cached prompt & completion state to a file.
186
+ */
187
+ async saveSession(
188
+ filepath: string,
189
+ options?: { tokenSize: number },
190
+ ): Promise<number> {
191
+ return Cactus.saveSession(this.id, filepath, options?.tokenSize || -1)
192
+ }
193
+
194
+ isLlamaChatSupported(): boolean {
195
+ return !!this.model.chatTemplates.llamaChat
196
+ }
197
+
198
+ isJinjaSupported(): boolean {
199
+ const { minja } = this.model.chatTemplates
200
+ return !!minja?.toolUse || !!minja?.default
201
+ }
202
+
203
+ async getFormattedChat(
204
+ messages: CactusOAICompatibleMessage[],
205
+ template?: string | null,
206
+ params?: {
207
+ jinja?: boolean
208
+ response_format?: CompletionResponseFormat
209
+ tools?: object
210
+ parallel_tool_calls?: object
211
+ tool_choice?: string
212
+ },
213
+ ): Promise<JinjaFormattedChatResult | string> {
214
+ const chat = formatChat(messages)
215
+ const useJinja = this.isJinjaSupported() && params?.jinja
216
+ let tmpl = this.isLlamaChatSupported() || useJinja ? undefined : 'chatml'
217
+ if (template) tmpl = template // Force replace if provided
218
+ const jsonSchema = getJsonSchema(params?.response_format)
219
+ return Cactus.getFormattedChat(this.id, JSON.stringify(chat), tmpl, {
220
+ jinja: useJinja,
221
+ json_schema: jsonSchema ? JSON.stringify(jsonSchema) : undefined,
222
+ tools: params?.tools ? JSON.stringify(params.tools) : undefined,
223
+ parallel_tool_calls: params?.parallel_tool_calls
224
+ ? JSON.stringify(params.parallel_tool_calls)
225
+ : undefined,
226
+ tool_choice: params?.tool_choice,
227
+ })
228
+ }
229
+
230
+ async completion(
231
+ params: CompletionParams,
232
+ callback?: (data: TokenData) => void,
233
+ ): Promise<NativeCompletionResult> {
234
+ const nativeParams = {
235
+ ...params,
236
+ prompt: params.prompt || '',
237
+ emit_partial_completion: !!callback,
238
+ }
239
+ if (params.messages) {
240
+ // messages always win
241
+ const formattedResult = await this.getFormattedChat(
242
+ params.messages,
243
+ params.chat_template || params.chatTemplate,
244
+ {
245
+ jinja: params.jinja,
246
+ tools: params.tools,
247
+ parallel_tool_calls: params.parallel_tool_calls,
248
+ tool_choice: params.tool_choice,
249
+ },
250
+ )
251
+ if (typeof formattedResult === 'string') {
252
+ nativeParams.prompt = formattedResult || ''
253
+ } else {
254
+ nativeParams.prompt = formattedResult.prompt || ''
255
+ if (typeof formattedResult.chat_format === 'number')
256
+ nativeParams.chat_format = formattedResult.chat_format
257
+ if (formattedResult.grammar)
258
+ nativeParams.grammar = formattedResult.grammar
259
+ if (typeof formattedResult.grammar_lazy === 'boolean')
260
+ nativeParams.grammar_lazy = formattedResult.grammar_lazy
261
+ if (formattedResult.grammar_triggers)
262
+ nativeParams.grammar_triggers = formattedResult.grammar_triggers
263
+ if (formattedResult.preserved_tokens)
264
+ nativeParams.preserved_tokens = formattedResult.preserved_tokens
265
+ if (formattedResult.additional_stops) {
266
+ if (!nativeParams.stop) nativeParams.stop = []
267
+ nativeParams.stop.push(...formattedResult.additional_stops)
268
+ }
269
+ }
270
+ } else {
271
+ nativeParams.prompt = params.prompt || ''
272
+ }
273
+
274
+ if (nativeParams.response_format && !nativeParams.grammar) {
275
+ const jsonSchema = getJsonSchema(params.response_format)
276
+ if (jsonSchema) nativeParams.json_schema = JSON.stringify(jsonSchema)
277
+ }
278
+
279
+ let tokenListener: any =
280
+ callback &&
281
+ EventEmitter.addListener(EVENT_ON_TOKEN, (evt: TokenNativeEvent) => {
282
+ const { contextId, tokenResult } = evt
283
+ if (contextId !== this.id) return
284
+ callback(tokenResult)
285
+ })
286
+
287
+ if (!nativeParams.prompt) throw new Error('Prompt is required')
288
+
289
+ const promise = Cactus.completion(this.id, nativeParams)
290
+ return promise
291
+ .then((completionResult) => {
292
+ tokenListener?.remove()
293
+ tokenListener = null
294
+ return completionResult
295
+ })
296
+ .catch((err: any) => {
297
+ tokenListener?.remove()
298
+ tokenListener = null
299
+ throw err
300
+ })
301
+ }
302
+
303
+ stopCompletion(): Promise<void> {
304
+ return Cactus.stopCompletion(this.id)
305
+ }
306
+
307
+ tokenize(text: string): Promise<NativeTokenizeResult> {
308
+ return Cactus.tokenize(this.id, text)
309
+ }
310
+
311
+ detokenize(tokens: number[]): Promise<string> {
312
+ return Cactus.detokenize(this.id, tokens)
313
+ }
314
+
315
+ embedding(
316
+ text: string,
317
+ params?: EmbeddingParams,
318
+ ): Promise<NativeEmbeddingResult> {
319
+ return Cactus.embedding(this.id, text, params || {})
320
+ }
321
+
322
+ async bench(
323
+ pp: number,
324
+ tg: number,
325
+ pl: number,
326
+ nr: number,
327
+ ): Promise<BenchResult> {
328
+ const result = await Cactus.bench(this.id, pp, tg, pl, nr)
329
+ const [modelDesc, modelSize, modelNParams, ppAvg, ppStd, tgAvg, tgStd] =
330
+ JSON.parse(result)
331
+ return {
332
+ modelDesc,
333
+ modelSize,
334
+ modelNParams,
335
+ ppAvg,
336
+ ppStd,
337
+ tgAvg,
338
+ tgStd,
339
+ }
340
+ }
341
+
342
+ async applyLoraAdapters(
343
+ loraList: Array<{ path: string; scaled?: number }>,
344
+ ): Promise<void> {
345
+ let loraAdapters: Array<{ path: string; scaled?: number }> = []
346
+ if (loraList)
347
+ loraAdapters = loraList.map((l) => ({
348
+ path: l.path.replace(/file:\/\//, ''),
349
+ scaled: l.scaled,
350
+ }))
351
+ return Cactus.applyLoraAdapters(this.id, loraAdapters)
352
+ }
353
+
354
+ async removeLoraAdapters(): Promise<void> {
355
+ return Cactus.removeLoraAdapters(this.id)
356
+ }
357
+
358
+ async getLoadedLoraAdapters(): Promise<
359
+ Array<{ path: string; scaled?: number }>
360
+ > {
361
+ return Cactus.getLoadedLoraAdapters(this.id)
362
+ }
363
+
364
+ async release(): Promise<void> {
365
+ return Cactus.releaseContext(this.id)
366
+ }
367
+ }
368
+
369
+ export async function toggleNativeLog(enabled: boolean): Promise<void> {
370
+ return Cactus.toggleNativeLog(enabled)
371
+ }
372
+
373
+ export function addNativeLogListener(
374
+ listener: (level: string, text: string) => void,
375
+ ): { remove: () => void } {
376
+ logListeners.push(listener)
377
+ return {
378
+ remove: () => {
379
+ logListeners.splice(logListeners.indexOf(listener), 1)
380
+ },
381
+ }
382
+ }
383
+
384
+ export async function setContextLimit(limit: number): Promise<void> {
385
+ return Cactus.setContextLimit(limit)
386
+ }
387
+
388
+ let contextIdCounter = 0
389
+ const contextIdRandom = () =>
390
+ process.env.NODE_ENV === 'test' ? 0 : Math.floor(Math.random() * 100000)
391
+
392
+ const modelInfoSkip = [
393
+ // Large fields
394
+ 'tokenizer.ggml.tokens',
395
+ 'tokenizer.ggml.token_type',
396
+ 'tokenizer.ggml.merges',
397
+ 'tokenizer.ggml.scores'
398
+ ]
399
+ export async function loadLlamaModelInfo(model: string): Promise<Object> {
400
+ let path = model
401
+ if (path.startsWith('file://')) path = path.slice(7)
402
+ return Cactus.modelInfo(path, modelInfoSkip)
403
+ }
404
+
405
+ const poolTypeMap = {
406
+ // -1 is unspecified as undefined
407
+ none: 0,
408
+ mean: 1,
409
+ cls: 2,
410
+ last: 3,
411
+ rank: 4,
412
+ }
413
+
414
+ export async function initLlama(
415
+ {
416
+ model,
417
+ is_model_asset: isModelAsset,
418
+ pooling_type: poolingType,
419
+ lora,
420
+ lora_list: loraList,
421
+ ...rest
422
+ }: ContextParams,
423
+ onProgress?: (progress: number) => void,
424
+ ): Promise<LlamaContext> {
425
+ let path = model
426
+ if (path.startsWith('file://')) path = path.slice(7)
427
+
428
+ let loraPath = lora
429
+ if (loraPath?.startsWith('file://')) loraPath = loraPath.slice(7)
430
+
431
+ let loraAdapters: Array<{ path: string; scaled?: number }> = []
432
+ if (loraList)
433
+ loraAdapters = loraList.map((l) => ({
434
+ path: l.path.replace(/file:\/\//, ''),
435
+ scaled: l.scaled,
436
+ }))
437
+
438
+ const contextId = contextIdCounter + contextIdRandom()
439
+ contextIdCounter += 1
440
+
441
+ let removeProgressListener: any = null
442
+ if (onProgress) {
443
+ removeProgressListener = EventEmitter.addListener(
444
+ EVENT_ON_INIT_CONTEXT_PROGRESS,
445
+ (evt: { contextId: number; progress: number }) => {
446
+ if (evt.contextId !== contextId) return
447
+ onProgress(evt.progress)
448
+ },
449
+ )
450
+ }
451
+
452
+ const poolType = poolTypeMap[poolingType as keyof typeof poolTypeMap]
453
+ const {
454
+ gpu,
455
+ reasonNoGPU,
456
+ model: modelDetails,
457
+ androidLib,
458
+ } = await Cactus.initContext(contextId, {
459
+ model: path,
460
+ is_model_asset: !!isModelAsset,
461
+ use_progress_callback: !!onProgress,
462
+ pooling_type: poolType,
463
+ lora: loraPath,
464
+ lora_list: loraAdapters,
465
+ ...rest,
466
+ }).catch((err: any) => {
467
+ removeProgressListener?.remove()
468
+ throw err
469
+ })
470
+ removeProgressListener?.remove()
471
+ return new LlamaContext({
472
+ contextId,
473
+ gpu,
474
+ reasonNoGPU,
475
+ model: modelDetails,
476
+ androidLib,
477
+ })
478
+ }
479
+
480
+ export async function releaseAllLlama(): Promise<void> {
481
+ return Cactus.releaseAllContexts()
482
+ }