cactus-react-native 1.2.1 → 1.5.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 (238) hide show
  1. package/README.md +765 -33
  2. package/android/CMakeLists.txt +4 -3
  3. package/android/src/main/java/com/margelo/nitro/cactus/HybridCactusFileSystem.kt +20 -1
  4. package/android/src/main/jniLibs/arm64-v8a/libcactus.a +0 -0
  5. package/android/src/main/jniLibs/arm64-v8a/libcactus_util.a +0 -0
  6. package/cpp/HybridCactus.cpp +231 -19
  7. package/cpp/HybridCactus.hpp +25 -3
  8. package/cpp/HybridCactusIndex.cpp +325 -0
  9. package/cpp/HybridCactusIndex.hpp +43 -0
  10. package/cpp/HybridCactusUtil.cpp +3 -3
  11. package/cpp/HybridCactusUtil.hpp +2 -1
  12. package/cpp/cactus_ffi.h +107 -2
  13. package/cpp/cactus_util.h +1 -1
  14. package/ios/HybridCactusFileSystem.swift +23 -2
  15. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus.h +2 -0
  16. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus_ffi.h +107 -2
  17. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus_telemetry.h +656 -0
  18. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/{ffi_utils.h → cactus_utils.h} +145 -18
  19. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/engine.h +135 -7
  20. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/gemma_tools.h +549 -0
  21. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/graph.h +193 -26
  22. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/kernel.h +54 -195
  23. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/kernel_utils.h +399 -140
  24. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Info.plist +0 -0
  25. package/ios/cactus.xcframework/ios-arm64/cactus.framework/cactus +0 -0
  26. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus.h +2 -0
  27. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_ffi.h +107 -2
  28. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_telemetry.h +656 -0
  29. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/{ffi_utils.h → cactus_utils.h} +145 -18
  30. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/engine.h +135 -7
  31. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/gemma_tools.h +549 -0
  32. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/graph.h +193 -26
  33. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/kernel.h +54 -195
  34. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/kernel_utils.h +399 -140
  35. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Info.plist +0 -0
  36. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/_CodeSignature/CodeResources +1 -1
  37. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/cactus +0 -0
  38. package/ios/cactus_util.xcframework/Info.plist +4 -4
  39. package/ios/cactus_util.xcframework/ios-arm64/cactus_util.framework/Headers/cactus_util.h +1 -1
  40. package/ios/cactus_util.xcframework/ios-arm64/cactus_util.framework/Headers/database.h +27 -0
  41. package/ios/cactus_util.xcframework/ios-arm64/cactus_util.framework/Info.plist +0 -0
  42. package/ios/cactus_util.xcframework/ios-arm64/cactus_util.framework/cactus_util +0 -0
  43. package/ios/cactus_util.xcframework/ios-arm64-simulator/cactus_util.framework/Headers/cactus_util.h +1 -1
  44. package/ios/cactus_util.xcframework/ios-arm64-simulator/cactus_util.framework/Headers/database.h +27 -0
  45. package/ios/cactus_util.xcframework/ios-arm64-simulator/cactus_util.framework/Info.plist +0 -0
  46. package/ios/cactus_util.xcframework/ios-arm64-simulator/cactus_util.framework/_CodeSignature/CodeResources +3 -3
  47. package/ios/cactus_util.xcframework/ios-arm64-simulator/cactus_util.framework/cactus_util +0 -0
  48. package/lib/module/api/Database.js +12 -95
  49. package/lib/module/api/Database.js.map +1 -1
  50. package/lib/module/classes/CactusIndex.js +45 -0
  51. package/lib/module/classes/CactusIndex.js.map +1 -0
  52. package/lib/module/classes/CactusLM.js +65 -17
  53. package/lib/module/classes/CactusLM.js.map +1 -1
  54. package/lib/module/classes/CactusSTT.js +104 -17
  55. package/lib/module/classes/CactusSTT.js.map +1 -1
  56. package/lib/module/config/CactusConfig.js +2 -0
  57. package/lib/module/config/CactusConfig.js.map +1 -1
  58. package/lib/module/constants/packageVersion.js +1 -1
  59. package/lib/module/hooks/useCactusIndex.js +175 -0
  60. package/lib/module/hooks/useCactusIndex.js.map +1 -0
  61. package/lib/module/hooks/useCactusLM.js +68 -7
  62. package/lib/module/hooks/useCactusLM.js.map +1 -1
  63. package/lib/module/hooks/useCactusSTT.js +102 -6
  64. package/lib/module/hooks/useCactusSTT.js.map +1 -1
  65. package/lib/module/index.js +2 -0
  66. package/lib/module/index.js.map +1 -1
  67. package/lib/module/models.js +336 -0
  68. package/lib/module/models.js.map +1 -0
  69. package/lib/module/native/Cactus.js +61 -13
  70. package/lib/module/native/Cactus.js.map +1 -1
  71. package/lib/module/native/CactusFileSystem.js +3 -0
  72. package/lib/module/native/CactusFileSystem.js.map +1 -1
  73. package/lib/module/native/CactusIndex.js +32 -0
  74. package/lib/module/native/CactusIndex.js.map +1 -0
  75. package/lib/module/native/CactusUtil.js +16 -3
  76. package/lib/module/native/CactusUtil.js.map +1 -1
  77. package/lib/module/native/index.js +1 -0
  78. package/lib/module/native/index.js.map +1 -1
  79. package/lib/module/specs/CactusIndex.nitro.js +4 -0
  80. package/lib/module/specs/CactusIndex.nitro.js.map +1 -0
  81. package/lib/module/telemetry/Telemetry.js +3 -1
  82. package/lib/module/telemetry/Telemetry.js.map +1 -1
  83. package/lib/module/types/CactusIndex.js +2 -0
  84. package/lib/module/types/{CactusModel.js.map → CactusIndex.js.map} +1 -1
  85. package/lib/module/types/CactusLM.js +2 -0
  86. package/lib/module/types/CactusSTT.js +2 -0
  87. package/lib/module/types/common.js +2 -0
  88. package/lib/module/types/{CactusSTTModel.js.map → common.js.map} +1 -1
  89. package/lib/typescript/src/api/Database.d.ts +4 -7
  90. package/lib/typescript/src/api/Database.d.ts.map +1 -1
  91. package/lib/typescript/src/classes/CactusIndex.d.ts +15 -0
  92. package/lib/typescript/src/classes/CactusIndex.d.ts.map +1 -0
  93. package/lib/typescript/src/classes/CactusLM.d.ts +12 -5
  94. package/lib/typescript/src/classes/CactusLM.d.ts.map +1 -1
  95. package/lib/typescript/src/classes/CactusSTT.d.ts +15 -5
  96. package/lib/typescript/src/classes/CactusSTT.d.ts.map +1 -1
  97. package/lib/typescript/src/config/CactusConfig.d.ts +1 -0
  98. package/lib/typescript/src/config/CactusConfig.d.ts.map +1 -1
  99. package/lib/typescript/src/constants/packageVersion.d.ts +1 -1
  100. package/lib/typescript/src/hooks/useCactusIndex.d.ts +14 -0
  101. package/lib/typescript/src/hooks/useCactusIndex.d.ts.map +1 -0
  102. package/lib/typescript/src/hooks/useCactusLM.d.ts +6 -4
  103. package/lib/typescript/src/hooks/useCactusLM.d.ts.map +1 -1
  104. package/lib/typescript/src/hooks/useCactusSTT.d.ts +13 -5
  105. package/lib/typescript/src/hooks/useCactusSTT.d.ts.map +1 -1
  106. package/lib/typescript/src/index.d.ts +6 -4
  107. package/lib/typescript/src/index.d.ts.map +1 -1
  108. package/lib/typescript/src/models.d.ts +6 -0
  109. package/lib/typescript/src/models.d.ts.map +1 -0
  110. package/lib/typescript/src/native/Cactus.d.ts +10 -3
  111. package/lib/typescript/src/native/Cactus.d.ts.map +1 -1
  112. package/lib/typescript/src/native/CactusFileSystem.d.ts +1 -0
  113. package/lib/typescript/src/native/CactusFileSystem.d.ts.map +1 -1
  114. package/lib/typescript/src/native/CactusIndex.d.ts +12 -0
  115. package/lib/typescript/src/native/CactusIndex.d.ts.map +1 -0
  116. package/lib/typescript/src/native/CactusUtil.d.ts.map +1 -1
  117. package/lib/typescript/src/native/index.d.ts +1 -0
  118. package/lib/typescript/src/native/index.d.ts.map +1 -1
  119. package/lib/typescript/src/specs/Cactus.nitro.d.ts +9 -2
  120. package/lib/typescript/src/specs/Cactus.nitro.d.ts.map +1 -1
  121. package/lib/typescript/src/specs/CactusFileSystem.nitro.d.ts +1 -0
  122. package/lib/typescript/src/specs/CactusFileSystem.nitro.d.ts.map +1 -1
  123. package/lib/typescript/src/specs/CactusIndex.nitro.d.ts +24 -0
  124. package/lib/typescript/src/specs/CactusIndex.nitro.d.ts.map +1 -0
  125. package/lib/typescript/src/specs/CactusUtil.nitro.d.ts +1 -1
  126. package/lib/typescript/src/specs/CactusUtil.nitro.d.ts.map +1 -1
  127. package/lib/typescript/src/types/CactusIndex.d.ts +34 -0
  128. package/lib/typescript/src/types/CactusIndex.d.ts.map +1 -0
  129. package/lib/typescript/src/types/CactusLM.d.ts +19 -0
  130. package/lib/typescript/src/types/CactusLM.d.ts.map +1 -1
  131. package/lib/typescript/src/types/CactusSTT.d.ts +21 -1
  132. package/lib/typescript/src/types/CactusSTT.d.ts.map +1 -1
  133. package/lib/typescript/src/types/common.d.ts +28 -0
  134. package/lib/typescript/src/types/common.d.ts.map +1 -0
  135. package/nitro.json +3 -0
  136. package/nitrogen/generated/android/c++/JDeviceInfo.hpp +1 -1
  137. package/nitrogen/generated/android/c++/JFunc_void_double.hpp +1 -1
  138. package/nitrogen/generated/android/c++/JHybridCactusCryptoSpec.cpp +1 -1
  139. package/nitrogen/generated/android/c++/JHybridCactusCryptoSpec.hpp +1 -1
  140. package/nitrogen/generated/android/c++/JHybridCactusDeviceInfoSpec.cpp +1 -1
  141. package/nitrogen/generated/android/c++/JHybridCactusDeviceInfoSpec.hpp +1 -1
  142. package/nitrogen/generated/android/c++/JHybridCactusFileSystemSpec.cpp +17 -1
  143. package/nitrogen/generated/android/c++/JHybridCactusFileSystemSpec.hpp +2 -1
  144. package/nitrogen/generated/android/c++/JHybridCactusImageSpec.cpp +1 -1
  145. package/nitrogen/generated/android/c++/JHybridCactusImageSpec.hpp +1 -1
  146. package/nitrogen/generated/android/cactus+autolinking.cmake +2 -1
  147. package/nitrogen/generated/android/cactus+autolinking.gradle +1 -1
  148. package/nitrogen/generated/android/cactusOnLoad.cpp +11 -1
  149. package/nitrogen/generated/android/cactusOnLoad.hpp +1 -1
  150. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/DeviceInfo.kt +1 -1
  151. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/Func_void_double.kt +1 -1
  152. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/HybridCactusCryptoSpec.kt +1 -1
  153. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/HybridCactusDeviceInfoSpec.kt +1 -1
  154. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/HybridCactusFileSystemSpec.kt +5 -1
  155. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/HybridCactusImageSpec.kt +1 -1
  156. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/cactusOnLoad.kt +1 -1
  157. package/nitrogen/generated/ios/Cactus+autolinking.rb +1 -1
  158. package/nitrogen/generated/ios/Cactus-Swift-Cxx-Bridge.cpp +1 -1
  159. package/nitrogen/generated/ios/Cactus-Swift-Cxx-Bridge.hpp +1 -1
  160. package/nitrogen/generated/ios/Cactus-Swift-Cxx-Umbrella.hpp +1 -1
  161. package/nitrogen/generated/ios/CactusAutolinking.mm +11 -1
  162. package/nitrogen/generated/ios/CactusAutolinking.swift +1 -1
  163. package/nitrogen/generated/ios/c++/HybridCactusCryptoSpecSwift.cpp +1 -1
  164. package/nitrogen/generated/ios/c++/HybridCactusCryptoSpecSwift.hpp +1 -1
  165. package/nitrogen/generated/ios/c++/HybridCactusDeviceInfoSpecSwift.cpp +1 -1
  166. package/nitrogen/generated/ios/c++/HybridCactusDeviceInfoSpecSwift.hpp +1 -1
  167. package/nitrogen/generated/ios/c++/HybridCactusFileSystemSpecSwift.cpp +1 -1
  168. package/nitrogen/generated/ios/c++/HybridCactusFileSystemSpecSwift.hpp +9 -1
  169. package/nitrogen/generated/ios/c++/HybridCactusImageSpecSwift.cpp +1 -1
  170. package/nitrogen/generated/ios/c++/HybridCactusImageSpecSwift.hpp +1 -1
  171. package/nitrogen/generated/ios/swift/DeviceInfo.swift +1 -1
  172. package/nitrogen/generated/ios/swift/Func_void.swift +1 -1
  173. package/nitrogen/generated/ios/swift/Func_void_DeviceInfo.swift +1 -1
  174. package/nitrogen/generated/ios/swift/Func_void_bool.swift +1 -1
  175. package/nitrogen/generated/ios/swift/Func_void_double.swift +1 -1
  176. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +1 -1
  177. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__string_.swift +1 -1
  178. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +1 -1
  179. package/nitrogen/generated/ios/swift/HybridCactusCryptoSpec.swift +1 -1
  180. package/nitrogen/generated/ios/swift/HybridCactusCryptoSpec_cxx.swift +1 -1
  181. package/nitrogen/generated/ios/swift/HybridCactusDeviceInfoSpec.swift +1 -1
  182. package/nitrogen/generated/ios/swift/HybridCactusDeviceInfoSpec_cxx.swift +1 -1
  183. package/nitrogen/generated/ios/swift/HybridCactusFileSystemSpec.swift +2 -1
  184. package/nitrogen/generated/ios/swift/HybridCactusFileSystemSpec_cxx.swift +20 -1
  185. package/nitrogen/generated/ios/swift/HybridCactusImageSpec.swift +1 -1
  186. package/nitrogen/generated/ios/swift/HybridCactusImageSpec_cxx.swift +1 -1
  187. package/nitrogen/generated/shared/c++/CactusIndexGetResult.hpp +84 -0
  188. package/nitrogen/generated/shared/c++/CactusIndexQueryResult.hpp +79 -0
  189. package/nitrogen/generated/shared/c++/DeviceInfo.hpp +1 -1
  190. package/nitrogen/generated/shared/c++/HybridCactusCryptoSpec.cpp +1 -1
  191. package/nitrogen/generated/shared/c++/HybridCactusCryptoSpec.hpp +1 -1
  192. package/nitrogen/generated/shared/c++/HybridCactusDeviceInfoSpec.cpp +1 -1
  193. package/nitrogen/generated/shared/c++/HybridCactusDeviceInfoSpec.hpp +1 -1
  194. package/nitrogen/generated/shared/c++/HybridCactusFileSystemSpec.cpp +2 -1
  195. package/nitrogen/generated/shared/c++/HybridCactusFileSystemSpec.hpp +2 -1
  196. package/nitrogen/generated/shared/c++/HybridCactusImageSpec.cpp +1 -1
  197. package/nitrogen/generated/shared/c++/HybridCactusImageSpec.hpp +1 -1
  198. package/nitrogen/generated/shared/c++/HybridCactusIndexSpec.cpp +27 -0
  199. package/nitrogen/generated/shared/c++/HybridCactusIndexSpec.hpp +76 -0
  200. package/nitrogen/generated/shared/c++/HybridCactusSpec.cpp +8 -1
  201. package/nitrogen/generated/shared/c++/HybridCactusSpec.hpp +11 -3
  202. package/nitrogen/generated/shared/c++/HybridCactusUtilSpec.cpp +1 -1
  203. package/nitrogen/generated/shared/c++/HybridCactusUtilSpec.hpp +2 -2
  204. package/package.json +2 -2
  205. package/src/api/Database.ts +14 -135
  206. package/src/classes/CactusIndex.ts +58 -0
  207. package/src/classes/CactusLM.ts +87 -19
  208. package/src/classes/CactusSTT.ts +134 -20
  209. package/src/config/CactusConfig.ts +3 -0
  210. package/src/constants/packageVersion.ts +1 -1
  211. package/src/hooks/useCactusIndex.ts +195 -0
  212. package/src/hooks/useCactusLM.ts +88 -8
  213. package/src/hooks/useCactusSTT.ts +119 -7
  214. package/src/index.tsx +22 -2
  215. package/src/models.ts +344 -0
  216. package/src/native/Cactus.ts +95 -13
  217. package/src/native/CactusFileSystem.ts +4 -0
  218. package/src/native/CactusIndex.ts +54 -0
  219. package/src/native/CactusUtil.ts +19 -3
  220. package/src/native/index.ts +1 -0
  221. package/src/specs/Cactus.nitro.ts +18 -2
  222. package/src/specs/CactusFileSystem.nitro.ts +2 -0
  223. package/src/specs/CactusIndex.nitro.ts +31 -0
  224. package/src/specs/CactusUtil.nitro.ts +1 -1
  225. package/src/telemetry/Telemetry.ts +1 -1
  226. package/src/types/CactusIndex.ts +40 -0
  227. package/src/types/CactusLM.ts +24 -0
  228. package/src/types/CactusSTT.ts +27 -1
  229. package/src/types/common.ts +28 -0
  230. package/android/src/main/jniLibs/arm64-v8a/libcactus_util.so +0 -0
  231. package/lib/module/types/CactusModel.js +0 -2
  232. package/lib/module/types/CactusSTTModel.js +0 -2
  233. package/lib/typescript/src/types/CactusModel.d.ts +0 -13
  234. package/lib/typescript/src/types/CactusModel.d.ts.map +0 -1
  235. package/lib/typescript/src/types/CactusSTTModel.d.ts +0 -8
  236. package/lib/typescript/src/types/CactusSTTModel.d.ts.map +0 -1
  237. package/src/types/CactusModel.ts +0 -15
  238. package/src/types/CactusSTTModel.ts +0 -10
