@burdenoff/fe-libs 2026.1001.1 → 2026.1001.3

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.
Files changed (54) hide show
  1. package/dist/connections/api.d.ts.map +1 -1
  2. package/dist/connections/api.js +4 -3
  3. package/dist/connections/oauthPopup.d.ts.map +1 -1
  4. package/dist/connections/oauthPopup.js +8 -9
  5. package/dist/shared/assistant/conversationDeleteCommand.d.ts +31 -0
  6. package/dist/shared/assistant/conversationDeleteCommand.d.ts.map +1 -0
  7. package/dist/shared/assistant/conversationDeleteCommand.js +14 -0
  8. package/dist/shared/assistant/history/historyControls.d.ts +9 -0
  9. package/dist/shared/assistant/history/historyControls.d.ts.map +1 -1
  10. package/dist/shared/assistant/history/historyControls.js +7 -1
  11. package/dist/shared/assistant/history/historyList.d.ts +10 -0
  12. package/dist/shared/assistant/history/historyList.d.ts.map +1 -1
  13. package/dist/shared/assistant/history/historyList.js +33 -28
  14. package/dist/shared/assistant/history/useHistoryRowControls.d.ts +13 -0
  15. package/dist/shared/assistant/history/useHistoryRowControls.d.ts.map +1 -0
  16. package/dist/shared/assistant/history/useHistoryRowControls.js +24 -0
  17. package/dist/shared/assistant/i18nManifest.d.ts +36 -0
  18. package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
  19. package/dist/shared/assistant/i18nManifest.js +36 -0
  20. package/dist/shared/assistant/index.d.ts +6 -0
  21. package/dist/shared/assistant/index.d.ts.map +1 -1
  22. package/dist/shared/assistant/localUiCommands.d.ts +8 -0
  23. package/dist/shared/assistant/localUiCommands.d.ts.map +1 -1
  24. package/dist/shared/assistant/localUiCommands.js +20 -19
  25. package/dist/shared/assistant/ui/AIAssistantPanel.d.ts.map +1 -1
  26. package/dist/shared/assistant/ui/AIAssistantPanel.js +67 -66
  27. package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
  28. package/dist/shared/assistant/ui/AssistantChatArea.js +854 -809
  29. package/dist/shared/assistant/ui/AssistantConversationFilters.d.ts +12 -0
  30. package/dist/shared/assistant/ui/AssistantConversationFilters.d.ts.map +1 -0
  31. package/dist/shared/assistant/ui/AssistantConversationFilters.js +92 -0
  32. package/dist/shared/assistant/ui/AssistantConversationList.d.ts +9 -0
  33. package/dist/shared/assistant/ui/AssistantConversationList.d.ts.map +1 -1
  34. package/dist/shared/assistant/ui/AssistantConversationList.js +314 -214
  35. package/dist/shared/assistant/ui/AssistantDeleteConversationDialog.d.ts +59 -0
  36. package/dist/shared/assistant/ui/AssistantDeleteConversationDialog.d.ts.map +1 -0
  37. package/dist/shared/assistant/ui/AssistantDeleteConversationDialog.js +84 -0
  38. package/dist/shared/assistant/ui/AssistantHistoryNotices.d.ts +18 -0
  39. package/dist/shared/assistant/ui/AssistantHistoryNotices.d.ts.map +1 -1
  40. package/dist/shared/assistant/ui/AssistantHistoryNotices.js +76 -29
  41. package/dist/shared/assistant/ui/conversationDelete.d.ts +18 -0
  42. package/dist/shared/assistant/ui/conversationDelete.d.ts.map +1 -0
  43. package/dist/shared/assistant/ui/conversationDelete.js +16 -0
  44. package/dist/shared/assistant/ui/conversationDeleteDialog.d.ts +32 -0
  45. package/dist/shared/assistant/ui/conversationDeleteDialog.d.ts.map +1 -0
  46. package/dist/shared/assistant/ui/conversationDeleteDialog.js +54 -0
  47. package/dist/shared/assistant/ui/useVoiceSession.d.ts +5 -0
  48. package/dist/shared/assistant/ui/useVoiceSession.d.ts.map +1 -1
  49. package/dist/shared/assistant/ui/useVoiceSession.js +129 -121
  50. package/dist/shared/assistant/voice/voiceSession.d.ts +10 -0
  51. package/dist/shared/assistant/voice/voiceSession.d.ts.map +1 -1
  52. package/dist/shared/assistant/voice/voiceSession.js +6 -0
  53. package/dist/shared-assistant.js +170 -164
  54. package/package.json +1 -1
