cactus-react-native 1.2.0 → 1.4.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 (222) hide show
  1. package/README.md +573 -13
  2. package/android/CMakeLists.txt +4 -3
  3. package/android/src/main/java/com/margelo/nitro/cactus/HybridCactusFileSystem.kt +21 -4
  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 +112 -19
  7. package/cpp/HybridCactus.hpp +12 -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 +83 -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 +83 -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} +104 -17
  19. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/engine.h +117 -7
  20. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/graph.h +91 -5
  21. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/kernel.h +15 -6
  22. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Info.plist +0 -0
  23. package/ios/cactus.xcframework/ios-arm64/cactus.framework/cactus +0 -0
  24. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus.h +2 -0
  25. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_ffi.h +83 -2
  26. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_telemetry.h +656 -0
  27. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/{ffi_utils.h → cactus_utils.h} +104 -17
  28. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/engine.h +117 -7
  29. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/graph.h +91 -5
  30. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/kernel.h +15 -6
  31. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Info.plist +0 -0
  32. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/_CodeSignature/CodeResources +1 -1
  33. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/cactus +0 -0
  34. package/ios/cactus_util.xcframework/Info.plist +4 -4
  35. package/ios/cactus_util.xcframework/ios-arm64/cactus_util.framework/Headers/cactus_util.h +1 -1
  36. package/ios/cactus_util.xcframework/ios-arm64/cactus_util.framework/Headers/database.h +27 -0
  37. package/ios/cactus_util.xcframework/ios-arm64/cactus_util.framework/Info.plist +0 -0
  38. package/ios/cactus_util.xcframework/ios-arm64/cactus_util.framework/cactus_util +0 -0
  39. package/ios/cactus_util.xcframework/ios-arm64-simulator/cactus_util.framework/Headers/cactus_util.h +1 -1
  40. package/ios/cactus_util.xcframework/ios-arm64-simulator/cactus_util.framework/Headers/database.h +27 -0
  41. package/ios/cactus_util.xcframework/ios-arm64-simulator/cactus_util.framework/Info.plist +0 -0
  42. package/ios/cactus_util.xcframework/ios-arm64-simulator/cactus_util.framework/_CodeSignature/CodeResources +3 -3
  43. package/ios/cactus_util.xcframework/ios-arm64-simulator/cactus_util.framework/cactus_util +0 -0
  44. package/lib/module/api/Database.js +57 -3
  45. package/lib/module/api/Database.js.map +1 -1
  46. package/lib/module/classes/CactusIndex.js +45 -0
  47. package/lib/module/classes/CactusIndex.js.map +1 -0
  48. package/lib/module/classes/CactusLM.js +35 -10
  49. package/lib/module/classes/CactusLM.js.map +1 -1
  50. package/lib/module/classes/CactusSTT.js +20 -12
  51. package/lib/module/classes/CactusSTT.js.map +1 -1
  52. package/lib/module/config/CactusConfig.js +2 -0
  53. package/lib/module/config/CactusConfig.js.map +1 -1
  54. package/lib/module/constants/packageVersion.js +1 -1
  55. package/lib/module/hooks/useCactusIndex.js +175 -0
  56. package/lib/module/hooks/useCactusIndex.js.map +1 -0
  57. package/lib/module/hooks/useCactusLM.js +54 -2
  58. package/lib/module/hooks/useCactusLM.js.map +1 -1
  59. package/lib/module/hooks/useCactusSTT.js +2 -2
  60. package/lib/module/hooks/useCactusSTT.js.map +1 -1
  61. package/lib/module/index.js +2 -0
  62. package/lib/module/index.js.map +1 -1
  63. package/lib/module/native/Cactus.js +21 -5
  64. package/lib/module/native/Cactus.js.map +1 -1
  65. package/lib/module/native/CactusFileSystem.js +3 -0
  66. package/lib/module/native/CactusFileSystem.js.map +1 -1
  67. package/lib/module/native/CactusIndex.js +32 -0
  68. package/lib/module/native/CactusIndex.js.map +1 -0
  69. package/lib/module/native/CactusUtil.js +16 -3
  70. package/lib/module/native/CactusUtil.js.map +1 -1
  71. package/lib/module/native/index.js +1 -0
  72. package/lib/module/native/index.js.map +1 -1
  73. package/lib/module/specs/CactusIndex.nitro.js +4 -0
  74. package/lib/module/specs/CactusIndex.nitro.js.map +1 -0
  75. package/lib/module/telemetry/Telemetry.js +3 -1
  76. package/lib/module/telemetry/Telemetry.js.map +1 -1
  77. package/lib/module/types/CactusIndex.js +2 -0
  78. package/lib/module/types/CactusIndex.js.map +1 -0
  79. package/lib/module/types/CactusSTTModel.js +2 -0
  80. package/lib/module/types/CactusSTTModel.js.map +1 -0
  81. package/lib/typescript/src/api/Database.d.ts +7 -1
  82. package/lib/typescript/src/api/Database.d.ts.map +1 -1
  83. package/lib/typescript/src/classes/CactusIndex.d.ts +15 -0
  84. package/lib/typescript/src/classes/CactusIndex.d.ts.map +1 -0
  85. package/lib/typescript/src/classes/CactusLM.d.ts +5 -3
  86. package/lib/typescript/src/classes/CactusLM.d.ts.map +1 -1
  87. package/lib/typescript/src/classes/CactusSTT.d.ts +4 -4
  88. package/lib/typescript/src/classes/CactusSTT.d.ts.map +1 -1
  89. package/lib/typescript/src/config/CactusConfig.d.ts +1 -0
  90. package/lib/typescript/src/config/CactusConfig.d.ts.map +1 -1
  91. package/lib/typescript/src/constants/packageVersion.d.ts +1 -1
  92. package/lib/typescript/src/hooks/useCactusIndex.d.ts +14 -0
  93. package/lib/typescript/src/hooks/useCactusIndex.d.ts.map +1 -0
  94. package/lib/typescript/src/hooks/useCactusLM.d.ts +4 -2
  95. package/lib/typescript/src/hooks/useCactusLM.d.ts.map +1 -1
  96. package/lib/typescript/src/hooks/useCactusSTT.d.ts +3 -3
  97. package/lib/typescript/src/hooks/useCactusSTT.d.ts.map +1 -1
  98. package/lib/typescript/src/index.d.ts +5 -1
  99. package/lib/typescript/src/index.d.ts.map +1 -1
  100. package/lib/typescript/src/native/Cactus.d.ts +4 -2
  101. package/lib/typescript/src/native/Cactus.d.ts.map +1 -1
  102. package/lib/typescript/src/native/CactusFileSystem.d.ts +1 -0
  103. package/lib/typescript/src/native/CactusFileSystem.d.ts.map +1 -1
  104. package/lib/typescript/src/native/CactusIndex.d.ts +12 -0
  105. package/lib/typescript/src/native/CactusIndex.d.ts.map +1 -0
  106. package/lib/typescript/src/native/CactusUtil.d.ts.map +1 -1
  107. package/lib/typescript/src/native/index.d.ts +1 -0
  108. package/lib/typescript/src/native/index.d.ts.map +1 -1
  109. package/lib/typescript/src/specs/Cactus.nitro.d.ts +4 -2
  110. package/lib/typescript/src/specs/Cactus.nitro.d.ts.map +1 -1
  111. package/lib/typescript/src/specs/CactusFileSystem.nitro.d.ts +1 -0
  112. package/lib/typescript/src/specs/CactusFileSystem.nitro.d.ts.map +1 -1
  113. package/lib/typescript/src/specs/CactusIndex.nitro.d.ts +24 -0
  114. package/lib/typescript/src/specs/CactusIndex.nitro.d.ts.map +1 -0
  115. package/lib/typescript/src/specs/CactusUtil.nitro.d.ts +1 -1
  116. package/lib/typescript/src/specs/CactusUtil.nitro.d.ts.map +1 -1
  117. package/lib/typescript/src/types/CactusIndex.d.ts +34 -0
  118. package/lib/typescript/src/types/CactusIndex.d.ts.map +1 -0
  119. package/lib/typescript/src/types/CactusLM.d.ts +17 -0
  120. package/lib/typescript/src/types/CactusLM.d.ts.map +1 -1
  121. package/lib/typescript/src/types/CactusModel.d.ts +1 -0
  122. package/lib/typescript/src/types/CactusModel.d.ts.map +1 -1
  123. package/lib/typescript/src/types/CactusSTT.d.ts +1 -1
  124. package/lib/typescript/src/types/CactusSTT.d.ts.map +1 -1
  125. package/lib/typescript/src/types/CactusSTTModel.d.ts +8 -0
  126. package/lib/typescript/src/types/CactusSTTModel.d.ts.map +1 -0
  127. package/nitro.json +3 -0
  128. package/nitrogen/generated/android/c++/JDeviceInfo.hpp +1 -1
  129. package/nitrogen/generated/android/c++/JFunc_void_double.hpp +1 -1
  130. package/nitrogen/generated/android/c++/JHybridCactusCryptoSpec.cpp +1 -1
  131. package/nitrogen/generated/android/c++/JHybridCactusCryptoSpec.hpp +1 -1
  132. package/nitrogen/generated/android/c++/JHybridCactusDeviceInfoSpec.cpp +1 -1
  133. package/nitrogen/generated/android/c++/JHybridCactusDeviceInfoSpec.hpp +1 -1
  134. package/nitrogen/generated/android/c++/JHybridCactusFileSystemSpec.cpp +17 -1
  135. package/nitrogen/generated/android/c++/JHybridCactusFileSystemSpec.hpp +2 -1
  136. package/nitrogen/generated/android/c++/JHybridCactusImageSpec.cpp +1 -1
  137. package/nitrogen/generated/android/c++/JHybridCactusImageSpec.hpp +1 -1
  138. package/nitrogen/generated/android/cactus+autolinking.cmake +2 -1
  139. package/nitrogen/generated/android/cactus+autolinking.gradle +1 -1
  140. package/nitrogen/generated/android/cactusOnLoad.cpp +11 -1
  141. package/nitrogen/generated/android/cactusOnLoad.hpp +1 -1
  142. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/DeviceInfo.kt +1 -1
  143. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/Func_void_double.kt +1 -1
  144. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/HybridCactusCryptoSpec.kt +1 -1
  145. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/HybridCactusDeviceInfoSpec.kt +1 -1
  146. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/HybridCactusFileSystemSpec.kt +5 -1
  147. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/HybridCactusImageSpec.kt +1 -1
  148. package/nitrogen/generated/android/kotlin/com/margelo/nitro/cactus/cactusOnLoad.kt +1 -1
  149. package/nitrogen/generated/ios/Cactus+autolinking.rb +1 -1
  150. package/nitrogen/generated/ios/Cactus-Swift-Cxx-Bridge.cpp +1 -1
  151. package/nitrogen/generated/ios/Cactus-Swift-Cxx-Bridge.hpp +1 -1
  152. package/nitrogen/generated/ios/Cactus-Swift-Cxx-Umbrella.hpp +1 -1
  153. package/nitrogen/generated/ios/CactusAutolinking.mm +11 -1
  154. package/nitrogen/generated/ios/CactusAutolinking.swift +1 -1
  155. package/nitrogen/generated/ios/c++/HybridCactusCryptoSpecSwift.cpp +1 -1
  156. package/nitrogen/generated/ios/c++/HybridCactusCryptoSpecSwift.hpp +1 -1
  157. package/nitrogen/generated/ios/c++/HybridCactusDeviceInfoSpecSwift.cpp +1 -1
  158. package/nitrogen/generated/ios/c++/HybridCactusDeviceInfoSpecSwift.hpp +1 -1
  159. package/nitrogen/generated/ios/c++/HybridCactusFileSystemSpecSwift.cpp +1 -1
  160. package/nitrogen/generated/ios/c++/HybridCactusFileSystemSpecSwift.hpp +9 -1
  161. package/nitrogen/generated/ios/c++/HybridCactusImageSpecSwift.cpp +1 -1
  162. package/nitrogen/generated/ios/c++/HybridCactusImageSpecSwift.hpp +1 -1
  163. package/nitrogen/generated/ios/swift/DeviceInfo.swift +1 -1
  164. package/nitrogen/generated/ios/swift/Func_void.swift +1 -1
  165. package/nitrogen/generated/ios/swift/Func_void_DeviceInfo.swift +1 -1
  166. package/nitrogen/generated/ios/swift/Func_void_bool.swift +1 -1
  167. package/nitrogen/generated/ios/swift/Func_void_double.swift +1 -1
  168. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +1 -1
  169. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__string_.swift +1 -1
  170. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +1 -1
  171. package/nitrogen/generated/ios/swift/HybridCactusCryptoSpec.swift +1 -1
  172. package/nitrogen/generated/ios/swift/HybridCactusCryptoSpec_cxx.swift +1 -1
  173. package/nitrogen/generated/ios/swift/HybridCactusDeviceInfoSpec.swift +1 -1
  174. package/nitrogen/generated/ios/swift/HybridCactusDeviceInfoSpec_cxx.swift +1 -1
  175. package/nitrogen/generated/ios/swift/HybridCactusFileSystemSpec.swift +2 -1
  176. package/nitrogen/generated/ios/swift/HybridCactusFileSystemSpec_cxx.swift +20 -1
  177. package/nitrogen/generated/ios/swift/HybridCactusImageSpec.swift +1 -1
  178. package/nitrogen/generated/ios/swift/HybridCactusImageSpec_cxx.swift +1 -1
  179. package/nitrogen/generated/shared/c++/CactusIndexGetResult.hpp +84 -0
  180. package/nitrogen/generated/shared/c++/CactusIndexQueryResult.hpp +79 -0
  181. package/nitrogen/generated/shared/c++/DeviceInfo.hpp +1 -1
  182. package/nitrogen/generated/shared/c++/HybridCactusCryptoSpec.cpp +1 -1
  183. package/nitrogen/generated/shared/c++/HybridCactusCryptoSpec.hpp +1 -1
  184. package/nitrogen/generated/shared/c++/HybridCactusDeviceInfoSpec.cpp +1 -1
  185. package/nitrogen/generated/shared/c++/HybridCactusDeviceInfoSpec.hpp +1 -1
  186. package/nitrogen/generated/shared/c++/HybridCactusFileSystemSpec.cpp +2 -1
  187. package/nitrogen/generated/shared/c++/HybridCactusFileSystemSpec.hpp +2 -1
  188. package/nitrogen/generated/shared/c++/HybridCactusImageSpec.cpp +1 -1
  189. package/nitrogen/generated/shared/c++/HybridCactusImageSpec.hpp +1 -1
  190. package/nitrogen/generated/shared/c++/HybridCactusIndexSpec.cpp +27 -0
  191. package/nitrogen/generated/shared/c++/HybridCactusIndexSpec.hpp +76 -0
  192. package/nitrogen/generated/shared/c++/HybridCactusSpec.cpp +3 -1
  193. package/nitrogen/generated/shared/c++/HybridCactusSpec.hpp +6 -3
  194. package/nitrogen/generated/shared/c++/HybridCactusUtilSpec.cpp +1 -1
  195. package/nitrogen/generated/shared/c++/HybridCactusUtilSpec.hpp +2 -2
  196. package/package.json +2 -2
  197. package/src/api/Database.ts +80 -2
  198. package/src/classes/CactusIndex.ts +58 -0
  199. package/src/classes/CactusLM.ts +41 -11
  200. package/src/classes/CactusSTT.ts +24 -16
  201. package/src/config/CactusConfig.ts +3 -0
  202. package/src/constants/packageVersion.ts +1 -1
  203. package/src/hooks/useCactusIndex.ts +195 -0
  204. package/src/hooks/useCactusLM.ts +63 -3
  205. package/src/hooks/useCactusSTT.ts +4 -4
  206. package/src/index.tsx +17 -0
  207. package/src/native/Cactus.ts +39 -4
  208. package/src/native/CactusFileSystem.ts +4 -0
  209. package/src/native/CactusIndex.ts +54 -0
  210. package/src/native/CactusUtil.ts +19 -3
  211. package/src/native/index.ts +1 -0
  212. package/src/specs/Cactus.nitro.ts +13 -2
  213. package/src/specs/CactusFileSystem.nitro.ts +2 -0
  214. package/src/specs/CactusIndex.nitro.ts +31 -0
  215. package/src/specs/CactusUtil.nitro.ts +1 -1
  216. package/src/telemetry/Telemetry.ts +1 -1
  217. package/src/types/CactusIndex.ts +40 -0
  218. package/src/types/CactusLM.ts +21 -0
  219. package/src/types/CactusModel.ts +1 -0
  220. package/src/types/CactusSTT.ts +1 -1
  221. package/src/types/CactusSTTModel.ts +10 -0
  222. package/android/src/main/jniLibs/arm64-v8a/libcactus_util.so +0 -0