@@ -6,7 +6,7 @@
6
6
  <array>
7
7
  <dict>
8
8
  <key>LibraryIdentifier</key>
9
- <string>ios-arm64-simulator</string>
9
+ <string>ios-arm64</string>
10
10
  <key>LibraryPath</key>
11
11
  <string>cactus_util.framework</string>
12
12
  <key>SupportedArchitectures</key>
@@ -15,12 +15,10 @@
15
15
  </array>
16
16
  <key>SupportedPlatform</key>
17
17
  <string>ios</string>
18
- <key>SupportedPlatformVariant</key>
19
- <string>simulator</string>
20
18
  </dict>
21
19
  <dict>
22
20
  <key>LibraryIdentifier</key>
23
- <string>ios-arm64</string>
21
+ <string>ios-arm64-simulator</string>
24
22
  <key>LibraryPath</key>
25
23
  <string>cactus_util.framework</string>
26
24
  <key>SupportedArchitectures</key>
@@ -29,6 +27,8 @@
29
27
  </array>
30
28
  <key>SupportedPlatform</key>
31
29
  <string>ios</string>
30
+ <key>SupportedPlatformVariant</key>
31
+ <string>simulator</string>
32
32
  </dict>
33
33
  </array>
34
34
  <key>CFBundlePackageType</key>
