@inferrlm/react-native-mlx 0.2.0-inferrlm.2 → 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 (102) hide show
  1. package/MLXReactNative.podspec +9 -3
  2. package/ios/Sources/AudioCaptureManager.swift +110 -0
  3. package/ios/Sources/HybridLLM.swift +562 -74
  4. package/ios/Sources/HybridSTT.swift +202 -0
  5. package/ios/Sources/HybridTTS.swift +145 -0
  6. package/ios/Sources/JSONHelpers.swift +9 -0
  7. package/ios/Sources/ModelDownloader.swift +26 -12
  8. package/ios/Sources/StreamEventEmitter.swift +132 -0
  9. package/ios/Sources/ThinkingStateMachine.swift +206 -0
  10. package/nitrogen/generated/ios/MLXReactNative+autolinking.rb +1 -1
  11. package/nitrogen/generated/ios/MLXReactNative-Swift-Cxx-Bridge.cpp +76 -1
  12. package/nitrogen/generated/ios/MLXReactNative-Swift-Cxx-Bridge.hpp +338 -1
  13. package/nitrogen/generated/ios/MLXReactNative-Swift-Cxx-Umbrella.hpp +28 -1
  14. package/nitrogen/generated/ios/MLXReactNativeAutolinking.mm +17 -1
  15. package/nitrogen/generated/ios/MLXReactNativeAutolinking.swift +31 -1
  16. package/nitrogen/generated/ios/c++/HybridLLMSpecSwift.cpp +1 -1
  17. package/nitrogen/generated/ios/c++/HybridLLMSpecSwift.hpp +18 -3
  18. package/nitrogen/generated/ios/c++/HybridModelManagerSpecSwift.cpp +1 -1
  19. package/nitrogen/generated/ios/c++/HybridModelManagerSpecSwift.hpp +1 -1
  20. package/nitrogen/generated/ios/c++/HybridSTTSpecSwift.cpp +11 -0
  21. package/nitrogen/generated/ios/c++/HybridSTTSpecSwift.hpp +149 -0
  22. package/nitrogen/generated/ios/c++/HybridTTSSpecSwift.cpp +11 -0
  23. package/nitrogen/generated/ios/c++/HybridTTSSpecSwift.hpp +128 -0
  24. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__shared_ptr_AnyMap______std__shared_ptr_AnyMap_.swift +62 -0
  25. package/nitrogen/generated/ios/swift/Func_void.swift +1 -1
  26. package/nitrogen/generated/ios/swift/Func_void_bool.swift +1 -1
  27. package/nitrogen/generated/ios/swift/Func_void_double.swift +1 -1
  28. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +1 -1
  29. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_AnyMap_.swift +47 -0
  30. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_ArrayBuffer_.swift +47 -0
  31. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__shared_ptr_AnyMap___.swift +67 -0
  32. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +1 -1
  33. package/nitrogen/generated/ios/swift/Func_void_std__string_std__string.swift +47 -0
  34. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +1 -1
  35. package/nitrogen/generated/ios/swift/GenerationStats.swift +14 -3
  36. package/nitrogen/generated/ios/swift/HybridLLMSpec.swift +3 -2
  37. package/nitrogen/generated/ios/swift/HybridLLMSpec_cxx.swift +38 -2
  38. package/nitrogen/generated/ios/swift/HybridModelManagerSpec.swift +1 -1
  39. package/nitrogen/generated/ios/swift/HybridModelManagerSpec_cxx.swift +1 -1
  40. package/nitrogen/generated/ios/swift/HybridSTTSpec.swift +66 -0
  41. package/nitrogen/generated/ios/swift/HybridSTTSpec_cxx.swift +286 -0
  42. package/nitrogen/generated/ios/swift/HybridTTSSpec.swift +63 -0
  43. package/nitrogen/generated/ios/swift/HybridTTSSpec_cxx.swift +229 -0
  44. package/nitrogen/generated/ios/swift/LLMLoadOptions.swift +44 -2
  45. package/nitrogen/generated/ios/swift/LLMMessage.swift +1 -1
  46. package/nitrogen/generated/ios/swift/STTLoadOptions.swift +66 -0
  47. package/nitrogen/generated/ios/swift/TTSGenerateOptions.swift +78 -0
  48. package/nitrogen/generated/ios/swift/TTSLoadOptions.swift +66 -0
  49. package/nitrogen/generated/ios/swift/ToolDefinition.swift +113 -0
  50. package/nitrogen/generated/ios/swift/ToolParameter.swift +69 -0
  51. package/nitrogen/generated/shared/c++/GenerationStats.hpp +7 -3
  52. package/nitrogen/generated/shared/c++/HybridLLMSpec.cpp +2 -1
  53. package/nitrogen/generated/shared/c++/HybridLLMSpec.hpp +3 -2
  54. package/nitrogen/generated/shared/c++/HybridModelManagerSpec.cpp +1 -1
  55. package/nitrogen/generated/shared/c++/HybridModelManagerSpec.hpp +1 -1
  56. package/nitrogen/generated/shared/c++/HybridSTTSpec.cpp +32 -0
  57. package/nitrogen/generated/shared/c++/HybridSTTSpec.hpp +78 -0
  58. package/nitrogen/generated/shared/c++/HybridTTSSpec.cpp +29 -0
  59. package/nitrogen/generated/shared/c++/HybridTTSSpec.hpp +78 -0
  60. package/nitrogen/generated/shared/c++/LLMLoadOptions.hpp +10 -3
  61. package/nitrogen/generated/shared/c++/LLMMessage.hpp +1 -1
  62. package/nitrogen/generated/shared/c++/STTLoadOptions.hpp +76 -0
  63. package/nitrogen/generated/shared/c++/TTSGenerateOptions.hpp +80 -0
  64. package/nitrogen/generated/shared/c++/TTSLoadOptions.hpp +76 -0
  65. package/nitrogen/generated/shared/c++/ToolDefinition.hpp +93 -0
  66. package/nitrogen/generated/shared/c++/ToolParameter.hpp +87 -0
  67. package/package.json +13 -8
  68. package/src/index.ts +48 -4
  69. package/src/llm.ts +90 -5
  70. package/src/models.ts +347 -0
  71. package/src/specs/LLM.nitro.ts +111 -7
  72. package/src/specs/STT.nitro.ts +35 -0
  73. package/src/specs/TTS.nitro.ts +30 -0
  74. package/src/stt.ts +67 -0
  75. package/src/tool-utils.ts +74 -0
  76. package/src/tts.ts +60 -0
  77. package/lib/module/index.js +0 -6
  78. package/lib/module/index.js.map +0 -1
  79. package/lib/module/llm.js +0 -125
  80. package/lib/module/llm.js.map +0 -1
  81. package/lib/module/modelManager.js +0 -79
  82. package/lib/module/modelManager.js.map +0 -1
  83. package/lib/module/models.js +0 -41
  84. package/lib/module/models.js.map +0 -1
  85. package/lib/module/package.json +0 -1
  86. package/lib/module/specs/LLM.nitro.js +0 -4
  87. package/lib/module/specs/LLM.nitro.js.map +0 -1
  88. package/lib/module/specs/ModelManager.nitro.js +0 -4
  89. package/lib/module/specs/ModelManager.nitro.js.map +0 -1
  90. package/lib/typescript/package.json +0 -1
  91. package/lib/typescript/src/index.d.ts +0 -6
  92. package/lib/typescript/src/index.d.ts.map +0 -1
  93. package/lib/typescript/src/llm.d.ts +0 -87
  94. package/lib/typescript/src/llm.d.ts.map +0 -1
  95. package/lib/typescript/src/modelManager.d.ts +0 -53
  96. package/lib/typescript/src/modelManager.d.ts.map +0 -1
  97. package/lib/typescript/src/models.d.ts +0 -29
  98. package/lib/typescript/src/models.d.ts.map +0 -1
  99. package/lib/typescript/src/specs/LLM.nitro.d.ts +0 -88
  100. package/lib/typescript/src/specs/LLM.nitro.d.ts.map +0 -1
  101. package/lib/typescript/src/specs/ModelManager.nitro.d.ts +0 -41
  102. package/lib/typescript/src/specs/ModelManager.nitro.d.ts.map +0 -1
