@pouchy_ai/companion-sdk 0.68.0 → 0.69.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 CHANGED
@@ -2,6 +2,40 @@
2
2
 
3
3
  All notable changes to `@pouchy_ai/companion-sdk` are documented in this file.
4
4
 
5
+ ## [0.69.0]
6
+
7
+ ### Added
8
+
9
+ - **`call.setMuted(muted)`, `call.isMuted()`, `call.canMute` and
10
+ `connectCall({ muted })`: the reader's own mute.** The half-duplex path
11
+ re-opens the microphone 350 ms after every companion line, so a mute an
12
+ application built on the provider client switched itself back on. The SDK
13
+ now keeps the reader's mute apart from the half-duplex mute and opens the mic
14
+ only when neither holds. `canMute` says whether `setMuted` controls the mic
15
+ on this call (`true` on `openai-realtime`; on `elevenlabs-convai` whenever the
16
+ installed `@elevenlabs/client` has `setMicMuted`, which every version in the
17
+ peer range does). `muted: true` disables the OpenAI track before the offer
18
+ is made; on ElevenLabs it applies once the session is up, because that client
19
+ has no start-muted option.
20
+ - **`call.sendText(text)`: a line the reader typed, as their turn.** The
21
+ companion answers it as the reader's words (OpenAI: a user `input_text`
22
+ item plus `response.create`, cancelling a response in flight first;
23
+ ElevenLabs: `user_message`). The SDK reports it to `onTranscript` as
24
+ `role: 'user'`, once, so it reaches the transcript `connectCall` hands to
25
+ `/end` and the companion remembers it. Nothing reaches the provider before
26
+ the call. Returns `false` and sends nothing for blank text, after `close()`,
27
+ or on a closed channel.
28
+
29
+ ### Changed
30
+
31
+ - The CDN size budget for the unminified `companion-sdk.js` is raised from
32
+ 40,500 to 41,000 bytes gzipped (measured 40,584; 40,196 at 0.68.0). The
33
+ minified bundle, the one to serve, is 17,917 bytes against its unchanged
34
+ 18,000 budget.
35
+ - `injectEvent`'s doc now says what it is NOT: its line is context, never
36
+ reported to `onTranscript` or memory, and `connectCall` uses it for
37
+ server-pushed world moments. Behaviour is unchanged.
38
+
5
39
  ## [0.68.0]
6
40
 
7
41
  ### Fixed
package/README.md CHANGED
@@ -509,6 +509,17 @@ the call, fold it back in as a beat on the world turn door with
509
509
  `trigger.context: "this was a phone call"`, the gist as `text`, and any
510
510
  `proposedPatches` the call should leave behind.
511
511
 
512
+ **Mute and typing** (0.69.0). `call.setMuted(true)` mutes the reader's
513
+ microphone until `setMuted(false)`; it holds across the companion's lines (the
514
+ half-duplex re-open never undoes it), and `connectCall({ muted: true })` opens
515
+ the call muted. Show a mute control only when `call.canMute` is `true`.
516
+ `call.sendText(text)` sends a line the reader TYPED as their turn: the companion
517
+ answers it as something they said, it reaches `onTranscript` as
518
+ `role: 'user'`, and it is in the memory consolidated at hang-up. It cuts an
519
+ utterance in progress, like speaking would. Nothing is sent before you call it,
520
+ so run any check of your own first. `injectEvent` is different: a context
521
+ line, never reported as the reader's words.
522
+
512
523
  `call.interrupt()` (0.36.0) is the **silent cut**: stop the utterance currently
513
524
  being spoken WITHOUT generating new speech — for real-time commentary going
