@estuary-ai/sdk 0.1.4 → 0.1.6
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/README.md +138 -2
- package/dist/index.d.mts +4 -0
- package/dist/index.js +54 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +42 -6
- package/dist/index.mjs.map +1 -1
- package/dist/{websocket-voice-A4CK3UTM.mjs → websocket-voice-HYHCIYEW.mjs} +17 -4
- package/dist/websocket-voice-HYHCIYEW.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/websocket-voice-A4CK3UTM.mjs.map +0 -1
package/dist/index.mjs
CHANGED
|
@@ -3738,7 +3738,7 @@ var SocketManager = class extends TypedEventEmitter {
|
|
|
3738
3738
|
// src/voice/voice-manager.ts
|
|
3739
3739
|
async function createVoiceManager(transport, socketManager, sampleRate, logger) {
|
|
3740
3740
|
if (transport === "websocket") {
|
|
3741
|
-
const { WebSocketVoiceManager } = await import('./websocket-voice-
|
|
3741
|
+
const { WebSocketVoiceManager } = await import('./websocket-voice-HYHCIYEW.mjs');
|
|
3742
3742
|
return new WebSocketVoiceManager(socketManager, sampleRate, logger);
|
|
3743
3743
|
}
|
|
3744
3744
|
if (transport === "livekit") {
|
|
@@ -3747,7 +3747,7 @@ async function createVoiceManager(transport, socketManager, sampleRate, logger)
|
|
|
3747
3747
|
return new LiveKitVoiceManager(socketManager, logger);
|
|
3748
3748
|
} catch {
|
|
3749
3749
|
logger.warn("livekit-client not installed, falling back to WebSocket voice");
|
|
3750
|
-
const { WebSocketVoiceManager } = await import('./websocket-voice-
|
|
3750
|
+
const { WebSocketVoiceManager } = await import('./websocket-voice-HYHCIYEW.mjs');
|
|
3751
3751
|
return new WebSocketVoiceManager(socketManager, sampleRate, logger);
|
|
3752
3752
|
}
|
|
3753
3753
|
}
|
|
@@ -3756,7 +3756,7 @@ async function createVoiceManager(transport, socketManager, sampleRate, logger)
|
|
|
3756
3756
|
const { LiveKitVoiceManager } = await import('./livekit-voice-H6WZ44LM.mjs');
|
|
3757
3757
|
return new LiveKitVoiceManager(socketManager, logger);
|
|
3758
3758
|
} catch {
|
|
3759
|
-
const { WebSocketVoiceManager } = await import('./websocket-voice-
|
|
3759
|
+
const { WebSocketVoiceManager } = await import('./websocket-voice-HYHCIYEW.mjs');
|
|
3760
3760
|
return new WebSocketVoiceManager(socketManager, sampleRate, logger);
|
|
3761
3761
|
}
|
|
3762
3762
|
}
|
|
@@ -3865,6 +3865,8 @@ var AudioPlayer = class {
|
|
|
3865
3865
|
sampleRate;
|
|
3866
3866
|
onEvent;
|
|
3867
3867
|
audioContext = null;
|
|
3868
|
+
mediaStreamDest = null;
|
|
3869
|
+
audioElement = null;
|
|
3868
3870
|
queue = [];
|
|
3869
3871
|
currentSource = null;
|
|
3870
3872
|
currentMessageId = null;
|
|
@@ -3900,6 +3902,16 @@ var AudioPlayer = class {
|
|
|
3900
3902
|
}
|
|
3901
3903
|
dispose() {
|
|
3902
3904
|
this.clear();
|
|
3905
|
+
if (this.audioElement) {
|
|
3906
|
+
this.audioElement.pause();
|
|
3907
|
+
this.audioElement.srcObject = null;
|
|
3908
|
+
this.audioElement.remove();
|
|
3909
|
+
this.audioElement = null;
|
|
3910
|
+
}
|
|
3911
|
+
if (this.mediaStreamDest) {
|
|
3912
|
+
this.mediaStreamDest.disconnect();
|
|
3913
|
+
this.mediaStreamDest = null;
|
|
3914
|
+
}
|
|
3903
3915
|
if (this.audioContext) {
|
|
3904
3916
|
this.audioContext.close().catch(() => {
|
|
3905
3917
|
});
|
|
@@ -3912,8 +3924,20 @@ var AudioPlayer = class {
|
|
|
3912
3924
|
return null;
|
|
3913
3925
|
}
|
|
3914
3926
|
const AudioCtx = globalThis.AudioContext || globalThis.webkitAudioContext;
|
|
3915
|
-
|
|
3916
|
-
|
|
3927
|
+
const ctx = new AudioCtx({ sampleRate: this.sampleRate });
|
|
3928
|
+
this.audioContext = ctx;
|
|
3929
|
+
if (typeof document !== "undefined") {
|
|
3930
|
+
this.mediaStreamDest = ctx.createMediaStreamDestination();
|
|
3931
|
+
const el = document.createElement("audio");
|
|
3932
|
+
el.srcObject = this.mediaStreamDest.stream;
|
|
3933
|
+
el.autoplay = true;
|
|
3934
|
+
el.style.display = "none";
|
|
3935
|
+
document.body.appendChild(el);
|
|
3936
|
+
el.play().catch(() => {
|
|
3937
|
+
});
|
|
3938
|
+
this.audioElement = el;
|
|
3939
|
+
}
|
|
3940
|
+
return ctx;
|
|
3917
3941
|
}
|
|
3918
3942
|
playNext() {
|
|
3919
3943
|
const ctx = this.getAudioContext();
|
|
@@ -3936,7 +3960,7 @@ var AudioPlayer = class {
|
|
|
3936
3960
|
this.isPlaying = true;
|
|
3937
3961
|
const source = ctx.createBufferSource();
|
|
3938
3962
|
source.buffer = buffer;
|
|
3939
|
-
source.connect(ctx.destination);
|
|
3963
|
+
source.connect(this.mediaStreamDest ?? ctx.destination);
|
|
3940
3964
|
this.currentSource = source;
|
|
3941
3965
|
source.onended = () => {
|
|
3942
3966
|
this.currentSource = null;
|
|
@@ -4096,6 +4120,9 @@ var EstuaryClient = class extends TypedEventEmitter {
|
|
|
4096
4120
|
this.ensureConnected();
|
|
4097
4121
|
this.socketManager.emitEvent("client_interrupt", { message_id: messageId });
|
|
4098
4122
|
this.audioPlayer?.clear();
|
|
4123
|
+
if (this.config.suppressMicDuringPlayback) {
|
|
4124
|
+
this.voiceManager?.setSuppressed?.(false);
|
|
4125
|
+
}
|
|
4099
4126
|
}
|
|
4100
4127
|
/** Send a camera image for vision processing */
|
|
4101
4128
|
sendCameraImage(imageBase64, mimeType, requestId, text) {
|
|
@@ -4134,9 +4161,15 @@ var EstuaryClient = class extends TypedEventEmitter {
|
|
|
4134
4161
|
this.audioPlayer = new AudioPlayer(sampleRate, (event) => {
|
|
4135
4162
|
if (event.type === "started") {
|
|
4136
4163
|
this.emit("audioPlaybackStarted", event.messageId);
|
|
4164
|
+
if (this.config.suppressMicDuringPlayback) {
|
|
4165
|
+
this.voiceManager?.setSuppressed?.(true);
|
|
4166
|
+
}
|
|
4137
4167
|
} else if (event.type === "complete") {
|
|
4138
4168
|
this.emit("audioPlaybackComplete", event.messageId);
|
|
4139
4169
|
this.notifyAudioPlaybackComplete(event.messageId);
|
|
4170
|
+
if (this.config.suppressMicDuringPlayback) {
|
|
4171
|
+
this.voiceManager?.setSuppressed?.(false);
|
|
4172
|
+
}
|
|
4140
4173
|
}
|
|
4141
4174
|
});
|
|
4142
4175
|
}
|
|
@@ -4191,6 +4224,9 @@ var EstuaryClient = class extends TypedEventEmitter {
|
|
|
4191
4224
|
this.socketManager.on("interrupt", (data) => {
|
|
4192
4225
|
this.audioPlayer?.clear();
|
|
4193
4226
|
this.actionParsers.clear();
|
|
4227
|
+
if (this.config.suppressMicDuringPlayback) {
|
|
4228
|
+
this.voiceManager?.setSuppressed?.(false);
|
|
4229
|
+
}
|
|
4194
4230
|
this.emit("interrupt", data);
|
|
4195
4231
|
});
|
|
4196
4232
|
this.socketManager.on("error", (error) => this.emit("error", error));
|