@pouchy_ai/companion-sdk 0.68.0 → 0.70.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 +49 -0
- package/README.md +16 -0
- package/dist/call.d.ts +57 -1
- package/dist/call.d.ts.map +1 -1
- package/dist/call.js +126 -9
- package/dist/call.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/call.ts +167 -9
- package/src/index.ts +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,55 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@pouchy_ai/companion-sdk` are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.70.0]
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Each companion line of a call reports the voice cues it performed.** On a
|
|
10
|
+
call where `audioTags` was granted, `onTranscript`'s companion lines carry
|
|
11
|
+
`audioTags: string[]`: the cues in order, without brackets (`['sighs',
|
|
12
|
+
'laughs']`), `[]` when the line performed none. `text` stays clean, as
|
|
13
|
+
before. The field is absent on user lines and on calls without the grant, so
|
|
14
|
+
its absence means "not applicable", never zero. Until now the cues were
|
|
15
|
+
stripped before anything you could see, so whether the companion used them
|
|
16
|
+
could only be judged by ear.
|
|
17
|
+
- `extractAudioTags(text)`: the same cues as a list, for self-plumbed
|
|
18
|
+
ElevenLabs sessions. It agrees with `stripAudioTags` on what a cue is.
|
|
19
|
+
|
|
20
|
+
## [0.69.0]
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- **`call.setMuted(muted)`, `call.isMuted()`, `call.canMute` and
|
|
25
|
+
`connectCall({ muted })`: the reader's own mute.** The half-duplex path
|
|
26
|
+
re-opens the microphone 350 ms after every companion line, so a mute an
|
|
27
|
+
application built on the provider client switched itself back on. The SDK
|
|
28
|
+
now keeps the reader's mute apart from the half-duplex mute and opens the mic
|
|
29
|
+
only when neither holds. `canMute` says whether `setMuted` controls the mic
|
|
30
|
+
on this call (`true` on `openai-realtime`; on `elevenlabs-convai` whenever the
|
|
31
|
+
installed `@elevenlabs/client` has `setMicMuted`, which every version in the
|
|
32
|
+
peer range does). `muted: true` disables the OpenAI track before the offer
|
|
33
|
+
is made; on ElevenLabs it applies once the session is up, because that client
|
|
34
|
+
has no start-muted option.
|
|
35
|
+
- **`call.sendText(text)`: a line the reader typed, as their turn.** The
|
|
36
|
+
companion answers it as the reader's words (OpenAI: a user `input_text`
|
|
37
|
+
item plus `response.create`, cancelling a response in flight first;
|
|
38
|
+
ElevenLabs: `user_message`). The SDK reports it to `onTranscript` as
|
|
39
|
+
`role: 'user'`, once, so it reaches the transcript `connectCall` hands to
|
|
40
|
+
`/end` and the companion remembers it. Nothing reaches the provider before
|
|
41
|
+
the call. Returns `false` and sends nothing for blank text, after `close()`,
|
|
42
|
+
or on a closed channel.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- The CDN size budget for the unminified `companion-sdk.js` is raised from
|
|
47
|
+
40,500 to 41,000 bytes gzipped (measured 40,584; 40,196 at 0.68.0). The
|
|
48
|
+
minified bundle, the one to serve, is 17,917 bytes against its unchanged
|
|
49
|
+
18,000 budget.
|
|
50
|
+
- `injectEvent`'s doc now says what it is NOT: its line is context, never
|
|
51
|
+
reported to `onTranscript` or memory, and `connectCall` uses it for
|
|
52
|
+
server-pushed world moments. Behaviour is unchanged.
|
|
53
|
+
|
|
5
54
|
## [0.68.0]
|
|
6
55
|
|
|
7
56
|
### Fixed
|
package/README.md
CHANGED
|
@@ -464,6 +464,11 @@ server may decline (OpenAI Realtime fallback, or the operator switched it off);
|
|
|
464
464
|
ElevenLabs session yourself? Run every agent transcript line through
|
|
465
465
|
`stripAudioTags(text)` before you show or store it.
|
|
466
466
|
|
|
467
|
+
To see what was performed (0.70.0): on a granted call every companion
|
|
468
|
+
`onTranscript` line carries `audioTags: string[]` (`['sighs', 'laughs']`, or
|
|
469
|
+
`[]`); the field is absent on user lines and on calls without the grant.
|
|
470
|
+
Self-plumbed: `extractAudioTags(line)` gives the same list.
|
|
471
|
+
|
|
467
472
|
`connectCall({ record: true })` (0.65.0) records the **whole call — both
|
|
468
473
|
voices**, kept by the voice provider, so a host that cannot capture audio on
|
|
469
474
|
the device (React Native's native WebRTC has no WebAudio / MediaRecorder) gets
|
|
@@ -509,6 +514,17 @@ the call, fold it back in as a beat on the world turn door with
|
|
|
509
514
|
`trigger.context: "this was a phone call"`, the gist as `text`, and any
|
|
510
515
|
`proposedPatches` the call should leave behind.
|
|
511
516
|
|
|
517
|
+
**Mute and typing** (0.69.0). `call.setMuted(true)` mutes the reader's
|
|
518
|
+
microphone until `setMuted(false)`; it holds across the companion's lines (the
|
|
519
|
+
half-duplex re-open never undoes it), and `connectCall({ muted: true })` opens
|
|
520
|
+
the call muted. Show a mute control only when `call.canMute` is `true`.
|
|
521
|
+
`call.sendText(text)` sends a line the reader TYPED as their turn: the companion
|
|
522
|
+
answers it as something they said, it reaches `onTranscript` as
|
|
523
|
+
`role: 'user'`, and it is in the memory consolidated at hang-up. It cuts an
|
|
524
|
+
utterance in progress, like speaking would. Nothing is sent before you call it,
|
|
525
|
+
so run any check of your own first. `injectEvent` is different: a context
|
|
526
|
+
line, never reported as the reader's words.
|
|
527
|
+
|
|
512
528
|
`call.interrupt()` (0.36.0) is the **silent cut**: stop the utterance currently
|
|
513
529
|
being spoken WITHOUT generating new speech — for real-time commentary going
|
|
514
530
|
stale at a beat boundary (next hand starts while last hand's remark is still
|
package/dist/call.d.ts
CHANGED
|
@@ -45,14 +45,27 @@ export declare const AVATAR_VISUAL_TOOLS: VoiceToolBridge['tools'];
|
|
|
45
45
|
* Only ASCII-word cues are removed (the cue vocabulary is English): a line's
|
|
46
46
|
* own brackets — `【重点】`, `[1]` — are left alone. */
|
|
47
47
|
export declare function stripAudioTags(text: string): string;
|
|
48
|
+
/** The performed cues in a call transcript line, in order, without brackets
|
|
49
|
+
* (0.70.0): `'[laughs] 好呀 [whispers] 秘密'` → `['laughs', 'whispers']`. The
|
|
50
|
+
* same cues `stripAudioTags` removes, so the two always agree. `connectCall`
|
|
51
|
+
* reports them on each companion line of a call where `audioTags` was
|
|
52
|
+
* granted (`onTranscript`'s `audioTags`); exported for self-plumbed
|
|
53
|
+
* ElevenLabs sessions. */
|
|
54
|
+
export declare function extractAudioTags(text: string): string[];
|
|
48
55
|
/** Names of the avatar visual tools (for routing + the no-op fallback). */
|
|
49
56
|
export declare const AVATAR_VISUAL_TOOL_NAMES: readonly string[];
|
|
50
57
|
export interface CompanionCallOptions {
|
|
51
58
|
/** Element to route remote audio to. One is created if omitted. */
|
|
52
59
|
audioElement?: HTMLAudioElement;
|
|
60
|
+
/** One finished line. `text` never carries performed cues. On a call where
|
|
61
|
+
* `audioTags` was GRANTED (0.70.0), every companion line also carries
|
|
62
|
+
* `audioTags`: the cues it performed, in order (`[]` when it performed
|
|
63
|
+
* none). Absent on user lines and on calls without the grant, so absence
|
|
64
|
+
* means "not applicable", never "zero". */
|
|
53
65
|
onTranscript?: (e: {
|
|
54
66
|
role: 'user' | 'assistant';
|
|
55
67
|
text: string;
|
|
68
|
+
audioTags?: string[];
|
|
56
69
|
}) => void;
|
|
57
70
|
onSpeakingChange?: (speaking: boolean) => void;
|
|
58
71
|
onError?: (err: Error) => void;
|
|
@@ -64,13 +77,56 @@ export interface CompanionCallOptions {
|
|
|
64
77
|
* "说一句就断了" field report). Enable only where AEC actually holds:
|
|
65
78
|
* headphones, desktop, or devices you have verified. */
|
|
66
79
|
bargeIn?: boolean;
|
|
80
|
+
/** Open the call with the reader's microphone MUTED (0.69.0); see
|
|
81
|
+
* `CompanionCall.setMuted`. On `openai-realtime` the track is disabled
|
|
82
|
+
* before it is attached, so nothing is ever sent. On `elevenlabs-convai`
|
|
83
|
+
* the mute is applied the moment the session is up; the provider client
|
|
84
|
+
* has no start-muted option, so the connect handshake itself (before the
|
|
85
|
+
* agent's first line) can carry audio. */
|
|
86
|
+
muted?: boolean;
|
|
67
87
|
}
|
|
68
88
|
export interface CompanionCall {
|
|
69
89
|
/** Hang up. Idempotent. */
|
|
70
90
|
close: () => void;
|
|
71
91
|
/** Inject an out-of-band context line. `speak: true` makes the companion react
|
|
72
|
-
* now; false stages it for the next turn.
|
|
92
|
+
* now; false stages it for the next turn.
|
|
93
|
+
*
|
|
94
|
+
* NOT the reader's words: the line does not reach `onTranscript` or the
|
|
95
|
+
* memory `/end` consolidates, and `connectCall` uses this same lever for
|
|
96
|
+
* server-pushed world moments. For something the reader TYPED, use
|
|
97
|
+
* `sendText`. */
|
|
73
98
|
injectEvent: (text: string, speak?: boolean) => void;
|
|
99
|
+
/** Send a line the READER typed, as their turn in the call (0.69.0). The
|
|
100
|
+
* companion answers it as something the reader said; it is reported to
|
|
101
|
+
* `onTranscript` as `role: 'user'` (once, by the SDK, the moment it is
|
|
102
|
+
* sent) and so reaches the memory `connectCall` hands to `/end` at hang-up,
|
|
103
|
+
* in order with the spoken lines.
|
|
104
|
+
*
|
|
105
|
+
* It takes the floor the way speech does: an utterance the companion is
|
|
106
|
+
* in the middle of is cut, then it replies to this line.
|
|
107
|
+
*
|
|
108
|
+
* Nothing is sent before this call — the provider sees the text only when
|
|
109
|
+
* you pass it here, so a check you run first runs before anyone reads it.
|
|
110
|
+
* Returns `false` (and sends nothing) for blank text, after `close()`, or
|
|
111
|
+
* when the call's channel is not open; `true` once it was handed to the
|
|
112
|
+
* provider. Same behaviour on both providers. */
|
|
113
|
+
sendText: (text: string) => boolean;
|
|
114
|
+
/** The reader's own mute (0.69.0). `true` stops the microphone sending
|
|
115
|
+
* audio until `setMuted(false)`. Distinct from the SDK's half-duplex mute
|
|
116
|
+
* (the mic is muted while the companion speaks, unless `bargeIn`): a
|
|
117
|
+
* reader who muted stays muted when the companion finishes a line. A
|
|
118
|
+
* no-op after `close()`. Check `canMute` before showing a mute control. */
|
|
119
|
+
setMuted: (muted: boolean) => void;
|
|
120
|
+
/** The reader's mute as last set (0.69.0) — the `setMuted` / `muted`
|
|
121
|
+
* state, not whether the half-duplex mute is momentarily engaged. A
|
|
122
|
+
* method, not a field, so it stays live on a spread copy of the handle. */
|
|
123
|
+
isMuted: () => boolean;
|
|
124
|
+
/** Whether `setMuted` actually controls the microphone on this call
|
|
125
|
+
* (0.69.0). `true` on `openai-realtime`; on `elevenlabs-convai` it is
|
|
126
|
+
* `true` when the installed `@elevenlabs/client` exposes `setMicMuted`
|
|
127
|
+
* (every version the peer range allows does). When `false`, `setMuted`
|
|
128
|
+
* only records the state: do not show a mute control. */
|
|
129
|
+
canMute: boolean;
|
|
74
130
|
/** SILENT CUT (0.36.0): stop the utterance currently being spoken WITHOUT
|
|
75
131
|
* generating any new speech — the "stale commentary at a beat boundary"
|
|
76
132
|
* case (field request: fast-paced game, last hand's commentary still
|
package/dist/call.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"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"}
|
package/dist/call.js
CHANGED
|
@@ -159,6 +159,15 @@ export function stripAudioTags(text) {
|
|
|
159
159
|
.replace(/\s+([,,。.!!??、])/g, '$1')
|
|
160
160
|
.trim();
|
|
161
161
|
}
|
|
162
|
+
/** The performed cues in a call transcript line, in order, without brackets
|
|
163
|
+
* (0.70.0): `'[laughs] 好呀 [whispers] 秘密'` → `['laughs', 'whispers']`. The
|
|
164
|
+
* same cues `stripAudioTags` removes, so the two always agree. `connectCall`
|
|
165
|
+
* reports them on each companion line of a call where `audioTags` was
|
|
166
|
+
* granted (`onTranscript`'s `audioTags`); exported for self-plumbed
|
|
167
|
+
* ElevenLabs sessions. */
|
|
168
|
+
export function extractAudioTags(text) {
|
|
169
|
+
return [...text.matchAll(/\[([A-Za-z][A-Za-z ,'-]{0,38})\]/g)].map((m) => m[1].trim());
|
|
170
|
+
}
|
|
162
171
|
/** Names of the avatar visual tools (for routing + the no-op fallback). */
|
|
163
172
|
export const AVATAR_VISUAL_TOOL_NAMES = AVATAR_VISUAL_TOOLS.map((t) => t.name);
|
|
164
173
|
const OPENAI_REALTIME_CALLS = 'https://api.openai.com/v1/realtime/calls';
|
|
@@ -257,10 +266,17 @@ async function openOpenAICall(creds, opts, bridge) {
|
|
|
257
266
|
// the companion interrupting itself.
|
|
258
267
|
const MIC_UNMUTE_TAIL_MS = 350;
|
|
259
268
|
let micUnmuteTimer = null;
|
|
260
|
-
|
|
269
|
+
// Two independent reasons the mic is off (0.69.0): the READER muted
|
|
270
|
+
// (setMuted), or the companion is speaking (half-duplex). The track is on
|
|
271
|
+
// only when neither holds, so the end-of-speech re-open can never undo a
|
|
272
|
+
// reader's mute — which is what made a mute layered on top of this SDK a
|
|
273
|
+
// button that switched itself back on.
|
|
274
|
+
let userMuted = opts.muted === true;
|
|
275
|
+
let speechMuted = false;
|
|
276
|
+
const applyMic = () => {
|
|
261
277
|
try {
|
|
262
278
|
for (const tr of mic.getAudioTracks())
|
|
263
|
-
tr.enabled =
|
|
279
|
+
tr.enabled = !userMuted && !speechMuted;
|
|
264
280
|
}
|
|
265
281
|
catch {
|
|
266
282
|
/* track gone — ignore */
|
|
@@ -271,15 +287,18 @@ async function openOpenAICall(creds, opts, bridge) {
|
|
|
271
287
|
clearTimeout(micUnmuteTimer);
|
|
272
288
|
micUnmuteTimer = null;
|
|
273
289
|
}
|
|
274
|
-
|
|
290
|
+
speechMuted = true;
|
|
291
|
+
applyMic();
|
|
275
292
|
};
|
|
276
293
|
const scheduleMicUnmute = () => {
|
|
277
294
|
if (micUnmuteTimer)
|
|
278
295
|
clearTimeout(micUnmuteTimer);
|
|
279
296
|
micUnmuteTimer = setTimeout(() => {
|
|
280
297
|
micUnmuteTimer = null;
|
|
281
|
-
if (
|
|
282
|
-
|
|
298
|
+
if (closed)
|
|
299
|
+
return;
|
|
300
|
+
speechMuted = false;
|
|
301
|
+
applyMic();
|
|
283
302
|
}, MIC_UNMUTE_TAIL_MS);
|
|
284
303
|
};
|
|
285
304
|
// Whether the model is audibly speaking right now (driven by the
|
|
@@ -287,6 +306,15 @@ async function openOpenAICall(creds, opts, bridge) {
|
|
|
287
306
|
// active response makes the server emit a benign-but-noisy error event, so
|
|
288
307
|
// an idle interrupt() must be a true no-op.
|
|
289
308
|
let oaiSpeaking = false;
|
|
309
|
+
// Whether a response is in flight (response.created → response.done) —
|
|
310
|
+
// broader than `oaiSpeaking`, which starts only with audio. `sendText`
|
|
311
|
+
// cancels an in-flight response before creating its own: the server
|
|
312
|
+
// refuses a second concurrent response, which would leave the typed line
|
|
313
|
+
// in the conversation with no reply.
|
|
314
|
+
let oaiResponseActive = false;
|
|
315
|
+
// A reader who asked to start muted never sends a frame: the track is
|
|
316
|
+
// disabled before the offer is even created.
|
|
317
|
+
applyMic();
|
|
290
318
|
const dc = pc.createDataChannel('oai-events');
|
|
291
319
|
// `response.function_call_arguments.done` carries the call_id + args but often
|
|
292
320
|
// not the name — the name arrives earlier on `response.output_item.added`; track it.
|
|
@@ -374,6 +402,9 @@ async function openOpenAICall(creds, opts, bridge) {
|
|
|
374
402
|
msg.transcript) {
|
|
375
403
|
opts.onTranscript?.({ role: 'user', text: msg.transcript });
|
|
376
404
|
}
|
|
405
|
+
else if (msg.type === 'response.created') {
|
|
406
|
+
oaiResponseActive = true;
|
|
407
|
+
}
|
|
377
408
|
else if (msg.type === 'output_audio_buffer.started') {
|
|
378
409
|
oaiSpeaking = true;
|
|
379
410
|
opts.onSpeakingChange?.(true);
|
|
@@ -392,6 +423,8 @@ async function openOpenAICall(creds, opts, bridge) {
|
|
|
392
423
|
// audio doesn't get captured the instant we unmute. Several event names
|
|
393
424
|
// can end a turn; any of them re-arms the mic.
|
|
394
425
|
oaiSpeaking = false;
|
|
426
|
+
if (msg.type === 'response.done')
|
|
427
|
+
oaiResponseActive = false;
|
|
395
428
|
opts.onSpeakingChange?.(false);
|
|
396
429
|
if (opts.bargeIn !== true)
|
|
397
430
|
scheduleMicUnmute();
|
|
@@ -553,6 +586,38 @@ async function openOpenAICall(creds, opts, bridge) {
|
|
|
553
586
|
if (speak)
|
|
554
587
|
dc.send(JSON.stringify({ type: 'response.create' }));
|
|
555
588
|
},
|
|
589
|
+
sendText: (text) => {
|
|
590
|
+
const line = typeof text === 'string' ? text.trim() : '';
|
|
591
|
+
if (closed || dc.readyState !== 'open' || !line)
|
|
592
|
+
return false;
|
|
593
|
+
try {
|
|
594
|
+
if (oaiResponseActive) {
|
|
595
|
+
dc.send(JSON.stringify({ type: 'response.cancel' }));
|
|
596
|
+
if (oaiSpeaking)
|
|
597
|
+
dc.send(JSON.stringify({ type: 'output_audio_buffer.clear' }));
|
|
598
|
+
}
|
|
599
|
+
dc.send(JSON.stringify({
|
|
600
|
+
type: 'conversation.item.create',
|
|
601
|
+
item: { type: 'message', role: 'user', content: [{ type: 'input_text', text: line }] }
|
|
602
|
+
}));
|
|
603
|
+
dc.send(JSON.stringify({ type: 'response.create' }));
|
|
604
|
+
}
|
|
605
|
+
catch {
|
|
606
|
+
return false;
|
|
607
|
+
}
|
|
608
|
+
// A typed item produces no input-audio transcription event, so the SDK
|
|
609
|
+
// reports it itself — that is what puts it in the caller's transcript
|
|
610
|
+
// and in the memory connectCall consolidates at hang-up.
|
|
611
|
+
opts.onTranscript?.({ role: 'user', text: line });
|
|
612
|
+
return true;
|
|
613
|
+
},
|
|
614
|
+
setMuted: (muted) => {
|
|
615
|
+
userMuted = muted === true;
|
|
616
|
+
if (!closed)
|
|
617
|
+
applyMic();
|
|
618
|
+
},
|
|
619
|
+
isMuted: () => userMuted,
|
|
620
|
+
canMute: true,
|
|
556
621
|
interrupt: () => {
|
|
557
622
|
// Silent cut: stop generating (response.cancel) AND flush what's
|
|
558
623
|
// already buffered for playback (output_audio_buffer.clear — the
|
|
@@ -610,6 +675,15 @@ async function openConvaiCall(creds, opts, bridge) {
|
|
|
610
675
|
/* not supported on this client build — ignore */
|
|
611
676
|
}
|
|
612
677
|
};
|
|
678
|
+
// The reader's mute and the half-duplex mute are separate reasons (0.69.0,
|
|
679
|
+
// see the OpenAI leg); the mic opens only when neither holds.
|
|
680
|
+
let userMuted = opts.muted === true;
|
|
681
|
+
let speechMuted = false;
|
|
682
|
+
const applyMic = () => setConvMicMuted(userMuted || speechMuted);
|
|
683
|
+
// Lines `sendText` already reported. Should the provider ever echo a typed
|
|
684
|
+
// user_message back as a user transcript, it must not be reported twice
|
|
685
|
+
// (and land in memory twice). Matched by exact text, consumed once.
|
|
686
|
+
const typedEcho = [];
|
|
613
687
|
const conv = await mod.Conversation.startSession({
|
|
614
688
|
conversationToken: creds.token,
|
|
615
689
|
connectionType: 'webrtc',
|
|
@@ -660,15 +734,18 @@ async function openConvaiCall(creds, opts, bridge) {
|
|
|
660
734
|
clearTimeout(micUnmuteTimer);
|
|
661
735
|
micUnmuteTimer = null;
|
|
662
736
|
}
|
|
663
|
-
|
|
737
|
+
speechMuted = true;
|
|
738
|
+
applyMic();
|
|
664
739
|
}
|
|
665
740
|
else {
|
|
666
741
|
if (micUnmuteTimer)
|
|
667
742
|
clearTimeout(micUnmuteTimer);
|
|
668
743
|
micUnmuteTimer = setTimeout(() => {
|
|
669
744
|
micUnmuteTimer = null;
|
|
670
|
-
if (
|
|
671
|
-
|
|
745
|
+
if (closed)
|
|
746
|
+
return;
|
|
747
|
+
speechMuted = false;
|
|
748
|
+
applyMic();
|
|
672
749
|
}, MIC_UNMUTE_TAIL_MS);
|
|
673
750
|
}
|
|
674
751
|
},
|
|
@@ -677,8 +754,19 @@ async function openConvaiCall(creds, opts, bridge) {
|
|
|
677
754
|
// the server granted `audioTags` for this call (0.64.0).
|
|
678
755
|
const raw = (message ?? '').trim();
|
|
679
756
|
const text = creds.audioTags && role === 'agent' ? stripAudioTags(raw) : raw;
|
|
757
|
+
// What was performed, read off the same raw line before it is
|
|
758
|
+
// stripped (0.70.0): the transcript and memory stay clean, and the
|
|
759
|
+
// integrator can still count the cues.
|
|
760
|
+
const cues = creds.audioTags && role === 'agent' ? { audioTags: extractAudioTags(raw) } : {};
|
|
680
761
|
if (!closed && text) {
|
|
681
|
-
|
|
762
|
+
if (role !== 'agent') {
|
|
763
|
+
const echo = typedEcho.indexOf(text);
|
|
764
|
+
if (echo !== -1) {
|
|
765
|
+
typedEcho.splice(echo, 1);
|
|
766
|
+
return;
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
opts.onTranscript?.({ role: role === 'agent' ? 'assistant' : 'user', text, ...cues });
|
|
682
770
|
}
|
|
683
771
|
},
|
|
684
772
|
onError: (message) => {
|
|
@@ -725,6 +813,10 @@ async function openConvaiCall(creds, opts, bridge) {
|
|
|
725
813
|
opts.onError?.(new Error('call disconnected'));
|
|
726
814
|
}
|
|
727
815
|
});
|
|
816
|
+
// The session is up: honour a start-muted request now (the EL client has no
|
|
817
|
+
// start-muted option — see CompanionCallOptions.muted).
|
|
818
|
+
if (userMuted)
|
|
819
|
+
applyMic();
|
|
728
820
|
return {
|
|
729
821
|
provider: 'elevenlabs-convai',
|
|
730
822
|
close: () => {
|
|
@@ -750,6 +842,31 @@ async function openConvaiCall(creds, opts, bridge) {
|
|
|
750
842
|
/* channel not ready */
|
|
751
843
|
}
|
|
752
844
|
},
|
|
845
|
+
sendText: (text) => {
|
|
846
|
+
const line = typeof text === 'string' ? text.trim() : '';
|
|
847
|
+
if (closed || !line)
|
|
848
|
+
return false;
|
|
849
|
+
try {
|
|
850
|
+
// A `user_message`: the agent answers it as the user's turn, and
|
|
851
|
+
// the server's own turn-taking cuts an utterance in progress.
|
|
852
|
+
conv.sendUserMessage(line);
|
|
853
|
+
}
|
|
854
|
+
catch {
|
|
855
|
+
return false;
|
|
856
|
+
}
|
|
857
|
+
typedEcho.push(line);
|
|
858
|
+
if (typedEcho.length > 20)
|
|
859
|
+
typedEcho.shift();
|
|
860
|
+
opts.onTranscript?.({ role: 'user', text: line });
|
|
861
|
+
return true;
|
|
862
|
+
},
|
|
863
|
+
setMuted: (muted) => {
|
|
864
|
+
userMuted = muted === true;
|
|
865
|
+
if (!closed)
|
|
866
|
+
applyMic();
|
|
867
|
+
},
|
|
868
|
+
isMuted: () => userMuted,
|
|
869
|
+
canMute: typeof conv.setMicMuted === 'function',
|
|
753
870
|
interrupt: () => {
|
|
754
871
|
// BEST-EFFORT silent cut — the EL client has no public "stop playback"
|
|
755
872
|
// 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/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { CompanionClient, CompanionError, pouchyBrandIconUrl, OUTBOX_AMBIGUOUS_M
|
|
|
3
3
|
export type { CompanionDebugEvent } from './client.js';
|
|
4
4
|
export type { CompanionErrorCodeValue, ControlErrorCodeValue } from './errors.js';
|
|
5
5
|
export type { CompanionClientOptions, CompanionStreamState, HelloAck, RecalledMemory, CompanionTurn, CallCredentials, CallRecordingUnavailable, CallRecordingResult, CallWorldBrief, CallPrivateStory, CallTrimmed, CompanionToolDecl, ToolCallEvent, WorldStateInput, CompanionAvatar, CompanionWallet, WalletBalance, BrandIconSize, EndSessionResult, SendTextReply, TurnUsage, QueuedSend, OutboxStore, ConfirmActionResult, MandateDocument, ConfirmOutcomeClass, RememberDedup } from './client.js';
|
|
6
|
-
export { openCompanionCall, HOST_CONTROL_TOOLS, HOST_CONTROL_TOOL_NAMES, AVATAR_VISUAL_TOOLS, AVATAR_VISUAL_TOOL_NAMES, stripAudioTags } from './call.js';
|
|
6
|
+
export { openCompanionCall, HOST_CONTROL_TOOLS, HOST_CONTROL_TOOL_NAMES, AVATAR_VISUAL_TOOLS, AVATAR_VISUAL_TOOL_NAMES, stripAudioTags, extractAudioTags } from './call.js';
|
|
7
7
|
export type { CompanionCall, CompanionCallOptions, VoiceToolBridge } from './call.js';
|
|
8
8
|
export { VOICE_TOOL_VARIABLE, VOICE_TOOL_VARIABLE_PLAIN, VOICE_TOOL_HEADER_PLAIN } from './voice-tool.js';
|
|
9
9
|
export { COMPANION_SCOPES, COMPANION_MODALITIES, SENSITIVE_SCOPES, REPRESENT_SCOPES, DEFAULT_SCOPES, DEFAULT_MODALITIES, isSensitiveScope, isRepresentScope, hasScope, grantsScope } from './scopes.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAExE,OAAO,EACN,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC/E,YAAY,EACX,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,MAAM,QAAQ,CAAC;AAChB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAInF,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EACN,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClE,YAAY,EACX,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACN,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMvE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AACjE,YAAY,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,MAAM,QAAQ,CAAC;AAMhB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EACX,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,MAAM,gBAAgB,CAAC;AAExB,iCAAiC;AACjC,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,eAAe,CAE7E"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAExE,OAAO,EACN,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC/E,YAAY,EACX,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,MAAM,QAAQ,CAAC;AAChB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAInF,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EACN,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClE,YAAY,EACX,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACN,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMvE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AACjE,YAAY,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,MAAM,QAAQ,CAAC;AAMhB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EACX,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,MAAM,gBAAgB,CAAC;AAExB,iCAAiC;AACjC,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,eAAe,CAE7E"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// await c.sendText('what should I do?');
|
|
12
12
|
import { CompanionClient } from './client.js';
|
|
13
13
|
export { CompanionClient, CompanionError, pouchyBrandIconUrl, OUTBOX_AMBIGUOUS_MAX_AGE_MS, OUTBOX_MAX_REPLAY_ATTEMPTS } from './client.js';
|
|
14
|
-
export { openCompanionCall, HOST_CONTROL_TOOLS, HOST_CONTROL_TOOL_NAMES, AVATAR_VISUAL_TOOLS, AVATAR_VISUAL_TOOL_NAMES, stripAudioTags } from './call.js';
|
|
14
|
+
export { openCompanionCall, HOST_CONTROL_TOOLS, HOST_CONTROL_TOOL_NAMES, AVATAR_VISUAL_TOOLS, AVATAR_VISUAL_TOOL_NAMES, stripAudioTags, extractAudioTags } from './call.js';
|
|
15
15
|
// Exported because a self-plumbed integration (one that calls startCall and
|
|
16
16
|
// opens the EL session itself) has to name this variable exactly; a literal
|
|
17
17
|
// typed at their end is the silent-failure path this constant exists to close.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,yEAAyE;AACzE,sDAAsD;AACtD,EAAE;AACF,0DAA0D;AAC1D,6EAA6E;AAC7E,uBAAuB;AACvB,8CAA8C;AAC9C,eAAe;AACf,8EAA8E;AAC9E,2CAA2C;AAE3C,OAAO,EAAE,eAAe,EAA+B,MAAM,UAAU,CAAC;AAExE,OAAO,EACN,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,MAAM,UAAU,CAAC;AAgClB,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,MAAM,QAAQ,CAAC;AAEhB,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EACN,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,MAAM,UAAU,CAAC;AA4BlB,wEAAwE;AACxE,2EAA2E;AAC3E,8EAA8E;AAC9E,gEAAgE;AAChE,OAAO,EACN,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,MAAM,YAAY,CAAC;AAGpB,+EAA+E;AAC/E,0EAA0E;AAC1E,2EAA2E;AAC3E,4EAA4E;AAC5E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAWjE,6EAA6E;AAC7E,6EAA6E;AAC7E,0EAA0E;AAC1E,+BAA+B;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAQrD,iCAAiC;AACjC,MAAM,UAAU,eAAe,CAAC,IAA4B;IAC3D,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,yEAAyE;AACzE,sDAAsD;AACtD,EAAE;AACF,0DAA0D;AAC1D,6EAA6E;AAC7E,uBAAuB;AACvB,8CAA8C;AAC9C,eAAe;AACf,8EAA8E;AAC9E,2CAA2C;AAE3C,OAAO,EAAE,eAAe,EAA+B,MAAM,UAAU,CAAC;AAExE,OAAO,EACN,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,MAAM,UAAU,CAAC;AAgClB,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,MAAM,QAAQ,CAAC;AAEhB,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EACN,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,MAAM,UAAU,CAAC;AA4BlB,wEAAwE;AACxE,2EAA2E;AAC3E,8EAA8E;AAC9E,gEAAgE;AAChE,OAAO,EACN,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,MAAM,YAAY,CAAC;AAGpB,+EAA+E;AAC/E,0EAA0E;AAC1E,2EAA2E;AAC3E,4EAA4E;AAC5E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAWjE,6EAA6E;AAC7E,6EAA6E;AAC7E,0EAA0E;AAC1E,+BAA+B;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAQrD,iCAAiC;AACjC,MAAM,UAAU,eAAe,CAAC,IAA4B;IAC3D,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pouchy_ai/companion-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.70.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
|
@@ -186,13 +186,28 @@ export function stripAudioTags(text: string): string {
|
|
|
186
186
|
.trim();
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
+
/** The performed cues in a call transcript line, in order, without brackets
|
|
190
|
+
* (0.70.0): `'[laughs] 好呀 [whispers] 秘密'` → `['laughs', 'whispers']`. The
|
|
191
|
+
* same cues `stripAudioTags` removes, so the two always agree. `connectCall`
|
|
192
|
+
* reports them on each companion line of a call where `audioTags` was
|
|
193
|
+
* granted (`onTranscript`'s `audioTags`); exported for self-plumbed
|
|
194
|
+
* ElevenLabs sessions. */
|
|
195
|
+
export function extractAudioTags(text: string): string[] {
|
|
196
|
+
return [...text.matchAll(/\[([A-Za-z][A-Za-z ,'-]{0,38})\]/g)].map((m) => m[1]!.trim());
|
|
197
|
+
}
|
|
198
|
+
|
|
189
199
|
/** Names of the avatar visual tools (for routing + the no-op fallback). */
|
|
190
200
|
export const AVATAR_VISUAL_TOOL_NAMES: readonly string[] = AVATAR_VISUAL_TOOLS.map((t) => t.name);
|
|
191
201
|
|
|
192
202
|
export interface CompanionCallOptions {
|
|
193
203
|
/** Element to route remote audio to. One is created if omitted. */
|
|
194
204
|
audioElement?: HTMLAudioElement;
|
|
195
|
-
|
|
205
|
+
/** One finished line. `text` never carries performed cues. On a call where
|
|
206
|
+
* `audioTags` was GRANTED (0.70.0), every companion line also carries
|
|
207
|
+
* `audioTags`: the cues it performed, in order (`[]` when it performed
|
|
208
|
+
* none). Absent on user lines and on calls without the grant, so absence
|
|
209
|
+
* means "not applicable", never "zero". */
|
|
210
|
+
onTranscript?: (e: { role: 'user' | 'assistant'; text: string; audioTags?: string[] }) => void;
|
|
196
211
|
onSpeakingChange?: (speaking: boolean) => void;
|
|
197
212
|
onError?: (err: Error) => void;
|
|
198
213
|
/** OPT-IN full duplex: keep the mic OPEN while the companion speaks so the
|
|
@@ -203,14 +218,57 @@ export interface CompanionCallOptions {
|
|
|
203
218
|
* "说一句就断了" field report). Enable only where AEC actually holds:
|
|
204
219
|
* headphones, desktop, or devices you have verified. */
|
|
205
220
|
bargeIn?: boolean;
|
|
221
|
+
/** Open the call with the reader's microphone MUTED (0.69.0); see
|
|
222
|
+
* `CompanionCall.setMuted`. On `openai-realtime` the track is disabled
|
|
223
|
+
* before it is attached, so nothing is ever sent. On `elevenlabs-convai`
|
|
224
|
+
* the mute is applied the moment the session is up; the provider client
|
|
225
|
+
* has no start-muted option, so the connect handshake itself (before the
|
|
226
|
+
* agent's first line) can carry audio. */
|
|
227
|
+
muted?: boolean;
|
|
206
228
|
}
|
|
207
229
|
|
|
208
230
|
export interface CompanionCall {
|
|
209
231
|
/** Hang up. Idempotent. */
|
|
210
232
|
close: () => void;
|
|
211
233
|
/** Inject an out-of-band context line. `speak: true` makes the companion react
|
|
212
|
-
* now; false stages it for the next turn.
|
|
234
|
+
* now; false stages it for the next turn.
|
|
235
|
+
*
|
|
236
|
+
* NOT the reader's words: the line does not reach `onTranscript` or the
|
|
237
|
+
* memory `/end` consolidates, and `connectCall` uses this same lever for
|
|
238
|
+
* server-pushed world moments. For something the reader TYPED, use
|
|
239
|
+
* `sendText`. */
|
|
213
240
|
injectEvent: (text: string, speak?: boolean) => void;
|
|
241
|
+
/** Send a line the READER typed, as their turn in the call (0.69.0). The
|
|
242
|
+
* companion answers it as something the reader said; it is reported to
|
|
243
|
+
* `onTranscript` as `role: 'user'` (once, by the SDK, the moment it is
|
|
244
|
+
* sent) and so reaches the memory `connectCall` hands to `/end` at hang-up,
|
|
245
|
+
* in order with the spoken lines.
|
|
246
|
+
*
|
|
247
|
+
* It takes the floor the way speech does: an utterance the companion is
|
|
248
|
+
* in the middle of is cut, then it replies to this line.
|
|
249
|
+
*
|
|
250
|
+
* Nothing is sent before this call — the provider sees the text only when
|
|
251
|
+
* you pass it here, so a check you run first runs before anyone reads it.
|
|
252
|
+
* Returns `false` (and sends nothing) for blank text, after `close()`, or
|
|
253
|
+
* when the call's channel is not open; `true` once it was handed to the
|
|
254
|
+
* provider. Same behaviour on both providers. */
|
|
255
|
+
sendText: (text: string) => boolean;
|
|
256
|
+
/** The reader's own mute (0.69.0). `true` stops the microphone sending
|
|
257
|
+
* audio until `setMuted(false)`. Distinct from the SDK's half-duplex mute
|
|
258
|
+
* (the mic is muted while the companion speaks, unless `bargeIn`): a
|
|
259
|
+
* reader who muted stays muted when the companion finishes a line. A
|
|
260
|
+
* no-op after `close()`. Check `canMute` before showing a mute control. */
|
|
261
|
+
setMuted: (muted: boolean) => void;
|
|
262
|
+
/** The reader's mute as last set (0.69.0) — the `setMuted` / `muted`
|
|
263
|
+
* state, not whether the half-duplex mute is momentarily engaged. A
|
|
264
|
+
* method, not a field, so it stays live on a spread copy of the handle. */
|
|
265
|
+
isMuted: () => boolean;
|
|
266
|
+
/** Whether `setMuted` actually controls the microphone on this call
|
|
267
|
+
* (0.69.0). `true` on `openai-realtime`; on `elevenlabs-convai` it is
|
|
268
|
+
* `true` when the installed `@elevenlabs/client` exposes `setMicMuted`
|
|
269
|
+
* (every version the peer range allows does). When `false`, `setMuted`
|
|
270
|
+
* only records the state: do not show a mute control. */
|
|
271
|
+
canMute: boolean;
|
|
214
272
|
/** SILENT CUT (0.36.0): stop the utterance currently being spoken WITHOUT
|
|
215
273
|
* generating any new speech — the "stale commentary at a beat boundary"
|
|
216
274
|
* case (field request: fast-paced game, last hand's commentary still
|
|
@@ -359,9 +417,16 @@ async function openOpenAICall(
|
|
|
359
417
|
// the companion interrupting itself.
|
|
360
418
|
const MIC_UNMUTE_TAIL_MS = 350;
|
|
361
419
|
let micUnmuteTimer: ReturnType<typeof setTimeout> | null = null;
|
|
362
|
-
|
|
420
|
+
// Two independent reasons the mic is off (0.69.0): the READER muted
|
|
421
|
+
// (setMuted), or the companion is speaking (half-duplex). The track is on
|
|
422
|
+
// only when neither holds, so the end-of-speech re-open can never undo a
|
|
423
|
+
// reader's mute — which is what made a mute layered on top of this SDK a
|
|
424
|
+
// button that switched itself back on.
|
|
425
|
+
let userMuted = opts.muted === true;
|
|
426
|
+
let speechMuted = false;
|
|
427
|
+
const applyMic = () => {
|
|
363
428
|
try {
|
|
364
|
-
for (const tr of mic.getAudioTracks()) tr.enabled =
|
|
429
|
+
for (const tr of mic.getAudioTracks()) tr.enabled = !userMuted && !speechMuted;
|
|
365
430
|
} catch {
|
|
366
431
|
/* track gone — ignore */
|
|
367
432
|
}
|
|
@@ -371,13 +436,16 @@ async function openOpenAICall(
|
|
|
371
436
|
clearTimeout(micUnmuteTimer);
|
|
372
437
|
micUnmuteTimer = null;
|
|
373
438
|
}
|
|
374
|
-
|
|
439
|
+
speechMuted = true;
|
|
440
|
+
applyMic();
|
|
375
441
|
};
|
|
376
442
|
const scheduleMicUnmute = () => {
|
|
377
443
|
if (micUnmuteTimer) clearTimeout(micUnmuteTimer);
|
|
378
444
|
micUnmuteTimer = setTimeout(() => {
|
|
379
445
|
micUnmuteTimer = null;
|
|
380
|
-
if (
|
|
446
|
+
if (closed) return;
|
|
447
|
+
speechMuted = false;
|
|
448
|
+
applyMic();
|
|
381
449
|
}, MIC_UNMUTE_TAIL_MS);
|
|
382
450
|
};
|
|
383
451
|
|
|
@@ -386,6 +454,15 @@ async function openOpenAICall(
|
|
|
386
454
|
// active response makes the server emit a benign-but-noisy error event, so
|
|
387
455
|
// an idle interrupt() must be a true no-op.
|
|
388
456
|
let oaiSpeaking = false;
|
|
457
|
+
// Whether a response is in flight (response.created → response.done) —
|
|
458
|
+
// broader than `oaiSpeaking`, which starts only with audio. `sendText`
|
|
459
|
+
// cancels an in-flight response before creating its own: the server
|
|
460
|
+
// refuses a second concurrent response, which would leave the typed line
|
|
461
|
+
// in the conversation with no reply.
|
|
462
|
+
let oaiResponseActive = false;
|
|
463
|
+
// A reader who asked to start muted never sends a frame: the track is
|
|
464
|
+
// disabled before the offer is even created.
|
|
465
|
+
applyMic();
|
|
389
466
|
|
|
390
467
|
const dc = pc.createDataChannel('oai-events');
|
|
391
468
|
// `response.function_call_arguments.done` carries the call_id + args but often
|
|
@@ -486,6 +563,8 @@ async function openOpenAICall(
|
|
|
486
563
|
msg.transcript
|
|
487
564
|
) {
|
|
488
565
|
opts.onTranscript?.({ role: 'user', text: msg.transcript });
|
|
566
|
+
} else if (msg.type === 'response.created') {
|
|
567
|
+
oaiResponseActive = true;
|
|
489
568
|
} else if (msg.type === 'output_audio_buffer.started') {
|
|
490
569
|
oaiSpeaking = true;
|
|
491
570
|
opts.onSpeakingChange?.(true);
|
|
@@ -504,6 +583,7 @@ async function openOpenAICall(
|
|
|
504
583
|
// audio doesn't get captured the instant we unmute. Several event names
|
|
505
584
|
// can end a turn; any of them re-arms the mic.
|
|
506
585
|
oaiSpeaking = false;
|
|
586
|
+
if (msg.type === 'response.done') oaiResponseActive = false;
|
|
507
587
|
opts.onSpeakingChange?.(false);
|
|
508
588
|
if (opts.bargeIn !== true) scheduleMicUnmute();
|
|
509
589
|
}
|
|
@@ -675,6 +755,36 @@ async function openOpenAICall(
|
|
|
675
755
|
);
|
|
676
756
|
if (speak) dc.send(JSON.stringify({ type: 'response.create' }));
|
|
677
757
|
},
|
|
758
|
+
sendText: (text) => {
|
|
759
|
+
const line = typeof text === 'string' ? text.trim() : '';
|
|
760
|
+
if (closed || dc.readyState !== 'open' || !line) return false;
|
|
761
|
+
try {
|
|
762
|
+
if (oaiResponseActive) {
|
|
763
|
+
dc.send(JSON.stringify({ type: 'response.cancel' }));
|
|
764
|
+
if (oaiSpeaking) dc.send(JSON.stringify({ type: 'output_audio_buffer.clear' }));
|
|
765
|
+
}
|
|
766
|
+
dc.send(
|
|
767
|
+
JSON.stringify({
|
|
768
|
+
type: 'conversation.item.create',
|
|
769
|
+
item: { type: 'message', role: 'user', content: [{ type: 'input_text', text: line }] }
|
|
770
|
+
})
|
|
771
|
+
);
|
|
772
|
+
dc.send(JSON.stringify({ type: 'response.create' }));
|
|
773
|
+
} catch {
|
|
774
|
+
return false;
|
|
775
|
+
}
|
|
776
|
+
// A typed item produces no input-audio transcription event, so the SDK
|
|
777
|
+
// reports it itself — that is what puts it in the caller's transcript
|
|
778
|
+
// and in the memory connectCall consolidates at hang-up.
|
|
779
|
+
opts.onTranscript?.({ role: 'user', text: line });
|
|
780
|
+
return true;
|
|
781
|
+
},
|
|
782
|
+
setMuted: (muted) => {
|
|
783
|
+
userMuted = muted === true;
|
|
784
|
+
if (!closed) applyMic();
|
|
785
|
+
},
|
|
786
|
+
isMuted: () => userMuted,
|
|
787
|
+
canMute: true,
|
|
678
788
|
interrupt: () => {
|
|
679
789
|
// Silent cut: stop generating (response.cancel) AND flush what's
|
|
680
790
|
// already buffered for playback (output_audio_buffer.clear — the
|
|
@@ -740,6 +850,15 @@ async function openConvaiCall(
|
|
|
740
850
|
/* not supported on this client build — ignore */
|
|
741
851
|
}
|
|
742
852
|
};
|
|
853
|
+
// The reader's mute and the half-duplex mute are separate reasons (0.69.0,
|
|
854
|
+
// see the OpenAI leg); the mic opens only when neither holds.
|
|
855
|
+
let userMuted = opts.muted === true;
|
|
856
|
+
let speechMuted = false;
|
|
857
|
+
const applyMic = () => setConvMicMuted(userMuted || speechMuted);
|
|
858
|
+
// Lines `sendText` already reported. Should the provider ever echo a typed
|
|
859
|
+
// user_message back as a user transcript, it must not be reported twice
|
|
860
|
+
// (and land in memory twice). Matched by exact text, consumed once.
|
|
861
|
+
const typedEcho: string[] = [];
|
|
743
862
|
const conv = await mod.Conversation.startSession({
|
|
744
863
|
conversationToken: creds.token,
|
|
745
864
|
connectionType: 'webrtc',
|
|
@@ -788,12 +907,15 @@ async function openConvaiCall(
|
|
|
788
907
|
clearTimeout(micUnmuteTimer);
|
|
789
908
|
micUnmuteTimer = null;
|
|
790
909
|
}
|
|
791
|
-
|
|
910
|
+
speechMuted = true;
|
|
911
|
+
applyMic();
|
|
792
912
|
} else {
|
|
793
913
|
if (micUnmuteTimer) clearTimeout(micUnmuteTimer);
|
|
794
914
|
micUnmuteTimer = setTimeout(() => {
|
|
795
915
|
micUnmuteTimer = null;
|
|
796
|
-
if (
|
|
916
|
+
if (closed) return;
|
|
917
|
+
speechMuted = false;
|
|
918
|
+
applyMic();
|
|
797
919
|
}, MIC_UNMUTE_TAIL_MS);
|
|
798
920
|
}
|
|
799
921
|
},
|
|
@@ -802,8 +924,19 @@ async function openConvaiCall(
|
|
|
802
924
|
// the server granted `audioTags` for this call (0.64.0).
|
|
803
925
|
const raw = (message ?? '').trim();
|
|
804
926
|
const text = creds.audioTags && role === 'agent' ? stripAudioTags(raw) : raw;
|
|
927
|
+
// What was performed, read off the same raw line before it is
|
|
928
|
+
// stripped (0.70.0): the transcript and memory stay clean, and the
|
|
929
|
+
// integrator can still count the cues.
|
|
930
|
+
const cues = creds.audioTags && role === 'agent' ? { audioTags: extractAudioTags(raw) } : {};
|
|
805
931
|
if (!closed && text) {
|
|
806
|
-
|
|
932
|
+
if (role !== 'agent') {
|
|
933
|
+
const echo = typedEcho.indexOf(text);
|
|
934
|
+
if (echo !== -1) {
|
|
935
|
+
typedEcho.splice(echo, 1);
|
|
936
|
+
return;
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
opts.onTranscript?.({ role: role === 'agent' ? 'assistant' : 'user', text, ...cues });
|
|
807
940
|
}
|
|
808
941
|
},
|
|
809
942
|
onError: (message: string) => {
|
|
@@ -845,6 +978,10 @@ async function openConvaiCall(
|
|
|
845
978
|
}
|
|
846
979
|
});
|
|
847
980
|
|
|
981
|
+
// The session is up: honour a start-muted request now (the EL client has no
|
|
982
|
+
// start-muted option — see CompanionCallOptions.muted).
|
|
983
|
+
if (userMuted) applyMic();
|
|
984
|
+
|
|
848
985
|
return {
|
|
849
986
|
provider: 'elevenlabs-convai',
|
|
850
987
|
close: () => {
|
|
@@ -865,6 +1002,27 @@ async function openConvaiCall(
|
|
|
865
1002
|
/* channel not ready */
|
|
866
1003
|
}
|
|
867
1004
|
},
|
|
1005
|
+
sendText: (text) => {
|
|
1006
|
+
const line = typeof text === 'string' ? text.trim() : '';
|
|
1007
|
+
if (closed || !line) return false;
|
|
1008
|
+
try {
|
|
1009
|
+
// A `user_message`: the agent answers it as the user's turn, and
|
|
1010
|
+
// the server's own turn-taking cuts an utterance in progress.
|
|
1011
|
+
conv.sendUserMessage(line);
|
|
1012
|
+
} catch {
|
|
1013
|
+
return false;
|
|
1014
|
+
}
|
|
1015
|
+
typedEcho.push(line);
|
|
1016
|
+
if (typedEcho.length > 20) typedEcho.shift();
|
|
1017
|
+
opts.onTranscript?.({ role: 'user', text: line });
|
|
1018
|
+
return true;
|
|
1019
|
+
},
|
|
1020
|
+
setMuted: (muted) => {
|
|
1021
|
+
userMuted = muted === true;
|
|
1022
|
+
if (!closed) applyMic();
|
|
1023
|
+
},
|
|
1024
|
+
isMuted: () => userMuted,
|
|
1025
|
+
canMute: typeof (conv as unknown as { setMicMuted?: unknown }).setMicMuted === 'function',
|
|
868
1026
|
interrupt: () => {
|
|
869
1027
|
// BEST-EFFORT silent cut — the EL client has no public "stop playback"
|
|
870
1028
|
// API (interruption is normally server-driven: a server `interruption`
|
package/src/index.ts
CHANGED
|
@@ -56,7 +56,8 @@ export {
|
|
|
56
56
|
HOST_CONTROL_TOOL_NAMES,
|
|
57
57
|
AVATAR_VISUAL_TOOLS,
|
|
58
58
|
AVATAR_VISUAL_TOOL_NAMES,
|
|
59
|
-
stripAudioTags
|
|
59
|
+
stripAudioTags,
|
|
60
|
+
extractAudioTags
|
|
60
61
|
} from './call';
|
|
61
62
|
export type { CompanionCall, CompanionCallOptions, VoiceToolBridge } from './call';
|
|
62
63
|
// Exported because a self-plumbed integration (one that calls startCall and
|