514
525
  stale at a beat boundary (next hand starts while last hand's remark is still
package/dist/call.d.ts CHANGED
@@ -64,13 +64,56 @@ export interface CompanionCallOptions {
64
64
  * "说一句就断了" field report). Enable only where AEC actually holds:
65
65
  * headphones, desktop, or devices you have verified. */
66
66
  bargeIn?: boolean;
67
+ /** Open the call with the reader's microphone MUTED (0.69.0); see
68
+ * `CompanionCall.setMuted`. On `openai-realtime` the track is disabled
69
+ * before it is attached, so nothing is ever sent. On `elevenlabs-convai`
70
+ * the mute is applied the moment the session is up; the provider client
71
+ * has no start-muted option, so the connect handshake itself (before the
72
+ * agent's first line) can carry audio. */
73
+ muted?: boolean;
67
74
  }
68
75
  export interface CompanionCall {
69
76
  /** Hang up. Idempotent. */
70
77
  close: () => void;
71
78
  /** Inject an out-of-band context line. `speak: true` makes the companion react
72
- * now; false stages it for the next turn. */
79
+ * now; false stages it for the next turn.
80
+ *
81
+ * NOT the reader's words: the line does not reach `onTranscript` or the
82
+ * memory `/end` consolidates, and `connectCall` uses this same lever for
83
+ * server-pushed world moments. For something the reader TYPED, use
84
+ * `sendText`. */
73
85
  injectEvent: (text: string, speak?: boolean) => void;
86
+ /** Send a line the READER typed, as their turn in the call (0.69.0). The
87
+ * companion answers it as something the reader said; it is reported to
88
+ * `onTranscript` as `role: 'user'` (once, by the SDK, the moment it is
89
+ * sent) and so reaches the memory `connectCall` hands to `/end` at hang-up,
90
+ * in order with the spoken lines.
91
+ *
92
+ * It takes the floor the way speech does: an utterance the companion is
93
+ * in the middle of is cut, then it replies to this line.
94
+ *
95
+ * Nothing is sent before this call — the provider sees the text only when
96
+ * you pass it here, so a check you run first runs before anyone reads it.
97
+ * Returns `false` (and sends nothing) for blank text, after `close()`, or
98
+ * when the call's channel is not open; `true` once it was handed to the
99
+ * provider. Same behaviour on both providers. */
100
+ sendText: (text: string) => boolean;
101
+ /** The reader's own mute (0.69.0). `true` stops the microphone sending
102
+ * audio until `setMuted(false)`. Distinct from the SDK's half-duplex mute
103
+ * (the mic is muted while the companion speaks, unless `bargeIn`): a
104
+ * reader who muted stays muted when the companion finishes a line. A
105
+ * no-op after `close()`. Check `canMute` before showing a mute control. */
106
+ setMuted: (muted: boolean) => void;
107
+ /** The reader's mute as last set (0.69.0) — the `setMuted` / `muted`
108
+ * state, not whether the half-duplex mute is momentarily engaged. A
109
+ * method, not a field, so it stays live on a spread copy of the handle. */
110
+ isMuted: () => boolean;
111
+ /** Whether `setMuted` actually controls the microphone on this call
112
+ * (0.69.0). `true` on `openai-realtime`; on `elevenlabs-convai` it is
113
+ * `true` when the installed `@elevenlabs/client` exposes `setMicMuted`
114
+ * (every version the peer range allows does). When `false`, `setMuted`
115
+ * only records the state: do not show a mute control. */
116
+ canMute: boolean;
74
117
  /** SILENT CUT (0.36.0): stop the utterance currently being spoken WITHOUT
75
118
  * generating any new speech — the "stale commentary at a beat boundary"
76
119
  * case (field request: fast-paced game, last hand's commentary still
@@ -1 +1 @@
1
- {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,WAAW,EACX,cAAc,EACd,MAAM,UAAU,CAAC;AAIlB;;;gFAGgF;AAChF,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,CAAC;IACtF,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5D;AAED;;;;;;6EAM6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAuDvD,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAA0C,CAAC;AAEhG;;;;;;;;;;;;uBAYuB;AACvB,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAAC,OAAO,CAyDxD,CAAC;AAEF;;;;;;;;qDAQqD;AACrD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAA2C,CAAC;AAElG,MAAM,WAAW,oBAAoB;IACpC,mEAAmE;IACnE,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACzE,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B;;;;;;6DAMyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC7B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;kDAC8C;IAC9C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD;;;;;;;;;;;;;;;;2DAgBuD;IACvD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACtC;2DACuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;6CACyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;IAChD;uDACmD;IACnD,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;8DAC0D;IAC1D,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,WAAW,CAAC;CACtB;AAID,oDAAoD;AACpD,wBAAsB,iBAAiB,CACtC,KAAK,EAAE,eAAe,EACtB,IAAI,GAAE,oBAAyB,EAC/B,MAAM,CAAC,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,CAAC,CAWxB"}
1
+ {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"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"}
package/dist/call.js CHANGED
@@ -257,10 +257,17 @@ async function openOpenAICall(creds, opts, bridge) {
257
257
  // the companion interrupting itself.
258
258
  const MIC_UNMUTE_TAIL_MS = 350;
259
259
  let micUnmuteTimer = null;
260
- const setMicEnabled = (enabled) => {
260
+ // Two independent reasons the mic is off (0.69.0): the READER muted
261
+ // (setMuted), or the companion is speaking (half-duplex). The track is on
262
+ // only when neither holds, so the end-of-speech re-open can never undo a
263
+ // reader's mute — which is what made a mute layered on top of this SDK a
264
+ // button that switched itself back on.
265
+ let userMuted = opts.muted === true;
266
+ let speechMuted = false;
267
+ const applyMic = () => {
261
268
  try {
262
269
  for (const tr of mic.getAudioTracks())
263
- tr.enabled = enabled;
270
+ tr.enabled = !userMuted && !speechMuted;
264
271
  }
265
272
  catch {
266
273
  /* track gone — ignore */
@@ -271,15 +278,18 @@ async function openOpenAICall(creds, opts, bridge) {
271
278
  clearTimeout(micUnmuteTimer);
272
279
  micUnmuteTimer = null;
273
280
  }
274
- setMicEnabled(false);
281
+ speechMuted = true;
282
+ applyMic();
275
283
  };
