cactus-react-native 1.10.4 → 1.12.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 (75) hide show
  1. package/README.md +199 -40
  2. package/android/src/main/jniLibs/arm64-v8a/libcactus.a +0 -0
  3. package/cpp/HybridCactus.cpp +131 -2
  4. package/cpp/HybridCactus.hpp +15 -0
  5. package/cpp/cactus_ffi.h +240 -2
  6. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus_ffi.h +240 -2
  7. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus_utils.h +940 -109
  8. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/engine.h +175 -25
  9. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/gemma_tools.h +48 -21
  10. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/graph.h +79 -7
  11. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/kernel.h +122 -9
  12. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/kernel_utils.h +191 -2
  13. package/ios/cactus.xcframework/ios-arm64/cactus.framework/cactus +0 -0
  14. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_ffi.h +240 -2
  15. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_utils.h +940 -109
  16. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/engine.h +175 -25
  17. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/gemma_tools.h +48 -21
  18. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/graph.h +79 -7
  19. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/kernel.h +122 -9
  20. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/kernel_utils.h +191 -2
  21. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/cactus +0 -0
  22. package/lib/module/classes/{CactusVAD.js → CactusAudio.js} +19 -6
  23. package/lib/module/classes/CactusAudio.js.map +1 -0
  24. package/lib/module/classes/CactusLM.js +25 -0
  25. package/lib/module/classes/CactusLM.js.map +1 -1
  26. package/lib/module/hooks/{useCactusVAD.js → useCactusAudio.js} +50 -20
  27. package/lib/module/hooks/useCactusAudio.js.map +1 -0
  28. package/lib/module/index.js +2 -2
  29. package/lib/module/index.js.map +1 -1
  30. package/lib/module/modelRegistry.js +1 -1
  31. package/lib/module/native/Cactus.js +81 -2
  32. package/lib/module/native/Cactus.js.map +1 -1
  33. package/lib/module/types/CactusAudio.js +4 -0
  34. package/lib/module/types/{CactusVAD.js.map → CactusAudio.js.map} +1 -1
  35. package/lib/typescript/src/classes/CactusAudio.d.ts +22 -0
  36. package/lib/typescript/src/classes/CactusAudio.d.ts.map +1 -0
  37. package/lib/typescript/src/classes/CactusLM.d.ts +2 -1
  38. package/lib/typescript/src/classes/CactusLM.d.ts.map +1 -1
  39. package/lib/typescript/src/hooks/useCactusAudio.d.ts +17 -0
  40. package/lib/typescript/src/hooks/useCactusAudio.d.ts.map +1 -0
  41. package/lib/typescript/src/index.d.ts +4 -4
  42. package/lib/typescript/src/index.d.ts.map +1 -1
  43. package/lib/typescript/src/native/Cactus.d.ts +9 -3
  44. package/lib/typescript/src/native/Cactus.d.ts.map +1 -1
  45. package/lib/typescript/src/specs/Cactus.nitro.d.ts +3 -0
  46. package/lib/typescript/src/specs/Cactus.nitro.d.ts.map +1 -1
  47. package/lib/typescript/src/types/CactusAudio.d.ts +63 -0
  48. package/lib/typescript/src/types/CactusAudio.d.ts.map +1 -0
  49. package/lib/typescript/src/types/CactusLM.d.ts +15 -0
  50. package/lib/typescript/src/types/CactusLM.d.ts.map +1 -1
  51. package/lib/typescript/src/types/CactusSTT.d.ts +1 -0
  52. package/lib/typescript/src/types/CactusSTT.d.ts.map +1 -1
  53. package/nitrogen/generated/shared/c++/HybridCactusSpec.cpp +3 -0
  54. package/nitrogen/generated/shared/c++/HybridCactusSpec.hpp +3 -0
  55. package/package.json +1 -1
  56. package/src/classes/{CactusVAD.ts → CactusAudio.ts} +32 -13
  57. package/src/classes/CactusLM.ts +36 -0
  58. package/src/hooks/{useCactusVAD.ts → useCactusAudio.ts} +65 -28
  59. package/src/index.tsx +16 -9
  60. package/src/modelRegistry.ts +1 -1
  61. package/src/native/Cactus.ts +118 -3
  62. package/src/specs/Cactus.nitro.ts +16 -0
  63. package/src/types/CactusAudio.ts +73 -0
  64. package/src/types/CactusLM.ts +17 -0
  65. package/src/types/CactusSTT.ts +1 -0
  66. package/lib/module/classes/CactusVAD.js.map +0 -1
  67. package/lib/module/hooks/useCactusVAD.js.map +0 -1
  68. package/lib/module/types/CactusVAD.js +0 -4
  69. package/lib/typescript/src/classes/CactusVAD.d.ts +0 -20
  70. package/lib/typescript/src/classes/CactusVAD.d.ts.map +0 -1
  71. package/lib/typescript/src/hooks/useCactusVAD.d.ts +0 -15
  72. package/lib/typescript/src/hooks/useCactusVAD.d.ts.map +0 -1
  73. package/lib/typescript/src/types/CactusVAD.d.ts +0 -34
  74. package/lib/typescript/src/types/CactusVAD.d.ts.map +0 -1
  75. package/src/types/CactusVAD.ts +0 -39
