@llmrtc/llmrtc-core 1.0.0 → 1.1.0

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/CHANGELOG.md ADDED
@@ -0,0 +1,29 @@
1
+ # @llmrtc/llmrtc-core
2
+
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8ff3ea3: Correctness release: make the advertised behavior actually work end to end.
8
+ - Core: system prompt is always sent and pinned outside the history window;
9
+ runTurnStream accepts an AbortSignal (barge-in); onLLMEnd has real
10
+ guardrail semantics; concurrent turns serialize correctly; clearHistory
11
+ transitions clear conversation history; PlaybookHooks are wired; tool
12
+ executor abort/ordering fixes; deep tool-argument validation.
13
+ - Providers: multi-turn tool calling now works across OpenAI, Anthropic,
14
+ Gemini, Bedrock, OpenRouter, LMStudio, and Ollama (history replay,
15
+ parallel tool results, streaming accumulation); malformed tool arguments
16
+ are flagged instead of silently becoming {}; Bedrock defaults to an
17
+ invocable inference profile; Ollama NDJSON streaming is buffered
18
+ correctly; ElevenLabs format mapping fixed; Whisper uploads are named by
19
+ their actual container.
20
+ - Backend: turns serialize per connection and barge-in aborts the in-flight
21
+ turn in any phase; session reconnection binds the recovered history;
22
+ Metered TURN credentials refresh on a TTL; start()/stop() lifecycle
23
+ fixes; real-time audio pacing.
24
+ - Web client: vision frames are delivered in time to reach the turn;
25
+ session resume follows the protocol and actually restores history;
26
+ close()/failure releases the microphone and camera; frame capture works
27
+ outside Chromium; non-WebRTC fallback (sendAudio/ttsChunk) is usable.
28
+ - Packaging: packages resolve under require(), clean checkouts build first
29
+ try, and npm tarballs ship the NOTICE file.
package/NOTICE ADDED
@@ -0,0 +1,7 @@
1
+ LLMRTC
2
+ Copyright 2025 Next Path Software Consulting Inc., dba Metered
3
+
4
+ This product includes software developed by Next Path Software Consulting Inc., dba Metered.
5
+
6
+ Project home: https://www.llmrtc.org/
7
+ Company: https://www.metered.ca/
package/dist/hooks.d.ts CHANGED
@@ -123,8 +123,12 @@ export interface OrchestratorHooks {
123
123
  */
124
124
  onLLMChunk?(ctx: TurnContext, chunk: LLMChunk, chunkIndex: number): void | Promise<void>;
125
125
  /**
126
- * Called when LLM inference completes successfully
127
- * Use this hook for content guardrails - throw an error to cancel the response
126
+ * Called when LLM inference completes successfully.
127
+ * Use this hook for content guardrails: throwing cancels the response -
128
+ * it is not committed to history, no further TTS is produced, and the
129
+ * turn fails with the thrown error. Note that with streaming TTS enabled,
130
+ * audio for sentences generated before the hook ran may already have been
131
+ * emitted.
128
132
  * @param ctx - Turn context
129
133
  * @param result - Complete LLM response
130
134
  * @param timing - LLM operation duration
@@ -264,9 +268,7 @@ export interface PlaybookContext {
264
268
  *
265
269
  * @example
266
270
  * ```typescript
267
- * const orchestrator = new PlaybookOrchestrator({
268
- * llm,
269
- * playbook,
271
+ * const orchestrator = new PlaybookOrchestrator(llm, playbook, registry, {
270
272
  * hooks: {
271
273
  * onStageEnter(ctx, stage) {
272
274
  * console.log(`Entered stage: ${stage.name}`);
@@ -338,7 +340,9 @@ export declare function createErrorContext(code: ErrorCode, component: ErrorCont
338
340
  }): ErrorContext;
339
341
  /**
340
342
  * Safely call an async hook without blocking
341
- * Errors are caught and logged but don't propagate
343
+ * Errors are caught and logged but don't propagate.
344
+ * Note: orchestrators intentionally do NOT use this for onLLMEnd - that hook
345
+ * has guardrail semantics and a throw from it aborts the turn.
342
346
  * @param hook - The hook function to call
343
347
  * @param args - Arguments to pass to the hook
344
348
  */
package/dist/hooks.js CHANGED
@@ -34,7 +34,9 @@ export function createErrorContext(code, component, options) {
34
34
  }
35
35
  /**
36
36
  * Safely call an async hook without blocking
37
- * Errors are caught and logged but don't propagate
37
+ * Errors are caught and logged but don't propagate.
38
+ * Note: orchestrators intentionally do NOT use this for onLLMEnd - that hook
39
+ * has guardrail semantics and a throw from it aborts the turn.
38
40
  * @param hook - The hook function to call
39
41
  * @param args - Arguments to pass to the hook
40
42
  */
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA6YH,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,OAAe;IACjE,OAAO;QACL,SAAS;QACT,OAAO;QACP,UAAU,EAAE,OAAO,GAAG,SAAS;KAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAe,EACf,SAAoC,EACpC,OAIC;IAED,OAAO;QACL,IAAI;QACJ,SAAS;QACT,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,OAAO,EAAE,OAAO,EAAE,OAAO;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAwD,EACxD,GAAG,IAAO;IAEV,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+YH,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,OAAe;IACjE,OAAO;QACL,SAAS;QACT,OAAO;QACP,UAAU,EAAE,OAAO,GAAG,SAAS;KAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAe,EACf,SAAoC,EACpC,OAIC;IAED,OAAO;QACL,IAAI;QACJ,SAAS;QACT,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,OAAO,EAAE,OAAO,EAAE,OAAO;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAwD,EACxD,GAAG,IAAO;IAEV,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC"}
@@ -90,7 +90,12 @@ export function createLoggingHooks(config = {}) {
90
90
  logger.debug(formatted);
91
91
  break;
92
92
  case 'info':
93
- logger.info ? logger.info(formatted) : logger.log(formatted);
93
+ if (logger.info) {
94
+ logger.info(formatted);
95
+ }
96
+ else {
97
+ logger.log(formatted);
98
+ }
94
99
  break;
95
100
  case 'warn':
96
101
  logger.warn(formatted);
@@ -1 +1 @@
1
- {"version":3,"file":"logging-hooks.js","sourceRoot":"","sources":["../src/logging-hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logging-hooks.js","sourceRoot":"","sources":["../src/logging-hooks.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,10 @@ export declare class ConversationOrchestrator {
45
45
  *
46
46
  * Hooks and metrics are called throughout the turn lifecycle.
47
47
  */
48
- runTurnStream(audio: Buffer, attachments?: VisionAttachment[]): AsyncGenerator<OrchestratorYield, void, unknown>;
48
+ runTurnStream(audio: Buffer, attachments?: VisionAttachment[], options?: {
49
+ signal?: AbortSignal;
50
+ }): AsyncGenerator<OrchestratorYield, void, unknown>;
51
+ private runTurnStreamInternal;
49
52
  /**
50
53
  * Split text into sentences using custom chunker or default regex
51
54
  */
@@ -60,14 +63,14 @@ export declare class ConversationOrchestrator {
60
63
  */
61
64
  private generateTTSWithHooks;
62
65
  /**
63
- * @deprecated Use streamTTSChunksWithHooks instead
64
- * Stream TTS chunks for a sentence using PCM format.
66
+ * Ensure the system prompt is seeded as the first history message.
65
67
  */
66
- private streamTTSChunks;
68
+ private ensureSystemMessage;
67
69
  /**
68
- * @deprecated Use generateTTSWithHooks instead
69
- * Non-streaming TTS: generates complete audio and yields as single TTSResult.
70
+ * Build the message window for an LLM request.
71
+ * The system message is always included and does not consume history slots,
72
+ * so long conversations never lose the assistant's instructions.
70
73
  */
71
- private generateTTS;
74
+ private buildRequestMessages;
72
75
  private pushHistory;
73
76
  }
@@ -100,12 +100,10 @@ export class ConversationOrchestrator {
100
100
  content: transcript.text,
101
101
  attachments: attachments.length ? attachments : undefined
102
102
  };
103
- if (this.systemPrompt && !this.history.length) {
104
- this.history.push({ role: 'system', content: this.systemPrompt });
105
- }
103
+ this.ensureSystemMessage();
106
104
  this.pushHistory(userMessage);
107
105
  const llmRequest = {
108
- messages: this.history.slice(-this.historyLimit),
106
+ messages: this.buildRequestMessages(),
109
107
  config: {
110
108
  systemPrompt: this.systemPrompt,
111
109
  historyLimit: this.historyLimit,
@@ -132,7 +130,8 @@ export class ConversationOrchestrator {
132
130
  *
133
131
  * Hooks and metrics are called throughout the turn lifecycle.
134
132
  */
135
- async *runTurnStream(audio, attachments = []) {
133
+ async *runTurnStream(audio, attachments = [], options) {
134
+ const signal = options?.signal;
136
135
  // Generate turn context
137
136
  const turnStartTime = Date.now();
138
137
  const ctx = {
@@ -140,6 +139,31 @@ export class ConversationOrchestrator {
140
139
  sessionId: this.sessionId,
141
140
  startTime: turnStartTime
142
141
  };
142
+ let errored = false;
143
+ let turnEnded = false;
144
+ const endTurn = async () => {
145
+ if (turnEnded)
146
+ return;
147
+ turnEnded = true;
148
+ const turnTiming = createTimingInfo(turnStartTime, Date.now());
149
+ this.metrics.timing(MetricNames.TURN_DURATION, turnTiming.durationMs);
150
+ await callHookSafe(this.hooks.onTurnEnd, ctx, turnTiming);
151
+ };
152
+ try {
153
+ yield* this.runTurnStreamInternal(ctx, audio, attachments, signal, () => {
154
+ errored = true;
155
+ });
156
+ }
157
+ finally {
158
+ // Runs on normal completion, barge-in abort, and consumer abandonment,
159
+ // so turn metrics and onTurnEnd are never skipped. Errors keep the
160
+ // previous semantics: the turn ends without onTurnEnd.
161
+ if (!errored) {
162
+ await endTurn();
163
+ }
164
+ }
165
+ }
166
+ async *runTurnStreamInternal(ctx, audio, attachments, signal, markErrored) {
143
167
  // Call onTurnStart hook
144
168
  await callHookSafe(this.hooks.onTurnStart, ctx, audio);
145
169
  // -------------------------------------------------------------------------
@@ -160,12 +184,22 @@ export class ConversationOrchestrator {
160
184
  const err = error instanceof Error ? error : new Error(String(error));
161
185
  await callHookSafe(this.hooks.onSTTError, ctx, err);
162
186
  this.metrics.increment(MetricNames.ERRORS, 1, { component: 'stt' });
187
+ markErrored();
163
188
  throw error;
164
189
  }
165
- this.pushHistory({ role: 'user', content: transcript.text, attachments: attachments.length ? attachments : undefined });
166
190
  yield transcript;
191
+ // Empty transcript guard: VAD misfires and silent audio produce empty
192
+ // text - don't burn an LLM/TTS round trip or pollute history with it.
193
+ if (!transcript.text.trim()) {
194
+ return;
195
+ }
196
+ if (signal?.aborted) {
197
+ return;
198
+ }
199
+ this.ensureSystemMessage();
200
+ this.pushHistory({ role: 'user', content: transcript.text, attachments: attachments.length ? attachments : undefined });
167
201
  const llmRequest = {
168
- messages: this.history.slice(-this.historyLimit),
202
+ messages: this.buildRequestMessages(),
169
203
  config: {
170
204
  systemPrompt: this.systemPrompt,
171
205
  historyLimit: this.historyLimit,
@@ -183,28 +217,38 @@ export class ConversationOrchestrator {
183
217
  let llmFirstChunkTime;
184
218
  // Non-streaming LLM fallback
185
219
  if (!this.providers.llm.stream) {
220
+ let llm;
221
+ let llmTiming;
186
222
  try {
187
- const llm = await this.providers.llm.complete(llmRequest);
188
- const llmTiming = createTimingInfo(llmStartTime, Date.now());
223
+ llm = await this.providers.llm.complete(llmRequest);
224
+ llmTiming = createTimingInfo(llmStartTime, Date.now());
189
225
  this.metrics.timing(MetricNames.LLM_DURATION, llmTiming.durationMs, {
190
226
  provider: this.providers.llm.name
191
227
  });
192
- await callHookSafe(this.hooks.onLLMEnd, ctx, llm, llmTiming);
193
- this.pushHistory({ role: 'assistant', content: llm.fullText });
194
- yield llm;
195
- yield* this.generateTTSWithHooks(ctx, llm.fullText);
196
- // Turn complete
197
- const turnTiming = createTimingInfo(turnStartTime, Date.now());
198
- this.metrics.timing(MetricNames.TURN_DURATION, turnTiming.durationMs);
199
- await callHookSafe(this.hooks.onTurnEnd, ctx, turnTiming);
200
- return;
201
228
  }
202
229
  catch (error) {
203
230
  const err = error instanceof Error ? error : new Error(String(error));
204
231
  await callHookSafe(this.hooks.onLLMError, ctx, err);
205
232
  this.metrics.increment(MetricNames.ERRORS, 1, { component: 'llm' });
233
+ markErrored();
206
234
  throw error;
207
235
  }
236
+ // Guardrail: a throw from onLLMEnd cancels the response - it is not
237
+ // committed to history and no TTS is produced.
238
+ try {
239
+ await this.hooks.onLLMEnd?.(ctx, llm, llmTiming);
240
+ }
241
+ catch (error) {
242
+ markErrored();
243
+ throw error;
244
+ }
245
+ this.pushHistory({ role: 'assistant', content: llm.fullText });
246
+ yield llm;
247
+ if (signal?.aborted) {
248
+ return;
249
+ }
250
+ yield* this.generateTTSWithHooks(ctx, llm.fullText);
251
+ return;
208
252
  }
209
253
  // Check if we can do streaming TTS (requires config enabled AND provider support)
210
254
  const canStreamTTS = this.streamingTTS && !!this.providers.tts.speakStream;
@@ -212,11 +256,16 @@ export class ConversationOrchestrator {
212
256
  let pendingText = '';
213
257
  let ttsStarted = false;
214
258
  let chunkIndex = 0;
215
- const ttsStartTime = Date.now();
259
+ let ttsStartTime;
260
+ let aborted = false;
216
261
  try {
217
262
  for await (const chunk of this.providers.llm.stream(llmRequest)) {
263
+ if (signal?.aborted) {
264
+ aborted = true;
265
+ break;
266
+ }
218
267
  // Track time to first token
219
- if (chunkIndex === 0 && chunk.content) {
268
+ if (llmFirstChunkTime === undefined && chunk.content) {
220
269
  llmFirstChunkTime = Date.now();
221
270
  this.metrics.timing(MetricNames.LLM_TTFT, llmFirstChunkTime - llmStartTime, {
222
271
  provider: this.providers.llm.name
@@ -239,37 +288,62 @@ export class ConversationOrchestrator {
239
288
  const completeSentences = sentences.slice(0, -1);
240
289
  pendingText = sentences[sentences.length - 1];
241
290
  for (const completeSentence of completeSentences) {
291
+ if (signal?.aborted) {
292
+ aborted = true;
293
+ break;
294
+ }
242
295
  if (completeSentence.trim()) {
243
296
  // Signal TTS start on first sentence
244
297
  if (!ttsStarted) {
245
298
  ttsStarted = true;
299
+ ttsStartTime = Date.now();
246
300
  await callHookSafe(this.hooks.onTTSStart, ctx, completeSentence.trim());
247
301
  yield { type: 'tts-start' };
248
302
  }
249
303
  // Stream TTS for this sentence
250
- yield* this.streamTTSChunksWithHooks(ctx, completeSentence.trim());
304
+ yield* this.streamTTSChunksWithHooks(ctx, completeSentence.trim(), signal);
251
305
  }
252
306
  }
307
+ if (aborted) {
308
+ break;
309
+ }
253
310
  }
254
311
  }
255
312
  }
256
- // LLM complete
257
- const llmEndTime = Date.now();
258
- const llmTiming = createTimingInfo(llmStartTime, llmEndTime);
259
- this.metrics.timing(MetricNames.LLM_DURATION, llmTiming.durationMs, {
260
- provider: this.providers.llm.name
261
- });
262
- const llmResult = { fullText: assembled };
263
- await callHookSafe(this.hooks.onLLMEnd, ctx, llmResult, llmTiming);
264
- this.pushHistory({ role: 'assistant', content: assembled });
265
- yield llmResult;
266
313
  }
267
314
  catch (error) {
268
315
  const err = error instanceof Error ? error : new Error(String(error));
269
316
  await callHookSafe(this.hooks.onLLMError, ctx, err);
270
317
  this.metrics.increment(MetricNames.ERRORS, 1, { component: 'llm' });
318
+ markErrored();
271
319
  throw error;
272
320
  }
321
+ // LLM complete (or interrupted)
322
+ const llmTiming = createTimingInfo(llmStartTime, Date.now());
323
+ this.metrics.timing(MetricNames.LLM_DURATION, llmTiming.durationMs, {
324
+ provider: this.providers.llm.name
325
+ });
326
+ if (aborted) {
327
+ // Barge-in: commit what was generated so far so history reflects what
328
+ // the user (partially) heard, then stop without further TTS.
329
+ if (assembled) {
330
+ this.pushHistory({ role: 'assistant', content: assembled });
331
+ }
332
+ return;
333
+ }
334
+ const llmResult = { fullText: assembled };
335
+ // Guardrail: a throw from onLLMEnd cancels the response - it is not
336
+ // committed to history and no further TTS is produced. (With streaming
337
+ // TTS, audio for earlier sentences may already have been emitted.)
338
+ try {
339
+ await this.hooks.onLLMEnd?.(ctx, llmResult, llmTiming);
340
+ }
341
+ catch (error) {
342
+ markErrored();
343
+ throw error;
344
+ }
345
+ this.pushHistory({ role: 'assistant', content: assembled });
346
+ yield llmResult;
273
347
  // -------------------------------------------------------------------------
274
348
  // TTS Phase (remaining text)
275
349
  // -------------------------------------------------------------------------
@@ -277,17 +351,18 @@ export class ConversationOrchestrator {
277
351
  // Handle remaining text after LLM completes
278
352
  if (canStreamTTS) {
279
353
  const remainingText = pendingText.trim();
280
- if (remainingText) {
354
+ if (remainingText && !signal?.aborted) {
281
355
  if (!ttsStarted) {
282
356
  ttsStarted = true;
357
+ ttsStartTime = Date.now();
283
358
  await callHookSafe(this.hooks.onTTSStart, ctx, remainingText);
284
359
  yield { type: 'tts-start' };
285
360
  }
286
- yield* this.streamTTSChunksWithHooks(ctx, remainingText);
361
+ yield* this.streamTTSChunksWithHooks(ctx, remainingText, signal);
287
362
  }
288
363
  // Signal TTS complete
289
364
  if (ttsStarted) {
290
- const ttsTiming = createTimingInfo(ttsStartTime, Date.now());
365
+ const ttsTiming = createTimingInfo(ttsStartTime ?? llmStartTime, Date.now());
291
366
  this.metrics.timing(MetricNames.TTS_DURATION, ttsTiming.durationMs, {
292
367
  provider: this.providers.tts.name
293
368
  });
@@ -295,7 +370,7 @@ export class ConversationOrchestrator {
295
370
  yield { type: 'tts-complete' };
296
371
  }
297
372
  }
298
- else {
373
+ else if (!signal?.aborted) {
299
374
  // Fallback to non-streaming TTS
300
375
  yield* this.generateTTSWithHooks(ctx, assembled);
301
376
  }
@@ -304,12 +379,9 @@ export class ConversationOrchestrator {
304
379
  const err = error instanceof Error ? error : new Error(String(error));
305
380
  await callHookSafe(this.hooks.onTTSError, ctx, err);
306
381
  this.metrics.increment(MetricNames.ERRORS, 1, { component: 'tts' });
382
+ markErrored();
307
383
  throw error;
308
384
  }
309
- // Turn complete
310
- const turnTiming = createTimingInfo(turnStartTime, Date.now());
311
- this.metrics.timing(MetricNames.TURN_DURATION, turnTiming.durationMs);
312
- await callHookSafe(this.hooks.onTurnEnd, ctx, turnTiming);
313
385
  }
314
386
  /**
315
387
  * Split text into sentences using custom chunker or default regex
@@ -336,26 +408,37 @@ export class ConversationOrchestrator {
336
408
  * Stream TTS chunks for a sentence using PCM format with hooks.
337
409
  * Yields TTSChunk events as audio data arrives.
338
410
  */
339
- async *streamTTSChunksWithHooks(ctx, text) {
411
+ async *streamTTSChunksWithHooks(ctx, text, signal) {
340
412
  if (!this.providers.tts.speakStream)
341
413
  return;
414
+ const sampleRate = this.providers.tts.pcmSampleRate ?? 24000;
342
415
  let chunkIndex = 0;
416
+ let emittedChunks = false;
343
417
  try {
344
418
  for await (const audioChunk of this.providers.tts.speakStream(text, { format: 'pcm' })) {
419
+ if (signal?.aborted) {
420
+ return;
421
+ }
345
422
  const ttsChunk = {
346
423
  type: 'tts-chunk',
347
424
  audio: audioChunk,
348
425
  format: 'pcm',
349
- sampleRate: 24000, // OpenAI/ElevenLabs PCM is 24kHz
426
+ sampleRate,
350
427
  sentence: text
351
428
  };
352
429
  await callHookSafe(this.hooks.onTTSChunk, ctx, ttsChunk, chunkIndex);
353
430
  chunkIndex++;
431
+ emittedChunks = true;
354
432
  yield ttsChunk;
355
433
  }
356
434
  }
357
435
  catch (err) {
358
436
  this.logger.error?.('[orchestrator] TTS stream error:', err);
437
+ if (emittedChunks) {
438
+ // Part of this sentence was already emitted; re-speaking it would
439
+ // duplicate audio, so surface the failure instead.
440
+ throw err;
441
+ }
359
442
  // Fallback: try non-streaming TTS
360
443
  try {
361
444
  const tts = await this.providers.tts.speak(text, { format: 'pcm' });
@@ -363,7 +446,7 @@ export class ConversationOrchestrator {
363
446
  type: 'tts-chunk',
364
447
  audio: tts.audio,
365
448
  format: 'pcm',
366
- sampleRate: 24000,
449
+ sampleRate,
367
450
  sentence: text
368
451
  };
369
452
  await callHookSafe(this.hooks.onTTSChunk, ctx, ttsChunk, chunkIndex);
@@ -392,58 +475,31 @@ export class ConversationOrchestrator {
392
475
  yield { type: 'tts-complete' };
393
476
  }
394
477
  /**
395
- * @deprecated Use streamTTSChunksWithHooks instead
396
- * Stream TTS chunks for a sentence using PCM format.
478
+ * Ensure the system prompt is seeded as the first history message.
397
479
  */
398
- async *streamTTSChunks(text) {
399
- if (!this.providers.tts.speakStream)
400
- return;
401
- try {
402
- for await (const audioChunk of this.providers.tts.speakStream(text, { format: 'pcm' })) {
403
- yield {
404
- type: 'tts-chunk',
405
- audio: audioChunk,
406
- format: 'pcm',
407
- sampleRate: 24000, // OpenAI/ElevenLabs PCM is 24kHz
408
- sentence: text
409
- };
410
- }
411
- }
412
- catch (err) {
413
- this.logger.error?.('[orchestrator] TTS stream error:', err);
414
- // Fallback: try non-streaming TTS
415
- try {
416
- const tts = await this.providers.tts.speak(text, { format: 'pcm' });
417
- yield {
418
- type: 'tts-chunk',
419
- audio: tts.audio,
420
- format: 'pcm',
421
- sampleRate: 24000,
422
- sentence: text
423
- };
424
- }
425
- catch (fallbackErr) {
426
- this.logger.error?.('[orchestrator] TTS fallback also failed:', fallbackErr);
427
- }
480
+ ensureSystemMessage() {
481
+ if (this.systemPrompt && this.history[0]?.role !== 'system') {
482
+ this.history.unshift({ role: 'system', content: this.systemPrompt });
428
483
  }
429
484
  }
430
485
  /**
431
- * @deprecated Use generateTTSWithHooks instead
432
- * Non-streaming TTS: generates complete audio and yields as single TTSResult.
486
+ * Build the message window for an LLM request.
487
+ * The system message is always included and does not consume history slots,
488
+ * so long conversations never lose the assistant's instructions.
433
489
  */
434
- async *generateTTS(text) {
435
- yield { type: 'tts-start' };
436
- const tts = await this.providers.tts.speak(text);
437
- yield tts;
438
- yield { type: 'tts-complete' };
490
+ buildRequestMessages() {
491
+ const hasSystem = this.history[0]?.role === 'system';
492
+ const conversation = hasSystem ? this.history.slice(1) : this.history;
493
+ const window = conversation.slice(-this.historyLimit);
494
+ return hasSystem ? [this.history[0], ...window] : window;
439
495
  }
440
496
  pushHistory(message) {
441
497
  this.history.push(message);
442
- if (this.history.length > this.historyLimit + 2) {
443
- // keep system prompt if present
444
- const start = this.history[0]?.role === 'system' ? 1 : 0;
445
- const overflow = this.history.length - (this.historyLimit + 2);
446
- this.history.splice(start, overflow);
498
+ const hasSystem = this.history[0]?.role === 'system';
499
+ const start = hasSystem ? 1 : 0;
500
+ const maxLength = this.historyLimit + 2 + start;
501
+ if (this.history.length > maxLength) {
502
+ this.history.splice(start, this.history.length - maxLength);
447
503
  }
448
504
  }
449
505
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}