@burdenoff/fe-libs 2026.928.1 → 2026.928.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.
- package/dist/chrome/SideNavigation.d.ts.map +1 -1
- package/dist/chrome/SideNavigation.js +71 -68
- package/dist/chrome/sideNavigation/sideNavEscape.d.ts +41 -0
- package/dist/chrome/sideNavigation/sideNavEscape.d.ts.map +1 -0
- package/dist/chrome/sideNavigation/sideNavEscape.js +8 -0
- package/dist/chrome/sideNavigation/useSideNavigationState.d.ts +8 -1
- package/dist/chrome/sideNavigation/useSideNavigationState.d.ts.map +1 -1
- package/dist/chrome/sideNavigation/useSideNavigationState.js +35 -23
- package/dist/shared/assistant/ui/AIAssistantPanel.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AIAssistantPanel.js +82 -79
- package/dist/shared/assistant/ui/AssistantOverlay.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantOverlay.js +86 -84
- package/dist/shared/assistant/ui/assistantOverlayState.d.ts +31 -8
- package/dist/shared/assistant/ui/assistantOverlayState.d.ts.map +1 -1
- package/dist/shared/assistant/ui/assistantOverlayState.js +22 -16
- package/dist/shared/assistant/ui/panelOverlays.d.ts +31 -0
- package/dist/shared/assistant/ui/panelOverlays.d.ts.map +1 -1
- package/dist/shared/assistant/ui/panelOverlays.js +11 -8
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +78 -74
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.js +40 -39
- package/dist/shared/assistant/ui/voice/voiceSessionEscape.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/voiceSessionEscape.js +7 -10
- package/dist/shared/assistant/useAssistantKeyboardShortcuts.d.ts +3 -1
- package/dist/shared/assistant/useAssistantKeyboardShortcuts.d.ts.map +1 -1
- package/dist/shared/assistant/useAssistantKeyboardShortcuts.js +25 -25
- package/dist/shared/graphql/fetch.d.ts +12 -1
- package/dist/shared/graphql/fetch.d.ts.map +1 -1
- package/dist/shared/graphql/fetch.js +101 -80
- package/dist/shared/hooks/index.d.ts +1 -0
- package/dist/shared/hooks/index.d.ts.map +1 -1
- package/dist/shared/hooks/useReturnFocus.d.ts +56 -0
- package/dist/shared/hooks/useReturnFocus.d.ts.map +1 -0
- package/dist/shared/hooks/useReturnFocus.js +41 -0
- package/dist/shared/providers/AppShellProvider.d.ts +12 -1
- package/dist/shared/providers/AppShellProvider.d.ts.map +1 -1
- package/dist/shared/providers/AppShellProvider.js +175 -161
- package/dist/shared/providers/shell/ActiveContextProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/ActiveContextProvider.js +28 -26
- package/dist/shared/providers/shell/PersonaSurfaceProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/PersonaSurfaceProvider.js +165 -193
- package/dist/shared/providers/shell/personaSurfaceRemote.d.ts +8 -2
- package/dist/shared/providers/shell/personaSurfaceRemote.d.ts.map +1 -1
- package/dist/shared/providers/shell/personaSurfaceRemote.js +37 -15
- package/dist/shared/providers/shell/useRemoteNavPreferences.d.ts +30 -0
- package/dist/shared/providers/shell/useRemoteNavPreferences.d.ts.map +1 -0
- package/dist/shared/providers/shell/useRemoteNavPreferences.js +43 -0
- package/dist/shared-assistant.js +76 -76
- package/dist/shared-hooks.js +34 -33
- package/dist/shared.js +89 -88
- package/dist/ui/modal-shell.d.ts.map +1 -1
- package/dist/ui/modal-shell.js +23 -13
- package/package.json +2 -2
|
@@ -1,51 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
1
|
+
import { useReturnFocus as e } from "../../../hooks/useReturnFocus.js";
|
|
2
|
+
import { useAssistantTr as t } from "../../i18n.js";
|
|
3
|
+
import { micIsInterrupt as n, showsAssistantCaption as r, voiceStageState as i } from "../../voice/voiceStageState.js";
|
|
4
|
+
import { VOICE_THINKING_LABEL as a, composeVoiceStatus as ee, voiceStatusSuffix as te } from "../../voice/voiceStatus.js";
|
|
5
|
+
import { spokenSoFar as o } from "../../voice/voiceSession.js";
|
|
6
|
+
import { ASSISTANT_PANEL_ATTR as ne, ASSISTANT_VOICE_SESSION_ATTR as s } from "../panelOverlays.js";
|
|
7
|
+
import { AssistantAttachmentButton as c } from "../composer/AssistantAttachmentButton.js";
|
|
8
|
+
import { AssistantAttachmentChips as l } from "../composer/AssistantAttachmentChips.js";
|
|
9
|
+
import { AssistantVoiceOrb as u } from "./AssistantVoiceOrb.js";
|
|
10
|
+
import { VoiceMiniController as re } from "./VoiceMiniController.js";
|
|
11
|
+
import { VoiceStage as ie } from "./VoiceStage.js";
|
|
12
|
+
import { VoiceTranscriptDrawer as ae } from "./VoiceTranscriptDrawer.js";
|
|
13
|
+
import { escapeBelongsToLayerAbove as oe, voiceSessionEscapeAction as se } from "./voiceSessionEscape.js";
|
|
14
|
+
import { useCallback as d, useEffect as f, useRef as p, useState as m } from "react";
|
|
15
|
+
import { Maximize2 as ce, Minimize2 as le, ScrollText as ue, X as de } from "lucide-react";
|
|
16
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
15
17
|
//#region src/shared/assistant/ui/voice/AssistantVoiceSession.tsx
|
|
16
|
-
var
|
|
17
|
-
let j =
|
|
18
|
-
W.current =
|
|
19
|
-
let G =
|
|
20
|
-
|
|
21
|
-
}, [M,
|
|
18
|
+
var _ = ({ session: _, turns: fe = [], onSaveTranscript: pe, onContinueInChat: me, notice: b = null, spoken: x, onInterrupt: he, onToggleMute: S, attachments: C = [], onAttachFiles: w, onRemoveAttachment: ge, onRetryAttachment: _e, canAttachMore: ve = !0, preparingAttachments: T = 0, spokenChunks: E = null, onEnd: D, capturing: O = !0, interrupting: k = !1, awaitingEndpoint: A = !1 }) => {
|
|
19
|
+
let j = t(), { muted: M, error: N } = _, P = p(null), F = p(null), [I, L] = m("mini"), R = I === "full", z = I === "mini", B = I === "mini" ? "panel" : I === "panel" ? "full" : "mini", [V, H] = m(!1), U = p(!1), W = p(S);
|
|
20
|
+
W.current = S;
|
|
21
|
+
let G = d(() => {
|
|
22
|
+
_.phase === "listening" && (M || U.current || o(_) || (U.current = !0, W.current()));
|
|
23
|
+
}, [M, _]), K = d(() => {
|
|
22
24
|
U.current && (U.current = !1, W.current());
|
|
23
|
-
}, []),
|
|
24
|
-
|
|
25
|
+
}, []), ye = G;
|
|
26
|
+
f(() => {
|
|
25
27
|
let e = () => {
|
|
26
28
|
document.visibilityState === "hidden" ? G() : K();
|
|
27
29
|
};
|
|
28
30
|
return document.addEventListener("visibilitychange", e), () => document.removeEventListener("visibilitychange", e);
|
|
29
|
-
}, [G, K]),
|
|
31
|
+
}, [G, K]), f(() => {
|
|
30
32
|
let e = K;
|
|
31
33
|
return window.addEventListener("focus", e), () => {
|
|
32
34
|
window.removeEventListener("focus", e), U.current = !1;
|
|
33
35
|
};
|
|
34
|
-
}, []),
|
|
36
|
+
}, []), f(() => {
|
|
35
37
|
P.current?.focus();
|
|
36
|
-
}, []),
|
|
38
|
+
}, []), e(F, { fallbackSelector: `[${ne}]` }), f(() => {
|
|
37
39
|
let e = (e) => {
|
|
38
40
|
if (e.key === "Escape") {
|
|
39
|
-
let t =
|
|
41
|
+
let t = se({
|
|
40
42
|
defaultPrevented: e.defaultPrevented,
|
|
41
|
-
layerAbove:
|
|
43
|
+
layerAbove: oe({
|
|
42
44
|
target: e.target,
|
|
43
45
|
session: F.current,
|
|
44
46
|
doc: document
|
|
45
47
|
}),
|
|
46
48
|
transcriptOpen: V
|
|
47
49
|
});
|
|
48
|
-
|
|
50
|
+
if (t === "ignore") return;
|
|
51
|
+
e.preventDefault(), t === "close-transcript" ? H(!1) : D();
|
|
49
52
|
return;
|
|
50
53
|
}
|
|
51
54
|
if (e.key !== "Tab" || !R) return;
|
|
@@ -56,21 +59,21 @@ var v = ({ session: v, turns: b = [], onSaveTranscript: le, onContinueInChat: x,
|
|
|
56
59
|
};
|
|
57
60
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
58
61
|
}, [
|
|
59
|
-
|
|
62
|
+
D,
|
|
60
63
|
R,
|
|
61
64
|
V
|
|
62
65
|
]);
|
|
63
|
-
let q =
|
|
64
|
-
snapshot:
|
|
65
|
-
capturing:
|
|
66
|
-
interrupting:
|
|
66
|
+
let q = b !== null && N === null, J = o(_), Y = i({
|
|
67
|
+
snapshot: _,
|
|
68
|
+
capturing: O,
|
|
69
|
+
interrupting: k,
|
|
67
70
|
awaitingEndpoint: A
|
|
68
71
|
}), X = (() => {
|
|
69
72
|
switch (Y) {
|
|
70
73
|
case "connecting": return j("voiceSession.connecting", "Starting the microphone…");
|
|
71
74
|
case "endpoint-grace": return j("voiceSession.endpointGrace", "Still listening — take your time");
|
|
72
75
|
case "interrupting": return j("voiceSession.interrupting", "Stopped — go ahead");
|
|
73
|
-
case "thinking": return j(
|
|
76
|
+
case "thinking": return j(a.key, a.fallback);
|
|
74
77
|
case "speaking": return j("voiceSession.speaking", "Speaking — tap to stop");
|
|
75
78
|
case "mic-error":
|
|
76
79
|
case "ended": return "";
|
|
@@ -83,59 +86,60 @@ var v = ({ session: v, turns: b = [], onSaveTranscript: le, onContinueInChat: x,
|
|
|
83
86
|
muted: M,
|
|
84
87
|
label: X
|
|
85
88
|
}), Q = ee(X, Z), $ = Y === "thinking";
|
|
86
|
-
return /* @__PURE__ */
|
|
89
|
+
return /* @__PURE__ */ g("div", {
|
|
87
90
|
ref: F,
|
|
88
91
|
className: `flex flex-col items-center justify-between bg-bg-sunken ${I === "full" ? "fixed inset-x-0 bottom-0 top-14 z-[60] px-6 py-8" : I === "panel" ? "absolute inset-0 z-20 px-4 py-6" : "absolute inset-x-0 bottom-0 z-20 h-[11.25rem] border-t border-border-subtle px-3 py-3 shadow-lg"}`,
|
|
89
92
|
role: "dialog",
|
|
90
93
|
"aria-modal": R || void 0,
|
|
91
94
|
"aria-label": j("voiceSession.title", "Voice conversation"),
|
|
92
95
|
"data-testid": "assistant-voice-session",
|
|
96
|
+
[s]: "",
|
|
93
97
|
children: [
|
|
94
|
-
/* @__PURE__ */
|
|
98
|
+
/* @__PURE__ */ g("button", {
|
|
95
99
|
ref: P,
|
|
96
100
|
type: "button",
|
|
97
|
-
onClick:
|
|
101
|
+
onClick: D,
|
|
98
102
|
className: `absolute ${R ? "right-6 top-6 h-14 gap-2 px-5 text-base" : z ? "right-12 top-2 h-8 gap-1.5 px-2.5 text-xs" : "right-3 top-3 h-11 gap-2 px-4 text-sm"} flex items-center justify-center rounded-full border border-border-default bg-bg-elevated text-text-secondary hover:bg-bg-sunken transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong`,
|
|
99
103
|
title: j("voiceSession.end", "End the voice conversation"),
|
|
100
104
|
"data-testid": "assistant-voice-end",
|
|
101
|
-
children: [/* @__PURE__ */
|
|
105
|
+
children: [/* @__PURE__ */ h(de, {
|
|
102
106
|
className: R ? "size-6" : z ? "size-4" : "size-5",
|
|
103
107
|
"aria-hidden": "true"
|
|
104
|
-
}), /* @__PURE__ */
|
|
108
|
+
}), /* @__PURE__ */ h("span", {
|
|
105
109
|
className: `truncate whitespace-nowrap font-medium ${z ? "max-w-[3.5rem] text-xs" : "max-w-[7rem]"}`,
|
|
106
110
|
children: j("voiceSession.endShort", "End")
|
|
107
111
|
})]
|
|
108
112
|
}),
|
|
109
|
-
/* @__PURE__ */
|
|
113
|
+
/* @__PURE__ */ h("div", {
|
|
110
114
|
className: `flex flex-col items-center ${z ? "px-3" : `min-h-[1.5rem] ${q ? R ? "pt-14" : "pt-10" : ""}`}`,
|
|
111
|
-
children: q ? /* @__PURE__ */
|
|
115
|
+
children: q ? /* @__PURE__ */ h("p", {
|
|
112
116
|
className: "max-w-xs text-center text-xs text-status-warning",
|
|
113
117
|
"data-testid": "assistant-voice-notice",
|
|
114
|
-
children:
|
|
118
|
+
children: v(b, j)
|
|
115
119
|
}) : null
|
|
116
120
|
}),
|
|
117
121
|
(() => {
|
|
118
|
-
let e = /* @__PURE__ */
|
|
119
|
-
session:
|
|
122
|
+
let e = /* @__PURE__ */ h(u, {
|
|
123
|
+
session: _,
|
|
120
124
|
compact: z,
|
|
121
125
|
connecting: Y === "connecting",
|
|
122
|
-
onPress:
|
|
123
|
-
label:
|
|
124
|
-
}),
|
|
125
|
-
return z ? /* @__PURE__ */
|
|
126
|
-
spokenChunks:
|
|
126
|
+
onPress: n(Y) ? he : S,
|
|
127
|
+
label: n(Y) ? j("voiceSession.interrupt", "Stop the assistant and speak") : M ? j("voiceSession.unmute", "Turn the microphone on") : j("voiceSession.mute", "Turn the microphone off")
|
|
128
|
+
}), t = r(Y) ? x : J || null, i = N === null ? null : y(N, j);
|
|
129
|
+
return z ? /* @__PURE__ */ h(re, {
|
|
130
|
+
spokenChunks: E,
|
|
127
131
|
state: Y,
|
|
128
|
-
caption:
|
|
132
|
+
caption: t,
|
|
129
133
|
statusText: Q,
|
|
130
134
|
statusSuffix: Z,
|
|
131
135
|
rotateStatus: $,
|
|
132
136
|
errorText: i,
|
|
133
137
|
control: e
|
|
134
|
-
}) : /* @__PURE__ */
|
|
138
|
+
}) : /* @__PURE__ */ h(ie, {
|
|
135
139
|
state: Y,
|
|
136
140
|
userCaption: J || null,
|
|
137
|
-
spokenChunks:
|
|
138
|
-
assistantCaption:
|
|
141
|
+
spokenChunks: E,
|
|
142
|
+
assistantCaption: x,
|
|
139
143
|
expanded: R,
|
|
140
144
|
statusText: Q,
|
|
141
145
|
statusSuffix: Z,
|
|
@@ -144,54 +148,54 @@ var v = ({ session: v, turns: b = [], onSaveTranscript: le, onContinueInChat: x,
|
|
|
144
148
|
control: e
|
|
145
149
|
});
|
|
146
150
|
})(),
|
|
147
|
-
V ? /* @__PURE__ */
|
|
148
|
-
turns:
|
|
151
|
+
V ? /* @__PURE__ */ h(ae, {
|
|
152
|
+
turns: fe,
|
|
149
153
|
onClose: () => H(!1),
|
|
150
|
-
onSave:
|
|
151
|
-
onContinueInChat:
|
|
154
|
+
onSave: pe,
|
|
155
|
+
onContinueInChat: me
|
|
152
156
|
}) : null,
|
|
153
|
-
|
|
157
|
+
w ? /* @__PURE__ */ h("div", {
|
|
154
158
|
className: `absolute ${R ? "left-6 top-6" : z ? "left-11 top-2" : "left-3 top-3"}`,
|
|
155
|
-
children: /* @__PURE__ */
|
|
159
|
+
children: /* @__PURE__ */ h(c, {
|
|
156
160
|
onFiles: (e) => {
|
|
157
|
-
|
|
161
|
+
w(e), L((e) => e === "mini" ? "panel" : e);
|
|
158
162
|
},
|
|
159
|
-
onPickerOpen:
|
|
163
|
+
onPickerOpen: ye,
|
|
160
164
|
direction: "down",
|
|
161
|
-
canAddMore:
|
|
165
|
+
canAddMore: ve
|
|
162
166
|
})
|
|
163
167
|
}) : null,
|
|
164
|
-
(
|
|
168
|
+
(C.length > 0 || T > 0) && !z ? /* @__PURE__ */ h("div", {
|
|
165
169
|
className: `absolute ${R ? "bottom-24 left-24 right-24" : "bottom-16 left-16 right-16"}`,
|
|
166
170
|
"data-testid": "assistant-voice-attachments",
|
|
167
|
-
children: /* @__PURE__ */
|
|
168
|
-
attachments:
|
|
169
|
-
onRemove:
|
|
170
|
-
onRetry:
|
|
171
|
-
preparingCount:
|
|
171
|
+
children: /* @__PURE__ */ h(l, {
|
|
172
|
+
attachments: C,
|
|
173
|
+
onRemove: ge ?? (() => void 0),
|
|
174
|
+
onRetry: _e ?? (() => void 0),
|
|
175
|
+
preparingCount: T
|
|
172
176
|
})
|
|
173
177
|
}) : null,
|
|
174
|
-
/* @__PURE__ */
|
|
178
|
+
/* @__PURE__ */ h("button", {
|
|
175
179
|
type: "button",
|
|
176
180
|
onClick: () => H((e) => !e),
|
|
177
181
|
className: `absolute ${R ? "bottom-6 right-6 size-14" : z ? "right-2 top-2 size-8" : "bottom-3 right-3 size-11"} flex items-center justify-center rounded-full bg-bg-elevated text-text-secondary transition-colors hover:bg-bg-raised hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong`,
|
|
178
182
|
"aria-pressed": V,
|
|
179
183
|
"aria-label": j("voiceSession.transcriptTitle", "Voice transcript"),
|
|
180
184
|
"data-testid": "assistant-voice-transcript-toggle",
|
|
181
|
-
children: /* @__PURE__ */
|
|
185
|
+
children: /* @__PURE__ */ h(ue, { className: R ? "size-6" : z ? "size-4" : "size-5" })
|
|
182
186
|
}),
|
|
183
|
-
/* @__PURE__ */
|
|
187
|
+
/* @__PURE__ */ h("button", {
|
|
184
188
|
type: "button",
|
|
185
189
|
onClick: () => L(B),
|
|
186
190
|
className: `absolute ${R ? "bottom-6 left-6 size-14" : z ? "left-2 top-2 size-8" : "bottom-3 left-3 size-11"} flex items-center justify-center rounded-full bg-bg-elevated text-text-secondary transition-colors hover:bg-bg-raised hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong`,
|
|
187
191
|
"aria-label": B === "panel" ? j("voiceSession.expandPanel", "Show the conversation in the panel") : B === "full" ? j("voiceSession.expand", "Expand the conversation to full screen") : j("voiceSession.collapse", "Shrink to the compact controller"),
|
|
188
192
|
"data-testid": "assistant-voice-expand",
|
|
189
|
-
children: R ? /* @__PURE__ */
|
|
193
|
+
children: R ? /* @__PURE__ */ h(le, { className: "size-5" }) : /* @__PURE__ */ h(ce, { className: z ? "size-4" : "size-5" })
|
|
190
194
|
})
|
|
191
195
|
]
|
|
192
196
|
});
|
|
193
197
|
};
|
|
194
|
-
function
|
|
198
|
+
function v(e, t) {
|
|
195
199
|
switch (e) {
|
|
196
200
|
case "network": return t("voiceSession.noticeNetwork", "Speech recognition lost its connection. Check your network — it will retry.");
|
|
197
201
|
case "not-capturing": return t("voiceSession.noticeNotCapturing", "The microphone did not start. Check that this site is allowed to use it, then try again.");
|
|
@@ -209,4 +213,4 @@ function y(e, t) {
|
|
|
209
213
|
}
|
|
210
214
|
}
|
|
211
215
|
//#endregion
|
|
212
|
-
export {
|
|
216
|
+
export { _ as AssistantVoiceSession };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoiceTranscriptDrawer.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceTranscriptDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"VoiceTranscriptDrawer.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceTranscriptDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAOnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AAEH,UAAU,KAAK;IACb,KAAK,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,+CAA+C;IAC/C,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CAoJ3C,CAAC"}
|
|
@@ -1,70 +1,71 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { useReturnFocus as e } from "../../../hooks/useReturnFocus.js";
|
|
2
|
+
import { useAssistantTr as t } from "../../i18n.js";
|
|
3
|
+
import { ASSISTANT_PANEL_ATTR as n, focusIsInsidePanel as r } from "../panelOverlays.js";
|
|
4
|
+
import { VoiceConversationView as i } from "./VoiceConversationView.js";
|
|
5
|
+
import { AssistantHistoryShowEarlier as a } from "../AssistantHistoryNotices.js";
|
|
6
|
+
import { useEffect as o, useRef as s } from "react";
|
|
7
|
+
import { ArrowRight as c, Download as l, X as u } from "lucide-react";
|
|
8
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
8
9
|
//#region src/shared/assistant/ui/voice/VoiceTranscriptDrawer.tsx
|
|
9
|
-
var
|
|
10
|
-
let
|
|
11
|
-
return
|
|
12
|
-
if (!
|
|
10
|
+
var p = ({ turns: p, onClose: m, onSave: h, onContinueInChat: g, closeOnEscape: _ = !1, onShowEarlier: v, showEarlierDisabled: y = !1 }) => {
|
|
11
|
+
let b = t(), x = s(null);
|
|
12
|
+
return e(x, { fallbackSelector: `[${n}]` }), o(() => {
|
|
13
|
+
if (!_) return;
|
|
13
14
|
let e = (e) => {
|
|
14
15
|
if (e.key !== "Escape" || document.querySelector("[role=\"alertdialog\"]")) return;
|
|
15
|
-
let
|
|
16
|
-
|
|
16
|
+
let t = x.current?.closest(`[${n}]`), i = document.activeElement;
|
|
17
|
+
r(t ?? null, i) && (e.preventDefault(), e.stopPropagation(), m());
|
|
17
18
|
};
|
|
18
19
|
return document.addEventListener("keydown", e, !0), () => document.removeEventListener("keydown", e, !0);
|
|
19
|
-
}, [
|
|
20
|
-
ref:
|
|
20
|
+
}, [_, m]), /* @__PURE__ */ f("div", {
|
|
21
|
+
ref: x,
|
|
21
22
|
className: "absolute inset-0 z-30 flex flex-col bg-bg-sunken/95 backdrop-blur-sm",
|
|
22
23
|
role: "dialog",
|
|
23
|
-
"aria-label":
|
|
24
|
+
"aria-label": b("voiceSession.transcriptTitle", "Voice transcript"),
|
|
24
25
|
"data-testid": "assistant-voice-transcript",
|
|
25
26
|
children: [
|
|
26
|
-
/* @__PURE__ */
|
|
27
|
+
/* @__PURE__ */ f("div", {
|
|
27
28
|
className: "flex items-center justify-between border-b border-border-subtle px-4 py-3",
|
|
28
|
-
children: [/* @__PURE__ */
|
|
29
|
+
children: [/* @__PURE__ */ f("div", {
|
|
29
30
|
className: "min-w-0",
|
|
30
|
-
children: [/* @__PURE__ */
|
|
31
|
+
children: [/* @__PURE__ */ d("h2", {
|
|
31
32
|
className: "text-sm font-semibold text-text-primary",
|
|
32
|
-
children:
|
|
33
|
-
}), /* @__PURE__ */
|
|
33
|
+
children: b("voiceSession.transcript", "Voice conversation")
|
|
34
|
+
}), /* @__PURE__ */ d("p", {
|
|
34
35
|
className: "truncate text-xs text-text-muted",
|
|
35
|
-
children:
|
|
36
|
+
children: b("voiceSession.transcriptHint", "Spoken turns in this conversation — kept out of your typed chat.")
|
|
36
37
|
})]
|
|
37
|
-
}), /* @__PURE__ */
|
|
38
|
+
}), /* @__PURE__ */ d("button", {
|
|
38
39
|
type: "button",
|
|
39
|
-
onClick:
|
|
40
|
+
onClick: m,
|
|
40
41
|
className: "flex size-8 items-center justify-center rounded-full text-text-secondary transition-colors hover:bg-bg-raised hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong",
|
|
41
|
-
"aria-label":
|
|
42
|
+
"aria-label": b("voiceSession.transcriptClose", "Close the transcript"),
|
|
42
43
|
"data-testid": "assistant-voice-transcript-close",
|
|
43
|
-
children: /* @__PURE__ */ u
|
|
44
|
+
children: /* @__PURE__ */ d(u, { className: "size-4" })
|
|
44
45
|
})]
|
|
45
46
|
}),
|
|
46
|
-
|
|
47
|
-
onShowEarlier:
|
|
48
|
-
disabled:
|
|
47
|
+
v ? /* @__PURE__ */ d(a, {
|
|
48
|
+
onShowEarlier: v,
|
|
49
|
+
disabled: y
|
|
49
50
|
}) : null,
|
|
50
|
-
/* @__PURE__ */
|
|
51
|
-
(
|
|
51
|
+
/* @__PURE__ */ d(i, { turns: p }),
|
|
52
|
+
(h || g) && p.length > 0 ? /* @__PURE__ */ f("div", {
|
|
52
53
|
className: "flex items-center justify-end gap-2 border-t border-border-subtle px-4 py-3",
|
|
53
|
-
children: [
|
|
54
|
+
children: [h ? /* @__PURE__ */ f("button", {
|
|
54
55
|
type: "button",
|
|
55
|
-
onClick:
|
|
56
|
+
onClick: h,
|
|
56
57
|
className: "flex items-center gap-1.5 rounded-lg border border-border-default px-3 py-1.5 text-xs text-text-secondary transition-colors hover:bg-bg-elevated hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong",
|
|
57
58
|
"data-testid": "assistant-voice-save-transcript",
|
|
58
|
-
children: [/* @__PURE__ */
|
|
59
|
+
children: [/* @__PURE__ */ d(l, {
|
|
59
60
|
className: "size-3.5",
|
|
60
61
|
"aria-hidden": "true"
|
|
61
|
-
}),
|
|
62
|
-
}) : null,
|
|
62
|
+
}), b("voiceSession.save", "Save transcript")]
|
|
63
|
+
}) : null, g ? /* @__PURE__ */ f("button", {
|
|
63
64
|
type: "button",
|
|
64
|
-
onClick:
|
|
65
|
+
onClick: g,
|
|
65
66
|
className: "flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-fg transition-opacity hover:opacity-90 focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong",
|
|
66
67
|
"data-testid": "assistant-voice-continue-in-chat",
|
|
67
|
-
children: [
|
|
68
|
+
children: [b("voiceSession.continueInChat", "Continue in chat"), /* @__PURE__ */ d(c, {
|
|
68
69
|
className: "size-3.5",
|
|
69
70
|
"aria-hidden": "true"
|
|
70
71
|
})]
|
|
@@ -74,4 +75,4 @@ var f = ({ turns: f, onClose: p, onSave: m, onContinueInChat: h, closeOnEscape:
|
|
|
74
75
|
});
|
|
75
76
|
};
|
|
76
77
|
//#endregion
|
|
77
|
-
export {
|
|
78
|
+
export { p as VoiceTranscriptDrawer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voiceSessionEscape.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/voiceSessionEscape.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"voiceSessionEscape.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/voiceSessionEscape.ts"],"names":[],"mappings":"AA2BA;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,gFAAqD,CAAC;AAE9F;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,iDACI,CAAC;AAE7C,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,kBAAkB,GAAG,KAAK,CAAC;AAE7E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;CACzB,GAAG,wBAAwB,CAI3B;AAmCD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,kBAAkB,CAAC,CAAC;CAC3D,GAAG,OAAO,CAOV"}
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import { focusIsInsidePanel as e } from "../panelOverlays.js";
|
|
2
|
-
import { ASSISTANT_DIALOG_SELECTOR as t } from "../assistantOverlayState.js";
|
|
2
|
+
import { ASSISTANT_DIALOG_SELECTOR as t, closestAround as n } from "../assistantOverlayState.js";
|
|
3
3
|
//#region src/shared/assistant/ui/voice/voiceSessionEscape.ts
|
|
4
|
-
var
|
|
5
|
-
function i(e) {
|
|
6
|
-
return e.defaultPrevented || e.layerAbove ? "ignore" : e.transcriptOpen ? "close-transcript" : "end";
|
|
7
|
-
}
|
|
4
|
+
var r = `${t},[aria-modal="true"]`, i = "[aria-modal=\"true\"],[role=\"alertdialog\"]";
|
|
8
5
|
function a(e) {
|
|
9
|
-
return
|
|
6
|
+
return e.defaultPrevented || e.layerAbove ? "ignore" : e.transcriptOpen ? "close-transcript" : "end";
|
|
10
7
|
}
|
|
11
8
|
function o(e) {
|
|
12
|
-
return
|
|
9
|
+
return n(e, r);
|
|
13
10
|
}
|
|
14
11
|
function s(t, n) {
|
|
15
12
|
return !(!t || e(n, t) || n && t.contains(n));
|
|
16
13
|
}
|
|
17
14
|
function c(e) {
|
|
18
|
-
let { target: t, session: n, doc:
|
|
19
|
-
return s(o(t), n) || s(o(
|
|
15
|
+
let { target: t, session: n, doc: r } = e;
|
|
16
|
+
return s(o(t), n) || s(o(r.activeElement), n) ? !0 : Array.from(r.querySelectorAll(i)).some((e) => s(e, n));
|
|
20
17
|
}
|
|
21
18
|
//#endregion
|
|
22
|
-
export {
|
|
19
|
+
export { r as VOICE_ESCAPE_LAYER_SELECTOR, i as VOICE_ESCAPE_MODAL_SELECTOR, c as escapeBelongsToLayerAbove, a as voiceSessionEscapeAction };
|
|
@@ -14,7 +14,9 @@ interface Options {
|
|
|
14
14
|
* anyway and were just adding visible "shortcut listed, doesn't work"
|
|
15
15
|
* inconsistencies. The shortcuts here match the in-app shortcuts modal.
|
|
16
16
|
*
|
|
17
|
-
* - Escape:
|
|
17
|
+
* - Escape: back out of the topmost layer — a full-surface overlay (history,
|
|
18
|
+
* preview), else nothing here while a live voice session owns the key (it
|
|
19
|
+
* closes its transcript, then ends), else close the panel
|
|
18
20
|
* - Ctrl/Cmd+Shift+N: New conversation
|
|
19
21
|
* - Ctrl/Cmd+Shift+E: Export (triggers click on export button)
|
|
20
22
|
* - /: Focus input (only when no input/textarea is already focused)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAssistantKeyboardShortcuts.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/useAssistantKeyboardShortcuts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlD,UAAU,OAAO;IACf,QAAQ,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED
|
|
1
|
+
{"version":3,"file":"useAssistantKeyboardShortcuts.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/useAssistantKeyboardShortcuts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlD,UAAU,OAAO;IACf,QAAQ,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,QAyFrF"}
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
import { useAssistantStore as e } from "./store.js";
|
|
2
|
-
import { focusIsInsidePanel as t, panelOwnsEscape as n } from "./ui/panelOverlays.js";
|
|
3
|
-
import { useEffect as
|
|
2
|
+
import { focusIsInsidePanel as t, panelOwnsEscape as n, voiceSessionOwnsEscape as r } from "./ui/panelOverlays.js";
|
|
3
|
+
import { useEffect as i } from "react";
|
|
4
4
|
//#region src/shared/assistant/useAssistantKeyboardShortcuts.ts
|
|
5
|
-
function
|
|
6
|
-
|
|
7
|
-
let
|
|
8
|
-
let
|
|
9
|
-
if (!
|
|
10
|
-
let
|
|
11
|
-
if (
|
|
12
|
-
if (!n(
|
|
13
|
-
|
|
5
|
+
function a({ panelRef: a, inputRef: o, onClose: s }) {
|
|
6
|
+
i(() => {
|
|
7
|
+
let i = (i) => {
|
|
8
|
+
let c = a.current;
|
|
9
|
+
if (!c) return;
|
|
10
|
+
let l = document.activeElement;
|
|
11
|
+
if (i.key === "Escape") {
|
|
12
|
+
if (i.defaultPrevented || !n(c, l, document.body) || r(c)) return;
|
|
13
|
+
i.preventDefault(), s();
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
|
-
if (!t(
|
|
17
|
-
let
|
|
18
|
-
if (
|
|
19
|
-
|
|
16
|
+
if (!t(c, l)) return;
|
|
17
|
+
let u = i.ctrlKey || i.metaKey;
|
|
18
|
+
if (u && i.shiftKey && (i.key === "N" || i.key === "n")) {
|
|
19
|
+
i.preventDefault(), e.getState().createConversation();
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
|
-
if (
|
|
23
|
-
|
|
24
|
-
let e =
|
|
22
|
+
if (u && i.shiftKey && (i.key === "E" || i.key === "e")) {
|
|
23
|
+
i.preventDefault();
|
|
24
|
+
let e = c.querySelector("[data-testid=\"assistant-more\"]");
|
|
25
25
|
e?.focus(), e?.click();
|
|
26
26
|
return;
|
|
27
27
|
}
|
|
28
|
-
if (
|
|
29
|
-
let e =
|
|
30
|
-
e !== "INPUT" && e !== "TEXTAREA" && (
|
|
28
|
+
if (i.key === "/" && !u && !i.shiftKey) {
|
|
29
|
+
let e = l?.tagName;
|
|
30
|
+
e !== "INPUT" && e !== "TEXTAREA" && (i.preventDefault(), o?.current?.focus());
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
-
return document.addEventListener("keydown",
|
|
33
|
+
return document.addEventListener("keydown", i), () => document.removeEventListener("keydown", i);
|
|
34
34
|
}, [
|
|
35
|
-
i,
|
|
36
35
|
a,
|
|
37
|
-
o
|
|
36
|
+
o,
|
|
37
|
+
s
|
|
38
38
|
]);
|
|
39
39
|
}
|
|
40
40
|
//#endregion
|
|
41
|
-
export {
|
|
41
|
+
export { a as useAssistantKeyboardShortcuts };
|
|
@@ -44,7 +44,13 @@ export interface GraphQLFetchOptions {
|
|
|
44
44
|
baseUrl?: string;
|
|
45
45
|
/** Additional headers to merge (overrides auto-detected values) */
|
|
46
46
|
extraHeaders?: Record<string, string>;
|
|
47
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* AbortSignal for cancellation. An aborted request is never sent: it is
|
|
49
|
+
* refused before a workspace token is minted, and dropped from the batching
|
|
50
|
+
* queue if it is still waiting there (BOFF-8094). React Query passes one to
|
|
51
|
+
* every `queryFn` and aborts it when the query key changes, so a request
|
|
52
|
+
* built for the previous workspace cannot leave after a workspace switch.
|
|
53
|
+
*/
|
|
48
54
|
signal?: AbortSignal;
|
|
49
55
|
/**
|
|
50
56
|
* Send with fetch `keepalive`, so the request outlives the page — for a
|
|
@@ -135,6 +141,11 @@ export declare function ensureWorkspaceToken(options: {
|
|
|
135
141
|
organizationId?: string;
|
|
136
142
|
projectId?: string;
|
|
137
143
|
locale?: string;
|
|
144
|
+
/**
|
|
145
|
+
* Stops THIS caller waiting (it gets `null`). The mint itself is shared by
|
|
146
|
+
* every caller asking for the same context, so one caller's abort never
|
|
147
|
+
* cancels it for the others (BOFF-8094).
|
|
148
|
+
*/
|
|
138
149
|
signal?: AbortSignal;
|
|
139
150
|
currentQuery: string;
|
|
140
151
|
}): Promise<string | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/shared/graphql/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAY,KAAK,OAAO,EAAsB,MAAM,WAAW,CAAC;AAuBvE,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/shared/graphql/fetch.ts"],"names":[],"mappings":"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"}
|