@@ -14,7 +14,8 @@ public:
14
14
  std::shared_ptr<Promise<std::string>>
15
15
  registerApp(const std::string &encryptedData) override;
16
16
 
17
- std::shared_ptr<Promise<std::optional<std::string>>> getDeviceId() override;
17
+ std::shared_ptr<Promise<std::optional<std::string>>>
18
+ getDeviceId(const std::optional<std::string> &token) override;
18
19
 
19
20
  std::shared_ptr<Promise<void>>
20
21
  setAndroidDataDirectory(const std::string &dataDir) override;
package/cpp/cactus_ffi.h CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  #include <stddef.h>
5
5
  #include <stdint.h>
6
+ #include <stdbool.h>
6
7
 
7
8
  #if __GNUC__ >= 4
8
9
  #define CACTUS_FFI_EXPORT __attribute__ ((visibility ("default")))
@@ -33,6 +34,26 @@ CACTUS_FFI_EXPORT int cactus_complete(
33
34
  void* user_data
34
35
  );
35
36
 
37
+ CACTUS_FFI_EXPORT int cactus_tokenize(
38
+ cactus_model_t model,
39
+ const char* text,
40
+ uint32_t* token_buffer,
41
+ size_t token_buffer_len,
42
+ size_t* out_token_len
43
+ );
44
+
45
+ CACTUS_FFI_EXPORT int cactus_score_window(
46
+ cactus_model_t model,
47
+ const uint32_t* tokens,
48
+ size_t token_len,
49
+ size_t start,
50
+ size_t end,
51
+ size_t context,
52
+ char* response_buffer,
53
+ size_t buffer_size
54
+ );
55
+
56
+
36
57
  CACTUS_FFI_EXPORT int cactus_transcribe(
37
58
  cactus_model_t model,
38
59
  const char* audio_file_path,
@@ -41,7 +62,9 @@ CACTUS_FFI_EXPORT int cactus_transcribe(
41
62
  size_t buffer_size,
42
63
  const char* options_json,
43
64
  cactus_token_callback callback,
44
- void* user_data
65
+ void* user_data,
66
+ const uint8_t* pcm_buffer,
67
+ size_t pcm_buffer_size
45
68
  );
46
69
 
47
70
 
@@ -50,7 +73,8 @@ CACTUS_FFI_EXPORT int cactus_embed(
50
73
  const char* text,
51
74
  float* embeddings_buffer,
52
75
  size_t buffer_size,
53
- size_t* embedding_dim
76
+ size_t* embedding_dim,
77
+ bool normalize
54
78
  );
55
79
 
56
80
  CACTUS_FFI_EXPORT int cactus_image_embed(
@@ -75,6 +99,63 @@ CACTUS_FFI_EXPORT void cactus_stop(cactus_model_t model);
75
99
 
76
100
  CACTUS_FFI_EXPORT void cactus_destroy(cactus_model_t model);
77
101
 
102
+ CACTUS_FFI_EXPORT const char* cactus_get_last_error(void);
103
+
104
+ CACTUS_FFI_EXPORT void cactus_set_telemetry_token(const char* token);
105
+
106
+ CACTUS_FFI_EXPORT void cactus_set_pro_key(const char* pro_key);
107
+
108
+ typedef void* cactus_index_t;
109
+
110
+ CACTUS_FFI_EXPORT cactus_index_t cactus_index_init(
111
+ const char* index_dir,
112
+ size_t embedding_dim
113
+ );
114
+
115
+ CACTUS_FFI_EXPORT int cactus_index_add(
116
+ cactus_index_t index,
117
+ const int* ids,
118
+ const char** documents,
119
+ const char** metadatas,
120
+ const float** embeddings,
121
+ size_t count,
122
+ size_t embedding_dim
123
+ );
124
+
125
+ CACTUS_FFI_EXPORT int cactus_index_delete(
126
+ cactus_index_t index,
127
+ const int* ids,
128
+ size_t ids_count
129
+ );
130
+
131
+ CACTUS_FFI_EXPORT int cactus_index_get(
132
+ cactus_index_t index,
133
+ const int* ids,
134
+ size_t ids_count,
135
+ char** document_buffers,
136
+ size_t* document_buffer_sizes,
137
+ char** metadata_buffers,
138
+ size_t* metadata_buffer_sizes,
139
+ float** embedding_buffers,
140
+ size_t* embedding_buffer_sizes
141
+ );
142
+
143
+ CACTUS_FFI_EXPORT int cactus_index_query(
144
+ cactus_index_t index,
145
+ const float** embeddings,
146
+ size_t embeddings_count,
147
+ size_t embedding_dim,
148
+ const char* options_json,
149
+ int** id_buffers,
150
+ size_t* id_buffer_sizes,
151
+ float** score_buffers,
152
+ size_t* score_buffer_sizes
153
+ );
154
+
155
+ CACTUS_FFI_EXPORT int cactus_index_compact(cactus_index_t index);
156
+
157
+ CACTUS_FFI_EXPORT void cactus_index_destroy(cactus_index_t index);
158
+
78
159
  #ifdef __cplusplus
79
160
  }
80
161
  #endif
package/cpp/cactus_util.h CHANGED
@@ -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);
@@ -133,7 +133,11 @@ class HybridCactusFileSystem: HybridCactusFileSystemSpec {
133
133
  try FileManager.default.removeItem(at: modelURL)
134
134
  }
