adding logs

This commit is contained in:
akdeb 2026-04-17 12:19:55 +05:30
parent cebf922608
commit 88ca1d517c
2 changed files with 17 additions and 7 deletions

View file

@ -97,6 +97,7 @@ async function synthesizeSpeech(env: Env, text: string): Promise<Response> {
export class ElatoOpenAiVoiceAgent extends DurableObject<Env> {
private audioBuffer = new Uint8Array(0);
private isGenerating = false;
private opusPromise: Promise<Awaited<ReturnType<typeof createOpusPacketizer>>> | null = null;
constructor(ctx: DurableObjectState, env: Env) {
super(ctx, env);
@ -122,10 +123,17 @@ export class ElatoOpenAiVoiceAgent extends DurableObject<Env> {
this.audioBuffer = new Uint8Array(0);
}
private getOpusPacketizer(websocket: WebSocket) {
if (!this.opusPromise) {
this.opusPromise = createOpusPacketizer((packet) => websocket.send(packet));
}
return this.opusPromise;
}
private async handleTurn(
websocket: WebSocket,
opus: Awaited<ReturnType<typeof createOpusPacketizer>>,
) {
const opus = await this.getOpusPacketizer(websocket);
const pcm = this.audioBuffer;
this.resetBufferedAudio();
@ -184,7 +192,6 @@ export class ElatoOpenAiVoiceAgent extends DurableObject<Env> {
const pair = new WebSocketPair();
const [client, server] = Object.values(pair);
server.accept();
const opus = await createOpusPacketizer((packet) => server.send(packet));
server.send(JSON.stringify(createAuthMessage()));
@ -210,7 +217,7 @@ export class ElatoOpenAiVoiceAgent extends DurableObject<Env> {
}
this.isGenerating = true;
try {
await this.handleTurn(server, opus);
await this.handleTurn(server);
} catch {
server.send(createServerMessage("RESPONSE.ERROR"));
} finally {
@ -236,7 +243,10 @@ export class ElatoOpenAiVoiceAgent extends DurableObject<Env> {
server.addEventListener("close", () => {
this.isGenerating = false;
this.resetBufferedAudio();
opus.close();
if (this.opusPromise) {
void this.opusPromise.then((opus) => opus.close()).catch(() => {});
this.opusPromise = null;
}
});
return new Response(null, { status: 101, webSocket: client });

View file

@ -1,4 +1,4 @@
name = "elato-cloudflare-voice"
name = "elato"
main = "src/index.ts"
compatibility_date = "2026-04-17"
compatibility_flags = ["nodejs_compat"]
@ -16,5 +16,5 @@ new_sqlite_classes = ["ElatoOpenAiVoiceAgent"]
[observability]
[observability.logs]
enabled = false
invocation_logs = true
enabled = true
invocation_logs = true