276
284
  const scheduleMicUnmute = () => {
277
285
  if (micUnmuteTimer)
278
286
  clearTimeout(micUnmuteTimer);
279
287
  micUnmuteTimer = setTimeout(() => {
280
288
  micUnmuteTimer = null;
281
- if (!closed)
282
- setMicEnabled(true);
289
+ if (closed)
290
+ return;
291
+ speechMuted = false;
292
+ applyMic();
283
293
  }, MIC_UNMUTE_TAIL_MS);
284
294
  };
285
295
  // Whether the model is audibly speaking right now (driven by the
@@ -287,6 +297,15 @@ async function openOpenAICall(creds, opts, bridge) {
287
297
  // active response makes the server emit a benign-but-noisy error event, so
288
298
  // an idle interrupt() must be a true no-op.
289
299
  let oaiSpeaking = false;
300
+ // Whether a response is in flight (response.created → response.done) —
301
+ // broader than `oaiSpeaking`, which starts only with audio. `sendText`
302
+ // cancels an in-flight response before creating its own: the server
303
+ // refuses a second concurrent response, which would leave the typed line
304
+ // in the conversation with no reply.
305
+ let oaiResponseActive = false;
306
+ // A reader who asked to start muted never sends a frame: the track is
307
+ // disabled before the offer is even created.
308
+ applyMic();
290
309
  const dc = pc.createDataChannel('oai-events');
291
310
  // `response.function_call_arguments.done` carries the call_id + args but often
292
311
  // not the name — the name arrives earlier on `response.output_item.added`; track it.
@@ -374,6 +393,9 @@ async function openOpenAICall(creds, opts, bridge) {
374
393
  msg.transcript) {
375
394
  opts.onTranscript?.({ role: 'user', text: msg.transcript });
376
395
  }
396
+ else if (msg.type === 'response.created') {
397
+ oaiResponseActive = true;
398
+ }
377
399
  else if (msg.type === 'output_audio_buffer.started') {
378
400
  oaiSpeaking = true;
379
401
  opts.onSpeakingChange?.(true);
@@ -392,6 +414,8 @@ async function openOpenAICall(creds, opts, bridge) {
392
414
  // audio doesn't get captured the instant we unmute. Several event names
393
415
  // can end a turn; any of them re-arms the mic.
394
416
  oaiSpeaking = false;
417
+ if (msg.type === 'response.done')
418
+ oaiResponseActive = false;
395
419
  opts.onSpeakingChange?.(false);
396
420
  if (opts.bargeIn !== true)
397
421
  scheduleMicUnmute();
@@ -553,6 +577,38 @@ async function openOpenAICall(creds, opts, bridge) {
553
577
  if (speak)
554
578
  dc.send(JSON.stringify({ type: 'response.create' }));
555
579
  },
580
+ sendText: (text) => {
581
+ const line = typeof text === 'string' ? text.trim() : '';
582
+ if (closed || dc.readyState !== 'open' || !line)
583
+ return false;
584
+ try {
585
+ if (oaiResponseActive) {
586
+ dc.send(JSON.stringify({ type: 'response.cancel' }));
587
+ if (oaiSpeaking)
588
+ dc.send(JSON.stringify({ type: 'output_audio_buffer.clear' }));
589
+ }
590
+ dc.send(JSON.stringify({
591
+ type: 'conversation.item.create',
592
+ item: { type: 'message', role: 'user', content: [{ type: 'input_text', text: line }] }
593
+ }));
594
+ dc.send(JSON.stringify({ type: 'response.create' }));
595
+ }
596
+ catch {
597
+ return false;
598
+ }
599
+ // A typed item produces no input-audio transcription event, so the SDK
600
+ // reports it itself — that is what puts it in the caller's transcript
601
+ // and in the memory connectCall consolidates at hang-up.
602
+ opts.onTranscript?.({ role: 'user', text: line });
603
+ return true;
604
+ },
605
+ setMuted: (muted) => {
606
+ userMuted = muted === true;
607
+ if (!closed)
608
+ applyMic();
609
+ },
610
+ isMuted: () => userMuted,
611
+ canMute: true,
556
612
  interrupt: () => {
557
613
  // Silent cut: stop generating (response.cancel) AND flush what's
558
614
  // already buffered for playback (output_audio_buffer.clear — the
@@ -610,6 +666,15 @@ async function openConvaiCall(creds, opts, bridge) {
610
666
  /* not supported on this client build — ignore */
611
667
  }
612
668
  };
669
+ // The reader's mute and the half-duplex mute are separate reasons (0.69.0,
670
+ // see the OpenAI leg); the mic opens only when neither holds.
671
+ let userMuted = opts.muted === true;
672
+ let speechMuted = false;
673
+ const applyMic = () => setConvMicMuted(userMuted || speechMuted);
674
+ // Lines `sendText` already reported. Should the provider ever echo a typed
675
+ // user_message back as a user transcript, it must not be reported twice
676
+ // (and land in memory twice). Matched by exact text, consumed once.
677
+ const typedEcho = [];
613
678
  const conv = await mod.Conversation.startSession({
614
679
  conversationToken: creds.token,
615
680
  connectionType: 'webrtc',
@@ -660,15 +725,18 @@ async function openConvaiCall(creds, opts, bridge) {
660
725
  clearTimeout(micUnmuteTimer);
661
726
  micUnmuteTimer = null;
662
727
  }
663
- setConvMicMuted(true);
728
+ speechMuted = true;
729
+ applyMic();
664
730
  }
665
731
  else {
666
732
  if (micUnmuteTimer)
667
733
  clearTimeout(micUnmuteTimer);
668
734
  micUnmuteTimer = setTimeout(() => {
669
735
  micUnmuteTimer = null;
670
- if (!closed)
671
- setConvMicMuted(false);
736
+ if (closed)
737
+ return;
738
+ speechMuted = false;
739
+ applyMic();
672
740
  }, MIC_UNMUTE_TAIL_MS);
673
741
  }
674
742
  },
@@ -678,6 +746,13 @@ async function openConvaiCall(creds, opts, bridge) {
678
746
  const raw = (message ?? '').trim();
679
747
  const text = creds.audioTags && role === 'agent' ? stripAudioTags(raw) : raw;
680
748
  if (!closed && text) {
749
+ if (role !== 'agent') {
750
+ const echo = typedEcho.indexOf(text);
751
+ if (echo !== -1) {
752
+ typedEcho.splice(echo, 1);
753
+ return;
754
+ }
755
+ }
681
756
  opts.onTranscript?.({ role: role === 'agent' ? 'assistant' : 'user', text });
682
757
  }
683
758
  },
@@ -725,6 +800,10 @@ async function openConvaiCall(creds, opts, bridge) {
725
800
  opts.onError?.(new Error('call disconnected'));
726
801
  }
727
802
  });
803
+ // The session is up: honour a start-muted request now (the EL client has no
804
+ // start-muted option — see CompanionCallOptions.muted).
805
+ if (userMuted)
806
+ applyMic();
728
807
  return {
729
808
  provider: 'elevenlabs-convai',
730
809
  close: () => {
@@ -750,6 +829,31 @@ async function openConvaiCall(creds, opts, bridge) {
750
829
  /* channel not ready */
751
830
  }
752
831
  },
832
+ sendText: (text) => {
833
+ const line = typeof text === 'string' ? text.trim() : '';
834
+ if (closed || !line)
835
+ return false;
836
+ try {
837
+ // A `user_message`: the agent answers it as the user's turn, and
838
+ // the server's own turn-taking cuts an utterance in progress.
839
+ conv.sendUserMessage(line);
840
+ }
841
+ catch {
842
+ return false;
843
+ }
844
+ typedEcho.push(line);
845
+ if (typedEcho.length > 20)
846
+ typedEcho.shift();
847
+ opts.onTranscript?.({ role: 'user', text: line });
848
+ return true;
849
+ },
850
+ setMuted: (muted) => {
851
+ userMuted = muted === true;
852
+ if (!closed)
853
+ applyMic();
854
+ },
855
+ isMuted: () => userMuted,
856
+ canMute: typeof conv.setMicMuted === 'function',
753
857
  interrupt: () => {
754
858
  // BEST-EFFORT silent cut — the EL client has no public "stop playback"
755
859
  // API (interruption is normally server-driven: a server `interruption`
package/dist/call.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"call.js","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call.js","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pouchy_ai/companion-sdk",
3
- "version": "0.68.0",
3
+ "version": "0.69.0",
4
4
  "description": "Embed the Pouchy companion \u2014 chat, voice, tools, memory, live world-state, instant UI, and agent-to-agent messaging \u2014 in any app, game, or site.",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE",
package/src/call.ts CHANGED
@@ -203,14 +203,57 @@ export interface CompanionCallOptions {
203
203
  * "说一句就断了" field report). Enable only where AEC actually holds:
204
204
  * headphones, desktop, or devices you have verified. */
205
205
  bargeIn?: boolean;
206
+ /** Open the call with the reader's microphone MUTED (0.69.0); see
207
+ * `CompanionCall.setMuted`. On `openai-realtime` the track is disabled
208
+ * before it is attached, so nothing is ever sent. On `elevenlabs-convai`
209
+ * the mute is applied the moment the session is up; the provider client
210
+ * has no start-muted option, so the connect handshake itself (before the
211
+ * agent's first line) can carry audio. */
212
+ muted?: boolean;
206
213
  }
207
214
 
208
215
  export interface CompanionCall {
209
216
  /** Hang up. Idempotent. */
210
217
  close: () => void;
211
218
  /** Inject an out-of-band context line. `speak: true` makes the companion react
212
- * now; false stages it for the next turn. */
219
+ * now; false stages it for the next turn.
220
+ *
221
+ * NOT the reader's words: the line does not reach `onTranscript` or the
222
+ * memory `/end` consolidates, and `connectCall` uses this same lever for
223
+ * server-pushed world moments. For something the reader TYPED, use
224
+ * `sendText`. */
213
225
  injectEvent: (text: string, speak?: boolean) => void;
226
+ /** Send a line the READER typed, as their turn in the call (0.69.0). The
227
+ * companion answers it as something the reader said; it is reported to
228
+ * `onTranscript` as `role: 'user'` (once, by the SDK, the moment it is
229
+ * sent) and so reaches the memory `connectCall` hands to `/end` at hang-up,
230
+ * in order with the spoken lines.
231
+ *
232
+ * It takes the floor the way speech does: an utterance the companion is
233
+ * in the middle of is cut, then it replies to this line.
234
+ *
235
+ * Nothing is sent before this call — the provider sees the text only when
236
+ * you pass it here, so a check you run first runs before anyone reads it.
237
+ * Returns `false` (and sends nothing) for blank text, after `close()`, or
238
+ * when the call's channel is not open; `true` once it was handed to the
239
+ * provider. Same behaviour on both providers. */
240
+ sendText: (text: string) => boolean;
241
+ /** The reader's own mute (0.69.0). `true` stops the microphone sending
242
+ * audio until `setMuted(false)`. Distinct from the SDK's half-duplex mute
243
+ * (the mic is muted while the companion speaks, unless `bargeIn`): a
244
+ * reader who muted stays muted when the companion finishes a line. A
245
+ * no-op after `close()`. Check `canMute` before showing a mute control. */
246
+ setMuted: (muted: boolean) => void;
247
+ /** The reader's mute as last set (0.69.0) — the `setMuted` / `muted`
248
+ * state, not whether the half-duplex mute is momentarily engaged. A
249
+ * method, not a field, so it stays live on a spread copy of the handle. */
250
+ isMuted: () => boolean;
251
+ /** Whether `setMuted` actually controls the microphone on this call
252
+ * (0.69.0). `true` on `openai-realtime`; on `elevenlabs-convai` it is
253
+ * `true` when the installed `@elevenlabs/client` exposes `setMicMuted`
254
+ * (every version the peer range allows does). When `false`, `setMuted`
255
+ * only records the state: do not show a mute control. */
256
+ canMute: boolean;
214
257
  /** SILENT CUT (0.36.0): stop the utterance currently being spoken WITHOUT
215
258
  * generating any new speech — the "stale commentary at a beat boundary"
216
259
  * case (field request: fast-paced game, last hand's commentary still
@@ -359,9 +402,16 @@ async function openOpenAICall(
359
402
  // the companion interrupting itself.
360
403
  const MIC_UNMUTE_TAIL_MS = 350;
361
404
  let micUnmuteTimer: ReturnType<typeof setTimeout> | null = null;
362
- const setMicEnabled = (enabled: boolean) => {
405
+ // Two independent reasons the mic is off (0.69.0): the READER muted
406
+ // (setMuted), or the companion is speaking (half-duplex). The track is on
407
+ // only when neither holds, so the end-of-speech re-open can never undo a
408
+ // reader's mute — which is what made a mute layered on top of this SDK a
409
+ // button that switched itself back on.
410
+ let userMuted = opts.muted === true;
411
+ let speechMuted = false;
412
+ const applyMic = () => {
363
413
  try {
364
- for (const tr of mic.getAudioTracks()) tr.enabled = enabled;
414
+ for (const tr of mic.getAudioTracks()) tr.enabled = !userMuted && !speechMuted;
365
415
  } catch {
366
416
  /* track gone — ignore */
367
417
  }
@@ -371,13 +421,16 @@ async function openOpenAICall(
371
421
  clearTimeout(micUnmuteTimer);
372
422
  micUnmuteTimer = null;
373
423
  }
374
- setMicEnabled(false);
424
+ speechMuted = true;
425
+ applyMic();
375
426
  };
376
427
  const scheduleMicUnmute = () => {
377
428
  if (micUnmuteTimer) clearTimeout(micUnmuteTimer);
378
429
  micUnmuteTimer = setTimeout(() => {
379
430
  micUnmuteTimer = null;
380
- if (!closed) setMicEnabled(true);
431
+ if (closed) return;
432
+ speechMuted = false;
433
+ applyMic();
381
434
  }, MIC_UNMUTE_TAIL_MS);
382
435
  };
383
436
 
@@ -386,6 +439,15 @@ async function openOpenAICall(
386
439
  // active response makes the server emit a benign-but-noisy error event, so
387
440
  // an idle interrupt() must be a true no-op.
388
441
  let oaiSpeaking = false;
442
+ // Whether a response is in flight (response.created → response.done) —
443
+ // broader than `oaiSpeaking`, which starts only with audio. `sendText`
444
+ // cancels an in-flight response before creating its own: the server
445
+ // refuses a second concurrent response, which would leave the typed line
446
+ // in the conversation with no reply.
447
+ let oaiResponseActive = false;
448
+ // A reader who asked to start muted never sends a frame: the track is
449
+ // disabled before the offer is even created.
450
+ applyMic();
389
451
 
390
452
  const dc = pc.createDataChannel('oai-events');
391
453
  // `response.function_call_arguments.done` carries the call_id + args but often
@@ -486,6 +548,8 @@ async function openOpenAICall(
486
548
  msg.transcript
487
549
  ) {
488
550
  opts.onTranscript?.({ role: 'user', text: msg.transcript });
551
+ } else if (msg.type === 'response.created') {
552
+ oaiResponseActive = true;
489
553
  } else if (msg.type === 'output_audio_buffer.started') {
490
554
  oaiSpeaking = true;
491
555
  opts.onSpeakingChange?.(true);
@@ -504,6 +568,7 @@ async function openOpenAICall(
504
568
  // audio doesn't get captured the instant we unmute. Several event names
505
569
  // can end a turn; any of them re-arms the mic.
506
570
  oaiSpeaking = false;
571
+ if (msg.type === 'response.done') oaiResponseActive = false;
507
572
  opts.onSpeakingChange?.(false);
508
573
  if (opts.bargeIn !== true) scheduleMicUnmute();
509
574
  }
@@ -675,6 +740,36 @@ async function openOpenAICall(
675
740
  );
676
741
  if (speak) dc.send(JSON.stringify({ type: 'response.create' }));
677
742
  },
743
+ sendText: (text) => {
744
+ const line = typeof text === 'string' ? text.trim() : '';
745
+ if (closed || dc.readyState !== 'open' || !line) return false;
746
+ try {
747
+ if (oaiResponseActive) {
748
+ dc.send(JSON.stringify({ type: 'response.cancel' }));
749
+ if (oaiSpeaking) dc.send(JSON.stringify({ type: 'output_audio_buffer.clear' }));
750
+ }
751
+ dc.send(
752
+ JSON.stringify({
753
+ type: 'conversation.item.create',
754
+ item: { type: 'message', role: 'user', content: [{ type: 'input_text', text: line }] }
755
+ })
756
+ );
757
+ dc.send(JSON.stringify({ type: 'response.create' }));
758
+ } catch {
759
+ return false;
760
+ }
761
+ // A typed item produces no input-audio transcription event, so the SDK
762
+ // reports it itself — that is what puts it in the caller's transcript
763
+ // and in the memory connectCall consolidates at hang-up.
764
+ opts.onTranscript?.({ role: 'user', text: line });
765
+ return true;
766
+ },
767
+ setMuted: (muted) => {
768
+ userMuted = muted === true;
769
+ if (!closed) applyMic();
770
+ },
771
+ isMuted: () => userMuted,
772
+ canMute: true,
678
773
  interrupt: () => {
679
774
  // Silent cut: stop generating (response.cancel) AND flush what's
680
775
  // already buffered for playback (output_audio_buffer.clear — the
@@ -740,6 +835,15 @@ async function openConvaiCall(
740
835
  /* not supported on this client build — ignore */
741
836
  }
742
837
  };
838
+ // The reader's mute and the half-duplex mute are separate reasons (0.69.0,
839
+ // see the OpenAI leg); the mic opens only when neither holds.
840
+ let userMuted = opts.muted === true;
841
+ let speechMuted = false;
842
+ const applyMic = () => setConvMicMuted(userMuted || speechMuted);
843
+ // Lines `sendText` already reported. Should the provider ever echo a typed
844
+ // user_message back as a user transcript, it must not be reported twice
845
+ // (and land in memory twice). Matched by exact text, consumed once.
846
+ const typedEcho: string[] = [];
743
847
  const conv = await mod.Conversation.startSession({
744
848
  conversationToken: creds.token,
745
849
  connectionType: 'webrtc',
@@ -788,12 +892,15 @@ async function openConvaiCall(
788
892
  clearTimeout(micUnmuteTimer);
789
893
  micUnmuteTimer = null;
790
894
  }
791
- setConvMicMuted(true);
895
+ speechMuted = true;
896
+ applyMic();
792
897
  } else {
793
898
  if (micUnmuteTimer) clearTimeout(micUnmuteTimer);
794
899
  micUnmuteTimer = setTimeout(() => {
795
900
  micUnmuteTimer = null;
796
- if (!closed) setConvMicMuted(false);
901
+ if (closed) return;
902
+ speechMuted = false;
903
+ applyMic();
797
904
  }, MIC_UNMUTE_TAIL_MS);
798
905
  }
799
906
  },
@@ -803,6 +910,13 @@ async function openConvaiCall(
803
910
  const raw = (message ?? '').trim();
804
911
  const text = creds.audioTags && role === 'agent' ? stripAudioTags(raw) : raw;
805
912
  if (!closed && text) {
913
+ if (role !== 'agent') {
914
+ const echo = typedEcho.indexOf(text);
915
+ if (echo !== -1) {
916
+ typedEcho.splice(echo, 1);
917
+ return;
918
+ }
919
+ }
806
920
  opts.onTranscript?.({ role: role === 'agent' ? 'assistant' : 'user', text });
807
921
  }
808
922
  },
@@ -845,6 +959,10 @@ async function openConvaiCall(
845
959
  }
846
960
  });
