@bytexbyte/nxtlinq-ai-agent-ui-react-native-development 0.2.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 (98) hide show
  1. package/dist/NxtlinqAgentAssistant.d.ts +29 -0
  2. package/dist/NxtlinqAgentAssistant.d.ts.map +1 -0
  3. package/dist/NxtlinqAgentAssistant.js +32 -0
  4. package/dist/components/AgentAssistantShell.d.ts +7 -0
  5. package/dist/components/AgentAssistantShell.d.ts.map +1 -0
  6. package/dist/components/AgentAssistantShell.js +77 -0
  7. package/dist/components/AgentComposer.d.ts +3 -0
  8. package/dist/components/AgentComposer.d.ts.map +1 -0
  9. package/dist/components/AgentComposer.js +56 -0
  10. package/dist/components/AgentMessageList.d.ts +3 -0
  11. package/dist/components/AgentMessageList.d.ts.map +1 -0
  12. package/dist/components/AgentMessageList.js +91 -0
  13. package/dist/components/AgentRemoteAudio.d.ts +14 -0
  14. package/dist/components/AgentRemoteAudio.d.ts.map +1 -0
  15. package/dist/components/AgentRemoteAudio.js +62 -0
  16. package/dist/components/AgentVoiceBar.d.ts +3 -0
  17. package/dist/components/AgentVoiceBar.d.ts.map +1 -0
  18. package/dist/components/AgentVoiceBar.js +133 -0
  19. package/dist/components/PresetMessageChips.d.ts +3 -0
  20. package/dist/components/PresetMessageChips.d.ts.map +1 -0
  21. package/dist/components/PresetMessageChips.js +39 -0
  22. package/dist/components/VoiceGreetTrigger.d.ts +10 -0
  23. package/dist/components/VoiceGreetTrigger.d.ts.map +1 -0
  24. package/dist/components/VoiceGreetTrigger.js +99 -0
  25. package/dist/components/VoiceIcons.d.ts +12 -0
  26. package/dist/components/VoiceIcons.d.ts.map +1 -0
  27. package/dist/components/VoiceIcons.js +17 -0
  28. package/dist/components/VoiceImageInput.d.ts +10 -0
  29. package/dist/components/VoiceImageInput.d.ts.map +1 -0
  30. package/dist/components/VoiceImageInput.js +100 -0
  31. package/dist/components/VoiceWaveform.d.ts +7 -0
  32. package/dist/components/VoiceWaveform.d.ts.map +1 -0
  33. package/dist/components/VoiceWaveform.js +64 -0
  34. package/dist/context/AgentAssistantContext.d.ts +45 -0
  35. package/dist/context/AgentAssistantContext.d.ts.map +1 -0
  36. package/dist/context/AgentAssistantContext.js +244 -0
  37. package/dist/index.d.ts +16 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +14 -0
  40. package/dist/theme/defaultTheme.d.ts +3 -0
  41. package/dist/theme/defaultTheme.d.ts.map +1 -0
  42. package/dist/theme/defaultTheme.js +33 -0
  43. package/dist/types.d.ts +103 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +1 -0
  46. package/dist/voice/AudioSessionWaker.d.ts +18 -0
  47. package/dist/voice/AudioSessionWaker.d.ts.map +1 -0
  48. package/dist/voice/AudioSessionWaker.js +49 -0
  49. package/dist/voice/TextTtsPlayer.d.ts +21 -0
  50. package/dist/voice/TextTtsPlayer.d.ts.map +1 -0
  51. package/dist/voice/TextTtsPlayer.js +91 -0
  52. package/dist/voice/VoiceAutoGreetBinder.d.ts +6 -0
  53. package/dist/voice/VoiceAutoGreetBinder.d.ts.map +1 -0
  54. package/dist/voice/VoiceAutoGreetBinder.js +25 -0
  55. package/dist/voice/useVoiceAutoGreet.d.ts +24 -0
  56. package/dist/voice/useVoiceAutoGreet.d.ts.map +1 -0
  57. package/dist/voice/useVoiceAutoGreet.js +64 -0
  58. package/dist/voice/useVoiceMicState.d.ts +24 -0
  59. package/dist/voice/useVoiceMicState.d.ts.map +1 -0
  60. package/dist/voice/useVoiceMicState.js +84 -0
  61. package/dist/voice/voiceMicConstants.d.ts +5 -0
  62. package/dist/voice/voiceMicConstants.d.ts.map +1 -0
  63. package/dist/voice/voiceMicConstants.js +11 -0
  64. package/dist/voice/voiceWaveformConstants.d.ts +6 -0
  65. package/dist/voice/voiceWaveformConstants.d.ts.map +1 -0
  66. package/dist/voice/voiceWaveformConstants.js +7 -0
  67. package/dist/voice/webrtcAudioGain.d.ts +6 -0
  68. package/dist/voice/webrtcAudioGain.d.ts.map +1 -0
  69. package/dist/voice/webrtcAudioGain.js +11 -0
  70. package/dist/voice/writeTtsCacheFile.d.ts +9 -0
  71. package/dist/voice/writeTtsCacheFile.d.ts.map +1 -0
  72. package/dist/voice/writeTtsCacheFile.js +37 -0
  73. package/package.json +64 -0
  74. package/src/NxtlinqAgentAssistant.tsx +103 -0
  75. package/src/components/AgentAssistantShell.tsx +167 -0
  76. package/src/components/AgentComposer.tsx +117 -0
  77. package/src/components/AgentMessageList.tsx +187 -0
  78. package/src/components/AgentRemoteAudio.tsx +105 -0
  79. package/src/components/AgentVoiceBar.tsx +232 -0
  80. package/src/components/PresetMessageChips.tsx +64 -0
  81. package/src/components/VoiceGreetTrigger.tsx +158 -0
  82. package/src/components/VoiceIcons.tsx +32 -0
  83. package/src/components/VoiceImageInput.tsx +178 -0
  84. package/src/components/VoiceWaveform.tsx +84 -0
  85. package/src/context/AgentAssistantContext.tsx +369 -0
  86. package/src/index.ts +59 -0
  87. package/src/react-native.d.ts +42 -0
  88. package/src/theme/defaultTheme.ts +35 -0
  89. package/src/types.ts +107 -0
  90. package/src/voice/AudioSessionWaker.tsx +94 -0
  91. package/src/voice/TextTtsPlayer.tsx +151 -0
  92. package/src/voice/VoiceAutoGreetBinder.tsx +38 -0
  93. package/src/voice/useVoiceAutoGreet.ts +95 -0
  94. package/src/voice/useVoiceMicState.ts +116 -0
  95. package/src/voice/voiceMicConstants.ts +14 -0
  96. package/src/voice/voiceWaveformConstants.ts +10 -0
  97. package/src/voice/webrtcAudioGain.ts +21 -0
  98. package/src/voice/writeTtsCacheFile.ts +47 -0
