xo-harness 0.2.0 → 0.2.1

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.
@@ -535,8 +535,10 @@ export class RealtimeVoiceSession {
535
535
  continue;
536
536
  this.#interruptedStreams.add(streamId);
537
537
  this.#emit({ type: "audio.interrupted", streamId });
538
- // Only a real conversation item ID is valid in the vendor's truncate command.
539
- if (stream.itemId === undefined)
538
+ // Legacy clients never acknowledge playback. Preserve their conversation
539
+ // context instead of mistaking unknown playback for zero heard samples.
540
+ // Once a client reports playback, other queued streams can start at zero.
541
+ if (stream.itemId === undefined || this.#playedThrough.size === 0)
540
542
  continue;
541
543
  this.#trySend({
542
544
  type: "conversation.item.truncate",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xo-harness",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "A TypeScript-first agent harness for continuous, fully duplex voice models.",
5
5
  "type": "module",
6
6
  "sideEffects": [