@@ -7,7 +7,7 @@ extern "C" {
7
7
 
8
8
  const char* register_app(const char* encrypted_data);
9
9
 
10
- const char* get_device_id();
10
+ const char* get_device_id(const char* current_token);
11
11
 
12
12
  // Helper function to free memory allocated by register_app
13
13
  void free_string(const char* str);
@@ -0,0 +1,27 @@
1
+ #ifndef DATABASE_H
2
+ #define DATABASE_H
3
+
4
+ #include <string>
5
+ struct sqlite3;
6
+
7
+ class Database {
8
+ private:
9
+ sqlite3* db;
10
+ std::string db_path;
11
+
12
+ bool create_tables();
13
+
14
+ public:
15
+ Database(const std::string& path = "cactus.db");
16
+ ~Database();
17
+
18
+ bool initialize();
19
+ bool register_app(const std::string& device_id, const std::string& token_expiry_date, const std::string& token);
20
+ bool get_registration(std::string& device_id, std::string& token_expiry_date, std::string& token);
21
+ const char* get_device_id();
22
+ void close();
23
+
24
+ bool is_open() const;
25
+ };
26
+
27
+ #endif // DATABASE_H
@@ -7,7 +7,7 @@ extern "C" {
7
7
 
8
8
  const char* register_app(const char* encrypted_data);
9
9
 
10
- const char* get_device_id();
10
+ const char* get_device_id(const char* current_token);
11
11
 
12
12
  // Helper function to free memory allocated by register_app
13
13
  void free_string(const char* str);
@@ -0,0 +1,27 @@
1
+ #ifndef DATABASE_H
2
+ #define DATABASE_H
3
+
4
+ #include <string>
5
+ struct sqlite3;
6
+
7
+ class Database {
8
+ private:
9
+ sqlite3* db;
10
+ std::string db_path;
11
+
12
+ bool create_tables();
13
+
14
+ public:
15
+ Database(const std::string& path = "cactus.db");
16
+ ~Database();
17
+
18
+ bool initialize();
19
+ bool register_app(const std::string& device_id, const std::string& token_expiry_date, const std::string& token);
20
+ bool get_registration(std::string& device_id, std::string& token_expiry_date, std::string& token);
21
+ const char* get_device_id();
22
+ void close();
23
+
24
+ bool is_open() const;
25
+ };
26
+
27
+ #endif // DATABASE_H
@@ -6,7 +6,7 @@
6
6
  <dict>
7
7
  <key>Headers/cactus_util.h</key>
8
8
  <data>
9
- 7z1Ts4xufXPrnEBuKu+NppO1yKg=
9
+ 5lW8KZ3LQl0aqP6TUxyB+K0vcIE=
10
10
  </data>
11
11
  <key>Headers/ios_utils.h</key>
12
12
  <data>
@@ -18,7 +18,7 @@
18
18
  </data>
19
19
  <key>Info.plist</key>
20
20
  <data>
21
- OhVLqBjBr8wHfc8V3KCR4rpni5U=
21
+ gD92JC49Bf9W6pi0MZWov5LMRb4=
22
22
  </data>
23
23
  </dict>
24
24
  <key>files2</key>
@@ -27,7 +27,7 @@
27
27
  <dict>
28
28
  <key>hash2</key>
29
29
  <data>
30
- mIHS5tpbAc2yQnCfoYds/waoVwabQF9bYng+EYTSSrg=
30
+ Q7DuJEU0UWHgQ8cVdAc50lq592AjV42gMHSiDHx4OQk=
31
31
  </data>
32
32
  </dict>
33
33
  <key>Headers/ios_utils.h</key>
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { CactusUtil } from "../native/index.js";
4
- import { packageVersion } from "../constants/packageVersion.js";
4
+ import { CactusConfig } from "../config/CactusConfig.js";
5
5
  export class Database {
6
6
  static url = 'https://vlqqczxwyaodtcdmdmlw.supabase.co';
7
7
  static key = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InZscXFjenh3eWFvZHRjZG1kbWx3Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTE1MTg2MzIsImV4cCI6MjA2NzA5NDYzMn0.nBzqGuK9j6RZ6mOPWU2boAC_5H9XDs-fPpo5P3WZYbI';
@@ -21,108 +21,25 @@ export class Database {
21
21
  throw new Error('Sending logs failed');
22
22
  }
23
23
  }
24
- static async registerDevice(device_data) {
24
+ static async registerDevice({
25
+ deviceData,
26
+ deviceId
27
+ }) {
25
28
  const response = await fetch(`${this.url}/functions/v1/device-registration`, {
26
29
  method: 'POST',
27
30
  body: JSON.stringify({
28
- device_data
29
- })
30
- });
31
- if (!response.ok) {
32
- throw new Error('Registering device failed');
33
- }
34
- return await CactusUtil.registerApp(await response.text());
35
- }
36
- static async getModel(slug) {
37
- const response = await fetch(`${this.url}/functions/v1/get-models?slug=${slug}&sdk_name=react&sdk_version=${packageVersion}`, {
38
- headers: {
39
- apikey: this.key,
40
- Authorization: `Bearer ${this.key}`
41
- }
42
- });
43
- if (!response.ok) {
44
- throw new Error('Getting model failed');
45
- }
46
- const model = await response.json();
47
- return {
48
- name: model.name,
49
- slug: model.slug,
50
- quantization: model.quantization,
51
- sizeMb: model.size_mb,
52
- downloadUrl: model.download_url,
53
- supportsToolCalling: model.supports_tool_calling,
54
- supportsVision: model.supports_vision,
55
- supportsCompletion: model.supports_completion,
56
- createdAt: model.created_at,
57
- isDownloaded: false
58
- };
59
- }
60
- static async getSTTModel(slug) {
61
- const response = await fetch(`${this.url}/rest/v1/whisper?slug=eq.${slug}&select=*`, {
31
+ device_data: deviceData,
32
+ device_id: deviceId,
33
+ cactus_pro_key: CactusConfig.cactusProKey
34
+ }),
62
35
  headers: {
63
- 'apikey': this.key,
64
- 'Authorization': `Bearer ${this.key}`,
65
- 'Accept-Profile': 'cactus'
36
+ 'Content-Type': 'application/json'
66
37
  }
67
38
  });
68
39
  if (!response.ok) {
69
- throw new Error('Getting STT model failed');
70
- }
71
- const [model] = await response.json();
72
- if (!model) {
73
- throw new Error(`STT model with slug "${slug}" not found`);
74
- }
75
- return {
76
- slug: model.slug,
77
- downloadUrl: model.download_url,
78
- sizeMb: model.size_mb,
79
- createdAt: model.created_at,
80
- isDownloaded: false
81
- };
82
- }
83
- static async getModels() {
84
- const response = await fetch(`${this.url}/functions/v1/get-models?sdk_name=react&sdk_version=${packageVersion}`, {
85
- headers: {
86
- apikey: this.key,
87
- Authorization: `Bearer ${this.key}`
88
- }
89
- });
90
- if (!response.ok) {
91
- throw new Error('Getting models failed');
92
- }
93
- const models = await response.json();
94
- return models.map(model => ({
95
- name: model.name,
96
- slug: model.slug,
97
- quantization: model.quantization,
98
- sizeMb: model.size_mb,
99
- downloadUrl: model.download_url,
100
- supportsToolCalling: model.supports_tool_calling,
101
- supportsVision: model.supports_vision,
102
- supportsCompletion: model.supports_completion,
103
- createdAt: model.created_at,
104
- isDownloaded: false
105
- }));
106
- }
107
- static async getSTTModels() {
108
- const response = await fetch(`${this.url}/rest/v1/whisper?select=*`, {
109
- headers: {
110
- 'apikey': this.key,
111
- 'Authorization': `Bearer ${this.key}`,
112
- 'Accept-Profile': 'cactus'
113
- }
114
- });
115
- if (!response.ok) {
116
- throw new Error('Getting STT models failed');
40
+ throw new Error('Registering device failed');
117
41
  }
118
- const models = await response.json();
119
- return models.map(model => ({
120
- slug: model.slug,
121
- downloadUrl: model.download_url,
122
- sizeMb: model.size_mb,
123
- createdAt: model.created_at,
124
- isDownloaded: false
125
- }));
42
+ return await CactusUtil.registerApp(await response.text());
126
43
  }
127
44
  }