@@ -0,0 +1,10 @@
1
+ import type { VoiceStatus } from '@bytexbyte/nxtlinq-ai-agent-core-development';
2
+
3
+ /** Match Berify: waveform animates only while assistant output audio is active. */
4
+ export const WAVEFORM_ACTIVE_STATUSES: ReadonlySet<VoiceStatus> = new Set([
5
+ 'generating',
6
+ 'speaking',
7
+ ]);
8
+
9
+ export const WAVEFORM_AUDIBLE_THRESHOLD = 0.01;
10
+ export const WAVEFORM_AUDIBLE_HOLD_MS = 800;
@@ -0,0 +1,21 @@
1
+ import {
2
+ applyRemoteAudioPlaybackGain,
3
+ DEFAULT_REMOTE_AUDIO_GAIN,
4
+ type RemoteAudioTrackLike,
5
+ } from '@bytexbyte/nxtlinq-ai-agent-core-development';
6
+
7
+ export const DEFAULT_VOICE_REMOTE_AUDIO_GAIN = DEFAULT_REMOTE_AUDIO_GAIN;
8
+ export type WebRTCAudioTrackLike = RemoteAudioTrackLike;
9
+
10
+ /** @deprecated Use {@link applyRemoteAudioPlaybackGain} */
11
+ export function applyWebRTCAudioTrackGain(
12
+ tracks: WebRTCAudioTrackLike[],
13
+ gain: number,
14
+ ): void {
15
+ const clamped = Math.max(0, Math.min(10, gain));
16
+ for (const track of tracks) {
17
+ if ((track.kind === 'audio' || track.kind == null) && track._setVolume) {
18
+ track._setVolume(clamped);
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,47 @@
1
+ import { buildTextTtsDataUri, type PostTextTtsResult } from '@bytexbyte/nxtlinq-ai-agent-core-development';
2
+
3
+ type BlobUtilModule = {
4
+ fs: {
5
+ dirs: { CacheDir: string };
6
+ writeFile(path: string, data: string, encoding: 'base64'): Promise<void>;
7
+ unlink(path: string): Promise<void>;
8
+ };
9
+ };
10
+
11
+ let blobUtil: BlobUtilModule | null = null;
12
+ try {
13
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
14
+ blobUtil = require('react-native-blob-util').default as BlobUtilModule;
15
+ } catch {
16
+ blobUtil = null;
17
+ }
18
+
19
+ export function isTtsCacheFileSupported(): boolean {
20
+ return blobUtil != null;
21
+ }
22
+
23
+ /**
24
+ * Persist TTS bytes to cache and return a `file://` URI for react-native-video.
25
+ * Data URIs are unreliable for MPEG on iOS.
26
+ */
27
+ export async function writeTtsCacheFile(result: PostTextTtsResult): Promise<string> {
28
+ if (!blobUtil) {
29
+ return buildTextTtsDataUri(result.audio, result.mimeType);
30
+ }
31
+
32
+ const dataUri = buildTextTtsDataUri(result.audio, result.mimeType);
33
+ const comma = dataUri.indexOf(',');
34
+ const base64 = comma >= 0 ? dataUri.slice(comma + 1) : '';
35
+ const path = `${blobUtil.fs.dirs.CacheDir}/nxtlinq-tts-${Date.now()}.mp3`;
36
+ await blobUtil.fs.writeFile(path, base64, 'base64');
37
+ return path.startsWith('file://') ? path : `file://${path}`;
38
+ }
39
+
40
+ export async function removeTtsCacheFile(uri: string): Promise<void> {
41
+ if (!blobUtil || !uri.startsWith(blobUtil.fs.dirs.CacheDir)) return;
42
+ try {
43
+ await blobUtil.fs.unlink(uri.replace(/^file:\/\//, ''));
44
+ } catch {
45
+ /* noop */
46
+ }
47
+ }