@vanira/sdk 0.0.41 → 0.0.43
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.
- package/dist/VaniraAI-D2KUxJJO.js +682 -0
- package/dist/VaniraAI-EFYOmJ2E.cjs +1 -0
- package/dist/__tests__/adapters.test.d.ts +14 -0
- package/dist/adapters/PeerConnectionAdapter.d.ts +90 -0
- package/dist/adapters/browser/BrowserAudioAdapter.d.ts +9 -0
- package/dist/adapters/browser/BrowserDataChannelAdapter.d.ts +16 -0
- package/dist/adapters/browser/BrowserMediaAdapter.d.ts +10 -0
- package/dist/adapters/browser/BrowserPeerAdapter.d.ts +9 -0
- package/dist/adapters/browser/index.d.ts +4 -0
- package/dist/adapters/interfaces.d.ts +70 -0
- package/dist/adapters/react-native/RNAudioAdapter.d.ts +9 -0
- package/dist/adapters/react-native/RNDataChannelAdapter.d.ts +16 -0
- package/dist/adapters/react-native/RNMediaAdapter.d.ts +17 -0
- package/dist/adapters/react-native/RNPeerAdapter.d.ts +19 -0
- package/dist/adapters/react-native/index.d.ts +4 -0
- package/dist/browser.d.ts +1 -0
- package/dist/core/VaniraAI.d.ts +2 -0
- package/dist/index.d.ts +21 -3
- package/dist/platforms/browser.cjs +8 -0
- package/dist/platforms/browser.d.ts +28 -0
- package/dist/platforms/browser.js +479 -0
- package/dist/platforms/react-native.cjs +1 -0
- package/dist/platforms/react-native.d.ts +46 -0
- package/dist/platforms/react-native.js +116 -0
- package/dist/react/PresetRenderer.d.ts +1 -2
- package/dist/react/index.d.ts +0 -4
- package/dist/react-native.d.ts +1 -0
- package/dist/runtime/browserRuntime.d.ts +17 -0
- package/dist/runtime/reactNativeRuntime.d.ts +18 -0
- package/dist/runtime/types.d.ts +96 -0
- package/dist/types.d.ts +36 -4
- package/dist/ui/presets/WidgetPresetRenderer.d.ts +2 -0
- package/dist/vanira-sdk.es.js +1788 -231
- package/dist/vanira-sdk.js +36 -36
- package/dist/vanira-sdk.js.map +1 -1
- package/dist/vanira-sdk.umd.js +1538 -0
- package/package.json +18 -3
- package/dist/react/presets/CalendarPreset.d.ts +0 -4
- package/dist/react/presets/CameraPreset.d.ts +0 -16
- package/dist/react/presets/FormPreset.d.ts +0 -4
- package/dist/react/presets/NavigatePreset.d.ts +0 -16
- package/dist/react/presets/UploadPreset.d.ts +0 -17
- package/dist/react/registry.d.ts +0 -3
- package/dist/react/types.d.ts +0 -21
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { VaniraRuntime, RuntimeCapabilities } from './types';
|
|
2
|
+
import { WebRTCClientConfig } from '../types';
|
|
3
|
+
import { WebRTCClient } from '../core/WebRTCClient';
|
|
4
|
+
import { VaniraAI } from '../core/VaniraAI';
|
|
5
|
+
|
|
6
|
+
export declare const reactNativeCapabilities: RuntimeCapabilities;
|
|
7
|
+
export declare const reactNativeRuntime: VaniraRuntime;
|
|
8
|
+
/**
|
|
9
|
+
* Create a WebRTCClient pre-wired for React Native.
|
|
10
|
+
*
|
|
11
|
+
* The callId is auto-generated with an 'rn_' prefix for tracing.
|
|
12
|
+
* The /calls/create request body will include `{ type: 'web', runtime: 'react-native' }`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createReactNativeClient(config: Omit<WebRTCClientConfig, 'audioAdapter' | 'mediaAdapter' | 'peerAdapter' | 'dataChannelAdapter'>): WebRTCClient;
|
|
15
|
+
/**
|
|
16
|
+
* Create a VaniraAI instance pre-wired for React Native.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createReactNativeAI(config: Omit<WebRTCClientConfig, 'audioAdapter' | 'mediaAdapter' | 'peerAdapter' | 'dataChannelAdapter'>): VaniraAI;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { AudioAdapter, MediaAdapter } from '../adapters/interfaces';
|
|
2
|
+
import { PeerConnectionAdapter, DataChannelAdapter } from '../adapters/PeerConnectionAdapter';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Declarative flags describing what the current platform supports.
|
|
6
|
+
* Use these instead of hardcoded platform checks throughout the codebase.
|
|
7
|
+
*
|
|
8
|
+
* The backend also receives the runtime name and uses it to skip
|
|
9
|
+
* `playedStream` waiting for platforms that don't fire `onended`.
|
|
10
|
+
*/
|
|
11
|
+
export interface RuntimeCapabilities {
|
|
12
|
+
/**
|
|
13
|
+
* Whether HTMLAudioElement.onended fires after a TTS stream finishes.
|
|
14
|
+
* Browser: true — fires naturally after the stream ends.
|
|
15
|
+
* RN: false — react-native-webrtc routes audio natively, no onended event.
|
|
16
|
+
* Flutter: false — flutter_webrtc routes audio natively.
|
|
17
|
+
*/
|
|
18
|
+
supportsAudioEndedEvent: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Whether getDisplayMedia (screen capture) is available.
|
|
21
|
+
* Browser: true (desktop), false on mobile browsers.
|
|
22
|
+
* RN: false — no screen capture API.
|
|
23
|
+
* Flutter: false — flutter_webrtc does not expose getDisplayMedia.
|
|
24
|
+
*/
|
|
25
|
+
supportsScreenShare: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether document, window, and DOM APIs are present.
|
|
28
|
+
* Browser: true. RN: false. Flutter: false.
|
|
29
|
+
*/
|
|
30
|
+
supportsDom: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Whether new Audio() / HTMLAudioElement is constructable.
|
|
33
|
+
* Browser: true. RN: false. Flutter: false.
|
|
34
|
+
*/
|
|
35
|
+
supportsHtmlAudio: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Whether customElements.define() is available for widget registration.
|
|
38
|
+
* Browser: true. RN: false. Flutter: false.
|
|
39
|
+
*/
|
|
40
|
+
supportsCustomElements: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Whether localStorage / sessionStorage are available.
|
|
43
|
+
* Browser: true. RN: false (AsyncStorage used instead). Flutter: false.
|
|
44
|
+
*/
|
|
45
|
+
supportsLocalStorage: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Whether BroadcastChannel (cross-tab communication) is available.
|
|
48
|
+
* Browser: true. RN: false. Flutter: false.
|
|
49
|
+
*/
|
|
50
|
+
supportsBroadcastChannel: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A VaniraRuntime encapsulates everything the WebRTCClient needs to know
|
|
54
|
+
* about the current platform:
|
|
55
|
+
*
|
|
56
|
+
* - Which adapters to use for media, audio, peer connection, data channel
|
|
57
|
+
* - What metadata to send to the backend (type, runtime)
|
|
58
|
+
* - How to generate call IDs
|
|
59
|
+
* - What features are available (capabilities)
|
|
60
|
+
*
|
|
61
|
+
* The WebRTCClient accepts a runtime via config.runtime and extracts all
|
|
62
|
+
* adapter + metadata from it. Individual adapter fields on config are still
|
|
63
|
+
* supported for backward compatibility.
|
|
64
|
+
*/
|
|
65
|
+
export interface VaniraRuntime {
|
|
66
|
+
/** Human-readable runtime identifier */
|
|
67
|
+
readonly name: 'browser' | 'react-native' | 'flutter' | string;
|
|
68
|
+
/**
|
|
69
|
+
* Sent as `type` in the /calls/create request body.
|
|
70
|
+
* Must be `web` for all WebRTC flows — the API only accepts `web` | `sip`.
|
|
71
|
+
* Use `runtimeName` for browser vs react-native vs flutter.
|
|
72
|
+
*/
|
|
73
|
+
readonly callType: 'web';
|
|
74
|
+
/**
|
|
75
|
+
* Sent as `runtime` in the /calls/create request body.
|
|
76
|
+
* Replaces the old callId prefix convention.
|
|
77
|
+
* Values: 'browser' | 'react-native' | 'flutter'
|
|
78
|
+
*/
|
|
79
|
+
readonly runtimeName: string;
|
|
80
|
+
/**
|
|
81
|
+
* Prefix used when auto-generating a callId (no prefix conflicts with
|
|
82
|
+
* runtime field, but kept for logging / tracing convenience).
|
|
83
|
+
* 'web_' | 'rn_' | 'flutter_'
|
|
84
|
+
*/
|
|
85
|
+
readonly callIdPrefix: string;
|
|
86
|
+
/** Runtime capability flags */
|
|
87
|
+
readonly capabilities: RuntimeCapabilities;
|
|
88
|
+
/** Audio output adapter (remote TTS playback) */
|
|
89
|
+
readonly audio: AudioAdapter;
|
|
90
|
+
/** Media input adapter (microphone access) */
|
|
91
|
+
readonly media: MediaAdapter;
|
|
92
|
+
/** RTCPeerConnection factory adapter */
|
|
93
|
+
readonly peer: PeerConnectionAdapter;
|
|
94
|
+
/** DataChannel event binding + message normalisation adapter */
|
|
95
|
+
readonly dataChannel: DataChannelAdapter;
|
|
96
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -46,19 +46,51 @@ export interface WebRTCClientConfig {
|
|
|
46
46
|
}) => void;
|
|
47
47
|
onConnected?: () => void;
|
|
48
48
|
onDisconnected?: () => void;
|
|
49
|
-
onError?: (error:
|
|
49
|
+
onError?: (error: unknown) => void;
|
|
50
50
|
onTranscription?: (text: string, isFinal: boolean) => void;
|
|
51
51
|
onLocalStream?: (stream: MediaStream) => void;
|
|
52
52
|
onRemoteTrack?: (track: MediaStreamTrack, stream: MediaStream) => void;
|
|
53
|
-
onClientToolCall?: (toolCall:
|
|
53
|
+
onClientToolCall?: (toolCall: unknown) => void;
|
|
54
|
+
/**
|
|
55
|
+
* STUN/TURN servers to use for the RTCPeerConnection.
|
|
56
|
+
* If omitted, the SDK falls back to its own built-in STUN + metered.ca TURN defaults.
|
|
57
|
+
* Pass your own fetched servers (e.g. from WebRTCClient.fetchIceServers()) for
|
|
58
|
+
* tighter control over relay selection.
|
|
59
|
+
*/
|
|
54
60
|
iceServers?: RTCIceServer[];
|
|
55
61
|
token?: string;
|
|
62
|
+
runtime?: import('./runtime/types').VaniraRuntime;
|
|
63
|
+
/**
|
|
64
|
+
* Audio output adapter. Controls how incoming remote audio is played.
|
|
65
|
+
* Default (browser): HTMLAudioElement-backed player.
|
|
66
|
+
* React Native: no-op stub (react-native-webrtc routes audio natively).
|
|
67
|
+
*/
|
|
68
|
+
audioAdapter?: import('./adapters/interfaces').AudioAdapter;
|
|
69
|
+
/**
|
|
70
|
+
* Media input adapter. Controls how the microphone is accessed.
|
|
71
|
+
* Default (browser): navigator.mediaDevices.getUserMedia.
|
|
72
|
+
* React Native: react-native-webrtc mediaDevices.getUserMedia polyfill.
|
|
73
|
+
*/
|
|
74
|
+
mediaAdapter?: import('./adapters/interfaces').MediaAdapter;
|
|
75
|
+
/**
|
|
76
|
+
* RTCPeerConnection factory adapter.
|
|
77
|
+
* Default (browser): BrowserPeerAdapter (wraps new RTCPeerConnection()).
|
|
78
|
+
* React Native: RNPeerAdapter (wraps react-native-webrtc global).
|
|
79
|
+
*/
|
|
80
|
+
peerAdapter?: import('./adapters/PeerConnectionAdapter').PeerConnectionAdapter;
|
|
81
|
+
/**
|
|
82
|
+
* DataChannel event binding + message normalisation adapter.
|
|
83
|
+
* Default (browser): BrowserDataChannelAdapter (handles string/ArrayBuffer/Blob).
|
|
84
|
+
* React Native: RNDataChannelAdapter (string-only, no binary normalisation).
|
|
85
|
+
*/
|
|
86
|
+
dataChannelAdapter?: import('./adapters/PeerConnectionAdapter').DataChannelAdapter;
|
|
56
87
|
}
|
|
57
88
|
export interface ControlEvent {
|
|
58
89
|
event: string;
|
|
59
90
|
text?: string;
|
|
60
91
|
isFinal?: boolean;
|
|
61
92
|
name?: string;
|
|
62
|
-
tool_call?:
|
|
63
|
-
data?:
|
|
93
|
+
tool_call?: unknown;
|
|
94
|
+
data?: unknown;
|
|
95
|
+
[key: string]: unknown;
|
|
64
96
|
}
|