128
45
  //# sourceMappingURL=Database.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CactusUtil","packageVersion","Database","url","key","sendLogRecords","records","response","fetch","method","headers","body","JSON","stringify","ok","Error","registerDevice","device_data","registerApp","text","getModel","slug","apikey","Authorization","model","json","name","quantization","sizeMb","size_mb","downloadUrl","download_url","supportsToolCalling","supports_tool_calling","supportsVision","supports_vision","supportsCompletion","supports_completion","createdAt","created_at","isDownloaded","getSTTModel","getModels","models","map","getSTTModels"],"sourceRoot":"../../../src","sources":["api/Database.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CactusUtil","CactusConfig","Database","url","key","sendLogRecords","records","response","fetch","method","headers","body","JSON","stringify","ok","Error","registerDevice","deviceData","deviceId","device_data","device_id","cactus_pro_key","cactusProKey","registerApp","text"],"sourceRoot":"../../../src","sources":["api/Database.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,oBAAW;AAGtC,SAASC,YAAY,QAAQ,2BAAwB;AAErD,OAAO,MAAMC,QAAQ,CAAC;EACpB,OAAwBC,GAAG,GAAG,0CAA0C;EACxE,OAAwBC,GAAG,GACzB,kNAAkN;EAEpN,aAAoBC,cAAcA,CAACC,OAAoB,EAAiB;IACtE,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAAC,GAAG,IAAI,CAACL,GAAG,eAAe,EAAE;MACvDM,MAAM,EAAE,MAAM;MACdC,OAAO,EAAE;QACP,QAAQ,EAAE,IAAI,CAACN,GAAG;QAClB,eAAe,EAAE,UAAU,IAAI,CAACA,GAAG,EAAE;QACrC,cAAc,EAAE,kBAAkB;QAClC,iBAAiB,EAAE,QAAQ;QAC3B,QAAQ,EAAE;MACZ,CAAC;MACDO,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACP,OAAO;IAC9B,CAAC,CAAC;IAEF,IAAI,CAACC,QAAQ,CAACO,EAAE,EAAE;MAChB,MAAM,IAAIC,KAAK,CAAC,qBAAqB,CAAC;IACxC;EACF;EAEA,aAAoBC,cAAcA,CAAC;IACjCC,UAAU;IACVC;EAIF,CAAC,EAAmB;IAClB,MAAMX,QAAQ,GAAG,MAAMC,KAAK,CAC1B,GAAG,IAAI,CAACL,GAAG,mCAAmC,EAC9C;MACEM,MAAM,EAAE,MAAM;MACdE,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;QACnBM,WAAW,EAAEF,UAAU;QACvBG,SAAS,EAAEF,QAAQ;QACnBG,cAAc,EAAEpB,YAAY,CAACqB;MAC/B,CAAC,CAAC;MACFZ,OAAO,EAAE;QAAE,cAAc,EAAE;MAAmB;IAChD,CACF,CAAC;IAED,IAAI,CAACH,QAAQ,CAACO,EAAE,EAAE;MAChB,MAAM,IAAIC,KAAK,CAAC,2BAA2B,CAAC;IAC9C;IAEA,OAAO,MAAMf,UAAU,CAACuB,WAAW,CAAC,MAAMhB,QAAQ,CAACiB,IAAI,CAAC,CAAC,CAAC;EAC5D;AACF","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ import { CactusIndex as NativeCactusIndex, CactusFileSystem } from "../native/index.js";