135
135
  }
136
-
136
+
137
+ func getIndexPath(name: String) throws -> Promise<String> {
138
+ return Promise.async { try self.indexURL(name: name).path }
139
+ }
140
+
137
141
  private func cactusURL() throws -> URL {
138
142
  let documentsURL = try FileManager.default.url(
139
143
  for: .documentDirectory,
@@ -156,7 +160,24 @@ class HybridCactusFileSystem: HybridCactusFileSystemSpec {
156
160
 
157
161
  private func modelURL(model: String) throws -> URL {
158
162
  let cactusURL = try self.cactusURL()
159
- return cactusURL.appendingPathComponent("models/\(model)")
163
+ let modelsURL = cactusURL.appendingPathComponent("models", isDirectory: true)
164
+
165
+ if !FileManager.default.fileExists(atPath: modelsURL.path) {
166
+ try FileManager.default.createDirectory(at: modelsURL, withIntermediateDirectories: true)
167
+ }
168
+
169
+ return modelsURL.appendingPathComponent(model)
170
+ }
171
+
172
+ private func indexURL(name: String) throws -> URL {
173
+ let cactusURL = try self.cactusURL()
174
+ let finalURL = cactusURL.appendingPathComponent("indexes/\(name)", isDirectory: true)
175
+
176
+ if !FileManager.default.fileExists(atPath: finalURL.path) {
177
+ try FileManager.default.createDirectory(at: finalURL, withIntermediateDirectories: true)
178
+ }
179
+
180
+ return finalURL
160
181
  }
161
182
  }
162
183
 
@@ -7,5 +7,7 @@
7
7
  #include "engine/engine.h"
8
8
  #include "models/model.h"
9
9
  #include "ffi/cactus_ffi.h"
10
+ #include "ffi/cactus_telemetry.h"
11
+ #include "npu/npu.h"
10
12
 
11
13
  #endif // CACTUS_H
@@ -3,6 +3,7 @@
3
3
 
4
4
  #include <stddef.h>
5
5
  #include <stdint.h>
6
+ #include <stdbool.h>
6
7
 
7
8
  #if __GNUC__ >= 4
8
9
  #define CACTUS_FFI_EXPORT __attribute__ ((visibility ("default")))
@@ -33,6 +34,26 @@ CACTUS_FFI_EXPORT int cactus_complete(
33
34
  void* user_data
34
35
  );
35
36
 
37
+ CACTUS_FFI_EXPORT int cactus_tokenize(
38
+ cactus_model_t model,
39
+ const char* text,
40
+ uint32_t* token_buffer,
41
+ size_t token_buffer_len,
42
+ size_t* out_token_len
43
+ );
44
+
45
+ CACTUS_FFI_EXPORT int cactus_score_window(
46
+ cactus_model_t model,
47
+ const uint32_t* tokens,
48
+ size_t token_len,
49
+ size_t start,
50
+ size_t end,
51
+ size_t context,
52
+ char* response_buffer,
53
+ size_t buffer_size
54
+ );
55
+
56
+
36
57
  CACTUS_FFI_EXPORT int cactus_transcribe(
37
58
  cactus_model_t model,
38
59
  const char* audio_file_path,
@@ -41,7 +62,9 @@ CACTUS_FFI_EXPORT int cactus_transcribe(
41
62
  size_t buffer_size,
42
63
  const char* options_json,
43
64
  cactus_token_callback callback,
44
- void* user_data
65
+ void* user_data,
66
+ const uint8_t* pcm_buffer,
67
+ size_t pcm_buffer_size
45
68
  );
46
69
 
47
70
 
@@ -50,7 +73,8 @@ CACTUS_FFI_EXPORT int cactus_embed(
50
73
  const char* text,
51
74
  float* embeddings_buffer,
52
75
  size_t buffer_size,
53
- size_t* embedding_dim
76
+ size_t* embedding_dim,
77
+ bool normalize
54
78
  );
55
79
 
56
80
  CACTUS_FFI_EXPORT int cactus_image_embed(
@@ -75,6 +99,63 @@ CACTUS_FFI_EXPORT void cactus_stop(cactus_model_t model);
75
99
 
76
100
  CACTUS_FFI_EXPORT void cactus_destroy(cactus_model_t model);
77
101
 
102
+ CACTUS_FFI_EXPORT const char* cactus_get_last_error(void);
103
+
104
+ CACTUS_FFI_EXPORT void cactus_set_telemetry_token(const char* token);
105
+
106
+ CACTUS_FFI_EXPORT void cactus_set_pro_key(const char* pro_key);
107
+
108
+ typedef void* cactus_index_t;
109
+
110
+ CACTUS_FFI_EXPORT cactus_index_t cactus_index_init(
111
+ const char* index_dir,
112
+ size_t embedding_dim
113
+ );
114
+
115
+ CACTUS_FFI_EXPORT int cactus_index_add(
116
+ cactus_index_t index,
117
+ const int* ids,
118
+ const char** documents,
119
+ const char** metadatas,
120
+ const float** embeddings,
121
+ size_t count,
122
+ size_t embedding_dim
123
+ );
124
+
125
+ CACTUS_FFI_EXPORT int cactus_index_delete(
126
+ cactus_index_t index,
127
+ const int* ids,
128
+ size_t ids_count
129
+ );
130
+
131
+ CACTUS_FFI_EXPORT int cactus_index_get(
132
+ cactus_index_t index,
133
+ const int* ids,
134
+ size_t ids_count,
135
+ char** document_buffers,
136
+ size_t* document_buffer_sizes,
137
+ char** metadata_buffers,
138
+ size_t* metadata_buffer_sizes,
139
+ float** embedding_buffers,
140
+ size_t* embedding_buffer_sizes
141
+ );
142
+
143
+ CACTUS_FFI_EXPORT int cactus_index_query(
144
+ cactus_index_t index,
145
+ const float** embeddings,
146
+ size_t embeddings_count,
147
+ size_t embedding_dim,
148
+ const char* options_json,
149
+ int** id_buffers,
150
+ size_t* id_buffer_sizes,
151
+ float** score_buffers,
152
+ size_t* score_buffer_sizes
153
+ );
154
+
155
+ CACTUS_FFI_EXPORT int cactus_index_compact(cactus_index_t index);
156
+
157
+ CACTUS_FFI_EXPORT void cactus_index_destroy(cactus_index_t index);
158
+
78
159
  #ifdef __cplusplus
79
160
  }
80
161
  #endif