From 8e8dd9d9f67b7ded1fa90c4e59f7148bbeb3152c Mon Sep 17 00:00:00 2001 From: Bijit Mondal Date: Sat, 14 Feb 2026 12:26:47 +0530 Subject: [PATCH] WIP --- CHANGELOG.md | 81 +++++++++ README.md | 139 ++++++++++----- example/ws-server-2.ts | 8 +- example/ws-server.ts | 8 +- output.mp3 | Bin 49920 -> 0 bytes output_chunk_0.mp3 | Bin 50688 -> 85632 bytes package.json | 4 +- src/VoiceAgent.ts | 372 +++++++++++++++++++++++++++++++++++++---- 8 files changed, 531 insertions(+), 81 deletions(-) create mode 100644 CHANGELOG.md delete mode 100644 output.mp3 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..7d2478a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,81 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/), +and this project adheres to [Semantic Versioning](https://semver.org/). + +## [0.1.0] - 2025-07-15 + +### Added + +- **Conversation history limits** — new `history` option with `maxMessages` (default 100) + and `maxTotalChars` (default unlimited) to prevent unbounded memory growth. + Oldest messages are trimmed in pairs to preserve user/assistant turn structure. + Emits `history_trimmed` event when messages are evicted. +- **Audio input size validation** — new `maxAudioInputSize` option (default 10 MB). + Oversized or empty audio payloads are rejected early with an `error` / `warning` event + instead of being forwarded to the transcription model. +- **Serial input queue** — `sendText()`, WebSocket `transcript` messages, and + transcribed audio are now queued and processed one at a time. This prevents + race conditions where concurrent calls could corrupt `conversationHistory` or + interleave streaming output. +- **LLM stream cancellation** — an `AbortController` is now threaded into + `streamText()` via `abortSignal`. Barge-in, disconnect, and explicit + interrupts abort the LLM stream immediately (saving tokens) instead of only + cancelling TTS. +- **`interruptCurrentResponse(reason)`** — new public method that aborts both + the LLM stream *and* ongoing speech in a single call. WebSocket barge-in + (`transcript` / `audio` / `interrupt` messages) now uses this instead of + `interruptSpeech()` alone. +- **`destroy()`** — permanently tears down the agent, releasing the socket, + clearing history and tools, and removing all event listeners. + A `destroyed` getter is also exposed. Any subsequent method call throws. +- **`history_trimmed` event** — emitted with `{ removedCount, reason }` when + the sliding-window trims old messages. +- **Input validation** — `sendText("")` now throws, and incoming WebSocket + `transcript` / `audio` messages are validated before processing. + +### Changed + +- **`disconnect()` is now a full cleanup** — aborts in-flight LLM and TTS + streams, clears the speech queue, rejects pending queued inputs, and removes + socket listeners before closing. Previously it only called `socket.close()`. +- **`connect()` and `handleSocket()` are idempotent** — calling either when a + socket is already attached will cleanly tear down the old connection first + instead of leaking it. +- **`sendWebSocketMessage()` is resilient** — checks `socket.readyState` and + wraps `send()` in a try/catch so a socket that closes mid-send does not throw + an unhandled exception. +- **Speech queue completion uses a promise** — `processUserInput` now awaits a + `speechQueueDonePromise` instead of busy-wait polling + (`while (queue.length) { await sleep(100) }`), reducing CPU waste and + eliminating a race window. +- **`interruptSpeech()` resolves the speech-done promise** — so + `processUserInput` can proceed immediately after a barge-in instead of + potentially hanging. +- **WebSocket message handler uses `if/else if`** — prevents a single message + from accidentally matching multiple type branches. +- **Chunk ID wraps at `Number.MAX_SAFE_INTEGER`** — avoids unbounded counter + growth in very long-running sessions. +- **`processUserInput` catch block cleans up speech state** — on stream error + the pending text buffer is cleared and any in-progress speech is interrupted, + so the agent does not get stuck in a broken state. +- **WebSocket close handler calls `cleanupOnDisconnect()`** — aborts LLM + TTS, + clears queues, and rejects pending input promises. + +### Fixed + +- Typo in JSDoc: `"Process text deltra"` → `"Process text delta"`. + +## [0.0.1] - 2025-07-14 + +### Added + +- Initial release. +- Streaming text generation via AI SDK `streamText`. +- Multi-step tool calling with `stopWhen`. +- Chunked streaming TTS with parallel generation and barge-in support. +- Audio transcription via AI SDK `experimental_transcribe`. +- WebSocket transport with full stream/tool/speech lifecycle events. +- Browser voice client example (`example/voice-client.html`). diff --git a/README.md b/README.md index 11e6d6c..0bb7659 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,18 @@ # voice-agent-ai-sdk -Streaming voice/text agent SDK built on AI SDK with optional WebSocket transport. +Streaming voice/text agent SDK built on [AI SDK](https://sdk.vercel.ai/) with optional WebSocket transport. -## Current status +## Features -- Streaming text generation is implemented via `streamText`. -- Tool calling is supported in-stream. -- Speech synthesis is implemented with chunked streaming TTS. -- Audio transcription is supported (when `transcriptionModel` is configured). -- WebSocket protocol events are emitted for stream, tool, and speech lifecycle. +- **Streaming text generation** via AI SDK `streamText` with multi-step tool calling. +- **Chunked streaming TTS** — text is split at sentence boundaries and converted to speech in parallel as the LLM streams, giving low time-to-first-audio. +- **Audio transcription** via AI SDK `experimental_transcribe` (e.g. Whisper). +- **Barge-in / interruption** — user speech cancels both the in-flight LLM stream and pending TTS, saving tokens and latency. +- **Memory management** — configurable sliding-window on conversation history (`maxMessages`, `maxTotalChars`) and audio input size limits. +- **Serial request queue** — concurrent `sendText` / audio inputs are queued and processed one at a time, preventing race conditions. +- **Graceful lifecycle** — `disconnect()` aborts all in-flight work; `destroy()` permanently releases every resource. +- **WebSocket transport** with a full protocol of stream, tool, and speech lifecycle events. +- **Works without WebSocket** — call `sendText()` directly for text-only or server-side use. ## Prerequisites @@ -60,6 +64,12 @@ const agent = new VoiceAgent({ parallelGeneration: true, maxParallelRequests: 2, }, + // Memory management (new in 0.1.0) + history: { + maxMessages: 50, // keep last 50 messages + maxTotalChars: 100_000, // or trim when total chars exceed 100k + }, + maxAudioInputSize: 5 * 1024 * 1024, // 5 MB limit endpoint: process.env.VOICE_WS_ENDPOINT, tools: { getWeather: weatherTool }, }); @@ -86,40 +96,87 @@ if (process.env.VOICE_WS_ENDPOINT) { The agent accepts: -- `model` (required): chat model -- `transcriptionModel` (optional): STT model -- `speechModel` (optional): TTS model -- `instructions` (optional): system prompt -- `stopWhen` (optional): stopping condition -- `tools` (optional): AI SDK tools map -- `endpoint` (optional): WebSocket endpoint -- `voice` (optional): TTS voice, default `alloy` -- `speechInstructions` (optional): style instructions for TTS -- `outputFormat` (optional): audio format, default `mp3` -- `streamingSpeech` (optional): - - `minChunkSize` - - `maxChunkSize` - - `parallelGeneration` - - `maxParallelRequests` +| Option | Required | Default | Description | +|---|---|---|---| +| `model` | **yes** | — | AI SDK chat model (e.g. `openai("gpt-4o")`) | +| `transcriptionModel` | no | — | AI SDK transcription model (e.g. `openai.transcription("whisper-1")`) | +| `speechModel` | no | — | AI SDK speech model (e.g. `openai.speech("gpt-4o-mini-tts")`) | +| `instructions` | no | `"You are a helpful voice assistant."` | System prompt | +| `stopWhen` | no | `stepCountIs(5)` | Stopping condition for multi-step tool loops | +| `tools` | no | `{}` | AI SDK tools map | +| `endpoint` | no | — | Default WebSocket URL for `connect()` | +| `voice` | no | `"alloy"` | TTS voice | +| `speechInstructions` | no | — | Style instructions passed to the speech model | +| `outputFormat` | no | `"mp3"` | Audio output format (`mp3`, `opus`, `wav`, …) | +| `streamingSpeech` | no | see below | Streaming TTS chunk tuning | +| `history` | no | see below | Conversation memory limits | +| `maxAudioInputSize` | no | `10485760` (10 MB) | Maximum accepted audio input in bytes | -### Common methods +#### `streamingSpeech` -- `sendText(text)` – process text input (streamed response) -- `sendAudio(base64Audio)` – process base64 audio input -- `sendAudioBuffer(buffer)` – process raw audio buffer input -- `transcribeAudio(buffer)` – transcribe audio directly -- `generateAndSendSpeechFull(text)` – non-streaming TTS fallback -- `interruptSpeech(reason)` – interrupt streaming speech (barge‑in) -- `connect(url?)` / `handleSocket(ws)` – WebSocket usage +| Key | Default | Description | +|---|---|---| +| `minChunkSize` | `50` | Min characters before a sentence is sent to TTS | +| `maxChunkSize` | `200` | Max characters per chunk (force-split at clause boundary) | +| `parallelGeneration` | `true` | Start TTS for upcoming chunks while the current one plays | +| `maxParallelRequests` | `3` | Cap on concurrent TTS requests | -### Key events (from demo) +#### `history` -- `text` – user/assistant messages -- `chunk:text_delta` – streaming text deltas -- `chunk:tool_call` / `tool_result` – tool lifecycle -- `speech_start` / `speech_complete` / `speech_interrupted` -- `speech_chunk_queued` / `audio_chunk` / `audio` -- `connected` / `disconnected` +| Key | Default | Description | +|---|---|---| +| `maxMessages` | `100` | Max messages kept in history (0 = unlimited). Oldest are trimmed in pairs. | +| `maxTotalChars` | `0` (unlimited) | Max total characters across all messages. Oldest are trimmed when exceeded. | + +### Methods + +| Method | Description | +|---|---| +| `sendText(text)` | Process text input. Returns a promise with the full assistant response. Requests are queued serially. | +| `sendAudio(base64Audio)` | Transcribe base64 audio and process the result. | +| `sendAudioBuffer(buffer)` | Same as above, accepts a raw `Buffer` / `Uint8Array`. | +| `transcribeAudio(buffer)` | Transcribe audio to text without generating a response. | +| `generateAndSendSpeechFull(text)` | Non-streaming TTS fallback (entire text at once). | +| `interruptSpeech(reason?)` | Cancel in-flight TTS only (LLM stream keeps running). | +| `interruptCurrentResponse(reason?)` | Cancel **both** the LLM stream and TTS. Used for barge-in. | +| `connect(url?)` / `handleSocket(ws)` | Establish or attach a WebSocket. Safe to call multiple times. | +| `disconnect()` | Close the socket and abort all in-flight work. | +| `destroy()` | Permanently release all resources. The agent cannot be reused. | +| `clearHistory()` | Clear conversation history. | +| `getHistory()` / `setHistory(msgs)` | Read or restore conversation history. | +| `registerTools(tools)` | Merge additional tools into the agent. | + +### Read-only properties + +| Property | Type | Description | +|---|---|---| +| `connected` | `boolean` | Whether a WebSocket is connected | +| `processing` | `boolean` | Whether a request is currently being processed | +| `speaking` | `boolean` | Whether audio is currently being generated / sent | +| `pendingSpeechChunks` | `number` | Number of queued TTS chunks | +| `destroyed` | `boolean` | Whether `destroy()` has been called | + +### Events + +| Event | Payload | When | +|---|---|---| +| `text` | `{ role, text }` | User input received or full assistant response ready | +| `chunk:text_delta` | `{ id, text }` | Each streaming text token from the LLM | +| `chunk:reasoning_delta` | `{ id, text }` | Each reasoning token (models that support it) | +| `chunk:tool_call` | `{ toolName, toolCallId, input }` | Tool invocation detected | +| `tool_result` | `{ name, toolCallId, result }` | Tool execution finished | +| `speech_start` | `{ streaming }` | TTS generation begins | +| `speech_complete` | `{ streaming }` | All TTS chunks sent | +| `speech_interrupted` | `{ reason }` | Speech was cancelled (barge-in, disconnect, error) | +| `speech_chunk_queued` | `{ id, text }` | A text chunk entered the TTS queue | +| `audio_chunk` | `{ chunkId, data, format, text, uint8Array }` | One TTS chunk is ready | +| `audio` | `{ data, format, uint8Array }` | Full non-streaming TTS audio | +| `transcription` | `{ text, language }` | Audio transcription result | +| `audio_received` | `{ size }` | Raw audio input received (before transcription) | +| `history_trimmed` | `{ removedCount, reason }` | Oldest messages evicted from history | +| `connected` / `disconnected` | — | WebSocket lifecycle | +| `warning` | `string` | Non-fatal issues (empty input, etc.) | +| `error` | `Error` | Errors from LLM, TTS, transcription, or WebSocket | ## Run (text-only check) @@ -131,13 +188,13 @@ Expected logs include `text`, `chunk:text_delta`, tool events, and speech chunk ## Run (WebSocket check) -1. Start local WS server: +1. Start the local WS server: - pnpm ws:server + pnpm ws:server -2. In another terminal, run demo: +2. In another terminal, run the demo: - pnpm demo + pnpm demo The demo will: - run `sendText()` first (text-only sanity check), then diff --git a/example/ws-server-2.ts b/example/ws-server-2.ts index 9948a85..112ee0a 100644 --- a/example/ws-server-2.ts +++ b/example/ws-server-2.ts @@ -96,10 +96,16 @@ Use tools when needed to provide accurate information.`, console.log(`[ws-server] 🔊 Audio chunk #${chunkId}: ${uint8Array.length} bytes (${format})`); }); + agent.on("history_trimmed", ({ removedCount, reason }: { removedCount: number; reason: string }) => { + console.log(`[ws-server] 🧹 History trimmed: removed ${removedCount} messages (${reason})`); + }); + agent.on("error", (err: Error) => console.error("[ws-server] ❌ Error:", err.message)); agent.on("disconnected", () => { - console.log("[ws-server] ✗ client disconnected\n"); + // Permanently release all agent resources for this connection + agent.destroy(); + console.log("[ws-server] ✗ client disconnected (agent destroyed)\n"); }); // Hand the accepted socket to the agent – this is the key line. diff --git a/example/ws-server.ts b/example/ws-server.ts index a8537f8..a362eaf 100644 --- a/example/ws-server.ts +++ b/example/ws-server.ts @@ -116,10 +116,16 @@ Use tools when needed to provide accurate information.`, console.log(`[ws-server] 🔊 Queued speech chunk #${id}: ${text.substring(0, 50)}...`); }); + agent.on("history_trimmed", ({ removedCount, reason }: { removedCount: number; reason: string }) => { + console.log(`[ws-server] 🧹 History trimmed: removed ${removedCount} messages (${reason})`); + }); + agent.on("error", (err: Error) => console.error("[ws-server] ❌ Error:", err.message)); agent.on("disconnected", () => { - console.log("[ws-server] ✗ client disconnected\n"); + // Permanently release all agent resources for this connection + agent.destroy(); + console.log("[ws-server] ✗ client disconnected (agent destroyed)\n"); }); // Hand the accepted socket to the agent – this is the key line. diff --git a/output.mp3 b/output.mp3 deleted file mode 100644 index f1fe13f8b81095c40dfda3e69056fedca81de428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49920 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¢fkUWhVO;p0R*qGd9TuM6hy^7YEIF*vwjlCU@aRS->FT7f z*@+UkR=CNW%_PvBQp@*Z;~5_sgIQP3g5?U=-b;vQNTNZ<5A+pBrY!OrBw5;}k6lXt z9ucWUe!ce`N-OP>CZi=p4|D5$(c+x|N{m~X%_nI%15Ttk_NXFnh`;2pbokx@vlH&L z&*^?wSCknpV!C2n$M(@^p<+OzAgb0{D0=o)O1f#UDi(#>B8uL9Od^(uAksSJDE4&y6!_rHnY; z#JGJlXLJ8Jzr{k5U!=1s*^*)`t5~uj#%()@-On69iWgOT$2^Yt9b&ljD&gRP>x(yE zSKW7O|6BV1SN&N%<-eWc&t{8HXuwWUxwyPxZo3?~WJIJtB^o-#7)e?rXC(1ZlA^&G z+H_zTBPMv!&S6*O^j4rwJ#BzM*;m-ipJOWdR#@{eTJs}M0cJL#V|_oDaQaRHkhSPs zQRTekQgdh#ac*|^oof>`&aF+Ui}v~EB(2)n)ois4Aska zut#h%Lijoqi?t-}ZLM;E&qj;_iQ6)M4JXS{XSNQu-`$Ao`=)^kwE56Xd@p}{O$B|+ z#squH>b;T{?$hu?tM%>Ue6DOmmyEmn+mbOJY%6XX6(iYNrtfUKB{N;l#WK0GQ1_)(?&1kxg4RY z(oFtfpR{*Kcz9bl&~eLC{%OG_|Ed2Di~sQdfmPqhF#;I4k#&}jAg88A4K4wN4O{#i z0vg5gBj9u}n!G8i7oj(Kl1E z=IAI2k)&aQ>!Yszk{Anx7$U6iXQ{#`J)20kir&uMx3V6!I>O#qL!r!5%huS2P??gX zfj7pA_D~H%`9UA*IC;%j7v3)zJU+u9q45ZQtH>SK9Br+Le=A6Cp%#-<>XERle`*AO zI-cde6x9R|jEq3gL(V0ouDc*P4R1m5$_Ih7QWOk%=hXH!lH%p{#UXM{k%QM$9*%YC zVy2FpVZ{%-IJ0jBOUS8c-3>Q*%3ZR61eMqBJhI>o=^2IKhTll%7mO5jh5z(_DH?mA zk+jjnK46H^kL8=e5+O&lXfZ!frwK z4_UWu@=)tlTDj{3@tcos=b`R@st>wRVkGwTdmN=lR}L;tBSK7$*D(?cdy^fll+fd3 zviI8LshD<)Qxw_TxY;s_fmBlJZpO2u!D)w9MnXU%F_&ab4@XH+f{_U7TO6nn|RDVcDgoIUwgGRb7_qd5NDTmc@qc&4%ymeRWQMZo=B)eHN*u#ryA-TrC^=B&xmxHhC4= zqWo9Eo&)2+_(kOnWMh%Y^U?srhG@o*owoHQT2n3{vcR$godh^e3iSZd#UKg}<_SjR zs(f3}b=Ote)XQ~eCz!1Z=+^Fq#%hpWkvCB752A+8>8{fOv~+aTg6B`olS}#9odgF; zlX+4YxO|u0O0I|z{FQ=4koZykIyzcf;;9T zU=Idp!FmRuvY2|A-3-Dy46RJK8FdB|J#58J_J=sz3*0W+iorW?Gcp)25cN?%>@E*W zh*{#Eiv&U-%+fDpWd?I`q1(_jf%E%0A(wklDRRudQ@Xg{Du%z>l;ZCg9O&^cy+!nQ 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 diff --git a/package.json b/package.json index 7ea31fc..2bfe99e 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "voice-agent-ai-sdk", - "version": "0.0.1", + "version": "0.1.0", "description": "Voice AI Agent with ai-sdk", "main": "src/index.ts", "scripts": { "build": "tsc", "dev": "tsc -w", "demo": "tsx example/demo.ts", - "ws:server": "tsx example/ws-server.ts", + "ws:server": "tsx example/ws-server-2.ts", "prepublishOnly": "pnpm build" }, "keywords": [ diff --git a/src/VoiceAgent.ts b/src/VoiceAgent.ts index b447e66..003a8e3 100644 --- a/src/VoiceAgent.ts +++ b/src/VoiceAgent.ts @@ -35,6 +35,19 @@ interface StreamingSpeechConfig { maxParallelRequests: number; } +/** + * Configuration for conversation history memory management + */ +interface HistoryConfig { + /** Maximum number of messages to keep in history. When exceeded, oldest messages are trimmed. Set to 0 for unlimited. */ + maxMessages: number; + /** Maximum total character count across all messages. When exceeded, oldest messages are trimmed. Set to 0 for unlimited. */ + maxTotalChars: number; +} + +/** Default maximum audio input size (10 MB) */ +const DEFAULT_MAX_AUDIO_SIZE = 10 * 1024 * 1024; + export interface VoiceAgentOptions { model: LanguageModel; // AI SDK Model for chat (e.g., openai('gpt-4o')) transcriptionModel?: TranscriptionModel; // AI SDK Transcription Model (e.g., openai.transcription('whisper-1')) @@ -48,6 +61,10 @@ export interface VoiceAgentOptions { outputFormat?: string; // Audio output format (e.g., 'mp3', 'opus', 'wav') /** Configuration for streaming speech generation */ streamingSpeech?: Partial; + /** Configuration for conversation history memory limits */ + history?: Partial; + /** Maximum audio input size in bytes (default: 10 MB) */ + maxAudioInputSize?: number; } export class VoiceAgent extends EventEmitter { @@ -65,6 +82,18 @@ export class VoiceAgent extends EventEmitter { private speechInstructions?: string; private outputFormat: string; private isProcessing = false; + private isDestroyed = false; + + // Concurrency: queue incoming requests so they run serially + private inputQueue: Array<{ text: string; resolve: (v: string) => void; reject: (e: unknown) => void }> = []; + private processingQueue = false; + + // Abort controller for the current LLM stream so we can cancel it on interrupt/disconnect + private currentStreamAbortController?: AbortController; + + // Memory management + private historyConfig: HistoryConfig; + private maxAudioInputSize: number; // Streaming speech state private streamingSpeechConfig: StreamingSpeechConfig; @@ -74,6 +103,10 @@ export class VoiceAgent extends EventEmitter { private isSpeaking = false; private pendingTextBuffer = ""; + // Promise-based signal for speech queue completion (replaces busy-wait polling) + private speechQueueDonePromise?: Promise; + private speechQueueDoneResolve?: () => void; + constructor(options: VoiceAgentOptions) { super(); this.model = options.model; @@ -86,6 +119,7 @@ export class VoiceAgent extends EventEmitter { this.voice = options.voice || "alloy"; this.speechInstructions = options.speechInstructions; this.outputFormat = options.outputFormat || "mp3"; + this.maxAudioInputSize = options.maxAudioInputSize ?? DEFAULT_MAX_AUDIO_SIZE; if (options.tools) { this.tools = { ...options.tools }; } @@ -98,6 +132,22 @@ export class VoiceAgent extends EventEmitter { maxParallelRequests: 3, ...options.streamingSpeech, }; + + // Initialize history config with defaults + this.historyConfig = { + maxMessages: 100, + maxTotalChars: 0, // unlimited by default + ...options.history, + }; + } + + /** + * Ensure the agent has not been destroyed. Throws if it has. + */ + private ensureNotDestroyed(): void { + if (this.isDestroyed) { + throw new Error("VoiceAgent has been destroyed and cannot be used"); + } } private setupListeners() { @@ -109,23 +159,27 @@ export class VoiceAgent extends EventEmitter { // Handle transcribed text from the client/STT if (message.type === "transcript") { - // Interrupt ongoing speech when user starts speaking (barge-in) - if (this.isSpeaking) { - this.interruptSpeech("user_speaking"); + if (typeof message.text !== "string" || !message.text.trim()) { + this.emit("warning", "Received empty or invalid transcript message"); + return; } - await this.processUserInput(message.text); + // Interrupt ongoing speech when user starts speaking (barge-in) + this.interruptCurrentResponse("user_speaking"); + await this.enqueueInput(message.text); } // Handle raw audio data that needs transcription - if (message.type === "audio") { - // Interrupt ongoing speech when user starts speaking (barge-in) - if (this.isSpeaking) { - this.interruptSpeech("user_speaking"); + else if (message.type === "audio") { + if (typeof message.data !== "string" || !message.data) { + this.emit("warning", "Received empty or invalid audio message"); + return; } + // Interrupt ongoing speech when user starts speaking (barge-in) + this.interruptCurrentResponse("user_speaking"); await this.processAudioInput(message.data); } // Handle explicit interrupt request from client - if (message.type === "interrupt") { - this.interruptSpeech(message.reason || "client_request"); + else if (message.type === "interrupt") { + this.interruptCurrentResponse(message.reason || "client_request"); } } catch (err) { console.error("Failed to process message:", err); @@ -136,6 +190,8 @@ export class VoiceAgent extends EventEmitter { this.socket.on("close", () => { console.log("Disconnected"); this.isConnected = false; + // Clean up all in-flight work when the socket closes + this.cleanupOnDisconnect(); this.emit("disconnected"); }); @@ -145,6 +201,39 @@ export class VoiceAgent extends EventEmitter { }); } + /** + * Clean up all in-flight state when the connection drops. + */ + private cleanupOnDisconnect(): void { + // Abort ongoing LLM stream + if (this.currentStreamAbortController) { + this.currentStreamAbortController.abort(); + this.currentStreamAbortController = undefined; + } + // Abort ongoing speech generation + if (this.currentSpeechAbortController) { + this.currentSpeechAbortController.abort(); + this.currentSpeechAbortController = undefined; + } + // Clear speech state + this.speechChunkQueue = []; + this.pendingTextBuffer = ""; + this.isSpeaking = false; + this.isProcessing = false; + // Resolve any pending speech-done waiters + if (this.speechQueueDoneResolve) { + this.speechQueueDoneResolve(); + this.speechQueueDoneResolve = undefined; + this.speechQueueDonePromise = undefined; + } + // Reject any queued inputs + for (const item of this.inputQueue) { + item.reject(new Error("Connection closed")); + } + this.inputQueue = []; + this.processingQueue = false; + } + public registerTools(tools: Record) { this.tools = { ...this.tools, ...tools }; } @@ -195,7 +284,8 @@ export class VoiceAgent extends EventEmitter { } /** - * Interrupt ongoing speech generation and playback (barge-in support) + * Interrupt ongoing speech generation and playback (barge-in support). + * This only interrupts TTS — the LLM stream is left running. */ public interruptSpeech(reason: string = "interrupted"): void { if (!this.isSpeaking && this.speechChunkQueue.length === 0) { @@ -213,6 +303,13 @@ export class VoiceAgent extends EventEmitter { this.pendingTextBuffer = ""; this.isSpeaking = false; + // Resolve any pending speech-done waiters so processUserInput can finish + if (this.speechQueueDoneResolve) { + this.speechQueueDoneResolve(); + this.speechQueueDoneResolve = undefined; + this.speechQueueDonePromise = undefined; + } + // Notify clients to stop audio playback this.sendWebSocketMessage({ type: "speech_interrupted", @@ -222,6 +319,20 @@ export class VoiceAgent extends EventEmitter { this.emit("speech_interrupted", { reason }); } + /** + * Interrupt both the current LLM stream and ongoing speech. + * Use this for barge-in scenarios where the entire response should be cancelled. + */ + public interruptCurrentResponse(reason: string = "interrupted"): void { + // Abort the LLM stream first + if (this.currentStreamAbortController) { + this.currentStreamAbortController.abort(); + this.currentStreamAbortController = undefined; + } + // Then interrupt speech + this.interruptSpeech(reason); + } + /** * Extract complete sentences from text buffer * Returns [extractedSentences, remainingBuffer] @@ -272,17 +383,68 @@ export class VoiceAgent extends EventEmitter { return [sentences, remaining]; } + /** + * Trim conversation history to stay within configured limits. + * Removes oldest messages (always in pairs to preserve user/assistant turns). + */ + private trimHistory(): void { + const { maxMessages, maxTotalChars } = this.historyConfig; + + // Trim by message count + if (maxMessages > 0 && this.conversationHistory.length > maxMessages) { + const excess = this.conversationHistory.length - maxMessages; + // Remove from the front, ensuring we remove at least `excess` messages + // Round up to even number to preserve turn pairs + const toRemove = excess % 2 === 0 ? excess : excess + 1; + this.conversationHistory.splice(0, toRemove); + this.emit("history_trimmed", { removedCount: toRemove, reason: "max_messages" }); + } + + // Trim by total character count + if (maxTotalChars > 0) { + let totalChars = this.conversationHistory.reduce((sum, msg) => { + const content = typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content); + return sum + content.length; + }, 0); + + let removedCount = 0; + while (totalChars > maxTotalChars && this.conversationHistory.length > 2) { + const removed = this.conversationHistory.shift(); + if (removed) { + const content = typeof removed.content === "string" ? removed.content : JSON.stringify(removed.content); + totalChars -= content.length; + removedCount++; + } + } + if (removedCount > 0) { + this.emit("history_trimmed", { removedCount, reason: "max_total_chars" }); + } + } + } + /** * Queue a text chunk for speech generation */ private queueSpeechChunk(text: string): void { if (!this.speechModel || !text.trim()) return; + // Wrap chunk ID to prevent unbounded growth in very long sessions + if (this.nextChunkId >= Number.MAX_SAFE_INTEGER) { + this.nextChunkId = 0; + } + const chunk: SpeechChunk = { id: this.nextChunkId++, text: text.trim(), }; + // Create the speech-done promise if not already present + if (!this.speechQueueDonePromise) { + this.speechQueueDonePromise = new Promise((resolve) => { + this.speechQueueDoneResolve = resolve; + }); + } + // Start generating audio immediately (parallel generation) if (this.streamingSpeechConfig.parallelGeneration) { const activeRequests = this.speechChunkQueue.filter(c => c.audioPromise).length; @@ -395,14 +557,21 @@ export class VoiceAgent extends EventEmitter { this.isSpeaking = false; this.currentSpeechAbortController = undefined; + // Signal that the speech queue is fully drained + if (this.speechQueueDoneResolve) { + this.speechQueueDoneResolve(); + this.speechQueueDoneResolve = undefined; + this.speechQueueDonePromise = undefined; + } + this.sendWebSocketMessage({ type: "speech_stream_end" }); this.emit("speech_complete", { streaming: true }); } } /** - * Process text deltra for streaming speech - * Call this as text chunks arrive from LLM + * Process text delta for streaming speech. + * Call this as text chunks arrive from LLM. */ private processTextForStreamingSpeech(textDelta: string): void { if (!this.speechModel) return; @@ -439,12 +608,28 @@ export class VoiceAgent extends EventEmitter { try { const audioBuffer = Buffer.from(base64Audio, "base64"); + + // Validate audio size to prevent memory issues + if (audioBuffer.length > this.maxAudioInputSize) { + const sizeMB = (audioBuffer.length / (1024 * 1024)).toFixed(1); + const maxMB = (this.maxAudioInputSize / (1024 * 1024)).toFixed(1); + this.emit("error", new Error( + `Audio input too large (${sizeMB} MB). Maximum allowed: ${maxMB} MB` + )); + return; + } + + if (audioBuffer.length === 0) { + this.emit("warning", "Received empty audio data"); + return; + } + this.emit("audio_received", { size: audioBuffer.length }); const transcribedText = await this.transcribeAudio(audioBuffer); if (transcribedText.trim()) { - await this.processUserInput(transcribedText); + await this.enqueueInput(transcribedText); } } catch (error) { console.error("Failed to process audio input:", error); @@ -453,6 +638,13 @@ export class VoiceAgent extends EventEmitter { } public async connect(url?: string): Promise { + this.ensureNotDestroyed(); + + // Clean up any existing connection first + if (this.socket) { + this.disconnectSocket(); + } + return new Promise((resolve, reject) => { try { // Use provided URL, configured endpoint, or default URL @@ -481,6 +673,13 @@ export class VoiceAgent extends EventEmitter { * agent to handle messages on that socket. */ public handleSocket(socket: WebSocket): void { + this.ensureNotDestroyed(); + + // Clean up any existing connection first + if (this.socket) { + this.disconnectSocket(); + } + this.socket = socket; this.isConnected = true; this.setupListeners(); @@ -488,10 +687,15 @@ export class VoiceAgent extends EventEmitter { } /** - * Send text input for processing (bypasses transcription) + * Send text input for processing (bypasses transcription). + * Requests are queued and processed serially to prevent race conditions. */ public async sendText(text: string): Promise { - return this.processUserInput(text); + this.ensureNotDestroyed(); + if (!text || !text.trim()) { + throw new Error("Text input cannot be empty"); + } + return this.enqueueInput(text); } /** @@ -499,6 +703,7 @@ export class VoiceAgent extends EventEmitter { * @param audioData Base64 encoded audio data */ public async sendAudio(audioData: string): Promise { + this.ensureNotDestroyed(); await this.processAudioInput(audioData); } @@ -506,26 +711,65 @@ export class VoiceAgent extends EventEmitter { * Send raw audio buffer to be transcribed and processed */ public async sendAudioBuffer(audioBuffer: Buffer | Uint8Array): Promise { + this.ensureNotDestroyed(); const base64Audio = Buffer.from(audioBuffer).toString("base64"); await this.processAudioInput(base64Audio); } /** - * Process user input with streaming text generation - * Handles the full pipeline: text -> LLM (streaming) -> TTS -> WebSocket + * Enqueue a text input for serial processing. + * This ensures only one processUserInput runs at a time, preventing + * race conditions on conversationHistory, fullText accumulation, etc. + */ + private enqueueInput(text: string): Promise { + return new Promise((resolve, reject) => { + this.inputQueue.push({ text, resolve, reject }); + this.drainInputQueue(); + }); + } + + /** + * Drain the input queue, processing one request at a time. + */ + private async drainInputQueue(): Promise { + if (this.processingQueue) return; + this.processingQueue = true; + + try { + while (this.inputQueue.length > 0) { + const item = this.inputQueue.shift()!; + try { + const result = await this.processUserInput(item.text); + item.resolve(result); + } catch (error) { + item.reject(error); + } + } + } finally { + this.processingQueue = false; + } + } + + /** + * Process user input with streaming text generation. + * Handles the full pipeline: text -> LLM (streaming) -> TTS -> WebSocket. + * + * This method is designed to be called serially via drainInputQueue(). */ private async processUserInput(text: string): Promise { - if (this.isProcessing) { - this.emit("warning", "Already processing a request, queuing..."); - } this.isProcessing = true; + // Create an abort controller for this LLM stream so it can be cancelled + this.currentStreamAbortController = new AbortController(); + const streamAbortSignal = this.currentStreamAbortController.signal; + try { // Emit text event for incoming user input this.emit("text", { role: "user", text }); - // Add user message to conversation history + // Add user message to conversation history and trim if needed this.conversationHistory.push({ role: "user", content: text }); + this.trimHistory(); // Use streamText for streaming responses with tool support const result = streamText({ @@ -534,6 +778,7 @@ export class VoiceAgent extends EventEmitter { messages: this.conversationHistory, tools: this.tools, stopWhen: this.stopWhen, + abortSignal: streamAbortSignal, onChunk: ({ chunk }) => { // Emit streaming chunks for real-time updates // Note: onChunk only receives a subset of stream events @@ -782,18 +1027,19 @@ export class VoiceAgent extends EventEmitter { } } - // Add assistant response to conversation history + // Add assistant response to conversation history and trim if (fullText) { this.conversationHistory.push({ role: "assistant", content: fullText }); + this.trimHistory(); } // Ensure any remaining speech is flushed (in case text-end wasn't triggered) this.flushStreamingSpeech(); - // Wait for all speech chunks to complete before signaling response complete - // This ensures audio playback can finish - while (this.speechChunkQueue.length > 0 || this.isSpeaking) { - await new Promise(resolve => setTimeout(resolve, 100)); + // Wait for all speech chunks to complete using promise-based signaling + // (replaces the previous busy-wait polling loop) + if (this.speechQueueDonePromise) { + await this.speechQueueDonePromise; } // Send the complete response @@ -808,8 +1054,16 @@ export class VoiceAgent extends EventEmitter { }); return fullText; + } catch (error) { + // Clean up speech state on error so the agent isn't stuck in a broken state + this.pendingTextBuffer = ""; + if (this.speechChunkQueue.length > 0 || this.isSpeaking) { + this.interruptSpeech("stream_error"); + } + throw error; } finally { this.isProcessing = false; + this.currentStreamAbortController = undefined; } } @@ -848,11 +1102,20 @@ export class VoiceAgent extends EventEmitter { } /** - * Send a message via WebSocket if connected + * Send a message via WebSocket if connected. + * Gracefully handles send failures (e.g., socket closing mid-send). */ private sendWebSocketMessage(message: Record): void { - if (this.socket && this.isConnected) { - this.socket.send(JSON.stringify(message)); + if (!this.socket || !this.isConnected) return; + + try { + if (this.socket.readyState === WebSocket.OPEN) { + this.socket.send(JSON.stringify(message)); + } + } catch (error) { + // Socket may have closed between the readyState check and send() + console.error("Failed to send WebSocket message:", error); + this.emit("error", error); } } @@ -895,14 +1158,44 @@ export class VoiceAgent extends EventEmitter { } /** - * Disconnect from WebSocket + * Internal helper to close and clean up the current socket. + */ + private disconnectSocket(): void { + if (!this.socket) return; + + // Stop all in-flight work tied to this connection + this.cleanupOnDisconnect(); + + try { + this.socket.removeAllListeners(); + if (this.socket.readyState === WebSocket.OPEN || + this.socket.readyState === WebSocket.CONNECTING) { + this.socket.close(); + } + } catch { + // Ignore close errors — socket may already be dead + } + this.socket = undefined; + this.isConnected = false; + } + + /** + * Disconnect from WebSocket and stop all in-flight work. */ disconnect() { - if (this.socket) { - this.socket.close(); - this.socket = undefined; - this.isConnected = false; - } + this.disconnectSocket(); + } + + /** + * Permanently destroy the agent, releasing all resources. + * After calling this, the agent cannot be reused. + */ + destroy() { + this.isDestroyed = true; + this.disconnectSocket(); + this.conversationHistory = []; + this.tools = {}; + this.removeAllListeners(); } /** @@ -932,4 +1225,11 @@ export class VoiceAgent extends EventEmitter { get pendingSpeechChunks(): number { return this.speechChunkQueue.length; } + + /** + * Check if agent has been permanently destroyed + */ + get destroyed(): boolean { + return this.isDestroyed; + } }