4
+ export class CactusIndex {
5
+ cactusIndex = new NativeCactusIndex();
6
+ constructor(name, embeddingDim) {
7
+ this.name = name;
8
+ this.embeddingDim = embeddingDim;
9
+ }
10
+ async init() {
11
+ const indexPath = await CactusFileSystem.getIndexPath(this.name);
12
+ return this.cactusIndex.init(indexPath, this.embeddingDim);
13
+ }
14
+ add({
15
+ ids,
16
+ documents,
17
+ embeddings,
18
+ metadatas
19
+ }) {
20
+ return this.cactusIndex.add(ids, documents, embeddings, metadatas);
21
+ }
22
+ delete({
23
+ ids
24
+ }) {
25
+ return this.cactusIndex.delete(ids);
26
+ }
27
+ get({
28
+ ids
29
+ }) {
30
+ return this.cactusIndex.get(ids);
31
+ }
32
+ query({
33
+ embeddings,
34
+ options
35
+ }) {
36
+ return this.cactusIndex.query(embeddings, options);
37
+ }
38
+ compact() {
39
+ return this.cactusIndex.compact();
40
+ }
41
+ destroy() {
42
+ return this.cactusIndex.destroy();
43
+ }
44
+ }
45
+ //# sourceMappingURL=CactusIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CactusIndex","NativeCactusIndex","CactusFileSystem","cactusIndex","constructor","name","embeddingDim","init","indexPath","getIndexPath","add","ids","documents","embeddings","metadatas","delete","get","query","options","compact","destroy"],"sourceRoot":"../../../src","sources":["classes/CactusIndex.ts"],"mappings":";;AAAA,SAASA,WAAW,IAAIC,iBAAiB,EAAEC,gBAAgB,QAAQ,oBAAW;AAU9E,OAAO,MAAMF,WAAW,CAAC;EACNG,WAAW,GAAG,IAAIF,iBAAiB,CAAC,CAAC;EAKtDG,WAAWA,CAACC,IAAY,EAAEC,YAAoB,EAAE;IAC9C,IAAI,CAACD,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,YAAY,GAAGA,YAAY;EAClC;EAEA,MAAaC,IAAIA,CAAA,EAAkB;IACjC,MAAMC,SAAS,GAAG,MAAMN,gBAAgB,CAACO,YAAY,CAAC,IAAI,CAACJ,IAAI,CAAC;IAChE,OAAO,IAAI,CAACF,WAAW,CAACI,IAAI,CAACC,SAAS,EAAE,IAAI,CAACF,YAAY,CAAC;EAC5D;EAEOI,GAAGA,CAAC;IACTC,GAAG;IACHC,SAAS;IACTC,UAAU;IACVC;EACoB,CAAC,EAAiB;IACtC,OAAO,IAAI,CAACX,WAAW,CAACO,GAAG,CAACC,GAAG,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,CAAC;EACpE;EAEOC,MAAMA,CAAC;IAAEJ;EAA6B,CAAC,EAAiB;IAC7D,OAAO,IAAI,CAACR,WAAW,CAACY,MAAM,CAACJ,GAAG,CAAC;EACrC;EAEOK,GAAGA,CAAC;IAAEL;EAA0B,CAAC,EAAiC;IACvE,OAAO,IAAI,CAACR,WAAW,CAACa,GAAG,CAACL,GAAG,CAAC;EAClC;EAEOM,KAAKA,CAAC;IACXJ,UAAU;IACVK;EACsB,CAAC,EAAmC;IAC1D,OAAO,IAAI,CAACf,WAAW,CAACc,KAAK,CAACJ,UAAU,EAAEK,OAAO,CAAC;EACpD;EAEOC,OAAOA,CAAA,EAAkB;IAC9B,OAAO,IAAI,CAAChB,WAAW,CAACgB,OAAO,CAAC,CAAC;EACnC;EAEOC,OAAOA,CAAA,EAAkB;IAC9B,OAAO,IAAI,CAACjB,WAAW,CAACiB,OAAO,CAAC,CAAC;EACnC;AACF","ignoreList":[]}
@@ -3,16 +3,24 @@
3
3
  import { Cactus, CactusFileSystem } from "../native/index.js";
