@burdenoff/fe-libs 2026.1003.1 → 2026.1003.2
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/dist/shared/assistant/index.d.ts +1 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/prewarm.d.ts +71 -0
- package/dist/shared/assistant/prewarm.d.ts.map +1 -1
- package/dist/shared/assistant/prewarm.js +49 -2
- package/dist/shared/assistant/speech/speechFeed.d.ts +63 -0
- package/dist/shared/assistant/speech/speechFeed.d.ts.map +1 -0
- package/dist/shared/assistant/speech/speechFeed.js +40 -0
- package/dist/shared/assistant/turnTimeline.d.ts +22 -2
- package/dist/shared/assistant/turnTimeline.d.ts.map +1 -1
- package/dist/shared/assistant/turnTimeline.js +18 -1
- package/dist/shared/assistant/turnTimingReport.d.ts.map +1 -1
- package/dist/shared/assistant/turnTimingReport.js +5 -4
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +981 -931
- package/dist/shared/assistant/ui/AssistantSpeechProvider.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantSpeechProvider.js +198 -169
- package/dist/shared/assistant/ui/useVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/useVoiceSession.js +165 -153
- package/dist/shared/assistant/voice/speakableText.d.ts +16 -1
- package/dist/shared/assistant/voice/speakableText.d.ts.map +1 -1
- package/dist/shared/assistant/voice/speakableText.js +116 -102
- package/dist/shared/assistant/voice/voiceSession.d.ts +12 -0
- package/dist/shared/assistant/voice/voiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/voice/voiceSession.js +6 -0
- package/dist/shared-assistant.js +151 -150
- package/package.json +1 -1
|
@@ -1,164 +1,176 @@
|
|
|
1
1
|
import { useVoiceInput as e } from "../voice/useVoiceInput.js";
|
|
2
|
-
import {
|
|
2
|
+
import { speechFeed as t } from "../speech/speechFeed.js";
|
|
3
|
+
import { INITIAL_SESSION as n, INTERRUPT_MAX_MS as ee, NOTHING_HEARD as r, SILENCE_SUBMIT_MS as te, advanceHeardClock as ne, isCapturing as i, isSubmittable as re, planListeningHold as ie, planReplyConsumption as ae, planVoiceAnnouncement as oe, spokenSoFar as a, voiceSessionReducer as se } from "../voice/voiceSession.js";
|
|
3
4
|
import { captionChunks as ce } from "../voice/speechPlayback.js";
|
|
4
|
-
import { turnClockMs as
|
|
5
|
+
import { turnClockMs as o } from "../turnTimeline.js";
|
|
5
6
|
import { useAssistantSpeech as le } from "./AssistantSpeechProvider.js";
|
|
6
|
-
import { useCallback as
|
|
7
|
+
import { useCallback as s, useEffect as c, useLayoutEffect as ue, useMemo as de, useReducer as fe, useRef as l, useState as u } from "react";
|
|
7
8
|
//#region src/shared/assistant/ui/useVoiceSession.ts
|
|
8
9
|
var pe = 4e3, me = 2500, he = 5e3, ge = 12e3, _e = "data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA=";
|
|
9
|
-
function
|
|
10
|
-
let
|
|
10
|
+
function d({ onSubmit: d, latestReply: f, language: ve }) {
|
|
11
|
+
let p = l(null), [m, h] = fe(s((e, t) => se(e, t, p.current), []), n), g = le(), { setSessionSpeaking: _, setSessionMicOpen: v, speakingMessageId: y, stop: b } = g, x = l(g.toggle), S = g.toggle;
|
|
11
12
|
ue(() => {
|
|
12
|
-
|
|
13
|
-
}, [
|
|
14
|
-
let
|
|
15
|
-
|
|
16
|
-
let
|
|
17
|
-
|
|
18
|
-
}, []),
|
|
13
|
+
x.current = S;
|
|
14
|
+
}, [S]);
|
|
15
|
+
let C = l(null), w = l({}), T = l(r), E = l(null), D = l(!1), O = l(null), [k, A] = u(null), [j, M] = u(!1), [N, P] = u(!1), F = l(m);
|
|
16
|
+
F.current = m;
|
|
17
|
+
let I = l([]), L = l(null), R = l(!1), z = s(() => {
|
|
18
|
+
I.current = [], L.current = null, R.current = !1;
|
|
19
|
+
}, []), B = s(() => {
|
|
19
20
|
for (;;) {
|
|
20
|
-
let e =
|
|
21
|
+
let e = I.current.shift();
|
|
21
22
|
if (!e) return !1;
|
|
22
23
|
if (!(e.stillWanted && !e.stillWanted())) {
|
|
23
|
-
|
|
24
|
+
L.current = e, p.current = p.current ? `${p.current} ${e.text}` : e.text;
|
|
24
25
|
try {
|
|
25
|
-
|
|
26
|
+
x.current(e.id, e.text, e.lang);
|
|
26
27
|
} catch {
|
|
27
|
-
|
|
28
|
+
L.current = null;
|
|
28
29
|
continue;
|
|
29
30
|
}
|
|
30
31
|
return !0;
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
|
-
}, []),
|
|
34
|
+
}, []), V = l(!1), H = s((e) => {
|
|
34
35
|
let t = ie({
|
|
35
36
|
requested: e,
|
|
36
|
-
held:
|
|
37
|
-
muted:
|
|
37
|
+
held: V.current,
|
|
38
|
+
muted: F.current.muted
|
|
38
39
|
});
|
|
39
|
-
|
|
40
|
+
V.current = t.held, t.mute !== null && h({
|
|
40
41
|
type: "mute",
|
|
41
42
|
muted: t.mute
|
|
42
43
|
});
|
|
43
|
-
}, []),
|
|
44
|
-
let t = oe(
|
|
45
|
-
t !== "drop" && (
|
|
46
|
-
}, []),
|
|
47
|
-
if (
|
|
48
|
-
|
|
44
|
+
}, []), U = s((e) => {
|
|
45
|
+
let t = oe(F.current);
|
|
46
|
+
t !== "drop" && (L.current?.id === e.id || I.current.some((t) => t.id === e.id) || (I.current.push(e), t === "start" && !R.current && (R.current = !0, h({ type: "announce" }))));
|
|
47
|
+
}, []), W = s((e) => {
|
|
48
|
+
if (F.current.phase !== "thinking") {
|
|
49
|
+
U(e);
|
|
49
50
|
return;
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
-
}, [
|
|
53
|
-
|
|
54
|
-
if (
|
|
55
|
-
|
|
52
|
+
I.current.push(e), R.current = !0, h({ type: "answered-locally" });
|
|
53
|
+
}, [U]), G = l(f);
|
|
54
|
+
G.current = f, c(() => {
|
|
55
|
+
if (m.phase === "speaking") {
|
|
56
|
+
let e = O.current;
|
|
57
|
+
p.current = e && E.current === e.id && f?.id !== e.id ? e.text : f?.text ?? null;
|
|
56
58
|
return;
|
|
57
59
|
}
|
|
58
|
-
if (
|
|
60
|
+
if (p.current === null) return;
|
|
59
61
|
let e = setTimeout(() => {
|
|
60
|
-
|
|
62
|
+
p.current = null;
|
|
61
63
|
}, me);
|
|
62
64
|
return () => clearTimeout(e);
|
|
63
|
-
}, [
|
|
64
|
-
let
|
|
65
|
-
|
|
65
|
+
}, [m.phase, f]);
|
|
66
|
+
let K = s((e, t) => {
|
|
67
|
+
h({
|
|
66
68
|
type: "speech",
|
|
67
69
|
transcript: e,
|
|
68
70
|
final: t
|
|
69
71
|
});
|
|
70
|
-
}, []),
|
|
71
|
-
|
|
72
|
-
}, [
|
|
73
|
-
onFinalize:
|
|
72
|
+
}, []), q = l(0), J = s(() => {
|
|
73
|
+
z(), b(), q.current = Date.now(), M(!0), h({ type: "interrupt" });
|
|
74
|
+
}, [b, z]), Y = e({
|
|
75
|
+
onFinalize: s((e) => K(e, !0), [K]),
|
|
74
76
|
language: ve
|
|
75
77
|
});
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}, [
|
|
79
|
-
if (
|
|
80
|
-
let e = setTimeout(() =>
|
|
81
|
-
return
|
|
82
|
-
|
|
83
|
-
speechEnded:
|
|
78
|
+
c(() => {
|
|
79
|
+
Y.interim && K(Y.interim, !1);
|
|
80
|
+
}, [Y.interim, K]), c(() => {
|
|
81
|
+
if (C.current && clearTimeout(C.current), P(!1), T.current = ne(T.current, m, o()), m.phase !== "listening" || m.muted || !re(a(m))) return;
|
|
82
|
+
let e = setTimeout(() => P(!0), 800), t = o();
|
|
83
|
+
return C.current = setTimeout(() => {
|
|
84
|
+
w.current = {
|
|
85
|
+
speechEnded: T.current.at ?? t,
|
|
84
86
|
graceStarted: t,
|
|
85
|
-
graceEnded:
|
|
86
|
-
},
|
|
87
|
+
graceEnded: o()
|
|
88
|
+
}, h({ type: "silence" });
|
|
87
89
|
}, te), () => {
|
|
88
|
-
clearTimeout(e),
|
|
90
|
+
clearTimeout(e), C.current && clearTimeout(C.current);
|
|
89
91
|
};
|
|
90
|
-
}, [
|
|
91
|
-
if (!
|
|
92
|
-
let e = Date.now() -
|
|
92
|
+
}, [m]), c(() => {
|
|
93
|
+
if (!j) return;
|
|
94
|
+
let e = Date.now() - q.current, t = Y.isListening ? Math.max(0, 500 - e) : Math.max(0, ee - e), n = setTimeout(() => M(!1), t);
|
|
93
95
|
return () => clearTimeout(n);
|
|
94
|
-
}, [
|
|
95
|
-
let
|
|
96
|
-
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
let e =
|
|
100
|
-
e &&
|
|
101
|
-
}, [
|
|
102
|
-
let e = ae(
|
|
103
|
-
e.claim && (
|
|
96
|
+
}, [j, Y.isListening]);
|
|
97
|
+
let X = l("");
|
|
98
|
+
m.phase === "listening" && (X.current = a(m)), c(() => {
|
|
99
|
+
if (m.phase !== "thinking") return;
|
|
100
|
+
v(!1), z();
|
|
101
|
+
let e = X.current.trim();
|
|
102
|
+
e && d(e, Z.current ?? `vs-orphan-${Date.now().toString(36)}`, w.current), w.current = {}, T.current = r;
|
|
103
|
+
}, [m.phase]), c(() => {
|
|
104
|
+
let e = ae(f?.id, m.phase, E.current);
|
|
105
|
+
e.claim && (E.current = f?.id ?? null, e.advance && f && h({
|
|
104
106
|
type: "reply",
|
|
105
|
-
text:
|
|
107
|
+
text: f.text
|
|
106
108
|
}));
|
|
107
|
-
}, [
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
109
|
+
}, [f, m.phase]), c(() => {
|
|
110
|
+
if (y === null || m.phase !== "thinking" || E.current === y) return;
|
|
111
|
+
let e = t.peek(y);
|
|
112
|
+
!e || e.channel !== "voice" || e.voiceSessionId === void 0 || e.voiceSessionId !== Z.current || (E.current = y, O.current = {
|
|
113
|
+
id: y,
|
|
114
|
+
text: e.text
|
|
115
|
+
}, h({
|
|
116
|
+
type: "reply-audio-started",
|
|
117
|
+
replyId: y
|
|
118
|
+
}));
|
|
119
|
+
}, [y, m.phase]), c(() => {
|
|
120
|
+
let e = y !== null;
|
|
121
|
+
D.current && !e && (L.current = null, (F.current.phase !== "speaking" || !B()) && h({ type: "speech-ended" })), D.current = e;
|
|
122
|
+
}, [y, B]), c(() => {
|
|
123
|
+
m.phase !== "listening" && A((e) => e === "nothing-heard" ? null : e);
|
|
124
|
+
}, [m.phase]), c(() => {
|
|
125
|
+
if (m.phase !== "speaking" || y !== null) return;
|
|
114
126
|
let e = setTimeout(() => {
|
|
115
|
-
|
|
127
|
+
D.current || (z(), h({ type: "speech-ended" }));
|
|
116
128
|
}, pe);
|
|
117
129
|
return () => clearTimeout(e);
|
|
118
130
|
}, [
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
]),
|
|
123
|
-
let e =
|
|
124
|
-
|
|
131
|
+
m.phase,
|
|
132
|
+
y,
|
|
133
|
+
z
|
|
134
|
+
]), c(() => {
|
|
135
|
+
let e = i(m);
|
|
136
|
+
v(e), e ? Y.isActive || Y.start("auto") : Y.isActive && Y.stop();
|
|
125
137
|
}, [
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
]),
|
|
130
|
-
|
|
131
|
-
}, [
|
|
132
|
-
|
|
138
|
+
m,
|
|
139
|
+
Y,
|
|
140
|
+
v
|
|
141
|
+
]), c(() => {
|
|
142
|
+
m.phase !== "speaking" || !R.current || (R.current = !1, B() || h({ type: "speech-ended" }));
|
|
143
|
+
}, [m.phase, B]), c(() => {
|
|
144
|
+
Y.error === "not-allowed" || Y.error === "audio-capture" ? h({
|
|
133
145
|
type: "fail",
|
|
134
146
|
error: "mic-denied"
|
|
135
|
-
}) :
|
|
147
|
+
}) : Y.error === "language-not-supported" ? h({
|
|
136
148
|
type: "fail",
|
|
137
149
|
error: "no-speech-support"
|
|
138
|
-
}) :
|
|
139
|
-
}, [
|
|
140
|
-
|
|
141
|
-
}, [
|
|
142
|
-
if (
|
|
143
|
-
let e = setTimeout(() =>
|
|
150
|
+
}) : Y.error === "network" ? A("network") : Y.error === "unknown" && A("recognition-failed");
|
|
151
|
+
}, [Y.error]), c(() => {
|
|
152
|
+
Y.error !== null || !Y.isListening || A((e) => e === "network" || e === "recognition-failed" ? null : e);
|
|
153
|
+
}, [Y.error, Y.isListening]), c(() => {
|
|
154
|
+
if (Y.isListening && A((e) => e === "not-capturing" ? null : e), !i(m) || Y.isListening) return;
|
|
155
|
+
let e = setTimeout(() => A("not-capturing"), he);
|
|
144
156
|
return () => clearTimeout(e);
|
|
145
|
-
}, [
|
|
146
|
-
if (
|
|
147
|
-
let e = setTimeout(() =>
|
|
157
|
+
}, [m, Y.isListening]), c(() => {
|
|
158
|
+
if (m.phase !== "listening" || m.muted || !Y.isListening || a(m) !== "") return;
|
|
159
|
+
let e = setTimeout(() => A("nothing-heard"), ge);
|
|
148
160
|
return () => clearTimeout(e);
|
|
149
|
-
}, [
|
|
150
|
-
|
|
151
|
-
}, [
|
|
152
|
-
let
|
|
153
|
-
if (
|
|
154
|
-
|
|
161
|
+
}, [m, Y.isListening]), c(() => {
|
|
162
|
+
a(m) !== "" && A(null);
|
|
163
|
+
}, [m]);
|
|
164
|
+
let Z = l(null), Q = s(() => {
|
|
165
|
+
if (M(!1), P(!1), z(), V.current = !1, !Y.isSupported) {
|
|
166
|
+
h({
|
|
155
167
|
type: "fail",
|
|
156
168
|
error: "no-speech-support"
|
|
157
169
|
});
|
|
158
170
|
return;
|
|
159
171
|
}
|
|
160
|
-
if (
|
|
161
|
-
|
|
172
|
+
if (g.isBlocked) {
|
|
173
|
+
h({
|
|
162
174
|
type: "fail",
|
|
163
175
|
error: "no-voice-support"
|
|
164
176
|
});
|
|
@@ -177,63 +189,63 @@ function u({ onSubmit: u, latestReply: d, language: ve }) {
|
|
|
177
189
|
e.volume = 0, e.play().catch(() => {});
|
|
178
190
|
}
|
|
179
191
|
} catch {}
|
|
180
|
-
|
|
192
|
+
_(!0), A(null), E.current = G.current?.id ?? null, O.current = null, Z.current = `vs-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`, h({ type: "start" });
|
|
181
193
|
}, [
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
]),
|
|
187
|
-
|
|
194
|
+
Y.isSupported,
|
|
195
|
+
g.isBlocked,
|
|
196
|
+
_,
|
|
197
|
+
z
|
|
198
|
+
]), $ = s(() => {
|
|
199
|
+
M(!1), P(!1), z(), V.current = !1, Z.current = null, h({ type: "end" }), b(), _(!1);
|
|
188
200
|
}, [
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
]),
|
|
193
|
-
|
|
201
|
+
b,
|
|
202
|
+
_,
|
|
203
|
+
z
|
|
204
|
+
]), ye = s((e) => Z.current === e, []), be = s(() => {
|
|
205
|
+
h({
|
|
194
206
|
type: "mute",
|
|
195
|
-
muted: !
|
|
207
|
+
muted: !F.current.muted
|
|
196
208
|
});
|
|
197
209
|
}, []);
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
}, [
|
|
201
|
-
let
|
|
210
|
+
c(() => () => {
|
|
211
|
+
_(!1), v(!1);
|
|
212
|
+
}, [_, v]);
|
|
213
|
+
let xe = ce(g.spokenChunks, m.phase, y);
|
|
202
214
|
return de(() => ({
|
|
203
|
-
session:
|
|
204
|
-
notice:
|
|
205
|
-
spokenChunks:
|
|
206
|
-
capturing:
|
|
207
|
-
active:
|
|
208
|
-
interrupting:
|
|
209
|
-
awaitingEndpoint:
|
|
210
|
-
available:
|
|
211
|
-
start:
|
|
212
|
-
end:
|
|
213
|
-
isCurrentSession:
|
|
214
|
-
toggleMute:
|
|
215
|
-
interrupt:
|
|
216
|
-
announce:
|
|
217
|
-
holdListening:
|
|
218
|
-
answerLocally:
|
|
215
|
+
session: m,
|
|
216
|
+
notice: k,
|
|
217
|
+
spokenChunks: xe,
|
|
218
|
+
capturing: Y.isListening,
|
|
219
|
+
active: m.phase !== "idle" && (m.phase !== "ended" || m.error !== null),
|
|
220
|
+
interrupting: j,
|
|
221
|
+
awaitingEndpoint: N,
|
|
222
|
+
available: Y.isSupported && !g.isBlocked,
|
|
223
|
+
start: Q,
|
|
224
|
+
end: $,
|
|
225
|
+
isCurrentSession: ye,
|
|
226
|
+
toggleMute: be,
|
|
227
|
+
interrupt: J,
|
|
228
|
+
announce: U,
|
|
229
|
+
holdListening: H,
|
|
230
|
+
answerLocally: W
|
|
219
231
|
}), [
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
Y,
|
|
229
|
-
X,
|
|
230
|
-
Z,
|
|
232
|
+
m,
|
|
233
|
+
k,
|
|
234
|
+
j,
|
|
235
|
+
N,
|
|
236
|
+
Y.isListening,
|
|
237
|
+
Y.isSupported,
|
|
238
|
+
g.isBlocked,
|
|
239
|
+
xe,
|
|
231
240
|
Q,
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
241
|
+
$,
|
|
242
|
+
ye,
|
|
243
|
+
be,
|
|
244
|
+
J,
|
|
245
|
+
U,
|
|
246
|
+
H,
|
|
247
|
+
W
|
|
236
248
|
]);
|
|
237
249
|
}
|
|
238
250
|
//#endregion
|
|
239
|
-
export {
|
|
251
|
+
export { d as useVoiceSession };
|
|
@@ -80,6 +80,19 @@ export declare const SPEECH_CHUNK_CHARS = 180;
|
|
|
80
80
|
* is ~7–10 seconds, the same target the Latin limit is aiming at.
|
|
81
81
|
*/
|
|
82
82
|
export declare const SPEECH_CHUNK_CJK_CHARS = 40;
|
|
83
|
+
/**
|
|
84
|
+
* Ceiling for the FIRST chunk of a voice-session reply spoken from the speech
|
|
85
|
+
* feed (BOFF-8062, speed design C1), in characters.
|
|
86
|
+
*
|
|
87
|
+
* Nothing is heard until chunk 0 has made a full round trip to the TTS proxy,
|
|
88
|
+
* and that trip scales with the text. The design's range is about 100-120
|
|
89
|
+
* characters; 110 is its midpoint, taken as the default because the alpha TTS
|
|
90
|
+
* latency sweep (V-C1) is not part of this change. Applies ONLY to replies
|
|
91
|
+
* spoken from the feed — never to panel announcements, readbacks or the
|
|
92
|
+
* Listen button, so their chunking (and the local-command RT4 check) is
|
|
93
|
+
* unchanged.
|
|
94
|
+
*/
|
|
95
|
+
export declare const SPEECH_FIRST_CHUNK_MAX_CHARS = 110;
|
|
83
96
|
export interface SpeakableOptions {
|
|
84
97
|
labels?: Partial<SpeakableLabels>;
|
|
85
98
|
maxChars?: number;
|
|
@@ -117,5 +130,7 @@ export declare function containsCjk(text: string): boolean;
|
|
|
117
130
|
* listener expects) rather than an arbitrary character offset. A CJK sentence
|
|
118
131
|
* gets the tighter CJK ceiling, because a character there is a whole syllable.
|
|
119
132
|
*/
|
|
120
|
-
export declare function chunkForSpeech(text: string, maxChars?: number, cjkMaxChars?: number
|
|
133
|
+
export declare function chunkForSpeech(text: string, maxChars?: number, cjkMaxChars?: number, options?: {
|
|
134
|
+
firstChunkMaxChars?: number;
|
|
135
|
+
}): string[];
|
|
121
136
|
//# sourceMappingURL=speakableText.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"speakableText.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/speakableText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAStC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA6CD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBpD;AAkBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAO,EAAE,GAAG,SAAQ,GAAG,MAAM,CAE9E;AAkLD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAiJxF;AAiMD,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAkFD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAA2B,EACrC,WAAW,GAAE,MAA+B,
|
|
1
|
+
{"version":3,"file":"speakableText.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/speakableText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAStC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAKhD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA6CD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBpD;AAkBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAO,EAAE,GAAG,SAAQ,GAAG,MAAM,CAE9E;AAkLD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAiJxF;AAiMD,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAkFD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAA2B,EACrC,WAAW,GAAE,MAA+B,EAC5C,OAAO,GAAE;IAAE,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,MAAM,EAAE,CAyEV"}
|