847
961
 
962
+ // The session is up: honour a start-muted request now (the EL client has no
963
+ // start-muted option — see CompanionCallOptions.muted).
964
+ if (userMuted) applyMic();
965
+
848
966
  return {
849
967
  provider: 'elevenlabs-convai',
850
968
  close: () => {
@@ -865,6 +983,27 @@ async function openConvaiCall(
865
983
  /* channel not ready */
866
984
  }
867
985
  },
986
+ sendText: (text) => {
987
+ const line = typeof text === 'string' ? text.trim() : '';
988
+ if (closed || !line) return false;
989
+ try {
990
+ // A `user_message`: the agent answers it as the user's turn, and
991
+ // the server's own turn-taking cuts an utterance in progress.
992
+ conv.sendUserMessage(line);
993
+ } catch {
994
+ return false;
995
+ }
996
+ typedEcho.push(line);
997
+ if (typedEcho.length > 20) typedEcho.shift();
998
+ opts.onTranscript?.({ role: 'user', text: line });
999
+ return true;
1000
+ },
1001
+ setMuted: (muted) => {
1002
+ userMuted = muted === true;
1003
+ if (!closed) applyMic();
1004
+ },
1005
+ isMuted: () => userMuted,
1006
+ canMute: typeof (conv as unknown as { setMicMuted?: unknown }).setMicMuted === 'function',
868
1007
  interrupt: () => {
869
1008
  // BEST-EFFORT silent cut — the EL client has no public "stop playback"
870
1009
  // API (interruption is normally server-driven: a server `interruption`