react-native-litert-lm 0.3.7 → 0.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 (86) hide show
  1. package/README.md +153 -135
  2. package/android/build.gradle +12 -0
  3. package/android/src/main/AndroidManifest.xml +5 -0
  4. package/android/src/main/java/com/margelo/nitro/dev/litert/litertlm/HybridLiteRTLM.kt +159 -62
  5. package/android/src/main/java/dev/litert/litertlm/LiteRTLMPackage.kt +19 -2
  6. package/android/src/test/java/com/margelo/nitro/core/Promise.kt +46 -0
  7. package/android/src/test/java/com/margelo/nitro/dev/litert/litertlm/HybridLiteRTLMTest.kt +83 -0
  8. package/ios/HybridLiteRTLM.swift +1058 -0
  9. package/ios/Tests/HybridLiteRTLMTests.swift +67 -0
  10. package/lib/__mocks__/react-native-nitro-modules.d.ts +61 -0
  11. package/lib/__mocks__/react-native-nitro-modules.js +50 -0
  12. package/lib/__tests__/hooks.test.d.ts +1 -0
  13. package/lib/__tests__/hooks.test.js +124 -0
  14. package/lib/__tests__/memoryTracker.test.d.ts +1 -0
  15. package/lib/__tests__/memoryTracker.test.js +74 -0
  16. package/lib/__tests__/modelFactory.test.d.ts +1 -0
  17. package/lib/__tests__/modelFactory.test.js +52 -0
  18. package/lib/hooks.js +1 -1
  19. package/lib/index.d.ts +0 -2
  20. package/lib/index.js +1 -5
  21. package/lib/modelFactory.js +62 -63
  22. package/lib/specs/LiteRTLM.nitro.d.ts +71 -2
  23. package/nitrogen/generated/android/c++/JHybridLiteRTLMSpec.cpp +62 -7
  24. package/nitrogen/generated/android/c++/JHybridLiteRTLMSpec.hpp +3 -1
  25. package/nitrogen/generated/android/c++/JLLMConfig.hpp +40 -3
  26. package/nitrogen/generated/android/c++/JMultimodalPart.hpp +74 -0
  27. package/nitrogen/generated/android/c++/JPartType.hpp +61 -0
  28. package/nitrogen/generated/android/c++/JToolDefinition.hpp +65 -0
  29. package/nitrogen/generated/android/kotlin/com/margelo/nitro/dev/litert/litertlm/GenerationStats.kt +23 -0
  30. package/nitrogen/generated/android/kotlin/com/margelo/nitro/dev/litert/litertlm/HybridLiteRTLMSpec.kt +10 -2
  31. package/nitrogen/generated/android/kotlin/com/margelo/nitro/dev/litert/litertlm/LLMConfig.kt +46 -3
  32. package/nitrogen/generated/android/kotlin/com/margelo/nitro/dev/litert/litertlm/MemoryUsage.kt +19 -0
  33. package/nitrogen/generated/android/kotlin/com/margelo/nitro/dev/litert/litertlm/Message.kt +15 -0
  34. package/nitrogen/generated/android/kotlin/com/margelo/nitro/dev/litert/litertlm/MultimodalPart.kt +66 -0
  35. package/nitrogen/generated/android/kotlin/com/margelo/nitro/dev/litert/litertlm/PartType.kt +24 -0
  36. package/nitrogen/generated/android/kotlin/com/margelo/nitro/dev/litert/litertlm/ToolDefinition.kt +61 -0
  37. package/nitrogen/generated/ios/LiteRTLM-Swift-Cxx-Bridge.cpp +57 -1
  38. package/nitrogen/generated/ios/LiteRTLM-Swift-Cxx-Bridge.hpp +414 -3
  39. package/nitrogen/generated/ios/LiteRTLM-Swift-Cxx-Umbrella.hpp +41 -3
  40. package/nitrogen/generated/ios/LiteRTLMAutolinking.mm +4 -6
  41. package/nitrogen/generated/ios/LiteRTLMAutolinking.swift +10 -0
  42. package/nitrogen/generated/ios/c++/HybridLiteRTLMSpecSwift.cpp +11 -0
  43. package/nitrogen/generated/ios/c++/HybridLiteRTLMSpecSwift.hpp +224 -0
  44. package/nitrogen/generated/ios/swift/Backend.swift +44 -0
  45. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  46. package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
  47. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  48. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
  49. package/nitrogen/generated/ios/swift/Func_void_std__string_bool.swift +46 -0
  50. package/nitrogen/generated/ios/swift/GenerationStats.swift +54 -0
  51. package/nitrogen/generated/ios/swift/HybridLiteRTLMSpec.swift +69 -0
  52. package/nitrogen/generated/ios/swift/HybridLiteRTLMSpec_cxx.swift +383 -0
  53. package/nitrogen/generated/ios/swift/LLMConfig.swift +203 -0
  54. package/nitrogen/generated/ios/swift/MemoryUsage.swift +44 -0
  55. package/nitrogen/generated/ios/swift/Message.swift +34 -0
  56. package/nitrogen/generated/ios/swift/MultimodalPart.swift +83 -0
  57. package/nitrogen/generated/ios/swift/PartType.swift +44 -0
  58. package/nitrogen/generated/ios/swift/Role.swift +44 -0
  59. package/nitrogen/generated/ios/swift/ToolDefinition.swift +39 -0
  60. package/nitrogen/generated/shared/c++/HybridLiteRTLMSpec.cpp +2 -0
  61. package/nitrogen/generated/shared/c++/HybridLiteRTLMSpec.hpp +7 -2
  62. package/nitrogen/generated/shared/c++/LLMConfig.hpp +22 -2
  63. package/nitrogen/generated/shared/c++/MultimodalPart.hpp +99 -0
  64. package/nitrogen/generated/shared/c++/PartType.hpp +80 -0
  65. package/nitrogen/generated/shared/c++/ToolDefinition.hpp +91 -0
  66. package/package.json +16 -8
  67. package/react-native-litert-lm.podspec +15 -19
  68. package/scripts/download-ios-frameworks.sh +14 -48
  69. package/scripts/postinstall.js +1 -2
  70. package/src/__mocks__/react-native-nitro-modules.ts +48 -0
  71. package/src/__tests__/hooks.test.ts +153 -0
  72. package/src/__tests__/memoryTracker.test.ts +87 -0
  73. package/src/__tests__/modelFactory.test.ts +68 -0
  74. package/src/hooks.ts +1 -1
  75. package/src/index.ts +0 -7
  76. package/src/modelFactory.ts +82 -80
  77. package/src/specs/LiteRTLM.nitro.ts +80 -2
  78. package/cpp/HybridLiteRTLM.cpp +0 -939
  79. package/cpp/HybridLiteRTLM.hpp +0 -169
  80. package/cpp/IOSDownloadHelper.h +0 -24
  81. package/ios/IOSDownloadHelper.mm +0 -129
  82. package/scripts/build-ios-engine.sh +0 -302
  83. package/scripts/stubs/cxx_bridge_stubs.cc +0 -224
  84. package/scripts/stubs/gemma_model_constraint_provider.cc +0 -46
  85. package/scripts/stubs/llguidance_stubs.c +0 -101
  86. package/src/templates.ts +0 -105
