@estuary-ai/sdk 0.1.13 → 0.1.15
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 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -11
- 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);
|
|
@@ -9257,7 +9257,6 @@ var AudioPlayer = class {
|
|
|
9257
9257
|
}
|
|
9258
9258
|
this.currentSource = null;
|
|
9259
9259
|
}
|
|
9260
|
-
if (this.audioElement) this.audioElement.muted = true;
|
|
9261
9260
|
this.isPlaying = false;
|
|
9262
9261
|
this.currentMessageId = null;
|
|
9263
9262
|
}
|
|
@@ -9330,7 +9329,6 @@ var AudioPlayer = class {
|
|
|
9330
9329
|
this.playNext();
|
|
9331
9330
|
};
|
|
9332
9331
|
if (this.audioElement) {
|
|
9333
|
-
this.audioElement.muted = false;
|
|
9334
9332
|
this.audioElement.play().catch(() => {
|
|
9335
9333
|
});
|
|
9336
9334
|
}
|
|
@@ -9538,7 +9536,7 @@ var EstuaryClient = class extends TypedEventEmitter {
|
|
|
9538
9536
|
}
|
|
9539
9537
|
const transport = this.config.voiceTransport ?? "auto";
|
|
9540
9538
|
const sampleRate = this.config.audioSampleRate ?? DEFAULT_SAMPLE_RATE;
|
|
9541
|
-
this.voiceManager = await createVoiceManager(transport, this.socketManager, sampleRate, this.logger
|
|
9539
|
+
this.voiceManager = await createVoiceManager(transport, this.socketManager, sampleRate, this.logger);
|
|
9542
9540
|
if (!this.voiceManager) {
|
|
9543
9541
|
throw new exports.EstuaryError("VOICE_NOT_SUPPORTED" /* VOICE_NOT_SUPPORTED */, "No voice transport available");
|
|
9544
9542
|
}
|