@estuary-ai/sdk 0.1.13 → 0.1.14
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/index.d.mts +0 -2
- package/dist/index.js +28 -28
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -9
- package/dist/index.mjs.map +1 -1
- package/dist/{livekit-voice-WSOF4UL6.mjs → livekit-voice-H6WZ44LM.mjs} +17 -25
- package/dist/livekit-voice-H6WZ44LM.mjs.map +1 -0
- package/dist/{websocket-voice-HYHCIYEW.mjs → websocket-voice-CTOOXDRQ.mjs} +11 -3
- package/dist/websocket-voice-CTOOXDRQ.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/livekit-voice-WSOF4UL6.mjs.map +0 -1
- package/dist/websocket-voice-HYHCIYEW.mjs.map +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -19,8 +19,6 @@ interface EstuaryConfig {
|
|
|
19
19
|
debug?: boolean;
|
|
20
20
|
/** Voice transport: 'websocket' | 'livekit' | 'auto' (default: 'auto') */
|
|
21
21
|
voiceTransport?: VoiceTransport;
|
|
22
|
-
/** Pre-imported livekit-client module for bundlers that can't resolve the dynamic import (e.g. Mattercraft) */
|
|
23
|
-
livekitModule?: any;
|
|
24
22
|
/** Enable real-time memory extraction after each response (default: false) */
|
|
25
23
|
realtimeMemory?: boolean;
|
|
26
24
|
/** Suppress mic during TTS playback (software AEC fallback, disables barge-in). Default: false */
|
package/dist/index.js
CHANGED
|
@@ -4888,6 +4888,7 @@ var init_websocket_voice = __esm({
|
|
|
4888
4888
|
mediaStream = null;
|
|
4889
4889
|
scriptProcessor = null;
|
|
4890
4890
|
sourceNode = null;
|
|
4891
|
+
zeroGainNode = null;
|
|
4891
4892
|
_isMuted = false;
|
|
4892
4893
|
_isSuppressed = false;
|
|
4893
4894
|
_isActive = false;
|
|
@@ -4951,7 +4952,10 @@ var init_websocket_voice = __esm({
|
|
|
4951
4952
|
}
|
|
4952
4953
|
};
|
|
4953
4954
|
this.sourceNode.connect(this.scriptProcessor);
|
|
4954
|
-
this.
|
|
4955
|
+
this.zeroGainNode = this.audioContext.createGain();
|
|
4956
|
+
this.zeroGainNode.gain.value = 0;
|
|
4957
|
+
this.scriptProcessor.connect(this.zeroGainNode);
|
|
4958
|
+
this.zeroGainNode.connect(this.audioContext.destination);
|
|
4955
4959
|
this._isActive = true;
|
|
4956
4960
|
this.socketManager.emitEvent("start_voice");
|
|
4957
4961
|
this.logger.debug("WebSocket voice started");
|
|
@@ -4992,6 +4996,10 @@ var init_websocket_voice = __esm({
|
|
|
4992
4996
|
this.scriptProcessor.disconnect();
|
|
4993
4997
|
this.scriptProcessor = null;
|
|
4994
4998
|
}
|
|
4999
|
+
if (this.zeroGainNode) {
|
|
5000
|
+
this.zeroGainNode.disconnect();
|
|
5001
|
+
this.zeroGainNode = null;
|
|
5002
|
+
}
|
|
4995
5003
|
if (this.sourceNode) {
|
|
4996
5004
|
this.sourceNode.disconnect();
|
|
4997
5005
|
this.sourceNode = null;
|
|
@@ -5024,15 +5032,13 @@ var init_livekit_voice = __esm({
|
|
|
5024
5032
|
LiveKitVoiceManager = class {
|
|
5025
5033
|
socketManager;
|
|
5026
5034
|
logger;
|
|
5027
|
-
livekitModule;
|
|
5028
5035
|
room = null;
|
|
5029
5036
|
// livekit-client Room (dynamically imported)
|
|
5030
5037
|
_isMuted = false;
|
|
5031
5038
|
_isActive = false;
|
|
5032
|
-
constructor(socketManager, logger
|
|
5039
|
+
constructor(socketManager, logger) {
|
|
5033
5040
|
this.socketManager = socketManager;
|
|
5034
5041
|
this.logger = logger;
|
|
5035
|
-
this.livekitModule = livekitModule;
|
|
5036
5042
|
}
|
|
5037
5043
|
get isMuted() {
|
|
5038
5044
|
return this._isMuted;
|
|
@@ -5047,26 +5053,20 @@ var init_livekit_voice = __esm({
|
|
|
5047
5053
|
let Room;
|
|
5048
5054
|
let RoomEvent;
|
|
5049
5055
|
let Track;
|
|
5050
|
-
|
|
5051
|
-
|
|
5052
|
-
|
|
5053
|
-
|
|
5054
|
-
|
|
5055
|
-
|
|
5056
|
-
|
|
5057
|
-
|
|
5058
|
-
|
|
5059
|
-
|
|
5060
|
-
|
|
5061
|
-
|
|
5062
|
-
|
|
5063
|
-
|
|
5064
|
-
} catch {
|
|
5065
|
-
throw new exports.EstuaryError(
|
|
5066
|
-
"LIVEKIT_UNAVAILABLE" /* LIVEKIT_UNAVAILABLE */,
|
|
5067
|
-
"livekit-client package is not installed"
|
|
5068
|
-
);
|
|
5069
|
-
}
|
|
5056
|
+
try {
|
|
5057
|
+
const specifier = ["livekit", "client"].join("-");
|
|
5058
|
+
const lk = await import(
|
|
5059
|
+
/* @vite-ignore */
|
|
5060
|
+
specifier
|
|
5061
|
+
);
|
|
5062
|
+
Room = lk.Room;
|
|
5063
|
+
RoomEvent = lk.RoomEvent;
|
|
5064
|
+
Track = lk.Track;
|
|
5065
|
+
} catch {
|
|
5066
|
+
throw new exports.EstuaryError(
|
|
5067
|
+
"LIVEKIT_UNAVAILABLE" /* LIVEKIT_UNAVAILABLE */,
|
|
5068
|
+
"livekit-client package is not installed"
|
|
5069
|
+
);
|
|
5070
5070
|
}
|
|
5071
5071
|
const tokenData = await this.requestToken();
|
|
5072
5072
|
this.room = new Room({
|
|
@@ -9075,7 +9075,7 @@ var SocketManager = class extends TypedEventEmitter {
|
|
|
9075
9075
|
};
|
|
9076
9076
|
|
|
9077
9077
|
// src/voice/voice-manager.ts
|
|
9078
|
-
async function createVoiceManager(transport, socketManager, sampleRate, logger
|
|
9078
|
+
async function createVoiceManager(transport, socketManager, sampleRate, logger) {
|
|
9079
9079
|
if (transport === "websocket") {
|
|
9080
9080
|
const { WebSocketVoiceManager: WebSocketVoiceManager2 } = await Promise.resolve().then(() => (init_websocket_voice(), websocket_voice_exports));
|
|
9081
9081
|
return new WebSocketVoiceManager2(socketManager, sampleRate, logger);
|
|
@@ -9083,7 +9083,7 @@ async function createVoiceManager(transport, socketManager, sampleRate, logger,
|
|
|
9083
9083
|
if (transport === "livekit") {
|
|
9084
9084
|
try {
|
|
9085
9085
|
const { LiveKitVoiceManager: LiveKitVoiceManager2 } = await Promise.resolve().then(() => (init_livekit_voice(), livekit_voice_exports));
|
|
9086
|
-
return new LiveKitVoiceManager2(socketManager, logger
|
|
9086
|
+
return new LiveKitVoiceManager2(socketManager, logger);
|
|
9087
9087
|
} catch {
|
|
9088
9088
|
logger.warn("livekit-client not installed, falling back to WebSocket voice");
|
|
9089
9089
|
const { WebSocketVoiceManager: WebSocketVoiceManager2 } = await Promise.resolve().then(() => (init_websocket_voice(), websocket_voice_exports));
|
|
@@ -9093,7 +9093,7 @@ async function createVoiceManager(transport, socketManager, sampleRate, logger,
|
|
|
9093
9093
|
if (transport === "auto") {
|
|
9094
9094
|
try {
|
|
9095
9095
|
const { LiveKitVoiceManager: LiveKitVoiceManager2 } = await Promise.resolve().then(() => (init_livekit_voice(), livekit_voice_exports));
|
|
9096
|
-
return new LiveKitVoiceManager2(socketManager, logger
|
|
9096
|
+
return new LiveKitVoiceManager2(socketManager, logger);
|
|
9097
9097
|
} catch {
|
|
9098
9098
|
const { WebSocketVoiceManager: WebSocketVoiceManager2 } = await Promise.resolve().then(() => (init_websocket_voice(), websocket_voice_exports));
|
|
9099
9099
|
return new WebSocketVoiceManager2(socketManager, sampleRate, logger);
|
|
@@ -9538,7 +9538,7 @@ var EstuaryClient = class extends TypedEventEmitter {
|
|
|
9538
9538
|
}
|
|
9539
9539
|
const transport = this.config.voiceTransport ?? "auto";
|
|
9540
9540
|
const sampleRate = this.config.audioSampleRate ?? DEFAULT_SAMPLE_RATE;
|
|
9541
|
-
this.voiceManager = await createVoiceManager(transport, this.socketManager, sampleRate, this.logger
|
|
9541
|
+
this.voiceManager = await createVoiceManager(transport, this.socketManager, sampleRate, this.logger);
|
|
9542
9542
|
if (!this.voiceManager) {
|
|
9543
9543
|
throw new exports.EstuaryError("VOICE_NOT_SUPPORTED" /* VOICE_NOT_SUPPORTED */, "No voice transport available");
|
|
9544
9544
|
}
|