@novastera-oss/llamarn 0.1.5-beta.3 → 0.2.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.
@@ -35,8 +35,8 @@
35
35
 
36
36
  namespace facebook::react {
37
37
 
38
- LlamaCppModel::LlamaCppModel(rn_llama_context* rn_ctx)
39
- : rn_ctx_(rn_ctx), should_stop_completion_(false), is_predicting_(false) {
38
+ LlamaCppModel::LlamaCppModel(rn_llama_context* rn_ctx, std::shared_ptr<CallInvoker> jsInvoker)
39
+ : rn_ctx_(rn_ctx), should_stop_completion_(false), is_predicting_(false), jsInvoker_(jsInvoker) {
40
40
  initHelpers();
41
41
  }
42
42
 
@@ -435,11 +435,18 @@ CompletionResult LlamaCppModel::completion(const CompletionOptions& options, std
435
435
  rn_ctx_->params.n_predict = options.n_predict;
436
436
 
437
437
  // Check for a partial callback
438
- auto callback_adapter = [&partialCallback, runtime](const std::string& token, bool is_done) -> bool {
438
+ auto callback_adapter = [&partialCallback, runtime, this](const std::string& token, bool is_done) -> bool {
439
+ // Check for stop condition first
440
+ if (should_stop_completion_) {
441
+ return false; // Signal to stop completion
442
+ }
443
+
439
444
  if (partialCallback && runtime && !is_done) {
440
445
  partialCallback(*runtime, token.c_str());
441
446
  }
442
- return true;
447
+
448
+ // Return true to continue, false to stop
449
+ return !should_stop_completion_;
443
450
  };
444
451
 
445
452
  // Run the completion based on whether we have messages or prompt
@@ -546,7 +553,7 @@ jsi::Value LlamaCppModel::jsonToJsi(jsi::Runtime& rt, const json& j) {
546
553
  return jsi::Value::undefined();
547
554
  }
548
555
 
549
- // JSI method for completions
556
+ // JSI method for completions (synchronous - kept for compatibility)
550
557
  jsi::Value LlamaCppModel::completionJsi(jsi::Runtime& rt, const jsi::Value* args, size_t count) {
551
558
  if (count < 1 || !args[0].isObject()) {
552
559
  throw jsi::JSError(rt, "completion requires an options object");
@@ -581,6 +588,116 @@ jsi::Value LlamaCppModel::completionJsi(jsi::Runtime& rt, const jsi::Value* args
581
588
  }
582
589
  }
583
590
 
591
+ // JSI method for async completions (recommended approach)
592
+ jsi::Value LlamaCppModel::completionAsyncJsi(jsi::Runtime& rt, const jsi::Value* args, size_t count) {
593
+ if (count < 1 || !args[0].isObject()) {
594
+ throw jsi::JSError(rt, "completion requires an options object");
595
+ }
596
+
597
+ if (!jsInvoker_) {
598
+ // Fallback to synchronous if no CallInvoker available
599
+ return completionJsi(rt, args, count);
600
+ }
601
+
602
+ // Parse options and callback on the current thread
603
+ CompletionOptions options;
604
+ std::shared_ptr<jsi::Function> callbackFn = nullptr;
605
+
606
+ try {
607
+ options = parseCompletionOptions(rt, args[0].getObject(rt));
608
+
609
+ if (count > 1 && args[1].isObject() && args[1].getObject(rt).isFunction(rt)) {
610
+ callbackFn = std::make_shared<jsi::Function>(args[1].getObject(rt).getFunction(rt));
611
+ options.stream = true;
612
+ }
613
+ } catch (const std::exception& e) {
614
+ throw jsi::JSError(rt, e.what());
615
+ }
616
+
617
+ // Create Promise constructor
618
+ auto Promise = rt.global().getPropertyAsFunction(rt, "Promise");
619
+
620
+ auto executor = jsi::Function::createFromHostFunction(
621
+ rt,
622
+ jsi::PropNameID::forAscii(rt, "executor"),
623
+ 2,
624
+ [this, options, callbackFn](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* args, size_t count) -> jsi::Value {
625
+
626
+ auto resolve = std::make_shared<jsi::Function>(args[0].asObject(runtime).asFunction(runtime));
627
+ auto reject = std::make_shared<jsi::Function>(args[1].asObject(runtime).asFunction(runtime));
628
+
629
+ // Create shared references to runtime and invoker for thread safety
630
+ auto runtimePtr = &runtime;
631
+ auto invoker = jsInvoker_;
632
+ auto selfPtr = shared_from_this(); // This requires LlamaCppModel to inherit from std::enable_shared_from_this
633
+
634
+ // Launch background thread for completion
635
+ std::thread([selfPtr, options, callbackFn, resolve, reject, runtimePtr, invoker]() {
636
+ try {
637
+ // Create callback that schedules token updates on JS thread
638
+ std::function<void(jsi::Runtime&, const char*)> partialCallback = nullptr;
639
+
640
+ if (callbackFn && invoker) {
641
+ partialCallback = [callbackFn, invoker, runtimePtr](jsi::Runtime& rt, const char* token) {
642
+ std::string tokenCopy(token);
643
+ invoker->invokeAsync([callbackFn, tokenCopy, runtimePtr]() {
644
+ try {
645
+ jsi::Object data(*runtimePtr);
646
+ data.setProperty(*runtimePtr, "token", jsi::String::createFromUtf8(*runtimePtr, tokenCopy));
647
+ callbackFn->call(*runtimePtr, data);
648
+ } catch (...) {
649
+ // Ignore callback errors
650
+ }
651
+ });
652
+ };
653
+ }
654
+
655
+ // Run completion
656
+ CompletionResult result = selfPtr->completion(options, partialCallback, runtimePtr);
657
+
658
+ // Schedule success callback on JS thread
659
+ invoker->invokeAsync([selfPtr, resolve, result, runtimePtr]() {
660
+ try {
661
+ jsi::Object jsResult = selfPtr->completionResultToJsi(*runtimePtr, result);
662
+ resolve->call(*runtimePtr, jsResult);
663
+ } catch (const std::exception& e) {
664
+ // If conversion fails, create a simple error response
665
+ jsi::Object errorObj(*runtimePtr);
666
+ errorObj.setProperty(*runtimePtr, "error", jsi::String::createFromUtf8(*runtimePtr, e.what()));
667
+ resolve->call(*runtimePtr, errorObj);
668
+ }
669
+ });
670
+
671
+ } catch (const std::exception& e) {
672
+ // Schedule error callback on JS thread
673
+ std::string errorMsg(e.what());
674
+ invoker->invokeAsync([reject, errorMsg, runtimePtr]() {
675
+ try {
676
+ reject->call(*runtimePtr, jsi::String::createFromUtf8(*runtimePtr, errorMsg));
677
+ } catch (...) {
678
+ // Ignore rejection errors
679
+ }
680
+ });
681
+ }
682
+ }).detach();
683
+
684
+ return jsi::Value::undefined();
685
+ }
686
+ );
687
+
688
+ return Promise.callAsConstructor(rt, std::move(executor));
689
+ }
690
+
691
+ // JSI method for stopping completion
692
+ jsi::Value LlamaCppModel::stopCompletionJsi(jsi::Runtime& rt, const jsi::Value* args, size_t count) {
693
+ try {
694
+ setShouldStopCompletion(true);
695
+ return jsi::Value(true);
696
+ } catch (const std::exception& e) {
697
+ throw jsi::JSError(rt, e.what());
698
+ }
699
+ }
700
+
584
701
  jsi::Value LlamaCppModel::tokenizeJsi(jsi::Runtime& rt, const jsi::Value* args, size_t count) {
585
702
  if (count < 1 || !args[0].isObject()) {
586
703
  throw jsi::JSError(rt, "tokenize requires an options object with 'content' field");
@@ -930,12 +1047,36 @@ jsi::Value LlamaCppModel::get(jsi::Runtime& rt, const jsi::PropNameID& name) {
930
1047
  });
931
1048
  }
932
1049
  else if (nameStr == "completion") {
1050
+ // Use async completion as the default to provide better UX
1051
+ if (jsInvoker_) {
1052
+ return jsi::Function::createFromHostFunction(
1053
+ rt, name, 2,
1054
+ [this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* args, size_t count) {
1055
+ return this->completionAsyncJsi(runtime, args, count);
1056
+ });
1057
+ } else {
1058
+ // Fallback to sync completion if no CallInvoker
1059
+ return jsi::Function::createFromHostFunction(
1060
+ rt, name, 2,
1061
+ [this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* args, size_t count) {
1062
+ return this->completionJsi(runtime, args, count);
1063
+ });
1064
+ }
1065
+ }
1066
+ else if (nameStr == "completionSync") {
933
1067
  return jsi::Function::createFromHostFunction(
934
1068
  rt, name, 2,
935
1069
  [this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* args, size_t count) {
936
1070
  return this->completionJsi(runtime, args, count);
937
1071
  });
938
1072
  }
1073
+ else if (nameStr == "stopCompletion") {
1074
+ return jsi::Function::createFromHostFunction(
1075
+ rt, name, 0,
1076
+ [this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* args, size_t count) {
1077
+ return this->stopCompletionJsi(runtime, args, count);
1078
+ });
1079
+ }
939
1080
  else if (nameStr == "embedding") {
940
1081
  return jsi::Function::createFromHostFunction(
941
1082
  rt, name, 1,
@@ -973,6 +1114,8 @@ std::vector<jsi::PropNameID> LlamaCppModel::getPropertyNames(jsi::Runtime& rt) {
973
1114
  result.push_back(jsi::PropNameID::forAscii(rt, "tokenize"));
974
1115
  result.push_back(jsi::PropNameID::forAscii(rt, "detokenize"));
975
1116
  result.push_back(jsi::PropNameID::forAscii(rt, "completion"));
1117
+ result.push_back(jsi::PropNameID::forAscii(rt, "completionSync"));
1118
+ result.push_back(jsi::PropNameID::forAscii(rt, "stopCompletion"));
976
1119
  result.push_back(jsi::PropNameID::forAscii(rt, "embedding"));
977
1120
  result.push_back(jsi::PropNameID::forAscii(rt, "release"));
978
1121
  result.push_back(jsi::PropNameID::forAscii(rt, "n_vocab"));
@@ -8,6 +8,9 @@
8
8
  #include <unordered_map>
9
9
  #include <functional>
10
10
 
11
+ // Add ReactCommon includes for proper async handling
12
+ #include <ReactCommon/CallInvoker.h>
13
+
11
14
  // Include all necessary common headers from llama.cpp
12
15
  #include "common.h"
13
16
  #include "sampling.h"
@@ -70,13 +73,14 @@ struct ToolCall {
70
73
  * - Uses common_token_to_piece for token->text conversion
71
74
  * - Leverages the llama.cpp chat template system
72
75
  */
73
- class LlamaCppModel : public jsi::HostObject {
76
+ class LlamaCppModel : public jsi::HostObject, public std::enable_shared_from_this<LlamaCppModel> {
74
77
  public:
75
78
  /**
76
79
  * Constructor
77
80
  * @param rn_ctx A pointer to an initialized rn_llama_context
81
+ * @param jsInvoker CallInvoker for async operations (optional, for async completion)
78
82
  */
79
- LlamaCppModel(rn_llama_context* rn_ctx);
83
+ LlamaCppModel(rn_llama_context* rn_ctx, std::shared_ptr<CallInvoker> jsInvoker = nullptr);
80
84
  virtual ~LlamaCppModel();
81
85
 
82
86
  /**
@@ -124,6 +128,8 @@ private:
124
128
  * JSI method implementations
125
129
  */
126
130
  jsi::Value completionJsi(jsi::Runtime& rt, const jsi::Value* args, size_t count);
131
+ jsi::Value completionAsyncJsi(jsi::Runtime& rt, const jsi::Value* args, size_t count);
132
+ jsi::Value stopCompletionJsi(jsi::Runtime& rt, const jsi::Value* args, size_t count);
127
133
  jsi::Value tokenizeJsi(jsi::Runtime& rt, const jsi::Value* args, size_t count);
128
134
  jsi::Value detokenizeJsi(jsi::Runtime& rt, const jsi::Value* args, size_t count);
129
135
  jsi::Value embeddingJsi(jsi::Runtime& rt, const jsi::Value* args, size_t count);
@@ -157,6 +163,9 @@ private:
157
163
  // Completion state
158
164
  bool should_stop_completion_;
159
165
  bool is_predicting_;
166
+
167
+ // Add CallInvoker for async operations
168
+ std::shared_ptr<CallInvoker> jsInvoker_;
160
169
  };
161
170
 
162
171
  } // namespace facebook::react
@@ -35,7 +35,7 @@ std::shared_ptr<TurboModule> PureCppImpl::create(std::shared_ptr<CallInvoker> js
35
35
  }
36
36
 
37
37
  PureCppImpl::PureCppImpl(std::shared_ptr<CallInvoker> jsInvoker)
38
- : NativeRNLlamaCppCxxSpec(std::move(jsInvoker)) {
38
+ : NativeRNLlamaCppCxxSpec(jsInvoker), jsInvoker_(jsInvoker) {
39
39
  }
40
40
 
41
41
  double PureCppImpl::multiply(jsi::Runtime& rt, double a, double b) {
@@ -325,8 +325,8 @@ jsi::Value PureCppImpl::initLlama(jsi::Runtime &runtime, jsi::Object options) {
325
325
  }
326
326
 
327
327
  jsi::Object PureCppImpl::createModelObject(jsi::Runtime& runtime, rn_llama_context* rn_ctx) {
328
- // Create a shared_ptr to a new LlamaCppModel instance
329
- auto llamaModel = std::make_shared<LlamaCppModel>(rn_ctx);
328
+ // Create a shared_ptr to a new LlamaCppModel instance with CallInvoker
329
+ auto llamaModel = std::make_shared<LlamaCppModel>(rn_ctx, jsInvoker_);
330
330
 
331
331
  // Create a host object from the LlamaCppModel instance
332
332
  return jsi::Object::createFromHostObject(runtime, std::move(llamaModel));
package/cpp/PureCppImpl.h CHANGED
@@ -54,6 +54,9 @@ private:
54
54
 
55
55
  // Mutex for thread safety when accessing rn_ctx_ or other shared resources
56
56
  std::mutex mutex_;
57
+
58
+ // CallInvoker for async operations
59
+ std::shared_ptr<CallInvoker> jsInvoker_;
57
60
  };
58
61
 
59
62
  } // namespace facebook::react
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","LlamaCppRn","getEnforcing","initLlama","params","loadLlamaModelInfo","modelPath"],"sourceRoot":"../../src","sources":["NativeRNLlamaCpp.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiKA;;AA8EA,MAAMC,UAAU,GAAGD,mBAAmB,CAACE,YAAY,CAAO,YAAY,CAAC;AACvE;AACA;AACA;;AAGA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACC,MAAwB,EAAmD;EACnG,OAAOH,UAAU,CAACE,SAAS,CAACC,MAAM,CAAC;AACrC;;AAEA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,SAAiB,EAWhB;EACD,OAAOL,UAAU,CAACI,kBAAkB,CAACC,SAAS,CAAC;AACjD;AAEA,eAAeL,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","LlamaCppRn","getEnforcing","initLlama","params","loadLlamaModelInfo","modelPath"],"sourceRoot":"../../src","sources":["NativeRNLlamaCpp.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiKA;;AA+EA,MAAMC,UAAU,GAAGD,mBAAmB,CAACE,YAAY,CAAO,YAAY,CAAC;AACvE;AACA;AACA;;AAGA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACC,MAAwB,EAAmD;EACnG,OAAOH,UAAU,CAACE,SAAS,CAACC,MAAM,CAAC;AACrC;;AAEA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,SAAiB,EAWhB;EACD,OAAOL,UAAU,CAACI,kBAAkB,CAACC,SAAS,CAAC;AACjD;AAEA,eAAeL,UAAU","ignoreList":[]}
@@ -152,6 +152,9 @@ export interface LlamaContextMethods {
152
152
  completion(params: LlamaCompletionParams, partialCallback?: (data: {
153
153
  token: string;
154
154
  }) => void): Promise<LlamaCompletionResult>;
155
+ completionSync(params: LlamaCompletionParams, partialCallback?: (data: {
156
+ token: string;
157
+ }) => void): LlamaCompletionResult;
155
158
  tokenize(options: {
156
159
  content: string;
157
160
  add_special?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeRNLlamaCpp.d.ts","sourceRoot":"","sources":["../../../src/NativeRNLlamaCpp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NativeRNLlamaCpp.d.ts","sourceRoot":"","sources":["../../../src/NativeRNLlamaCpp.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@novastera-oss/llamarn",
3
- "version": "0.1.5-beta.3",
3
+ "version": "0.2.1",
4
4
  "description": "An attempt at a pure cpp turbo module library",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/module/index.js",
@@ -66,6 +66,7 @@
66
66
  "build-android-external": "bash scripts/build_android_external.sh",
67
67
  "build-android-clean": "bash scripts/build_android_external.sh --clean-prebuilt",
68
68
  "build-android-macos": "npm run clean-android && npm run clean-prebuilt && bash scripts/build_android_gpu_backend.sh --no-vulkan --no-opencl --clean && bash scripts/build_android_external.sh --no-vulkan --no-opencl --clean"
69
+
69
70
  },
70
71
  "keywords": [
71
72
  "react-native",
@@ -195,6 +195,7 @@ export interface EmbeddingResponse {
195
195
 
196
196
  export interface LlamaContextMethods {
197
197
  completion(params: LlamaCompletionParams, partialCallback?: (data: {token: string}) => void): Promise<LlamaCompletionResult>;
198
+ completionSync(params: LlamaCompletionParams, partialCallback?: (data: {token: string}) => void): LlamaCompletionResult;
198
199
 
199
200
  // Updated tokenize method to match server.cpp interface
200
201
  tokenize(options: {