@@ -1,88 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- /**
3
- * Statistics from the last text generation.
4
- */
5
- export interface GenerationStats {
6
- /** Total number of tokens generated */
7
- tokenCount: number;
8
- /** Generation speed in tokens per second */
9
- tokensPerSecond: number;
10
- /** Time in milliseconds until the first token was generated */
11
- timeToFirstToken: number;
12
- /** Total generation time in milliseconds */
13
- totalTime: number;
14
- }
15
- export interface LLMMessage {
16
- role: string;
17
- content: string;
18
- }
19
- /** Options for loading a model.
20
- */
21
- export interface LLMLoadOptions {
22
- /** Callback invoked with loading progress (0-1) */
23
- onProgress?: (progress: number) => void;
24
- /** Additional context to provide to the model */
25
- additionalContext?: LLMMessage[];
26
- /** Whether to automatically manage message history */
27
- manageHistory?: boolean;
28
- }
29
- /**
30
- * Low-level LLM interface for text generation using MLX.
31
- * @internal Use the `LLM` export from `react-native-nitro-mlx` instead.
32
- */
33
- export interface LLM extends HybridObject<{
34
- ios: 'swift';
35
- }> {
36
- /**
37
- * Load a model into memory. Downloads from HuggingFace if not already cached.
38
- * @param modelId - HuggingFace model ID (e.g., 'mlx-community/Qwen3-0.6B-4bit')
39
- * @param options - Callback invoked with loading progress (0-1)
40
- */
41
- load(modelId: string, options?: LLMLoadOptions): Promise<void>;
42
- /**
43
- * Generate a complete response for a prompt.
44
- * @param prompt - The input text to generate a response for
45
- * @returns The generated text
46
- */
47
- generate(prompt: string): Promise<string>;
48
- /**
49
- * Stream a response token by token.
50
- * @param prompt - The input text to generate a response for
51
- * @param onToken - Callback invoked for each generated token
52
- * @returns The complete generated text
53
- */
54
- stream(prompt: string, onToken: (token: string) => void): Promise<string>;
55
- /**
56
- * Stop the current generation.
57
- */
58
- stop(): void;
59
- /**
60
- * Unload the current model and release memory.
61
- */
62
- unload(): void;
63
- /**
64
- * Get statistics from the last generation.
65
- * @returns Statistics including token count, speed, and timing
66
- */
67
- getLastGenerationStats(): GenerationStats;
68
- /**
69
- * Get the message history if management is enabled.
70
- * @returns Array of messages in the history
71
- */
72
- getHistory(): LLMMessage[];
73
- /**
74
- * Clear the message history.
75
- */
76
- clearHistory(): void;
77
- /** Whether a model is currently loaded */
78
- readonly isLoaded: boolean;
79
- /** Whether text is currently being generated */
80
- readonly isGenerating: boolean;
81
- /** The ID of the currently loaded model */
82
- readonly modelId: string;
83
- /** Enable debug logging */
84
- debug: boolean;
85
- /** System prompt used when loading the model */
86
- systemPrompt: string;
87
- }
88
- //# sourceMappingURL=LLM.nitro.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LLM.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/LLM.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,4CAA4C;IAC5C,eAAe,EAAE,MAAM,CAAA;IACvB,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,CAAA;IACxB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;GACG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,UAAU,EAAE,CAAA;IAChC,sDAAsD;IACtD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,GAAI,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;IACzD;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE9D;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEzC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEzE;;OAEG;IACH,IAAI,IAAI,IAAI,CAAA;IAEZ;;OAEG;IACH,MAAM,IAAI,IAAI,CAAA;IAEd;;;OAGG;IACH,sBAAsB,IAAI,eAAe,CAAA;IAEzC;;;OAGG;IACH,UAAU,IAAI,UAAU,EAAE,CAAA;IAE1B;;OAEG;IACH,YAAY,IAAI,IAAI,CAAA;IAEpB,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAA;IACd,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAA;CACrB"}
@@ -1,41 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- /**
3
- * Low-level interface for managing MLX model downloads.
4
- * @internal Use the `ModelManager` export from `react-native-nitro-mlx` instead.
5
- */
6
- export interface ModelManager extends HybridObject<{
7
- ios: 'swift';
8
- }> {
9
- /**
10
- * Download a model from HuggingFace.
11
- * @param modelId - HuggingFace model ID (e.g., 'mlx-community/Qwen3-0.6B-4bit')
12
- * @param progressCallback - Callback invoked with download progress (0-1)
13
- * @returns Path to the downloaded model directory
14
- */
15
- download(modelId: string, progressCallback: (progress: number) => void): Promise<string>;
16
- /**
17
- * Check if a model is already downloaded.
18
- * @param modelId - HuggingFace model ID
19
- * @returns True if the model is downloaded
20
- */
21
- isDownloaded(modelId: string): Promise<boolean>;
22
- /**
23
- * Get a list of all downloaded model IDs.
24
- * @returns Array of downloaded model IDs
25
- */
26
- getDownloadedModels(): Promise<string[]>;
27
- /**
28
- * Delete a downloaded model.
29
- * @param modelId - HuggingFace model ID
30
- */
31
- deleteModel(modelId: string): Promise<void>;
32
- /**
33
- * Get the local filesystem path for a downloaded model.
34
- * @param modelId - HuggingFace model ID
35
- * @returns Path to the model directory
36
- */
37
- getModelPath(modelId: string): Promise<string>;
38
- /** Enable debug logging */
39
- debug: boolean;
40
- }
41
- //# sourceMappingURL=ModelManager.nitro.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModelManager.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/ModelManager.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;IAClE;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAExF;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE/C;;;OAGG;IACH,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAExC;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3C;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAE9C,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAA;CACf"}