react-native-nitro-mlx 0.3.0 → 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 (79) hide show
  1. package/MLXReactNative.podspec +7 -1
  2. package/ios/Sources/AudioCaptureManager.swift +110 -0
  3. package/ios/Sources/HybridLLM.swift +309 -68
  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/lib/module/index.js +2 -0
  11. package/lib/module/index.js.map +1 -1
  12. package/lib/module/llm.js +39 -1
  13. package/lib/module/llm.js.map +1 -1
  14. package/lib/module/models.js +97 -26
  15. package/lib/module/models.js.map +1 -1
  16. package/lib/module/specs/STT.nitro.js +4 -0
  17. package/lib/module/specs/STT.nitro.js.map +1 -0
  18. package/lib/module/specs/TTS.nitro.js +4 -0
  19. package/lib/module/specs/TTS.nitro.js.map +1 -0
  20. package/lib/module/stt.js +49 -0
  21. package/lib/module/stt.js.map +1 -0
  22. package/lib/module/tts.js +40 -0
  23. package/lib/module/tts.js.map +1 -0
  24. package/lib/typescript/src/index.d.ts +7 -3
  25. package/lib/typescript/src/index.d.ts.map +1 -1
  26. package/lib/typescript/src/llm.d.ts +32 -2
  27. package/lib/typescript/src/llm.d.ts.map +1 -1
  28. package/lib/typescript/src/models.d.ts +13 -4
  29. package/lib/typescript/src/models.d.ts.map +1 -1
  30. package/lib/typescript/src/specs/LLM.nitro.d.ts +49 -4
  31. package/lib/typescript/src/specs/LLM.nitro.d.ts.map +1 -1
  32. package/lib/typescript/src/specs/STT.nitro.d.ts +28 -0
  33. package/lib/typescript/src/specs/STT.nitro.d.ts.map +1 -0
  34. package/lib/typescript/src/specs/TTS.nitro.d.ts +22 -0
  35. package/lib/typescript/src/specs/TTS.nitro.d.ts.map +1 -0
  36. package/lib/typescript/src/stt.d.ts +16 -0
  37. package/lib/typescript/src/stt.d.ts.map +1 -0
  38. package/lib/typescript/src/tts.d.ts +13 -0
  39. package/lib/typescript/src/tts.d.ts.map +1 -0
  40. package/nitrogen/generated/ios/MLXReactNative-Swift-Cxx-Bridge.cpp +42 -0
  41. package/nitrogen/generated/ios/MLXReactNative-Swift-Cxx-Bridge.hpp +165 -0
  42. package/nitrogen/generated/ios/MLXReactNative-Swift-Cxx-Umbrella.hpp +20 -0
  43. package/nitrogen/generated/ios/MLXReactNativeAutolinking.mm +16 -0
  44. package/nitrogen/generated/ios/MLXReactNativeAutolinking.swift +30 -0
  45. package/nitrogen/generated/ios/c++/HybridLLMSpecSwift.hpp +8 -0
  46. package/nitrogen/generated/ios/c++/HybridSTTSpecSwift.cpp +11 -0
  47. package/nitrogen/generated/ios/c++/HybridSTTSpecSwift.hpp +149 -0
  48. package/nitrogen/generated/ios/c++/HybridTTSSpecSwift.cpp +11 -0
  49. package/nitrogen/generated/ios/c++/HybridTTSSpecSwift.hpp +128 -0
  50. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_ArrayBuffer_.swift +47 -0
  51. package/nitrogen/generated/ios/swift/GenerationStats.swift +13 -2
  52. package/nitrogen/generated/ios/swift/HybridLLMSpec.swift +1 -0
  53. package/nitrogen/generated/ios/swift/HybridLLMSpec_cxx.swift +24 -0
  54. package/nitrogen/generated/ios/swift/HybridSTTSpec.swift +66 -0
  55. package/nitrogen/generated/ios/swift/HybridSTTSpec_cxx.swift +286 -0
  56. package/nitrogen/generated/ios/swift/HybridTTSSpec.swift +63 -0
  57. package/nitrogen/generated/ios/swift/HybridTTSSpec_cxx.swift +229 -0
  58. package/nitrogen/generated/ios/swift/STTLoadOptions.swift +66 -0
  59. package/nitrogen/generated/ios/swift/TTSGenerateOptions.swift +78 -0
  60. package/nitrogen/generated/ios/swift/TTSLoadOptions.swift +66 -0
  61. package/nitrogen/generated/shared/c++/GenerationStats.hpp +6 -2
  62. package/nitrogen/generated/shared/c++/HybridLLMSpec.cpp +1 -0
  63. package/nitrogen/generated/shared/c++/HybridLLMSpec.hpp +1 -0
  64. package/nitrogen/generated/shared/c++/HybridSTTSpec.cpp +32 -0
  65. package/nitrogen/generated/shared/c++/HybridSTTSpec.hpp +78 -0
  66. package/nitrogen/generated/shared/c++/HybridTTSSpec.cpp +29 -0
  67. package/nitrogen/generated/shared/c++/HybridTTSSpec.hpp +78 -0
  68. package/nitrogen/generated/shared/c++/STTLoadOptions.hpp +76 -0
  69. package/nitrogen/generated/shared/c++/TTSGenerateOptions.hpp +80 -0
  70. package/nitrogen/generated/shared/c++/TTSLoadOptions.hpp +76 -0
  71. package/package.json +8 -4
  72. package/src/index.ts +31 -1
  73. package/src/llm.ts +48 -2
  74. package/src/models.ts +81 -1
  75. package/src/specs/LLM.nitro.ts +74 -4
  76. package/src/specs/STT.nitro.ts +35 -0
  77. package/src/specs/TTS.nitro.ts +30 -0
  78. package/src/stt.ts +67 -0
  79. package/src/tts.ts +60 -0
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ let instance = null;
5
+ function getInstance() {
6
+ if (!instance) {
7
+ instance = NitroModules.createHybridObject('STT');
8
+ }
9
+ return instance;
10
+ }
11
+ export const STT = {
12
+ load(modelId, options) {
13
+ return getInstance().load(modelId, options);
14
+ },
15
+ transcribe(audio) {
16
+ return getInstance().transcribe(audio);
17
+ },
18
+ transcribeStream(audio, onToken) {
19
+ return getInstance().transcribeStream(audio, onToken);
20
+ },
21
+ startListening() {
22
+ return getInstance().startListening();
23
+ },
24
+ transcribeBuffer() {
25
+ return getInstance().transcribeBuffer();
26
+ },
27
+ stopListening() {
28
+ return getInstance().stopListening();
29
+ },
30
+ stop() {
31
+ getInstance().stop();
32
+ },
33
+ unload() {
34
+ getInstance().unload();
35
+ },
36
+ get isLoaded() {
37
+ return getInstance().isLoaded;
38
+ },
39
+ get isTranscribing() {
40
+ return getInstance().isTranscribing;
41
+ },
42
+ get isListening() {
43
+ return getInstance().isListening;
44
+ },
45
+ get modelId() {
46
+ return getInstance().modelId;
47
+ }
48
+ };
49
+ //# sourceMappingURL=stt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NitroModules","instance","getInstance","createHybridObject","STT","load","modelId","options","transcribe","audio","transcribeStream","onToken","startListening","transcribeBuffer","stopListening","stop","unload","isLoaded","isTranscribing","isListening"],"sourceRoot":"../../src","sources":["stt.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAMzD,IAAIC,QAAwB,GAAG,IAAI;AAEnC,SAASC,WAAWA,CAAA,EAAY;EAC9B,IAAI,CAACD,QAAQ,EAAE;IACbA,QAAQ,GAAGD,YAAY,CAACG,kBAAkB,CAAU,KAAK,CAAC;EAC5D;EACA,OAAOF,QAAQ;AACjB;AAEA,OAAO,MAAMG,GAAG,GAAG;EACjBC,IAAIA,CAACC,OAAe,EAAEC,OAAwB,EAAiB;IAC7D,OAAOL,WAAW,CAAC,CAAC,CAACG,IAAI,CAACC,OAAO,EAAEC,OAAO,CAAC;EAC7C,CAAC;EAEDC,UAAUA,CAACC,KAAkB,EAAmB;IAC9C,OAAOP,WAAW,CAAC,CAAC,CAACM,UAAU,CAACC,KAAK,CAAC;EACxC,CAAC;EAEDC,gBAAgBA,CACdD,KAAkB,EAClBE,OAAgC,EACf;IACjB,OAAOT,WAAW,CAAC,CAAC,CAACQ,gBAAgB,CAACD,KAAK,EAAEE,OAAO,CAAC;EACvD,CAAC;EAEDC,cAAcA,CAAA,EAAkB;IAC9B,OAAOV,WAAW,CAAC,CAAC,CAACU,cAAc,CAAC,CAAC;EACvC,CAAC;EAEDC,gBAAgBA,CAAA,EAAoB;IAClC,OAAOX,WAAW,CAAC,CAAC,CAACW,gBAAgB,CAAC,CAAC;EACzC,CAAC;EAEDC,aAAaA,CAAA,EAAoB;IAC/B,OAAOZ,WAAW,CAAC,CAAC,CAACY,aAAa,CAAC,CAAC;EACtC,CAAC;EAEDC,IAAIA,CAAA,EAAS;IACXb,WAAW,CAAC,CAAC,CAACa,IAAI,CAAC,CAAC;EACtB,CAAC;EAEDC,MAAMA,CAAA,EAAS;IACbd,WAAW,CAAC,CAAC,CAACc,MAAM,CAAC,CAAC;EACxB,CAAC;EAED,IAAIC,QAAQA,CAAA,EAAY;IACtB,OAAOf,WAAW,CAAC,CAAC,CAACe,QAAQ;EAC/B,CAAC;EAED,IAAIC,cAAcA,CAAA,EAAY;IAC5B,OAAOhB,WAAW,CAAC,CAAC,CAACgB,cAAc;EACrC,CAAC;EAED,IAAIC,WAAWA,CAAA,EAAY;IACzB,OAAOjB,WAAW,CAAC,CAAC,CAACiB,WAAW;EAClC,CAAC;EAED,IAAIb,OAAOA,CAAA,EAAW;IACpB,OAAOJ,WAAW,CAAC,CAAC,CAACI,OAAO;EAC9B;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ let instance = null;
5
+ function getInstance() {
6
+ if (!instance) {
7
+ instance = NitroModules.createHybridObject('TTS');
8
+ }
9
+ return instance;
10
+ }
11
+ export const TTS = {
12
+ load(modelId, options) {
13
+ return getInstance().load(modelId, options);
14
+ },
15
+ generate(text, options) {
16
+ return getInstance().generate(text, options);
17
+ },
18
+ stream(text, onAudioChunk, options) {
19
+ return getInstance().stream(text, onAudioChunk, options);
20
+ },
21
+ stop() {
22
+ getInstance().stop();
23
+ },
24
+ unload() {
25
+ getInstance().unload();
26
+ },
27
+ get isLoaded() {
28
+ return getInstance().isLoaded;
29
+ },
30
+ get isGenerating() {
31
+ return getInstance().isGenerating;
32
+ },
33
+ get modelId() {
34
+ return getInstance().modelId;
35
+ },
36
+ get sampleRate() {
37
+ return getInstance().sampleRate;
38
+ }
39
+ };
40
+ //# sourceMappingURL=tts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NitroModules","instance","getInstance","createHybridObject","TTS","load","modelId","options","generate","text","stream","onAudioChunk","stop","unload","isLoaded","isGenerating","sampleRate"],"sourceRoot":"../../src","sources":["tts.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAOzD,IAAIC,QAAwB,GAAG,IAAI;AAEnC,SAASC,WAAWA,CAAA,EAAY;EAC9B,IAAI,CAACD,QAAQ,EAAE;IACbA,QAAQ,GAAGD,YAAY,CAACG,kBAAkB,CAAU,KAAK,CAAC;EAC5D;EACA,OAAOF,QAAQ;AACjB;AAEA,OAAO,MAAMG,GAAG,GAAG;EACjBC,IAAIA,CAACC,OAAe,EAAEC,OAAwB,EAAiB;IAC7D,OAAOL,WAAW,CAAC,CAAC,CAACG,IAAI,CAACC,OAAO,EAAEC,OAAO,CAAC;EAC7C,CAAC;EAEDC,QAAQA,CACNC,IAAY,EACZF,OAA4B,EACN;IACtB,OAAOL,WAAW,CAAC,CAAC,CAACM,QAAQ,CAACC,IAAI,EAAEF,OAAO,CAAC;EAC9C,CAAC;EAEDG,MAAMA,CACJD,IAAY,EACZE,YAA0C,EAC1CJ,OAA4B,EACb;IACf,OAAOL,WAAW,CAAC,CAAC,CAACQ,MAAM,CAACD,IAAI,EAAEE,YAAY,EAAEJ,OAAO,CAAC;EAC1D,CAAC;EAEDK,IAAIA,CAAA,EAAS;IACXV,WAAW,CAAC,CAAC,CAACU,IAAI,CAAC,CAAC;EACtB,CAAC;EAEDC,MAAMA,CAAA,EAAS;IACbX,WAAW,CAAC,CAAC,CAACW,MAAM,CAAC,CAAC;EACxB,CAAC;EAED,IAAIC,QAAQA,CAAA,EAAY;IACtB,OAAOZ,WAAW,CAAC,CAAC,CAACY,QAAQ;EAC/B,CAAC;EAED,IAAIC,YAAYA,CAAA,EAAY;IAC1B,OAAOb,WAAW,CAAC,CAAC,CAACa,YAAY;EACnC,CAAC;EAED,IAAIT,OAAOA,CAAA,EAAW;IACpB,OAAOJ,WAAW,CAAC,CAAC,CAACI,OAAO;EAC9B,CAAC;EAED,IAAIU,UAAUA,CAAA,EAAW;IACvB,OAAOd,WAAW,CAAC,CAAC,CAACc,UAAU;EACjC;AACF,CAAC","ignoreList":[]}
@@ -1,7 +1,11 @@
1
- export { LLM, type Message, type ToolCallInfo, type ToolCallUpdate } from './llm';
1
+ export { LLM, type EventCallback, type Message, type ToolCallInfo, type ToolCallUpdate, } from './llm';
2
2
  export { ModelManager } from './modelManager';