@@ -41,7 +41,20 @@ CACTUS_FFI_EXPORT int cactus_complete(
41
41
  const char* options_json, // optional
42
42
  const char* tools_json, // optional
43
43
  cactus_token_callback callback, // optional
44
- void* user_data // optional
44
+ void* user_data, // optional
45
+ const uint8_t* pcm_buffer, // optional: NULL when not used
46
+ size_t pcm_buffer_size // optional: 0 when not used
47
+ );
48
+
49
+ CACTUS_FFI_EXPORT int cactus_prefill(
50
+ cactus_model_t model,
51
+ const char* messages_json,
52
+ char* response_buffer,
53
+ size_t buffer_size,
54
+ const char* options_json, // optional
55
+ const char* tools_json, // optional
56
+ const uint8_t* pcm_buffer, // optional: NULL when not used
57
+ size_t pcm_buffer_size // optional: 0 when not used
45
58
  );
46
59
 
47
60
  CACTUS_FFI_EXPORT int cactus_tokenize(
@@ -140,6 +153,26 @@ CACTUS_FFI_EXPORT int cactus_vad(
140
153
  size_t pcm_buffer_size
141
154
  );
142
155
 
156
+ CACTUS_FFI_EXPORT int cactus_diarize(
157
+ cactus_model_t model,
158
+ const char* audio_file_path,
159
+ char* response_buffer,
160
+ size_t buffer_size,
161
+ const char* options_json,
162
+ const uint8_t* pcm_buffer,
163
+ size_t pcm_buffer_size
164
+ );
165
+
166
+ CACTUS_FFI_EXPORT int cactus_embed_speaker(
167
+ cactus_model_t model,
168
+ const char* audio_file_path,
169
+ char* response_buffer,
170
+ size_t buffer_size,
171
+ const char* options_json,
172
+ const uint8_t* pcm_buffer,
173
+ size_t pcm_buffer_size
174
+ );
175
+
143
176
  CACTUS_FFI_EXPORT int cactus_rag_query(
144
177
  cactus_model_t model,
145
178
  const char* query,
@@ -148,7 +181,6 @@ CACTUS_FFI_EXPORT int cactus_rag_query(
148
181
  size_t top_k
149
182
  );
150
183
 
151
-
152
184
  CACTUS_FFI_EXPORT cactus_index_t cactus_index_init(
153
185
  const char* index_dir,
154
186
  size_t embedding_dim
@@ -199,11 +231,217 @@ CACTUS_FFI_EXPORT void cactus_index_destroy(cactus_index_t index);
199
231
 
200
232
  CACTUS_FFI_EXPORT const char* cactus_get_last_error(void);
201
233
 
234
+ // level: 0=DEBUG, 1=INFO, 2=WARN (default), 3=ERROR, 4=NONE
235
+ CACTUS_FFI_EXPORT void cactus_log_set_level(int level);
236
+
237
+ typedef void (*cactus_log_callback_t)(int level, const char* component, const char* message, void* user_data);
238
+ CACTUS_FFI_EXPORT void cactus_log_set_callback(cactus_log_callback_t callback, void* user_data);
239
+
202
240
  CACTUS_FFI_EXPORT void cactus_set_telemetry_environment(const char* framework, const char* cache_location, const char* version);
203
241
  CACTUS_FFI_EXPORT void cactus_set_app_id(const char* app_id);
204
242
  CACTUS_FFI_EXPORT void cactus_telemetry_flush(void);
205
243
  CACTUS_FFI_EXPORT void cactus_telemetry_shutdown(void);
206
244
 
245
+ // cactus graph export
246
+ typedef void* cactus_graph_t;
247
+ typedef uint64_t cactus_node_t;
248
+
249
+ typedef struct {
250
+ int32_t precision;
251
+ size_t rank;
252
+ size_t shape[8];
253
+ size_t num_elements;
254
+ size_t byte_size;
255
+ } cactus_tensor_info_t;
256
+
257
+ CACTUS_FFI_EXPORT cactus_graph_t cactus_graph_create(void);
258
+ CACTUS_FFI_EXPORT void cactus_graph_destroy(cactus_graph_t graph);
259
+ CACTUS_FFI_EXPORT int cactus_graph_hard_reset(cactus_graph_t graph);
260
+
261
+ CACTUS_FFI_EXPORT int cactus_graph_input(
262
+ cactus_graph_t graph, const size_t* shape, size_t rank, int32_t precision,
263
+ cactus_node_t* out_node);
264
+
265
+ CACTUS_FFI_EXPORT int cactus_graph_set_input(
266
+ cactus_graph_t graph, cactus_node_t node, const void* data, int32_t
267
+ precision);
268
+ CACTUS_FFI_EXPORT int cactus_graph_set_external_input(
269
+ cactus_graph_t graph, cactus_node_t node, void* data, int32_t precision);
270
+
271
+ CACTUS_FFI_EXPORT int cactus_graph_precision_cast(
272
+ cactus_graph_t graph, cactus_node_t input, int32_t target_precision, cactus_node_t* out);
273
+ CACTUS_FFI_EXPORT int cactus_graph_quantize_activations(
274
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t* out);
275
+
276
+ CACTUS_FFI_EXPORT int cactus_graph_add(cactus_graph_t graph, cactus_node_t a,
277
+ cactus_node_t b, cactus_node_t* out);
278
+ CACTUS_FFI_EXPORT int cactus_graph_add_clipped(cactus_graph_t graph, cactus_node_t a,
279
+ cactus_node_t b, cactus_node_t* out);
280
+ CACTUS_FFI_EXPORT int cactus_graph_subtract(cactus_graph_t graph, cactus_node_t
281
+ a, cactus_node_t b, cactus_node_t* out);
282
+ CACTUS_FFI_EXPORT int cactus_graph_multiply(cactus_graph_t graph, cactus_node_t
283
+ a, cactus_node_t b, cactus_node_t* out);
284
+ CACTUS_FFI_EXPORT int cactus_graph_divide(cactus_graph_t graph, cactus_node_t
285
+ a, cactus_node_t b, cactus_node_t* out);
286
+
287
+ CACTUS_FFI_EXPORT int cactus_graph_scalar_add(cactus_graph_t graph, cactus_node_t x, float value, cactus_node_t* out);
288
+ CACTUS_FFI_EXPORT int cactus_graph_scalar_subtract(cactus_graph_t graph, cactus_node_t x, float value, cactus_node_t* out);
289
+ CACTUS_FFI_EXPORT int cactus_graph_scalar_multiply(cactus_graph_t graph, cactus_node_t x, float value, cactus_node_t* out);
290
+ CACTUS_FFI_EXPORT int cactus_graph_scalar_divide(cactus_graph_t graph, cactus_node_t x, float value, cactus_node_t* out);
291
+ CACTUS_FFI_EXPORT int cactus_graph_scalar_exp(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
292
+ CACTUS_FFI_EXPORT int cactus_graph_scalar_sqrt(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
293
+ CACTUS_FFI_EXPORT int cactus_graph_scalar_cos(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
294
+ CACTUS_FFI_EXPORT int cactus_graph_scalar_sin(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
295
+ CACTUS_FFI_EXPORT int cactus_graph_scalar_log(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
296
+
297
+ CACTUS_FFI_EXPORT int cactus_graph_abs(cactus_graph_t graph, cactus_node_t x,
298
+ cactus_node_t* out);
299
+ CACTUS_FFI_EXPORT int cactus_graph_pow(cactus_graph_t graph, cactus_node_t x,
300
+ float exponent, cactus_node_t* out);
301
+
302
+ CACTUS_FFI_EXPORT int cactus_graph_view(
303
+ cactus_graph_t graph, cactus_node_t x, const size_t* shape, size_t rank,
304
+ cactus_node_t* out);
305
+ CACTUS_FFI_EXPORT int cactus_graph_flatten(
306
+ cactus_graph_t graph, cactus_node_t x, int32_t start_dim, int32_t end_dim,
307
+ cactus_node_t* out);
308
+ CACTUS_FFI_EXPORT int cactus_graph_reshape(
309
+ cactus_graph_t graph, cactus_node_t x, const size_t* shape, size_t rank, cactus_node_t* out);
310
+ CACTUS_FFI_EXPORT int cactus_graph_transpose(
311
+ cactus_graph_t graph, cactus_node_t x, int32_t backend, cactus_node_t* out);
312
+ CACTUS_FFI_EXPORT int cactus_graph_transpose_n(
313
+ cactus_graph_t graph, cactus_node_t x, const size_t* permutation, size_t rank, int32_t backend, cactus_node_t* out);
314
+ CACTUS_FFI_EXPORT int cactus_graph_slice(
315
+ cactus_graph_t graph, cactus_node_t x, int32_t axis, size_t start, size_t length, cactus_node_t* out);
316
+ CACTUS_FFI_EXPORT int cactus_graph_index(
317
+ cactus_graph_t graph, cactus_node_t x, size_t index_value, int32_t dim, cactus_node_t* out);
318
+ CACTUS_FFI_EXPORT int cactus_graph_sum(cactus_graph_t graph, cactus_node_t x, int32_t axis, cactus_node_t* out);
319
+ CACTUS_FFI_EXPORT int cactus_graph_mean(cactus_graph_t graph, cactus_node_t x, int32_t axis, cactus_node_t* out);
320
+ CACTUS_FFI_EXPORT int cactus_graph_variance(cactus_graph_t graph, cactus_node_t x, int32_t axis, cactus_node_t* out);
321
+ CACTUS_FFI_EXPORT int cactus_graph_min(cactus_graph_t graph, cactus_node_t x, int32_t axis, cactus_node_t* out);
322
+ CACTUS_FFI_EXPORT int cactus_graph_max(cactus_graph_t graph, cactus_node_t x, int32_t axis, cactus_node_t* out);
323
+
324
+ CACTUS_FFI_EXPORT int cactus_graph_concat(
325
+ cactus_graph_t graph, cactus_node_t a, cactus_node_t b, int32_t axis,
326
+ cactus_node_t* out);
327
+
328
+ CACTUS_FFI_EXPORT int cactus_graph_cat(
329
+ cactus_graph_t graph, const cactus_node_t* nodes, size_t count, int32_t
330
+ axis, cactus_node_t* out);
331
+ CACTUS_FFI_EXPORT int cactus_graph_matmul(
332
+ cactus_graph_t graph, cactus_node_t a, cactus_node_t b, bool pretransposed_rhs, int32_t backend, cactus_node_t* out);
333
+ CACTUS_FFI_EXPORT int cactus_graph_gather(
334
+ cactus_graph_t graph, cactus_node_t tensor, cactus_node_t indices, cactus_node_t* out);
335
+ CACTUS_FFI_EXPORT int cactus_graph_embedding_from_tensor(
336
+ cactus_graph_t graph, cactus_node_t embedding_tensor, cactus_node_t indices, cactus_node_t* out);
337
+ CACTUS_FFI_EXPORT int cactus_graph_embedding_from_file(
338
+ cactus_graph_t graph, const char* filename, cactus_node_t indices, cactus_node_t* out);
339
+ CACTUS_FFI_EXPORT int cactus_graph_mmap_embeddings(
340
+ cactus_graph_t graph, const char* filename, cactus_node_t* out);
341
+ CACTUS_FFI_EXPORT int cactus_graph_mmap_weights(
342
+ cactus_graph_t graph, const char* filename, cactus_node_t* out);
343
+ CACTUS_FFI_EXPORT int cactus_graph_bilinear_interpolation(
344
+ cactus_graph_t graph, cactus_node_t pos_embeds, size_t dst_height, size_t dst_width, cactus_node_t* out);
345
+ CACTUS_FFI_EXPORT int cactus_graph_set_grouped_scales(
346
+ cactus_graph_t graph, cactus_node_t node, size_t group_size, size_t num_groups, void* scales_ptr);
347
+ CACTUS_FFI_EXPORT int cactus_graph_set_interleaved(
348
+ cactus_graph_t graph, cactus_node_t node, bool interleaved, size_t original_n);
349
+ CACTUS_FFI_EXPORT int cactus_graph_release_weight_pages(cactus_graph_t graph, cactus_node_t node);
350
+ CACTUS_FFI_EXPORT int cactus_graph_prefetch_weight_pages(cactus_graph_t graph, cactus_node_t node);
351
+ CACTUS_FFI_EXPORT int cactus_graph_release_all_weight_pages(cactus_graph_t graph);
352
+
353
+ CACTUS_FFI_EXPORT int cactus_graph_relu(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
354
+ CACTUS_FFI_EXPORT int cactus_graph_silu(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
355
+ CACTUS_FFI_EXPORT int cactus_graph_gelu(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
356
+ CACTUS_FFI_EXPORT int cactus_graph_gelu_erf(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
357
+ CACTUS_FFI_EXPORT int cactus_graph_sigmoid(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
358
+ CACTUS_FFI_EXPORT int cactus_graph_tanh(cactus_graph_t graph, cactus_node_t x, cactus_node_t* out);
359
+ CACTUS_FFI_EXPORT int cactus_graph_glu(cactus_graph_t graph, cactus_node_t x, int32_t axis, cactus_node_t* out);
360
+
361
+ CACTUS_FFI_EXPORT int cactus_graph_layernorm(
362
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, cactus_node_t bias, float epsilon, bool has_bias, cactus_node_t* out);
363
+ CACTUS_FFI_EXPORT int cactus_graph_groupnorm(
364
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, cactus_node_t bias, size_t num_groups, float epsilon, cactus_node_t* out);
365
+ CACTUS_FFI_EXPORT int cactus_graph_batchnorm(
366
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, cactus_node_t bias, cactus_node_t running_mean, cactus_node_t running_var, int32_t axis, float epsilon, cactus_node_t* out);
367
+ CACTUS_FFI_EXPORT int cactus_graph_topk(cactus_graph_t graph, cactus_node_t input, size_t k, cactus_node_t* out);
368
+ CACTUS_FFI_EXPORT int cactus_graph_rms_norm(
369
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, float epsilon, cactus_node_t* out);
370
+ CACTUS_FFI_EXPORT int cactus_graph_rope(
371
+ cactus_graph_t graph, cactus_node_t input, float theta, size_t position_offset, int32_t backend, cactus_node_t* out);
372
+ CACTUS_FFI_EXPORT int cactus_graph_rope_gptj(
373
+ cactus_graph_t graph, cactus_node_t input, float theta, size_t position_offset, size_t rot_dim, int32_t backend, cactus_node_t* out);
374
+ CACTUS_FFI_EXPORT int cactus_graph_softmax(cactus_graph_t graph, cactus_node_t input, int32_t axis, cactus_node_t* out);
375
+ CACTUS_FFI_EXPORT int cactus_graph_attention(
376
+ cactus_graph_t graph, cactus_node_t query, cactus_node_t key, cactus_node_t value, float scale, bool is_causal, size_t position_offset, size_t window_size, int32_t backend, bool use_mask, cactus_node_t mask, bool additive_mask, cactus_node_t* out);
377
+ CACTUS_FFI_EXPORT int cactus_graph_rel_pos_bias(
378
+ cactus_graph_t graph, cactus_node_t query, cactus_node_t relative_key, float scale, cactus_node_t* out);
379
+ CACTUS_FFI_EXPORT int cactus_graph_attention_int8_hybrid(
380
+ cactus_graph_t graph, cactus_node_t query, cactus_node_t key_new, cactus_node_t value_new, float scale, size_t position_offset,
381
+ const int8_t* cached_keys, const int8_t* cached_values, const float* k_scales, const float* v_scales,
382
+ size_t cache_len, size_t num_kv_heads, size_t head_dim, size_t window_size, cactus_node_t* out);
383
+
384
+ CACTUS_FFI_EXPORT int cactus_graph_conv1d_causal(
385
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, size_t kernel_size, size_t dilation, cactus_node_t* out);
386
+ CACTUS_FFI_EXPORT int cactus_graph_conv1d_k3(
387
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, size_t stride, cactus_node_t* out);
388
+ CACTUS_FFI_EXPORT int cactus_graph_conv1d_k7s3(
389
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, cactus_node_t bias, cactus_node_t* out);
390
+ CACTUS_FFI_EXPORT int cactus_graph_conv1d(
391
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, bool has_bias, cactus_node_t bias, size_t stride, cactus_node_t* out);
392
+ CACTUS_FFI_EXPORT int cactus_graph_conv1d_same_depthwise_k9(
393
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, bool has_bias, cactus_node_t bias, cactus_node_t* out);
394
+ CACTUS_FFI_EXPORT int cactus_graph_conv1d_pointwise(
395
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, bool has_bias, cactus_node_t bias, cactus_node_t* out);
396
+ CACTUS_FFI_EXPORT int cactus_graph_conv2d_k3s2p1(
397
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, bool has_bias, cactus_node_t bias, cactus_node_t* out);
398
+ CACTUS_FFI_EXPORT int cactus_graph_conv2d_depthwise_k3s2p1(
399
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, bool has_bias, cactus_node_t bias, cactus_node_t* out);
400
+ CACTUS_FFI_EXPORT int cactus_graph_conv2d_pointwise_1x1(
401
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, bool has_bias, cactus_node_t bias, cactus_node_t* out);
402
+
403
+ CACTUS_FFI_EXPORT int cactus_graph_lstm_cell(
404
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t h_prev, cactus_node_t c_prev, cactus_node_t weight_ih, cactus_node_t weight_hh, cactus_node_t bias_ih, cactus_node_t bias_hh, cactus_node_t* out);
405
+ CACTUS_FFI_EXPORT int cactus_graph_gated_deltanet_decode(
406
+ cactus_graph_t graph, cactus_node_t query, cactus_node_t key, cactus_node_t value, cactus_node_t gate_log, cactus_node_t beta, cactus_node_t initial_state, float scale, cactus_node_t* out);
407
+ CACTUS_FFI_EXPORT int cactus_graph_gated_deltanet_prefill(
408
+ cactus_graph_t graph, cactus_node_t query, cactus_node_t key, cactus_node_t value, cactus_node_t gate_log, cactus_node_t beta, cactus_node_t initial_state, size_t chunk_size, float scale, cactus_node_t* out);
409
+ CACTUS_FFI_EXPORT int cactus_graph_stft(
410
+ cactus_graph_t graph, cactus_node_t input, cactus_node_t weight, size_t stride, size_t num_fft_bins, cactus_node_t* out);
411
+
412
+ CACTUS_FFI_EXPORT int cactus_graph_altup_predict(
413
+ cactus_graph_t graph, cactus_node_t coefs, const cactus_node_t* streams, size_t num_streams, cactus_node_t* out);
414
+ CACTUS_FFI_EXPORT int cactus_graph_altup_correct(
415
+ cactus_graph_t graph, cactus_node_t coefs, cactus_node_t innovation, const cactus_node_t* predictions, size_t num_predictions, cactus_node_t* out);
416
+ CACTUS_FFI_EXPORT int cactus_graph_gaussian_topk(
417
+ cactus_graph_t graph, cactus_node_t input, float ppf, cactus_node_t* out);
418
+
419
+ CACTUS_FFI_EXPORT int cactus_graph_moe_layer_gated(
420
+ cactus_graph_t graph, cactus_node_t hidden, cactus_node_t routing_probs, cactus_node_t topk_indices,
421
+ const cactus_node_t* w1_weights, const cactus_node_t* w3_weights, const cactus_node_t* w2_weights,
422
+ size_t num_experts, size_t num_experts_per_tok, bool normalize_routing, float epsilon, float routed_scaling_factor, cactus_node_t* out);
423
+ CACTUS_FFI_EXPORT int cactus_graph_moe_layer_ungated(
424
+ cactus_graph_t graph, cactus_node_t hidden, cactus_node_t routing_probs, cactus_node_t topk_indices,
425
+ const cactus_node_t* w1_weights, const cactus_node_t* w2_weights,
426
+ size_t num_experts, size_t num_experts_per_tok, bool normalize_routing, float epsilon, float routed_scaling_factor, int32_t activation, cactus_node_t* out);
427
+
428
+ CACTUS_FFI_EXPORT int cactus_graph_sample(
429
+ cactus_graph_t graph, cactus_node_t logits, float temperature, float top_p, size_t top_k, cactus_node_t* out);
430
+ CACTUS_FFI_EXPORT int cactus_graph_scatter_topk(
431
+ cactus_graph_t graph, cactus_node_t indices, cactus_node_t values, size_t num_classes, cactus_node_t* out);
432
+ CACTUS_FFI_EXPORT int cactus_graph_persistent(
433
+ cactus_graph_t graph, cactus_node_t source_node, cactus_node_t* out);
434
+ CACTUS_FFI_EXPORT int cactus_graph_is_populated(
435
+ cactus_graph_t graph, cactus_node_t persistent_node, int32_t* out_is_populated);
436
+ CACTUS_FFI_EXPORT int cactus_graph_invalidate_persistent(
437
+ cactus_graph_t graph, cactus_node_t persistent_node);
438
+
439
+ CACTUS_FFI_EXPORT int cactus_graph_execute(cactus_graph_t graph);
440
+ CACTUS_FFI_EXPORT int cactus_graph_get_output_ptr(cactus_graph_t graph,
441
+ cactus_node_t node, void** out_ptr);
442
+ CACTUS_FFI_EXPORT int cactus_graph_get_output_info(cactus_graph_t graph,
443
+ cactus_node_t node, cactus_tensor_info_t* out_info);
444
+
207
445
  #ifdef __cplusplus
208
446
  }
209
447
  #endif