4
4
  import { Telemetry } from "../telemetry/Telemetry.js";
5
5
  import { CactusConfig } from "../config/CactusConfig.js";
6
- import { Database } from "../api/Database.js";
7
6
  import { getErrorMessage } from "../utils/error.js";
8
7
  import { RemoteLM } from "../api/RemoteLM.js";
8
+ import models from "../models.js";
9
9
  export class CactusLM {
10
10
  cactus = new Cactus();
11
11
  isDownloading = false;
12
12
  isInitialized = false;
13
13
  isGenerating = false;
14
- static defaultModel = 'qwen3-0.6';
14
+ static defaultModel = 'qwen3-0.6b';
15
15
  static defaultContextSize = 2048;
16
+ static defaultOptions = {
17
+ quantization: 'int4',
18
+ pro: false
19
+ };
20
+ static quantizationExceptions = {
21
+ 'gemma-3-270m-it': 'int8',
22
+ 'functiongemma-270m-it': 'int8'
23
+ };
16
24
  static defaultCompleteOptions = {
17
25
  maxTokens: 512
18
26
  };
@@ -21,27 +29,41 @@ export class CactusLM {
21
29
  constructor({
22
30
  model,
23
31
  contextSize,
24
- corpusDir
32
+ corpusDir,
33
+ options
25
34
  } = {}) {
26
35
  Telemetry.init(CactusConfig.telemetryToken);
27
36
  this.model = model ?? CactusLM.defaultModel;
28
37
  this.contextSize = contextSize ?? CactusLM.defaultContextSize;
29
38
  this.corpusDir = corpusDir;
39
+ this.options = {
40
+ quantization: options?.quantization ?? CactusLM.quantizationExceptions[this.model] ?? CactusLM.defaultOptions.quantization,
41
+ pro: options?.pro ?? CactusLM.defaultOptions.pro
42
+ };
30
43
  }
31
44
  async download({
32
45
  onProgress
33
46
  } = {}) {
47
+ if (this.isModelPath(this.model)) {
48
+ onProgress?.(1.0);
49
+ return;
50
+ }
34
51
  if (this.isDownloading) {
35
52
  throw new Error('CactusLM is already downloading');
36
53
  }
37
- if (await CactusFileSystem.modelExists(this.model)) {
54
+ if (await CactusFileSystem.modelExists(this.getModelName())) {
55
+ console.log('Model already exists', this.getModelName());
38
56
  onProgress?.(1.0);
39
57
  return;
40
58
  }
41
59
  this.isDownloading = true;
42
60
  try {
43
- const model = await Database.getModel(this.model);
44
- await CactusFileSystem.downloadModel(this.model, model.downloadUrl, onProgress);
61
+ const modelConfig = models[this.model]?.quantization[this.options.quantization];
62
+ const url = this.options.pro ? modelConfig?.pro?.apple : modelConfig?.url;
63
+ if (!url) {
64
+ throw new Error(`Model ${this.model} with specified options not found`);
65
+ }
66
+ await CactusFileSystem.downloadModel(this.getModelName(), url, onProgress);
45
67
  } finally {
46
68
  this.isDownloading = false;
47
69
  }
@@ -50,10 +72,16 @@ export class CactusLM {
50
72
  if (this.isInitialized) {
51
73
  return;
52
74
  }
53
- if (!(await CactusFileSystem.modelExists(this.model))) {
54
- throw new Error(`Model "${this.model}" is not downloaded`);
75
+ let modelPath;
76
+ if (this.isModelPath(this.model)) {
77
+ modelPath = this.model.replace('file://', '');
78
+ } else {
79
+ if (!(await CactusFileSystem.modelExists(this.getModelName()))) {
80
+ console.log('Model not found:', this.getModelName());
81
+ throw new Error(`Model "${this.model}" with options ${JSON.stringify(this.options)} is not downloaded`);
82
+ }
83
+ modelPath = await CactusFileSystem.getModelPath(this.getModelName());
55
84
  }
56
- const modelPath = await CactusFileSystem.getModelPath(this.model);
57
85
  try {
58
86
  await this.cactus.init(modelPath, this.contextSize, this.corpusDir);
59
87
  Telemetry.logInit(this.model, true);
@@ -104,8 +132,26 @@ export class CactusLM {
104
132
  this.isGenerating = false;
105
133
  }
106
134
  }
107
- async embed({
135
+ async tokenize({
108
136
  text
137
+ }) {
138
+ return {
139
+ tokens: await this.cactus.tokenize(text)
140
+ };
141
+ }
142
+ async scoreWindow({
143
+ tokens,
144
+ start,
145
+ end,
146
+ context
147
+ }) {
148
+ return {
149
+ score: await this.cactus.scoreWindow(tokens, start, end, context)
150
+ };
151
+ }
152
+ async embed({
153
+ text,
154
+ normalize = false
109
155
  }) {
110
156
  if (this.isGenerating) {
111
157
  throw new Error('CactusLM is already generating');
@@ -113,7 +159,7 @@ export class CactusLM {
113
159
  await this.init();
114
160
  this.isGenerating = true;
115
161
  try {
116
- const embedding = await this.cactus.embed(text, CactusLM.defaultEmbedBufferSize);
162
+ const embedding = await this.cactus.embed(text, CactusLM.defaultEmbedBufferSize, normalize);
117
163
  Telemetry.logEmbedding(this.model, true);
118
164
  return {
119
165
  embedding
@@ -161,12 +207,14 @@ export class CactusLM {
161
207
  await this.cactus.destroy();
162
208
  this.isInitialized = false;
163
209
  }
164
- async getModels() {
165
- const models = await Database.getModels();
166
- for (const model of models) {
167
- model.isDownloaded = await CactusFileSystem.modelExists(model.slug);
168
- }
169
- return models;
210
+ getModels() {
211
+ return Object.values(models).filter(model => model.completion);
212
+ }
213
+ isModelPath(model) {
214
+ return model.startsWith('file://') || model.startsWith('/');
215
+ }
216
+ getModelName() {
217
+ return `${this.model}-${this.options.quantization}${this.options.pro ? '-pro' : ''}`;
170
218
  }
171
219
  }
172
220
  //# sourceMappingURL=CactusLM.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Cactus","CactusFileSystem","Telemetry","CactusConfig","Database","getErrorMessage","RemoteLM","CactusLM","cactus","isDownloading","isInitialized","isGenerating","defaultModel","defaultContextSize","defaultCompleteOptions","maxTokens","defaultCompleteMode","defaultEmbedBufferSize","constructor","model","contextSize","corpusDir","init","telemetryToken","download","onProgress","Error","modelExists","getModel","downloadModel","downloadUrl","modelPath","getModelPath","logInit","error","complete","messages","options","tools","onToken","mode","toolsInternal","map","tool","type","function","responseBufferSize","result","logCompletion","success","undefined","response","localError","remoteError","embed","text","embedding","logEmbedding","imageEmbed","imagePath","logImageEmbedding","stop","reset","destroy","getModels","models","isDownloaded","slug"],"sourceRoot":"../../../src","sources":["classes/CactusLM.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Cactus","CactusFileSystem","Telemetry","CactusConfig","getErrorMessage","RemoteLM","models","CactusLM","cactus","isDownloading","isInitialized","isGenerating","defaultModel","defaultContextSize","defaultOptions","quantization","pro","quantizationExceptions","defaultCompleteOptions","maxTokens","defaultCompleteMode","defaultEmbedBufferSize","constructor","model","contextSize","corpusDir","options","init","telemetryToken","download","onProgress","isModelPath","Error","modelExists","getModelName","console","log","modelConfig","url","apple","downloadModel","modelPath","replace","JSON","stringify","getModelPath","logInit","error","complete","messages","tools","onToken","mode","toolsInternal","map","tool","type","function","responseBufferSize","result","logCompletion","success","undefined","response","localError","remoteError","tokenize","text","tokens","scoreWindow","start","end","context","score","embed","normalize","embedding","logEmbedding","imageEmbed","imagePath","logImageEmbedding","stop","reset","destroy","getModels","Object","values","filter","completion","startsWith"],"sourceRoot":"../../../src","sources":["classes/CactusLM.ts"],"mappings":"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","ignoreList":[]}