3
- export { MLXModel, MLXModels, ModelFamily, type ModelInfo, ModelProvider, type ModelQuantization, } from './models';
4
- export type { GenerationStats, LLM as LLMSpec, LLMLoadOptions, ToolDefinition, ToolParameter, ToolParameterType, } from './specs/LLM.nitro';
3
+ export { MLXModel, MLXModels, ModelFamily, type ModelInfo, ModelProvider, type ModelQuantization, type ModelType, } from './models';
4
+ export type { GenerationStats, LLM as LLMSpec, LLMLoadOptions, StreamEvent, GenerationStartEvent, TokenEvent, ThinkingStartEvent, ThinkingChunkEvent, ThinkingEndEvent, ToolCallStartEvent, ToolCallExecutingEvent, ToolCallCompletedEvent, ToolCallFailedEvent, GenerationEndEvent, ToolDefinition, ToolParameter, ToolParameterType, } from './specs/LLM.nitro';
5
5
  export type { ModelManager as ModelManagerSpec } from './specs/ModelManager.nitro';
6
6
  export { createTool, type TypeSafeToolDefinition } from './tool-utils';
7
+ export { TTS } from './tts';
8
+ export type { TTS as TTSSpec, TTSLoadOptions, TTSGenerateOptions, } from './specs/TTS.nitro';
9
+ export { STT } from './stt';
10
+ export type { STT as STTSpec, STTLoadOptions, STTTranscriptionInfo, } from './specs/STT.nitro';
7
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,KAAK,SAAS,EACd,aAAa,EACb,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAA;AACjB,YAAY,EACV,eAAe,EACf,GAAG,IAAI,OAAO,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,UAAU,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,KAAK,SAAS,EACd,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,SAAS,GACf,MAAM,UAAU,CAAA;AACjB,YAAY,EACV,eAAe,EACf,GAAG,IAAI,OAAO,EACd,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,UAAU,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,YAAY,EACV,GAAG,IAAI,OAAO,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,YAAY,EACV,GAAG,IAAI,OAAO,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,mBAAmB,CAAA"}
@@ -1,4 +1,5 @@
1
- import type { GenerationStats, LLMLoadOptions } from './specs/LLM.nitro';
1
+ import type { GenerationStats, LLMLoadOptions, StreamEvent } from './specs/LLM.nitro';
2
+ export type EventCallback = (event: StreamEvent) => void;
2
3
  export type Message = {
3
4
  role: 'user' | 'assistant' | 'system';
4
5
  content: string;
@@ -58,6 +59,35 @@ export declare const LLM: {
58
59
  * @returns The complete generated text
59
60
  */
60
61
  stream(prompt: string, onToken: (token: string) => void, onToolCall?: (update: ToolCallUpdate) => void): Promise<string>;
62
+ /**
63
+ * Stream with typed events for thinking blocks and tool calls.
64
+ * Provides granular lifecycle events for UI updates.
65
+ *
66
+ * @param prompt - The input text
67
+ * @param onEvent - Callback receiving typed StreamEvent objects
68
+ * @returns Promise resolving to final content string (thinking content stripped)
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * await LLM.streamWithEvents(prompt, (event) => {
73
+ * switch (event.type) {
74
+ * case 'token':
75
+ * appendToContent(event.token)
76
+ * break
77
+ * case 'thinking_start':
78
+ * showThinkingIndicator()
79
+ * break
80
+ * case 'thinking_chunk':
81
+ * appendToThinking(event.chunk)
82
+ * break
83
+ * case 'tool_call_start':
84
+ * showToolCallCard(event.name, event.arguments)
85
+ * break
86
+ * }
87
+ * })
88
+ * ```
89
+ */
90
+ streamWithEvents(prompt: string, onEvent: EventCallback): Promise<string>;
61
91
  /**
62
92
  * Stop the current generation. Safe to call even if not generating.
63
93
  */
@@ -69,7 +99,7 @@ export declare const LLM: {
69
99
  unload(): void;
70
100
  /**
71
101
  * Get statistics from the last generation.
72
- * @returns Statistics including token count, tokens/sec, TTFT, and total time
102
+ * @returns Statistics including token count, tokens/sec (excluding tool execution), TTFT, total time, and tool execution time
73
103
  */
74
104
  getLastGenerationStats(): GenerationStats;
75
105
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/llm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAkB,MAAM,mBAAmB,CAAA;AAIxF,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,YAAY,CAAA;IACtB,YAAY,EAAE,YAAY,EAAE,CAAA;CAC7B,CAAA;AASD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,GAAG;IACd;;;;OAIG;kBACW,MAAM,WAAW,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;;;;OAKG;qBACc,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzC;;;;;;;;;OASG;mBAEO,MAAM,WACL,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,eACnB,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAC5C,OAAO,CAAC,MAAM,CAAC;IAyBlB;;OAEG;YACK,IAAI;IAIZ;;;OAGG;cACO,IAAI;IAId;;;OAGG;8BACuB,eAAe;IAIzC;;;OAGG;kBACW,OAAO,EAAE;IAIvB;;OAEG;oBACa,IAAI;IAIpB,mEAAmE;uBACnD,OAAO;IAIvB,gDAAgD;2BAC5B,OAAO;IAI3B,oEAAoE;sBACrD,MAAM;IAIrB,sCAAsC;WACzB,OAAO;IAQpB;;;;OAIG;kBACiB,MAAM;CAO3B,CAAA"}
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/llm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEd,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;AAIxD,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,YAAY,CAAA;IACtB,YAAY,EAAE,YAAY,EAAE,CAAA;CAC7B,CAAA;AASD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,GAAG;IACd;;;;OAIG;kBACW,MAAM,WAAW,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;;;;OAKG;qBACc,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzC;;;;;;;;;OASG;mBAEO,MAAM,WACL,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,eACnB,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAC5C,OAAO,CAAC,MAAM,CAAC;IAyBlB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;6BACsB,MAAM,WAAW,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAWzE;;OAEG;YACK,IAAI;IAIZ;;;OAGG;cACO,IAAI;IAId;;;OAGG;8BACuB,eAAe;IAIzC;;;OAGG;kBACW,OAAO,EAAE;IAIvB;;OAEG;oBACa,IAAI;IAIpB,mEAAmE;uBACnD,OAAO;IAIvB,gDAAgD;2BAC5B,OAAO;IAI3B,oEAAoE;sBACrD,MAAM;IAIrB,sCAAsC;WACzB,OAAO;IAQpB;;;;OAIG;kBACiB,MAAM;CAO3B,CAAA"}
@@ -4,7 +4,9 @@ export declare enum ModelFamily {
4
4
  Gemma = "Gemma",
5
5
  Phi = "Phi",
6
6
  SmolLM = "SmolLM",
7
- OpenELM = "OpenELM"
7
+ OpenELM = "OpenELM",
8
+ PocketTTS = "PocketTTS",
9
+ GLMASR = "GLMASR"
8
10
  }
9
11
  export declare enum ModelProvider {
10
12
  Meta = "Meta",
@@ -12,9 +14,11 @@ export declare enum ModelProvider {
12
14
  Google = "Google",
13
15
  Microsoft = "Microsoft",
14
16
  HuggingFace = "HuggingFace",
15
- Apple = "Apple"
17
+ Apple = "Apple",
18
+ Kyutai = "Kyutai"
16
19
  }
17
- export type ModelQuantization = '4bit' | '8bit';
20
+ export type ModelQuantization = '4bit' | '8bit' | 'bf16';
21
+ export type ModelType = 'llm' | 'tts' | 'stt';
18
22
  export interface ModelInfo {
19
23
  id: MLXModel;
20
24
  family: ModelFamily;
@@ -23,6 +27,7 @@ export interface ModelInfo {
23
27
  quantization: ModelQuantization;
24
28
  displayName: string;
25
29
  downloadSize: number;
30
+ type: ModelType;
26
31
  }
27
32
  export declare enum MLXModel {
28
33
  Llama_3_2_1B_Instruct_4bit = "mlx-community/Llama-3.2-1B-Instruct-4bit",
@@ -50,7 +55,11 @@ export declare enum MLXModel {
50
55
  OpenELM_1_1B_4bit = "mlx-community/OpenELM-1_1B-4bit",
51
56
  OpenELM_1_1B_8bit = "mlx-community/OpenELM-1_1B-8bit",
52
57
  OpenELM_3B_4bit = "mlx-community/OpenELM-3B-4bit",
53
- OpenELM_3B_8bit = "mlx-community/OpenELM-3B-8bit"
58
+ OpenELM_3B_8bit = "mlx-community/OpenELM-3B-8bit",
59
+ PocketTTS = "mlx-community/pocket-tts",
60
+ PocketTTS_8bit = "mlx-community/pocket-tts-8bit",
61
+ PocketTTS_4bit = "mlx-community/pocket-tts-4bit",
62
+ GLM_ASR_Nano_4bit = "mlx-community/GLM-ASR-Nano-2512-4bit"
54
63
  }
55
64
  export declare const MLXModels: ModelInfo[];
56
65
  //# sourceMappingURL=models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/models.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAA;AAE/C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,QAAQ,CAAA;IACZ,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,aAAa,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,iBAAiB,CAAA;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,oBAAY,QAAQ;IAElB,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IAGvE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IACvE,wBAAwB,2CAA2C;IACnE,wBAAwB,2CAA2C;IAGnE,eAAe,kCAAkC;IACjD,eAAe,kCAAkC;IAGjD,kBAAkB,qCAAqC;IACvD,kBAAkB,qCAAqC;IAGvD,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IAGvE,wBAAwB,2CAA2C;IACnE,wBAAwB,2CAA2C;IAGnE,yBAAyB,4CAA4C;IACrE,yBAAyB,4CAA4C;IAGrE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IAGvE,iBAAiB,oCAAoC;IACrD,iBAAiB,oCAAoC;IACrD,eAAe,kCAAkC;IACjD,eAAe,kCAAkC;CAClD;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,EA2OhC,CAAA"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/models.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAExD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;AAE7C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,QAAQ,CAAA;IACZ,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,aAAa,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,iBAAiB,CAAA;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,oBAAY,QAAQ;IAElB,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IAGvE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IACvE,wBAAwB,2CAA2C;IACnE,wBAAwB,2CAA2C;IAGnE,eAAe,kCAAkC;IACjD,eAAe,kCAAkC;IAGjD,kBAAkB,qCAAqC;IACvD,kBAAkB,qCAAqC;IAGvD,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IAGvE,wBAAwB,2CAA2C;IACnE,wBAAwB,2CAA2C;IAGnE,yBAAyB,4CAA4C;IACrE,yBAAyB,4CAA4C;IAGrE,0BAA0B,6CAA6C;IACvE,0BAA0B,6CAA6C;IAGvE,iBAAiB,oCAAoC;IACrD,iBAAiB,oCAAoC;IACrD,eAAe,kCAAkC;IACjD,eAAe,kCAAkC;IAGjD,SAAS,6BAA6B;IACtC,cAAc,kCAAkC;IAChD,cAAc,kCAAkC;IAGhD,iBAAiB,yCAAyC;CAC3D;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,EA6ShC,CAAA"}
@@ -3,15 +3,59 @@ import type { AnyMap, HybridObject } from 'react-native-nitro-modules';
3
3
  * Statistics from the last text generation.
4
4
  */
5
5
  export interface GenerationStats {
6
- /** Total number of tokens generated */
7
6
  tokenCount: number;
8
- /** Generation speed in tokens per second */
9
7
  tokensPerSecond: number;
10
- /** Time in milliseconds until the first token was generated */
11
8
  timeToFirstToken: number;
12
- /** Total generation time in milliseconds */
13
9
  totalTime: number;
10
+ toolExecutionTime: number;
14
11
  }
12
+ export interface GenerationStartEvent {
13
+ type: 'generation_start';
14
+ timestamp: number;
15
+ }
16
+ export interface TokenEvent {
17
+ type: 'token';
18
+ token: string;
19
+ }
20
+ export interface ThinkingStartEvent {
21
+ type: 'thinking_start';
22
+ timestamp: number;
23
+ }
24
+ export interface ThinkingChunkEvent {
25
+ type: 'thinking_chunk';
26
+ chunk: string;
27
+ }
28
+ export interface ThinkingEndEvent {
29
+ type: 'thinking_end';
30
+ content: string;
31
+ timestamp: number;
32
+ }
33
+ export interface ToolCallStartEvent {
34
+ type: 'tool_call_start';
35
+ id: string;
36
+ name: string;
37
+ arguments: string;
38
+ }
39
+ export interface ToolCallExecutingEvent {
40
+ type: 'tool_call_executing';
41
+ id: string;
42
+ }
43
+ export interface ToolCallCompletedEvent {
44
+ type: 'tool_call_completed';
45
+ id: string;
46
+ result: string;
47
+ }
48
+ export interface ToolCallFailedEvent {
49
+ type: 'tool_call_failed';
50
+ id: string;
51
+ error: string;
52
+ }
53
+ export interface GenerationEndEvent {
54
+ type: 'generation_end';
55
+ content: string;
56
+ stats: GenerationStats;
57
+ }
58
+ export type StreamEvent = GenerationStartEvent | TokenEvent | ThinkingStartEvent | ThinkingChunkEvent | ThinkingEndEvent | ToolCallStartEvent | ToolCallExecutingEvent | ToolCallCompletedEvent | ToolCallFailedEvent | GenerationEndEvent;
15
59
  export interface LLMMessage {
16
60
  role: string;
17
61
  content: string;
@@ -74,6 +118,7 @@ export interface LLM extends HybridObject<{
74
118
  * @returns The complete generated text
75
119
  */
76
120
  stream(prompt: string, onToken: (token: string) => void, onToolCall?: (toolName: string, args: string) => void): Promise<string>;
121
+ streamWithEvents(prompt: string, onEvent: (eventJson: string) => void): Promise<string>;
77
122
  /**
78
123
  * Stop the current generation.
79
124
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LLM.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/LLM.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEtE;;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;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC3C;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;IACvB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;CACzB;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;;;;;;;OAOG;IACH,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAChC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GACpD,OAAO,CAAC,MAAM,CAAC,CAAA;IAElB;;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;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"LLM.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/LLM.nitro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+ export interface STTLoadOptions {
3
+ onProgress?: (progress: number) => void;
4
+ }
5
+ export interface STTTranscriptionInfo {
6
+ promptTokens: number;
7
+ generationTokens: number;
8
+ tokensPerSecond: number;
9
+ prefillTime: number;
10
+ generateTime: number;
11
+ }
12
+ export interface STT extends HybridObject<{
13
+ ios: 'swift';
14
+ }> {
15
+ readonly isLoaded: boolean;
16
+ readonly isTranscribing: boolean;
17
+ readonly isListening: boolean;
18
+ readonly modelId: string;
19
+ load(modelId: string, options?: STTLoadOptions): Promise<void>;
20
+ transcribe(audio: ArrayBuffer): Promise<string>;
21
+ transcribeStream(audio: ArrayBuffer, onToken: (token: string) => void): Promise<string>;
22
+ startListening(): Promise<void>;
23
+ transcribeBuffer(): Promise<string>;
24
+ stopListening(): Promise<string>;
25
+ stop(): void;
26
+ unload(): void;
27
+ }
28
+ //# sourceMappingURL=STT.nitro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"STT.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/STT.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,GAAI,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE9D,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/C,gBAAgB,CACd,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,MAAM,CAAC,CAAA;IAElB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACnC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAEhC,IAAI,IAAI,IAAI,CAAA;IACZ,MAAM,IAAI,IAAI,CAAA;CACf"}
@@ -0,0 +1,22 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+ export interface TTSLoadOptions {
3
+ onProgress?: (progress: number) => void;
4
+ }
5
+ export interface TTSGenerateOptions {
6
+ voice?: string;
7
+ speed?: number;
8
+ }
9
+ export interface TTS extends HybridObject<{
10
+ ios: 'swift';
11
+ }> {
12
+ readonly isLoaded: boolean;
13
+ readonly isGenerating: boolean;
14
+ readonly modelId: string;
15
+ readonly sampleRate: number;
16
+ load(modelId: string, options?: TTSLoadOptions): Promise<void>;
17
+ generate(text: string, options?: TTSGenerateOptions): Promise<ArrayBuffer>;
18
+ stream(text: string, onAudioChunk: (audio: ArrayBuffer) => void, options?: TTSGenerateOptions): Promise<void>;
19
+ stop(): void;
20
+ unload(): void;
21
+ }
22
+ //# sourceMappingURL=TTS.nitro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TTS.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/TTS.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,GAAI,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAE3B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAAA;IACvB,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EAC1C,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,IAAI,IAAI,IAAI,CAAA;IACZ,MAAM,IAAI,IAAI,CAAA;CACf"}
@@ -0,0 +1,16 @@
1
+ import type { STTLoadOptions } from './specs/STT.nitro';
2
+ export declare const STT: {
3
+ load(modelId: string, options?: STTLoadOptions): Promise<void>;
4
+ transcribe(audio: ArrayBuffer): Promise<string>;
5
+ transcribeStream(audio: ArrayBuffer, onToken: (token: string) => void): Promise<string>;
6
+ startListening(): Promise<void>;
7
+ transcribeBuffer(): Promise<string>;
8
+ stopListening(): Promise<string>;
9
+ stop(): void;
10
+ unload(): void;
11
+ readonly isLoaded: boolean;
12
+ readonly isTranscribing: boolean;
13
+ readonly isListening: boolean;
14
+ readonly modelId: string;
15
+ };
16
+ //# sourceMappingURL=stt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stt.d.ts","sourceRoot":"","sources":["../../../src/stt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,cAAc,EACf,MAAM,mBAAmB,CAAA;AAW1B,eAAO,MAAM,GAAG;kBACA,MAAM,YAAY,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;sBAI5C,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;4BAKtC,WAAW,WACT,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,MAAM,CAAC;sBAIA,OAAO,CAAC,IAAI,CAAC;wBAIX,OAAO,CAAC,MAAM,CAAC;qBAIlB,OAAO,CAAC,MAAM,CAAC;YAIxB,IAAI;cAIF,IAAI;uBAIE,OAAO;6BAID,OAAO;0BAIV,OAAO;sBAIX,MAAM;CAGtB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { TTSLoadOptions, TTSGenerateOptions } from './specs/TTS.nitro';
2
+ export declare const TTS: {
3
+ load(modelId: string, options?: TTSLoadOptions): Promise<void>;
4
+ generate(text: string, options?: TTSGenerateOptions): Promise<ArrayBuffer>;
5
+ stream(text: string, onAudioChunk: (audio: ArrayBuffer) => void, options?: TTSGenerateOptions): Promise<void>;
6
+ stop(): void;
7
+ unload(): void;
8
+ readonly isLoaded: boolean;
9
+ readonly isGenerating: boolean;
10
+ readonly modelId: string;
11
+ readonly sampleRate: number;
12
+ };
13
+ //# sourceMappingURL=tts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../../src/tts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,cAAc,EACd,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAW1B,eAAO,MAAM,GAAG;kBACA,MAAM,YAAY,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;mBAKtD,MAAM,YACF,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC;iBAKf,MAAM,gBACE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,YAChC,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC;YAIR,IAAI;cAIF,IAAI;uBAIE,OAAO;2BAIH,OAAO;sBAIZ,MAAM;yBAIH,MAAM;CAGzB,CAAA"}
@@ -10,6 +10,8 @@
10
10
  // Include C++ implementation defined types
11
11
  #include "HybridLLMSpecSwift.hpp"
12
12
  #include "HybridModelManagerSpecSwift.hpp"
13
+ #include "HybridSTTSpecSwift.hpp"
14
+ #include "HybridTTSSpecSwift.hpp"
13
15
  #include "MLXReactNative-Swift-Cxx-Umbrella.hpp"
14
16
  #include <NitroModules/NitroDefines.hpp>
15
17
 
@@ -127,5 +129,45 @@ namespace margelo::nitro::mlxreactnative::bridge::swift {
127
129
  MLXReactNative::HybridModelManagerSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
128
130
  return swiftPart.toUnsafe();
129
131
  }
132
+
133
+ // pragma MARK: std::shared_ptr<HybridSTTSpec>
134
+ std::shared_ptr<HybridSTTSpec> create_std__shared_ptr_HybridSTTSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
135
+ MLXReactNative::HybridSTTSpec_cxx swiftPart = MLXReactNative::HybridSTTSpec_cxx::fromUnsafe(swiftUnsafePointer);
136
+ return std::make_shared<margelo::nitro::mlxreactnative::HybridSTTSpecSwift>(swiftPart);
137
+ }
138
+ void* NON_NULL get_std__shared_ptr_HybridSTTSpec_(std__shared_ptr_HybridSTTSpec_ cppType) {
139
+ std::shared_ptr<margelo::nitro::mlxreactnative::HybridSTTSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::mlxreactnative::HybridSTTSpecSwift>(cppType);
140
+ #ifdef NITRO_DEBUG
141
+ if (swiftWrapper == nullptr) [[unlikely]] {
142
+ throw std::runtime_error("Class \"HybridSTTSpec\" is not implemented in Swift!");
143
+ }
144
+ #endif
145
+ MLXReactNative::HybridSTTSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
146
+ return swiftPart.toUnsafe();
147
+ }
148
+
149
+ // pragma MARK: std::function<void(const std::shared_ptr<ArrayBuffer>& /* result */)>
150
+ Func_void_std__shared_ptr_ArrayBuffer_ create_Func_void_std__shared_ptr_ArrayBuffer_(void* NON_NULL swiftClosureWrapper) noexcept {
151
+ auto swiftClosure = MLXReactNative::Func_void_std__shared_ptr_ArrayBuffer_::fromUnsafe(swiftClosureWrapper);
152
+ return [swiftClosure = std::move(swiftClosure)](const std::shared_ptr<ArrayBuffer>& result) mutable -> void {
153
+ swiftClosure.call(ArrayBufferHolder(result));
154
+ };
155
+ }
156
+
157
+ // pragma MARK: std::shared_ptr<HybridTTSSpec>
158
+ std::shared_ptr<HybridTTSSpec> create_std__shared_ptr_HybridTTSSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
159
+ MLXReactNative::HybridTTSSpec_cxx swiftPart = MLXReactNative::HybridTTSSpec_cxx::fromUnsafe(swiftUnsafePointer);
160
+ return std::make_shared<margelo::nitro::mlxreactnative::HybridTTSSpecSwift>(swiftPart);
161
+ }
162
+ void* NON_NULL get_std__shared_ptr_HybridTTSSpec_(std__shared_ptr_HybridTTSSpec_ cppType) {
163
+ std::shared_ptr<margelo::nitro::mlxreactnative::HybridTTSSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::mlxreactnative::HybridTTSSpecSwift>(cppType);
164
+ #ifdef NITRO_DEBUG
165
+ if (swiftWrapper == nullptr) [[unlikely]] {
166
+ throw std::runtime_error("Class \"HybridTTSSpec\" is not implemented in Swift!");
167
+ }
168
+ #endif
169
+ MLXReactNative::HybridTTSSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
170
+ return swiftPart.toUnsafe();
171
+ }
130
172
 
131
173
  } // namespace margelo::nitro::mlxreactnative::bridge::swift