@@ -2,156 +2,162 @@ import { useVoiceInput as e } from "../voice/useVoiceInput.js";
2
2
  import { INITIAL_SESSION as t, INTERRUPT_MAX_MS as ee, NOTHING_HEARD as n, SILENCE_SUBMIT_MS as te, advanceHeardClock as ne, isCapturing as r, isSubmittable as re, planListeningHold as ie, planReplyConsumption as ae, planVoiceAnnouncement as oe, spokenSoFar as i, voiceSessionReducer as se } from "../voice/voiceSession.js";
3
3
  import { turnClockMs as a } from "../turnTimeline.js";
4
4
  import { useAssistantSpeech as ce } from "./AssistantSpeechProvider.js";
5
- import { useCallback as o, useEffect as s, useLayoutEffect as c, useMemo as le, useReducer as ue, useRef as l, useState as u } from "react";
5
+ import { useCallback as o, useEffect as s, useLayoutEffect as le, useMemo as ue, useReducer as de, useRef as c, useState as l } from "react";
6
6
  //#region src/shared/assistant/ui/useVoiceSession.ts
7
- var de = 4e3, fe = 2500, pe = 5e3, me = 12e3, he = "data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA=";
8
- function d({ onSubmit: d, latestReply: f, language: ge }) {
9
- let p = l(null), [m, h] = ue(o((e, t) => se(e, t, p.current), []), t), g = ce(), { setSessionSpeaking: _, setSessionMicOpen: v, speakingMessageId: y, stop: b } = g, x = l(g.toggle), S = g.toggle;
10
- c(() => {
11
- x.current = S;
12
- }, [S]);
13
- let C = l(null), w = l({}), T = l(n), E = l(null), D = l(!1), [O, k] = u(null), [A, j] = u(!1), [M, N] = u(!1), P = l(m);
14
- P.current = m;
15
- let F = l([]), I = l(null), L = l(!1), R = o(() => {
16
- F.current = [], I.current = null, L.current = !1;
17
- }, []), z = o(() => {
7
+ var fe = 4e3, pe = 2500, me = 5e3, he = 12e3, ge = "data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA=";
8
+ function u({ onSubmit: u, latestReply: d, language: _e }) {
9
+ let f = c(null), [p, m] = de(o((e, t) => se(e, t, f.current), []), t), h = ce(), { setSessionSpeaking: g, setSessionMicOpen: _, speakingMessageId: v, stop: y } = h, b = c(h.toggle), x = h.toggle;
10
+ le(() => {
11
+ b.current = x;
12
+ }, [x]);
13
+ let S = c(null), C = c({}), w = c(n), T = c(null), E = c(!1), [D, O] = l(null), [k, A] = l(!1), [j, M] = l(!1), N = c(p);
14
+ N.current = p;
15
+ let P = c([]), F = c(null), I = c(!1), L = o(() => {
16
+ P.current = [], F.current = null, I.current = !1;
17
+ }, []), R = o(() => {
18
18
  for (;;) {
19
- let e = F.current.shift();
19
+ let e = P.current.shift();
20
20
  if (!e) return !1;
21
21
  if (!(e.stillWanted && !e.stillWanted())) {
22
- I.current = e, p.current = p.current ? `${p.current} ${e.text}` : e.text;
22
+ F.current = e, f.current = f.current ? `${f.current} ${e.text}` : e.text;
23
23
  try {
24
- x.current(e.id, e.text, e.lang);
24
+ b.current(e.id, e.text, e.lang);
25
25
  } catch {
26
- I.current = null;
26
+ F.current = null;
27
27
  continue;
28
28
  }
29
29
  return !0;
30
30
  }
31
31
  }
32
- }, []), B = l(!1), V = o((e) => {
32
+ }, []), z = c(!1), B = o((e) => {
33
33
  let t = ie({
34
34
  requested: e,
35
- held: B.current,
36
- muted: P.current.muted
35
+ held: z.current,
36
+ muted: N.current.muted
37
37
  });
38
- B.current = t.held, t.mute !== null && h({
38
+ z.current = t.held, t.mute !== null && m({
39
39
  type: "mute",
40
40
  muted: t.mute
41
41
  });
42
+ }, []), V = o((e) => {
43
+ let t = oe(N.current);
44
+ t !== "drop" && (F.current?.id === e.id || P.current.some((t) => t.id === e.id) || (P.current.push(e), t === "start" && !I.current && (I.current = !0, m({ type: "announce" }))));
42
45
  }, []), H = o((e) => {
43
- let t = oe(P.current);
44
- t !== "drop" && (I.current?.id === e.id || F.current.some((t) => t.id === e.id) || (F.current.push(e), t === "start" && !L.current && (L.current = !0, h({ type: "announce" }))));
45
- }, []), U = l(f);
46
- U.current = f, s(() => {
47
- if (m.phase === "speaking") {
48
- p.current = f?.text ?? null;
46
+ if (N.current.phase !== "thinking") {
47
+ V(e);
49
48
  return;
50
49
  }
51
- if (p.current === null) return;
50
+ P.current.push(e), I.current = !0, m({ type: "answered-locally" });
51
+ }, [V]), U = c(d);
52
+ U.current = d, s(() => {
53
+ if (p.phase === "speaking") {
54
+ f.current = d?.text ?? null;
55
+ return;
56
+ }
57
+ if (f.current === null) return;
52
58
  let e = setTimeout(() => {
53
- p.current = null;
54
- }, fe);
59
+ f.current = null;
60
+ }, pe);
55
61
  return () => clearTimeout(e);
56
- }, [m.phase, f]);
62
+ }, [p.phase, d]);
57
63
  let W = o((e, t) => {
58
- h({
64
+ m({
59
65
  type: "speech",
60
66
  transcript: e,
61
67
  final: t
62
68
  });
63
- }, []), G = l(0), K = o(() => {
64
- R(), b(), G.current = Date.now(), j(!0), h({ type: "interrupt" });
65
- }, [b, R]), q = e({
69
+ }, []), G = c(0), K = o(() => {
70
+ L(), y(), G.current = Date.now(), A(!0), m({ type: "interrupt" });
71
+ }, [y, L]), q = e({
66
72
  onFinalize: o((e) => W(e, !0), [W]),
67
- language: ge
73
+ language: _e
68
74
  });
69
75
  s(() => {
70
76
  q.interim && W(q.interim, !1);
71
77
  }, [q.interim, W]), s(() => {
72
- if (C.current && clearTimeout(C.current), N(!1), T.current = ne(T.current, m, a()), m.phase !== "listening" || m.muted || !re(i(m))) return;
73
- let e = setTimeout(() => N(!0), 800), t = a();
74
- return C.current = setTimeout(() => {
75
- w.current = {
76
- speechEnded: T.current.at ?? t,
78
+ if (S.current && clearTimeout(S.current), M(!1), w.current = ne(w.current, p, a()), p.phase !== "listening" || p.muted || !re(i(p))) return;
79
+ let e = setTimeout(() => M(!0), 800), t = a();
80
+ return S.current = setTimeout(() => {
81
+ C.current = {
82
+ speechEnded: w.current.at ?? t,
77
83
  graceStarted: t,
78
84
  graceEnded: a()
79
- }, h({ type: "silence" });
85
+ }, m({ type: "silence" });
80
86
  }, te), () => {
81
- clearTimeout(e), C.current && clearTimeout(C.current);
87
+ clearTimeout(e), S.current && clearTimeout(S.current);
82
88
  };
83
- }, [m]), s(() => {
84
- if (!A) return;
85
- let e = Date.now() - G.current, t = q.isListening ? Math.max(0, 500 - e) : Math.max(0, ee - e), n = setTimeout(() => j(!1), t);
89
+ }, [p]), s(() => {
90
+ if (!k) return;
91
+ let e = Date.now() - G.current, t = q.isListening ? Math.max(0, 500 - e) : Math.max(0, ee - e), n = setTimeout(() => A(!1), t);
86
92
  return () => clearTimeout(n);
87
- }, [A, q.isListening]);
88
- let J = l("");
89
- m.phase === "listening" && (J.current = i(m)), s(() => {
90
- if (m.phase !== "thinking") return;
91
- v(!1), R();
93
+ }, [k, q.isListening]);
94
+ let J = c("");
95
+ p.phase === "listening" && (J.current = i(p)), s(() => {
96
+ if (p.phase !== "thinking") return;
97
+ _(!1), L();
92
98
  let e = J.current.trim();
93
- e && d(e, Y.current ?? `vs-orphan-${Date.now().toString(36)}`, w.current), w.current = {}, T.current = n;
94
- }, [m.phase]), s(() => {
95
- let e = ae(f?.id, m.phase, E.current);
96
- e.claim && (E.current = f?.id ?? null, e.advance && f && h({
99
+ e && u(e, Y.current ?? `vs-orphan-${Date.now().toString(36)}`, C.current), C.current = {}, w.current = n;
100
+ }, [p.phase]), s(() => {
101
+ let e = ae(d?.id, p.phase, T.current);
102
+ e.claim && (T.current = d?.id ?? null, e.advance && d && m({
97
103
  type: "reply",
98
- text: f.text
104
+ text: d.text
99
105
  }));
100
- }, [f, m.phase]), s(() => {
101
- let e = y !== null;
102
- D.current && !e && (I.current = null, (P.current.phase !== "speaking" || !z()) && h({ type: "speech-ended" })), D.current = e;
103
- }, [y, z]), s(() => {
104
- m.phase !== "listening" && k((e) => e === "nothing-heard" ? null : e);
105
- }, [m.phase]), s(() => {
106
- if (m.phase !== "speaking" || y !== null) return;
106
+ }, [d, p.phase]), s(() => {
107
+ let e = v !== null;
108
+ E.current && !e && (F.current = null, (N.current.phase !== "speaking" || !R()) && m({ type: "speech-ended" })), E.current = e;
109
+ }, [v, R]), s(() => {
110
+ p.phase !== "listening" && O((e) => e === "nothing-heard" ? null : e);
111
+ }, [p.phase]), s(() => {
112
+ if (p.phase !== "speaking" || v !== null) return;
107
113
  let e = setTimeout(() => {
108
- D.current || (R(), h({ type: "speech-ended" }));
109
- }, de);
114
+ E.current || (L(), m({ type: "speech-ended" }));
115
+ }, fe);
110
116
  return () => clearTimeout(e);
111
117
  }, [
112
- m.phase,
113
- y,
114
- R
118
+ p.phase,
119
+ v,
120
+ L
115
121
  ]), s(() => {
116
- let e = r(m);
117
- v(e), e ? q.isActive || q.start("auto") : q.isActive && q.stop();
122
+ let e = r(p);
123
+ _(e), e ? q.isActive || q.start("auto") : q.isActive && q.stop();
118
124
  }, [
119
- m,
125
+ p,
120
126
  q,
121
- v
127
+ _
122
128
  ]), s(() => {
123
- m.phase !== "speaking" || !L.current || (L.current = !1, z() || h({ type: "speech-ended" }));
124
- }, [m.phase, z]), s(() => {
125
- q.error === "not-allowed" || q.error === "audio-capture" ? h({
129
+ p.phase !== "speaking" || !I.current || (I.current = !1, R() || m({ type: "speech-ended" }));
130
+ }, [p.phase, R]), s(() => {
131
+ q.error === "not-allowed" || q.error === "audio-capture" ? m({
126
132
  type: "fail",
127
133
  error: "mic-denied"
128
- }) : q.error === "language-not-supported" ? h({
134
+ }) : q.error === "language-not-supported" ? m({
129
135
  type: "fail",
130
136
  error: "no-speech-support"
131
- }) : q.error === "network" ? k("network") : q.error === "unknown" && k("recognition-failed");
137
+ }) : q.error === "network" ? O("network") : q.error === "unknown" && O("recognition-failed");
132
138
  }, [q.error]), s(() => {
133
- q.error !== null || !q.isListening || k((e) => e === "network" || e === "recognition-failed" ? null : e);
139
+ q.error !== null || !q.isListening || O((e) => e === "network" || e === "recognition-failed" ? null : e);
134
140
  }, [q.error, q.isListening]), s(() => {
135
- if (q.isListening && k((e) => e === "not-capturing" ? null : e), !r(m) || q.isListening) return;
136
- let e = setTimeout(() => k("not-capturing"), pe);
141
+ if (q.isListening && O((e) => e === "not-capturing" ? null : e), !r(p) || q.isListening) return;
142
+ let e = setTimeout(() => O("not-capturing"), me);
137
143
  return () => clearTimeout(e);
138
- }, [m, q.isListening]), s(() => {
139
- if (m.phase !== "listening" || m.muted || !q.isListening || i(m) !== "") return;
140
- let e = setTimeout(() => k("nothing-heard"), me);
144
+ }, [p, q.isListening]), s(() => {
145
+ if (p.phase !== "listening" || p.muted || !q.isListening || i(p) !== "") return;
146
+ let e = setTimeout(() => O("nothing-heard"), he);
141
147
  return () => clearTimeout(e);
142
- }, [m, q.isListening]), s(() => {
143
- i(m) !== "" && k(null);
144
- }, [m]);
145
- let Y = l(null), X = o(() => {
146
- if (j(!1), N(!1), R(), B.current = !1, !q.isSupported) {
147
- h({
148
+ }, [p, q.isListening]), s(() => {
149
+ i(p) !== "" && O(null);
150
+ }, [p]);
151
+ let Y = c(null), X = o(() => {
152
+ if (A(!1), M(!1), L(), z.current = !1, !q.isSupported) {
153
+ m({
148
154
  type: "fail",
149
155
  error: "no-speech-support"
150
156
  });
151
157
  return;
152
158
  }
153
- if (g.isBlocked) {
154
- h({
159
+ if (h.isBlocked) {
160
+ m({
155
161
  type: "fail",
156
162
  error: "no-voice-support"
157
163
  });
@@ -166,63 +172,65 @@ function d({ onSubmit: d, latestReply: f, language: ge }) {
166
172
  } catch {}
167
173
  try {
168
174
  if (typeof window < "u" && typeof window.Audio == "function") {
169
- let e = new window.Audio(he);
175
+ let e = new window.Audio(ge);
170
176
  e.volume = 0, e.play().catch(() => {});
171
177
  }
172
178
  } catch {}
173
- _(!0), k(null), E.current = U.current?.id ?? null, Y.current = `vs-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`, h({ type: "start" });
179
+ g(!0), O(null), T.current = U.current?.id ?? null, Y.current = `vs-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`, m({ type: "start" });
174
180
  }, [
175
181
  q.isSupported,
176
- g.isBlocked,
177
- _,
178
- R
182
+ h.isBlocked,
183
+ g,
184
+ L
179
185
  ]), Z = o(() => {
180
- j(!1), N(!1), R(), B.current = !1, Y.current = null, h({ type: "end" }), b(), _(!1);
186
+ A(!1), M(!1), L(), z.current = !1, Y.current = null, m({ type: "end" }), y(), g(!1);
181
187
  }, [
182
- b,
183
- _,
184
- R
188
+ y,
189
+ g,
190
+ L
185
191
  ]), Q = o((e) => Y.current === e, []), $ = o(() => {
186
- h({
192
+ m({
187
193
  type: "mute",
188
- muted: !P.current.muted
194
+ muted: !N.current.muted
189
195
  });
190
196
  }, []);
191
197
  return s(() => () => {
192
- _(!1), v(!1);
193
- }, [_, v]), le(() => ({
194
- session: m,
195
- notice: O,
196
- spokenChunks: g.spokenChunks,
198
+ g(!1), _(!1);
199
+ }, [g, _]), ue(() => ({
200
+ session: p,
201
+ notice: D,
202
+ spokenChunks: h.spokenChunks,
197
203
  capturing: q.isListening,
198
- active: m.phase !== "idle" && (m.phase !== "ended" || m.error !== null),
199
- interrupting: A,
200
- awaitingEndpoint: M,
201
- available: q.isSupported && !g.isBlocked,
204
+ active: p.phase !== "idle" && (p.phase !== "ended" || p.error !== null),
205
+ interrupting: k,
206
+ awaitingEndpoint: j,
207
+ available: q.isSupported && !h.isBlocked,
202
208
  start: X,
203
209
  end: Z,
204
210
  isCurrentSession: Q,
205
211
  toggleMute: $,
206
212
  interrupt: K,
207
- announce: H,
208
- holdListening: V
213
+ announce: V,
214
+ holdListening: B,
215
+ answerLocally: H
209
216
  }), [
210
- m,
211
- O,
212
- A,
213
- M,
217
+ p,
218
+ D,
219
+ k,
220
+ j,
214
221
  q.isListening,
215
222
  q.isSupported,
216
- g.isBlocked,
217
- g.spokenChunks,
223
+ h.isBlocked,
224
+ h.spokenChunks,
218
225
  X,
219
226
  Z,
220
227
  Q,
221
228
  $,
222
229
  K,
223
- H,
224
- V
230
+ V,
231
+ B,
232
+ H
225
233
  ]);
226
234
  }
227
235
  //#endregion
228
- export { d as useVoiceSession };
236
+ export { u as useVoiceSession };
@@ -87,6 +87,16 @@ export type VoiceSessionEvent =
87
87
  */
88
88
  | {
89
89
  type: 'announce';
90
+ }
91
+ /**
92
+ * ★ BOFF-8159: the turn just submitted was answered by the PANEL, with no
93
+ * reply message — "delete this conversation" opens a dialog and records
94
+ * nothing. Only a `thinking` moves, to `speaking` for the panel's own line
95
+ * said in the reply's place; without it the session waited in `thinking`
96
+ * for a reply that never comes, and never listened again.
97
+ */
98
+ | {
99
+ type: 'answered-locally';
90
100
  } | {
91
101
  type: 'fail';
92
102
  error: VoiceSessionError;
@@ -1 +1 @@
1
- {"version":3,"file":"voiceSession.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/voiceSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voiceSession.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/voiceSession.ts"],"names":[],"mappings":"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"}
@@ -106,6 +106,12 @@ function m(e, t, n = null) {
106
106
  pending: "",
107
107
  interim: ""
108
108
  } : e;
109
+ case "answered-locally": return e.phase === "thinking" ? {
110
+ ...e,
111
+ phase: "speaking",
112
+ pending: "",
113
+ interim: ""
114
+ } : e;
109
115
  case "announce": return e.phase === "listening" && a(e) === "" ? {
110
116
  ...e,
111
117
  phase: "speaking",