@@ -9,6 +9,7 @@ package com.margelo.nitro.dev.litert.litertlm
9
9
 
10
10
  import androidx.annotation.Keep
11
11
  import com.facebook.proguard.annotations.DoNotStrip
12
+ import java.util.Objects
12
13
 
13
14
 
14
15
  /**
@@ -32,6 +33,24 @@ data class MemoryUsage(
32
33
  ) {
33
34
  /* primary constructor */
34
35
 
36
+ override fun equals(other: Any?): Boolean {
37
+ if (this === other) return true
38
+ if (other !is MemoryUsage) return false
39
+ return Objects.deepEquals(this.nativeHeapBytes, other.nativeHeapBytes)
40
+ && Objects.deepEquals(this.residentBytes, other.residentBytes)
41
+ && Objects.deepEquals(this.availableMemoryBytes, other.availableMemoryBytes)
42
+ && Objects.deepEquals(this.isLowMemory, other.isLowMemory)
43
+ }
44
+
45
+ override fun hashCode(): Int {
46
+ return arrayOf<Any?>(
47
+ nativeHeapBytes,
48
+ residentBytes,
49
+ availableMemoryBytes,
50
+ isLowMemory
51
+ ).contentDeepHashCode()
52
+ }
53
+
35
54
  companion object {
36
55
  /**
37
56
  * Constructor called from C++
@@ -9,6 +9,7 @@ package com.margelo.nitro.dev.litert.litertlm
9
9
 
10
10
  import androidx.annotation.Keep
11
11
  import com.facebook.proguard.annotations.DoNotStrip
12
+ import java.util.Objects
12
13
 
13
14
 
14
15
  /**
@@ -26,6 +27,20 @@ data class Message(
26
27
  ) {
27
28
  /* primary constructor */
28
29
 
30
+ override fun equals(other: Any?): Boolean {
31
+ if (this === other) return true
32
+ if (other !is Message) return false
33
+ return Objects.deepEquals(this.role, other.role)
34
+ && Objects.deepEquals(this.content, other.content)
35
+ }
36
+
37
+ override fun hashCode(): Int {
38
+ return arrayOf<Any?>(
39
+ role,
40
+ content
41
+ ).contentDeepHashCode()
42
+ }
43
+
29
44
  companion object {
30
45
  /**
31
46
  * Constructor called from C++
@@ -0,0 +1,66 @@
1
+ ///
2
+ /// MultimodalPart.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.dev.litert.litertlm
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+ import java.util.Objects
13
+ import com.margelo.nitro.core.ArrayBuffer
14
+
15
+ /**
16
+ * Represents the JavaScript object/struct "MultimodalPart".
17
+ */
18
+ @DoNotStrip
19
+ @Keep
20
+ data class MultimodalPart(
21
+ @DoNotStrip
22
+ @Keep
23
+ val type: PartType,
24
+ @DoNotStrip
25
+ @Keep
26
+ val text: String?,
27
+ @DoNotStrip
28
+ @Keep
29
+ val imageBuffer: ArrayBuffer?,
30
+ @DoNotStrip
31
+ @Keep
32
+ val audioBuffer: ArrayBuffer?
33
+ ) {
34
+ /* primary constructor */
35
+
36
+ override fun equals(other: Any?): Boolean {
37
+ if (this === other) return true
38
+ if (other !is MultimodalPart) return false
39
+ return Objects.deepEquals(this.type, other.type)
40
+ && Objects.deepEquals(this.text, other.text)
41
+ && Objects.deepEquals(this.imageBuffer, other.imageBuffer)
42
+ && Objects.deepEquals(this.audioBuffer, other.audioBuffer)
43
+ }
44
+
45
+ override fun hashCode(): Int {
46
+ return arrayOf<Any?>(
47
+ type,
48
+ text,
49
+ imageBuffer,
50
+ audioBuffer
51
+ ).contentDeepHashCode()
52
+ }
53
+
54
+ companion object {
55
+ /**
56
+ * Constructor called from C++
57
+ */
58
+ @DoNotStrip
59
+ @Keep
60
+ @Suppress("unused")
61
+ @JvmStatic
62
+ private fun fromCpp(type: PartType, text: String?, imageBuffer: ArrayBuffer?, audioBuffer: ArrayBuffer?): MultimodalPart {
63
+ return MultimodalPart(type, text, imageBuffer, audioBuffer)
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,24 @@
1
+ ///
2
+ /// PartType.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.dev.litert.litertlm
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+
13
+ /**
14
+ * Represents the JavaScript enum/union "PartType".
15
+ */
16
+ @DoNotStrip
17
+ @Keep
18
+ enum class PartType(@DoNotStrip @Keep val value: Int) {
19
+ TEXT(0),
20
+ IMAGE(1),
21
+ AUDIO(2);
22
+
23
+ companion object
24
+ }
@@ -0,0 +1,61 @@
1
+ ///
2
+ /// ToolDefinition.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.dev.litert.litertlm
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+ import java.util.Objects
13
+
14
+
15
+ /**
16
+ * Represents the JavaScript object/struct "ToolDefinition".
17
+ */
18
+ @DoNotStrip
19
+ @Keep
20
+ data class ToolDefinition(
21
+ @DoNotStrip
22
+ @Keep
23
+ val name: String,
24
+ @DoNotStrip
25
+ @Keep
26
+ val description: String,
27
+ @DoNotStrip
28
+ @Keep
29
+ val parametersJson: String
30
+ ) {
31
+ /* primary constructor */
32
+
33
+ override fun equals(other: Any?): Boolean {
34
+ if (this === other) return true
35
+ if (other !is ToolDefinition) return false
36
+ return Objects.deepEquals(this.name, other.name)
37
+ && Objects.deepEquals(this.description, other.description)
38
+ && Objects.deepEquals(this.parametersJson, other.parametersJson)
39
+ }
40
+
41
+ override fun hashCode(): Int {
42
+ return arrayOf<Any?>(
43
+ name,
44
+ description,
45
+ parametersJson
46
+ ).contentDeepHashCode()
47
+ }
48
+
49
+ companion object {
50
+ /**
51
+ * Constructor called from C++
52
+ */
53
+ @DoNotStrip
54
+ @Keep
55
+ @Suppress("unused")
56
+ @JvmStatic
57
+ private fun fromCpp(name: String, description: String, parametersJson: String): ToolDefinition {
58
+ return ToolDefinition(name, description, parametersJson)
59
+ }
60
+ }
61
+ }
@@ -8,10 +8,66 @@
8
8
  #include "LiteRTLM-Swift-Cxx-Bridge.hpp"
9
9
 
10
10
  // Include C++ implementation defined types
11
-
11
+ #include "HybridLiteRTLMSpecSwift.hpp"
12
+ #include "LiteRTLM-Swift-Cxx-Umbrella.hpp"
13
+ #include <NitroModules/NitroDefines.hpp>
12
14
 
13
15
  namespace margelo::nitro::litertlm::bridge::swift {
14
16
 
17
+ // pragma MARK: std::function<void()>
18
+ Func_void create_Func_void(void* NON_NULL swiftClosureWrapper) noexcept {
19
+ auto swiftClosure = LiteRTLM::Func_void::fromUnsafe(swiftClosureWrapper);
20
+ return [swiftClosure = std::move(swiftClosure)]() mutable -> void {
21
+ swiftClosure.call();
22
+ };
23
+ }
24
+
25
+ // pragma MARK: std::function<void(const std::exception_ptr& /* error */)>
26
+ Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* NON_NULL swiftClosureWrapper) noexcept {
27
+ auto swiftClosure = LiteRTLM::Func_void_std__exception_ptr::fromUnsafe(swiftClosureWrapper);
28
+ return [swiftClosure = std::move(swiftClosure)](const std::exception_ptr& error) mutable -> void {
29
+ swiftClosure.call(error);
30
+ };
31
+ }
32
+
33
+ // pragma MARK: std::function<void(const std::string& /* result */)>
34
+ Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept {
35
+ auto swiftClosure = LiteRTLM::Func_void_std__string::fromUnsafe(swiftClosureWrapper);
36
+ return [swiftClosure = std::move(swiftClosure)](const std::string& result) mutable -> void {
37
+ swiftClosure.call(result);
38
+ };
39
+ }
40
+
41
+ // pragma MARK: std::function<void(double /* progress */)>
42
+ Func_void_double create_Func_void_double(void* NON_NULL swiftClosureWrapper) noexcept {
43
+ auto swiftClosure = LiteRTLM::Func_void_double::fromUnsafe(swiftClosureWrapper);
44
+ return [swiftClosure = std::move(swiftClosure)](double progress) mutable -> void {
45
+ swiftClosure.call(progress);
46
+ };
47
+ }
48
+
49
+ // pragma MARK: std::function<void(const std::string& /* token */, bool /* done */)>
50
+ Func_void_std__string_bool create_Func_void_std__string_bool(void* NON_NULL swiftClosureWrapper) noexcept {
51
+ auto swiftClosure = LiteRTLM::Func_void_std__string_bool::fromUnsafe(swiftClosureWrapper);
52
+ return [swiftClosure = std::move(swiftClosure)](const std::string& token, bool done) mutable -> void {
53
+ swiftClosure.call(token, done);
54
+ };
55
+ }
15
56
 
57
+ // pragma MARK: std::shared_ptr<HybridLiteRTLMSpec>
58
+ std::shared_ptr<HybridLiteRTLMSpec> create_std__shared_ptr_HybridLiteRTLMSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
59
+ LiteRTLM::HybridLiteRTLMSpec_cxx swiftPart = LiteRTLM::HybridLiteRTLMSpec_cxx::fromUnsafe(swiftUnsafePointer);
60
+ return std::make_shared<margelo::nitro::litertlm::HybridLiteRTLMSpecSwift>(swiftPart);
61
+ }
62
+ void* NON_NULL get_std__shared_ptr_HybridLiteRTLMSpec_(std__shared_ptr_HybridLiteRTLMSpec_ cppType) {
63
+ std::shared_ptr<margelo::nitro::litertlm::HybridLiteRTLMSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::litertlm::HybridLiteRTLMSpecSwift>(cppType);
64
+ #ifdef NITRO_DEBUG
65
+ if (swiftWrapper == nullptr) [[unlikely]] {
66
+ throw std::runtime_error("Class \"HybridLiteRTLMSpec\" is not implemented in Swift!");
67
+ }
68
+ #endif
69
+ LiteRTLM::HybridLiteRTLMSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
70
+ return swiftPart.toUnsafe();
71
+ }
16
72
 
17
73
  } // namespace margelo::nitro::litertlm::bridge::swift