@burdenoff/fe-libs 2026.911.3 → 2026.911.5
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/ui/AIAssistantPanel.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AIAssistantPanel.js +63 -62
- package/dist/shared/assistant/ui/panelOverlays.d.ts +59 -2
- package/dist/shared/assistant/ui/panelOverlays.d.ts.map +1 -1
- package/dist/shared/assistant/ui/panelOverlays.js +11 -1
- package/dist/shared/assistant/ui/useOverlayFocus.d.ts.map +1 -1
- package/dist/shared/assistant/ui/useOverlayFocus.js +11 -10
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.js +34 -33
- package/dist/shared/assistant/useAssistantKeyboardShortcuts.d.ts.map +1 -1
- package/dist/shared/assistant/useAssistantKeyboardShortcuts.js +20 -19
- package/dist/shared-assistant.js +39 -39
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAYrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAGnE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG;IAC/C,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA8MtD,CAAC"}
|
|
@@ -5,83 +5,84 @@ import { useAssistantStore as r } from "../store.js";
|
|
|
5
5
|
import { AssistantSpeechProvider as i } from "./AssistantSpeechProvider.js";
|
|
6
6
|
import { AssistantConnectSourceProvider as a } from "./composer/connectSource.js";
|
|
7
7
|
import { AssistantPreviewProvider as o } from "../preview/context.js";
|
|
8
|
-
import {
|
|
9
|
-
import { useAssistantPreviewBridge as
|
|
10
|
-
import { AssistantPreviewOverlay as
|
|
11
|
-
import { AssistantHeader as
|
|
12
|
-
import { AssistantConversationList as
|
|
13
|
-
import { useFilesServiceWarmup as
|
|
14
|
-
import { useAssistantHeartbeat as
|
|
15
|
-
import { useAssistantKeyboardShortcuts as
|
|
16
|
-
import { AssistantChatArea as
|
|
17
|
-
import { useRef as
|
|
18
|
-
import { jsx as
|
|
8
|
+
import { ASSISTANT_PANEL_ATTR as s, escapeDismisses as c, nextPanelOverlays as l } from "./panelOverlays.js";
|
|
9
|
+
import { useAssistantPreviewBridge as u } from "../preview/useAssistantPreviewBridge.js";
|
|
10
|
+
import { AssistantPreviewOverlay as d } from "../preview/AssistantPreviewOverlay.js";
|
|
11
|
+
import { AssistantHeader as f } from "./AssistantHeader.js";
|
|
12
|
+
import { AssistantConversationList as p } from "./AssistantConversationList.js";
|
|
13
|
+
import { useFilesServiceWarmup as m } from "../../../storage/warmFilesService.js";
|
|
14
|
+
import { useAssistantHeartbeat as h } from "../useAssistantHeartbeat.js";
|
|
15
|
+
import { useAssistantKeyboardShortcuts as g } from "../useAssistantKeyboardShortcuts.js";
|
|
16
|
+
import { AssistantChatArea as _ } from "./AssistantChatArea.js";
|
|
17
|
+
import { useRef as v, useState as y } from "react";
|
|
18
|
+
import { jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
19
19
|
//#region src/shared/assistant/ui/AIAssistantPanel.tsx
|
|
20
|
-
var
|
|
21
|
-
let
|
|
22
|
-
|
|
23
|
-
let
|
|
24
|
-
|
|
25
|
-
let
|
|
26
|
-
let t =
|
|
27
|
-
historyOpen:
|
|
28
|
-
previewOpen:
|
|
20
|
+
var S = ({ onClose: S, visible: C, docked: w, onToggleDock: T, writeAccess: E, onNavigate: D, connectSourceHref: O, preview: k }) => {
|
|
21
|
+
let A = t(), [j, M] = y(!1);
|
|
22
|
+
j && !k && M(!1);
|
|
23
|
+
let N = j && !!k;
|
|
24
|
+
u(k ?? null);
|
|
25
|
+
let P = v(null), { conversations: F, activeConversationId: I, conversationListOpen: L, setConversationListOpen: R, createConversation: z } = r(), B = L || N, V = (e) => {
|
|
26
|
+
let t = l({
|
|
27
|
+
historyOpen: L,
|
|
28
|
+
previewOpen: N
|
|
29
29
|
}, e);
|
|
30
|
-
|
|
31
|
-
},
|
|
32
|
-
|
|
33
|
-
let
|
|
34
|
-
return
|
|
35
|
-
panelRef:
|
|
30
|
+
R(t.historyOpen), M(t.previewOpen);
|
|
31
|
+
}, H = F.find((e) => e.id === I);
|
|
32
|
+
h(H?.backendSessionId ?? null, H?.mode ?? null, C ?? !0), m(C ?? !0);
|
|
33
|
+
let U = e(C !== !1);
|
|
34
|
+
return g({
|
|
35
|
+
panelRef: P,
|
|
36
36
|
onClose: () => {
|
|
37
|
-
if (
|
|
38
|
-
historyOpen:
|
|
39
|
-
previewOpen:
|
|
37
|
+
if (c({
|
|
38
|
+
historyOpen: L,
|
|
39
|
+
previewOpen: N
|
|
40
40
|
}) === "overlay") {
|
|
41
|
-
|
|
41
|
+
R(!1), M(!1);
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
S();
|
|
45
45
|
}
|
|
46
|
-
}), /* @__PURE__ */
|
|
47
|
-
visible:
|
|
48
|
-
children: /* @__PURE__ */
|
|
49
|
-
value:
|
|
50
|
-
children: /* @__PURE__ */
|
|
51
|
-
value:
|
|
52
|
-
children: /* @__PURE__ */
|
|
53
|
-
value:
|
|
54
|
-
children: /* @__PURE__ */
|
|
55
|
-
ref:
|
|
46
|
+
}), /* @__PURE__ */ b(i, {
|
|
47
|
+
visible: C ?? !0,
|
|
48
|
+
children: /* @__PURE__ */ b(o, {
|
|
49
|
+
value: k,
|
|
50
|
+
children: /* @__PURE__ */ b(n, {
|
|
51
|
+
value: D,
|
|
52
|
+
children: /* @__PURE__ */ b(a, {
|
|
53
|
+
value: O,
|
|
54
|
+
children: /* @__PURE__ */ x("div", {
|
|
55
|
+
ref: P,
|
|
56
56
|
className: "relative flex h-full w-full flex-col bg-bg-surface",
|
|
57
57
|
role: "complementary",
|
|
58
|
-
"aria-label":
|
|
58
|
+
"aria-label": A("panel.ariaLabel", "AI Assistant"),
|
|
59
59
|
"data-testid": "ai-assistant-panel",
|
|
60
|
+
[s]: "",
|
|
60
61
|
tabIndex: -1,
|
|
61
62
|
children: [
|
|
62
|
-
/* @__PURE__ */
|
|
63
|
+
/* @__PURE__ */ b("div", {
|
|
63
64
|
className: "contents",
|
|
64
|
-
inert:
|
|
65
|
-
children: /* @__PURE__ */
|
|
66
|
-
contextLabel:
|
|
67
|
-
onNewConversation: () =>
|
|
68
|
-
onOpenHistory: () =>
|
|
69
|
-
historyOpen:
|
|
70
|
-
onTogglePreview: () =>
|
|
71
|
-
previewOpen:
|
|
72
|
-
onClose:
|
|
73
|
-
docked:
|
|
74
|
-
onToggleDock:
|
|
65
|
+
inert: B || void 0,
|
|
66
|
+
children: /* @__PURE__ */ b(f, {
|
|
67
|
+
contextLabel: U,
|
|
68
|
+
onNewConversation: () => z(),
|
|
69
|
+
onOpenHistory: () => V("history"),
|
|
70
|
+
historyOpen: L,
|
|
71
|
+
onTogglePreview: () => V("preview"),
|
|
72
|
+
previewOpen: N,
|
|
73
|
+
onClose: S,
|
|
74
|
+
docked: w,
|
|
75
|
+
onToggleDock: T
|
|
75
76
|
})
|
|
76
77
|
}),
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
/* @__PURE__ */
|
|
78
|
+
L && /* @__PURE__ */ b(p, {}),
|
|
79
|
+
N && /* @__PURE__ */ b(d, { onClose: () => M(!1) }),
|
|
80
|
+
/* @__PURE__ */ b("div", {
|
|
80
81
|
className: "contents",
|
|
81
|
-
inert:
|
|
82
|
-
children: /* @__PURE__ */
|
|
83
|
-
visible:
|
|
84
|
-
writeAccess:
|
|
82
|
+
inert: B || void 0,
|
|
83
|
+
children: /* @__PURE__ */ b(_, {
|
|
84
|
+
visible: C ?? !0,
|
|
85
|
+
writeAccess: E
|
|
85
86
|
})
|
|
86
87
|
})
|
|
87
88
|
]
|
|
@@ -92,4 +93,4 @@ var x = ({ onClose: x, visible: S, docked: C, onToggleDock: w, writeAccess: T, o
|
|
|
92
93
|
});
|
|
93
94
|
};
|
|
94
95
|
//#endregion
|
|
95
|
-
export {
|
|
96
|
+
export { S as AIAssistantPanel };
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Which of the panel's full-surface overlays is showing.
|
|
3
3
|
*
|
|
4
4
|
* ★★ THEY ARE MUTUALLY EXCLUSIVE, and that is not a style choice. The history
|
|
5
|
-
* drawer (`AssistantConversationList.tsx:
|
|
6
|
-
* (`AssistantPreviewOverlay.tsx:
|
|
5
|
+
* drawer (`AssistantConversationList.tsx:87`) and the preview surface
|
|
6
|
+
* (`preview/AssistantPreviewOverlay.tsx:145`) are BOTH `absolute inset-0 z-10` with an
|
|
7
7
|
* opaque `bg-bg-surface`, inside the same relative panel. Equal z-index means
|
|
8
8
|
* the later one in DOM order simply paints over the earlier one, so allowing
|
|
9
9
|
* both produces three separate defects at once:
|
|
@@ -45,4 +45,61 @@ export declare function nextPanelOverlays(current: PanelOverlayState, toggled: "
|
|
|
45
45
|
* conversation instead.
|
|
46
46
|
*/
|
|
47
47
|
export declare function escapeDismisses(current: PanelOverlayState): "overlay" | "panel";
|
|
48
|
+
/**
|
|
49
|
+
* Attribute marking the assistant panel's root element.
|
|
50
|
+
*
|
|
51
|
+
* ★★ A CROSS-PACKAGE CONTRACT, not a styling hook. Each host app's own Escape
|
|
52
|
+
* handler reads it through `assistantPanelOwnsEscape` to decide whether the
|
|
53
|
+
* panel is about to handle the key itself. Renaming it silently reintroduces
|
|
54
|
+
* the double-close below, in a different repo, with every test still green.
|
|
55
|
+
*
|
|
56
|
+
* Deliberately NOT the `data-testid` — that is a test handle, free to change.
|
|
57
|
+
* This one is load-bearing at runtime.
|
|
58
|
+
*/
|
|
59
|
+
export declare const ASSISTANT_PANEL_ATTR = "data-assistant-panel";
|
|
60
|
+
/**
|
|
61
|
+
* Is `active` the panel itself, or inside it?
|
|
62
|
+
*
|
|
63
|
+
* Extracted so `useAssistantKeyboardShortcuts` (`:32`) and
|
|
64
|
+
* `assistantPanelOwnsEscape` cannot drift apart. The host has to decline
|
|
65
|
+
* exactly the key presses the panel takes — no more, or Escape stops working
|
|
66
|
+
* altogether; no fewer, or it fires twice — and "exactly" is only checkable if
|
|
67
|
+
* both sides ask one question.
|
|
68
|
+
*/
|
|
69
|
+
export declare function focusIsInsidePanel(panel: {
|
|
70
|
+
contains(node: Node | null): boolean;
|
|
71
|
+
} | null, active: Node | null): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Will the assistant panel handle this Escape itself?
|
|
74
|
+
*
|
|
75
|
+
* ★★★ HOSTS MUST CALL THIS BEFORE CLOSING THE PANEL ON ESCAPE. Both host apps
|
|
76
|
+
* register a `document` keydown listener so Escape closes the panel even when
|
|
77
|
+
* focus is elsewhere on the page (healthybowl-app and vibecontrols-app,
|
|
78
|
+
* `src/components/chrome/AIAssistantOverlay.tsx`). The panel registers one too
|
|
79
|
+
* (`useAssistantKeyboardShortcuts.ts:80`), routed through `escapeDismisses` so
|
|
80
|
+
* an open overlay is backed out of rather than the whole assistant.
|
|
81
|
+
*
|
|
82
|
+
* Both listeners are on `document`, so ONE key press ran BOTH: the overlay
|
|
83
|
+
* closed AND the panel unmounted, taking the in-flight turn with it — the exact
|
|
84
|
+
* defect `escapeDismisses` exists to prevent, reintroduced one layer up where
|
|
85
|
+
* this package could not see it. Measured on alpha 2026-09-11: preview open,
|
|
86
|
+
* focus on the overlay, one Escape, and the panel was gone.
|
|
87
|
+
*
|
|
88
|
+
* ★★ `stopPropagation()` CANNOT FIX IT. The two listeners sit on the SAME node,
|
|
89
|
+
* and propagation stops travel BETWEEN nodes; only `stopImmediatePropagation()`
|
|
90
|
+
* reaches a sibling listener, and only one registered later. The panel's is not
|
|
91
|
+
* reliably earlier: `AIAssistantPanel.tsx:207` passes a fresh inline arrow as
|
|
92
|
+
* `onClose`, which is in the hook's dependency array (`:82`), so the panel's
|
|
93
|
+
* effect re-subscribes on EVERY render and keeps moving to the back of the
|
|
94
|
+
* queue. Neither side can depend on order.
|
|
95
|
+
*
|
|
96
|
+
* So ownership is decided by STATE, not by event order — whoever holds focus
|
|
97
|
+
* owns the key:
|
|
98
|
+
* - focus inside the panel -> the panel decides (overlay first, then close)
|
|
99
|
+
* - focus anywhere else -> the host closes the panel, exactly as before
|
|
100
|
+
*
|
|
101
|
+
* That partition is total and disjoint, so Escape is neither dropped nor
|
|
102
|
+
* double-handled, whichever listener happens to run first.
|
|
103
|
+
*/
|
|
104
|
+
export declare function assistantPanelOwnsEscape(doc?: Pick<Document, "querySelectorAll" | "activeElement">): boolean;
|
|
48
105
|
//# sourceMappingURL=panelOverlays.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panelOverlays.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/panelOverlays.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,EAAE,iBAG9B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,SAAS,GAAG,SAAS,GAC7B,iBAAiB,CAOnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,GACzB,SAAS,GAAG,OAAO,CAErB"}
|
|
1
|
+
{"version":3,"file":"panelOverlays.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/panelOverlays.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,EAAE,iBAG9B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,SAAS,GAAG,SAAS,GAC7B,iBAAiB,CAOnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,GACzB,SAAS,GAAG,OAAO,CAErB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAA;CAAE,GAAG,IAAI,EACtD,MAAM,EAAE,IAAI,GAAG,IAAI,GAClB,OAAO,CAGT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,eAAe,CAAY,GACnE,OAAO,CAaT"}
|
|
@@ -12,5 +12,15 @@ function t(t, n) {
|
|
|
12
12
|
function n(e) {
|
|
13
13
|
return e.historyOpen || e.previewOpen ? "overlay" : "panel";
|
|
14
14
|
}
|
|
15
|
+
var r = "data-assistant-panel";
|
|
16
|
+
function i(e, t) {
|
|
17
|
+
return !e || !t ? !1 : e === t || e.contains(t);
|
|
18
|
+
}
|
|
19
|
+
function a(e = document) {
|
|
20
|
+
let t = e.activeElement;
|
|
21
|
+
if (!t) return !1;
|
|
22
|
+
for (let n of Array.from(e.querySelectorAll(`[${r}]`))) if (i(n, t)) return !0;
|
|
23
|
+
return !1;
|
|
24
|
+
}
|
|
15
25
|
//#endregion
|
|
16
|
-
export { e as NO_PANEL_OVERLAY, n as escapeDismisses, t as nextPanelOverlays };
|
|
26
|
+
export { r as ASSISTANT_PANEL_ATTR, e as NO_PANEL_OVERLAY, a as assistantPanelOwnsEscape, n as escapeDismisses, i as focusIsInsidePanel, t as nextPanelOverlays };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOverlayFocus.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/useOverlayFocus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useOverlayFocus.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/useOverlayFocus.ts"],"names":[],"mappings":"AA4DA,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW;AACnD,8EAA8E;AAC9E,iBAAiB,CAAC,EAAE,MAAM,uCAgE3B"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ASSISTANT_PANEL_ATTR as e } from "./panelOverlays.js";
|
|
2
|
+
import { useEffect as t, useLayoutEffect as n, useRef as r } from "react";
|
|
2
3
|
//#region src/shared/assistant/ui/useOverlayFocus.ts
|
|
3
|
-
var
|
|
4
|
-
function
|
|
5
|
-
let t =
|
|
6
|
-
return
|
|
7
|
-
let n = t.current,
|
|
4
|
+
var i = `[${e}]`, a = typeof document > "u" ? t : n;
|
|
5
|
+
function o(e) {
|
|
6
|
+
let t = r(null);
|
|
7
|
+
return a(() => {
|
|
8
|
+
let n = t.current, r = n?.closest(i) ?? null;
|
|
8
9
|
return n?.focus({ preventScroll: !0 }), () => {
|
|
9
10
|
let t = document.activeElement;
|
|
10
11
|
if (!(n && (n === t || n.contains(t)))) return;
|
|
11
|
-
let
|
|
12
|
-
(
|
|
12
|
+
let i = e ? r?.querySelector(`[data-testid="${e}"]`) : null;
|
|
13
|
+
(i?.isConnected ? i : r)?.focus({ preventScroll: !0 });
|
|
13
14
|
let a = document.activeElement;
|
|
14
|
-
|
|
15
|
+
r && a !== n && !n?.contains(a) && (r === a || r.contains(a)) || r?.focus({ preventScroll: !0 });
|
|
15
16
|
};
|
|
16
17
|
}, [e]), t;
|
|
17
18
|
}
|
|
18
19
|
//#endregion
|
|
19
|
-
export {
|
|
20
|
+
export { o as useOverlayFocus };
|
|
@@ -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;AAKnD,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;CACzB;AAED,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CAsI3C,CAAC"}
|
|
@@ -1,64 +1,65 @@
|
|
|
1
1
|
import { useAssistantTr as e } from "../../i18n.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { ASSISTANT_PANEL_ATTR as t, focusIsInsidePanel as n } from "../panelOverlays.js";
|
|
3
|
+
import { VoiceConversationView as r } from "./VoiceConversationView.js";
|
|
4
|
+
import { useEffect as i, useRef as a } from "react";
|
|
5
|
+
import { ArrowRight as o, Download as s, X as c } from "lucide-react";
|
|
6
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
7
|
//#region src/shared/assistant/ui/voice/VoiceTranscriptDrawer.tsx
|
|
7
|
-
var
|
|
8
|
-
let
|
|
9
|
-
return
|
|
10
|
-
if (!
|
|
8
|
+
var d = ({ turns: d, onClose: f, onSave: p, onContinueInChat: m, closeOnEscape: h = !1 }) => {
|
|
9
|
+
let g = e(), _ = a(null);
|
|
10
|
+
return i(() => {
|
|
11
|
+
if (!h) return;
|
|
11
12
|
let e = (e) => {
|
|
12
13
|
if (e.key !== "Escape" || document.querySelector("[role=\"alertdialog\"]")) return;
|
|
13
|
-
let
|
|
14
|
-
|
|
14
|
+
let r = _.current?.closest(`[${t}]`), i = document.activeElement;
|
|
15
|
+
n(r ?? null, i) && (e.preventDefault(), e.stopPropagation(), f());
|
|
15
16
|
};
|
|
16
17
|
return document.addEventListener("keydown", e, !0), () => document.removeEventListener("keydown", e, !0);
|
|
17
|
-
}, [
|
|
18
|
-
ref:
|
|
18
|
+
}, [h, f]), /* @__PURE__ */ u("div", {
|
|
19
|
+
ref: _,
|
|
19
20
|
className: "absolute inset-0 z-30 flex flex-col bg-bg-sunken/95 backdrop-blur-sm",
|
|
20
21
|
role: "dialog",
|
|
21
|
-
"aria-label":
|
|
22
|
+
"aria-label": g("voiceSession.transcriptTitle", "Voice transcript"),
|
|
22
23
|
"data-testid": "assistant-voice-transcript",
|
|
23
24
|
children: [
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
+
/* @__PURE__ */ u("div", {
|
|
25
26
|
className: "flex items-center justify-between border-b border-border-subtle px-4 py-3",
|
|
26
|
-
children: [/* @__PURE__ */
|
|
27
|
+
children: [/* @__PURE__ */ u("div", {
|
|
27
28
|
className: "min-w-0",
|
|
28
|
-
children: [/* @__PURE__ */
|
|
29
|
+
children: [/* @__PURE__ */ l("h2", {
|
|
29
30
|
className: "text-sm font-semibold text-text-primary",
|
|
30
|
-
children:
|
|
31
|
-
}), /* @__PURE__ */
|
|
31
|
+
children: g("voiceSession.transcript", "Voice conversation")
|
|
32
|
+
}), /* @__PURE__ */ l("p", {
|
|
32
33
|
className: "truncate text-xs text-text-muted",
|
|
33
|
-
children:
|
|
34
|
+
children: g("voiceSession.transcriptHint", "Spoken turns in this conversation — kept out of your typed chat.")
|
|
34
35
|
})]
|
|
35
|
-
}), /* @__PURE__ */
|
|
36
|
+
}), /* @__PURE__ */ l("button", {
|
|
36
37
|
type: "button",
|
|
37
|
-
onClick:
|
|
38
|
+
onClick: f,
|
|
38
39
|
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",
|
|
39
|
-
"aria-label":
|
|
40
|
+
"aria-label": g("voiceSession.transcriptClose", "Close the transcript"),
|
|
40
41
|
"data-testid": "assistant-voice-transcript-close",
|
|
41
|
-
children: /* @__PURE__ */
|
|
42
|
+
children: /* @__PURE__ */ l(c, { className: "size-4" })
|
|
42
43
|
})]
|
|
43
44
|
}),
|
|
44
|
-
/* @__PURE__ */
|
|
45
|
-
(
|
|
45
|
+
/* @__PURE__ */ l(r, { turns: d }),
|
|
46
|
+
(p || m) && d.length > 0 ? /* @__PURE__ */ u("div", {
|
|
46
47
|
className: "flex items-center justify-end gap-2 border-t border-border-subtle px-4 py-3",
|
|
47
|
-
children: [
|
|
48
|
+
children: [p ? /* @__PURE__ */ u("button", {
|
|
48
49
|
type: "button",
|
|
49
|
-
onClick:
|
|
50
|
+
onClick: p,
|
|
50
51
|
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",
|
|
51
52
|
"data-testid": "assistant-voice-save-transcript",
|
|
52
|
-
children: [/* @__PURE__ */ s
|
|
53
|
+
children: [/* @__PURE__ */ l(s, {
|
|
53
54
|
className: "size-3.5",
|
|
54
55
|
"aria-hidden": "true"
|
|
55
|
-
}),
|
|
56
|
-
}) : null,
|
|
56
|
+
}), g("voiceSession.save", "Save transcript")]
|
|
57
|
+
}) : null, m ? /* @__PURE__ */ u("button", {
|
|
57
58
|
type: "button",
|
|
58
|
-
onClick:
|
|
59
|
+
onClick: m,
|
|
59
60
|
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",
|
|
60
61
|
"data-testid": "assistant-voice-continue-in-chat",
|
|
61
|
-
children: [
|
|
62
|
+
children: [g("voiceSession.continueInChat", "Continue in chat"), /* @__PURE__ */ l(o, {
|
|
62
63
|
className: "size-3.5",
|
|
63
64
|
"aria-hidden": "true"
|
|
64
65
|
})]
|
|
@@ -68,4 +69,4 @@ var l = ({ turns: l, onClose: u, onSave: d, onContinueInChat: f, closeOnEscape:
|
|
|
68
69
|
});
|
|
69
70
|
};
|
|
70
71
|
//#endregion
|
|
71
|
-
export {
|
|
72
|
+
export { d as VoiceTranscriptDrawer };
|
|
@@ -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;
|
|
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;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,6BAA6B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,QA8DrF"}
|
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
import { useAssistantStore as e } from "./store.js";
|
|
2
|
-
import {
|
|
2
|
+
import { focusIsInsidePanel as t } from "./ui/panelOverlays.js";
|
|
3
|
+
import { useEffect as n } from "react";
|
|
3
4
|
//#region src/shared/assistant/useAssistantKeyboardShortcuts.ts
|
|
4
|
-
function
|
|
5
|
-
|
|
6
|
-
let
|
|
7
|
-
let
|
|
8
|
-
if (!
|
|
9
|
-
let
|
|
10
|
-
if (
|
|
11
|
-
|
|
5
|
+
function r({ panelRef: r, inputRef: i, onClose: a }) {
|
|
6
|
+
n(() => {
|
|
7
|
+
let n = (n) => {
|
|
8
|
+
let o = r.current;
|
|
9
|
+
if (!o || !t(o, document.activeElement)) return;
|
|
10
|
+
let s = n.ctrlKey || n.metaKey;
|
|
11
|
+
if (n.key === "Escape") {
|
|
12
|
+
n.preventDefault(), a();
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
|
-
if (
|
|
15
|
-
|
|
15
|
+
if (s && n.shiftKey && (n.key === "N" || n.key === "n")) {
|
|
16
|
+
n.preventDefault(), e.getState().createConversation();
|
|
16
17
|
return;
|
|
17
18
|
}
|
|
18
|
-
if (
|
|
19
|
-
|
|
19
|
+
if (s && n.shiftKey && (n.key === "E" || n.key === "e")) {
|
|
20
|
+
n.preventDefault(), o.querySelector("[data-testid=\"assistant-more\"]")?.click();
|
|
20
21
|
return;
|
|
21
22
|
}
|
|
22
|
-
if (
|
|
23
|
+
if (n.key === "/" && !s && !n.shiftKey) {
|
|
23
24
|
let e = document.activeElement?.tagName;
|
|
24
|
-
e !== "INPUT" && e !== "TEXTAREA" && (
|
|
25
|
+
e !== "INPUT" && e !== "TEXTAREA" && (n.preventDefault(), i?.current?.focus());
|
|
25
26
|
}
|
|
26
27
|
};
|
|
27
|
-
return document.addEventListener("keydown",
|
|
28
|
+
return document.addEventListener("keydown", n), () => document.removeEventListener("keydown", n);
|
|
28
29
|
}, [
|
|
29
|
-
n,
|
|
30
30
|
r,
|
|
31
|
-
i
|
|
31
|
+
i,
|
|
32
|
+
a
|
|
32
33
|
]);
|
|
33
34
|
}
|
|
34
35
|
//#endregion
|
|
35
|
-
export {
|
|
36
|
+
export { r as useAssistantKeyboardShortcuts };
|
package/dist/shared-assistant.js
CHANGED
|
@@ -61,42 +61,42 @@ import { AssistantAttachmentButton as ii } from "./shared/assistant/ui/composer/
|
|
|
61
61
|
import { AssistantAttachmentChips as ai } from "./shared/assistant/ui/composer/AssistantAttachmentChips.js";
|
|
62
62
|
import { AssistantPreviewProvider as oi, useAssistantPreview as si } from "./shared/assistant/preview/context.js";
|
|
63
63
|
import { IDLE_PREVIEW_STATE as ci, nextPreviewEvents as li } from "./shared/assistant/preview/previewTransitions.js";
|
|
64
|
-
import {
|
|
65
|
-
import { useOverlayFocus as
|
|
66
|
-
import { useAssistantPreviewBridge as
|
|
67
|
-
import { AssistantPreviewOverlay as
|
|
68
|
-
import { AssistantLanguageSelector as
|
|
69
|
-
import { ASSISTANT_MODE_META as
|
|
70
|
-
import { AssistantVoiceButton as
|
|
71
|
-
import { AUTO_VOICE as
|
|
72
|
-
import { AssistantVoiceOrb as
|
|
73
|
-
import { AssistantVoiceSessionButton as
|
|
74
|
-
import { CAPTION_SCROLL_ATTR as
|
|
75
|
-
import { VoiceConversationView as
|
|
76
|
-
import { VoiceWaveform as
|
|
77
|
-
import { VoiceMiniController as
|
|
78
|
-
import { VoiceStage as
|
|
79
|
-
import { VoiceTranscriptDrawer as
|
|
80
|
-
import { downloadFile as
|
|
81
|
-
import { AssistantMoreMenu as
|
|
82
|
-
import { AssistantHeader as
|
|
83
|
-
import { AssistantConversationList as
|
|
84
|
-
import { AssistantEmptyState as
|
|
85
|
-
import { AssistantMessageItem as
|
|
86
|
-
import { AssistantMessageList as
|
|
87
|
-
import { AssistantVoiceSession as
|
|
88
|
-
import { useAssistantApiAccess as
|
|
89
|
-
import { useConversationTurns as
|
|
90
|
-
import { isMultimodalBodyRejection as
|
|
91
|
-
import { aiCreditsUpdatedEventName as
|
|
92
|
-
import { useWorkspaceWriteAccess as
|
|
93
|
-
import { extractDocumentText as
|
|
94
|
-
import { useAssistantAttachments as
|
|
95
|
-
import { AssistantComposer as
|
|
96
|
-
import { isProdRuntime as
|
|
97
|
-
import { useAssistantHeartbeat as
|
|
98
|
-
import { useAssistantKeyboardShortcuts as
|
|
99
|
-
import { AssistantApiCallsConsentDialog as
|
|
100
|
-
import { AssistantChatArea as
|
|
101
|
-
import { AIAssistantPanel as
|
|
102
|
-
export {
|
|
64
|
+
import { ASSISTANT_PANEL_ATTR as ui, NO_PANEL_OVERLAY as di, assistantPanelOwnsEscape as fi, escapeDismisses as pi, focusIsInsidePanel as mi, nextPanelOverlays as hi } from "./shared/assistant/ui/panelOverlays.js";
|
|
65
|
+
import { useOverlayFocus as gi } from "./shared/assistant/ui/useOverlayFocus.js";
|
|
66
|
+
import { useAssistantPreviewBridge as _i } from "./shared/assistant/preview/useAssistantPreviewBridge.js";
|
|
67
|
+
import { AssistantPreviewOverlay as vi } from "./shared/assistant/preview/AssistantPreviewOverlay.js";
|
|
68
|
+
import { AssistantLanguageSelector as yi, FOLLOW_APP_LOCALE as bi } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
|
|
69
|
+
import { ASSISTANT_MODE_META as xi, AssistantModeSelector as Si, nextModeIndex as Ci } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
|
|
70
|
+
import { AssistantVoiceButton as wi } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
|
|
71
|
+
import { AUTO_VOICE as Ti, AssistantVoiceSelector as Ei } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
|
|
72
|
+
import { AssistantVoiceOrb as Di } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
|
|
73
|
+
import { AssistantVoiceSessionButton as Oi } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
|
|
74
|
+
import { CAPTION_SCROLL_ATTR as ki, VoiceCaption as Ai } from "./shared/assistant/ui/voice/VoiceCaption.js";
|
|
75
|
+
import { VoiceConversationView as ji } from "./shared/assistant/ui/voice/VoiceConversationView.js";
|
|
76
|
+
import { VoiceWaveform as Mi } from "./shared/assistant/ui/voice/VoiceWaveform.js";
|
|
77
|
+
import { VoiceMiniController as Ni } from "./shared/assistant/ui/voice/VoiceMiniController.js";
|
|
78
|
+
import { VoiceStage as Pi } from "./shared/assistant/ui/voice/VoiceStage.js";
|
|
79
|
+
import { VoiceTranscriptDrawer as Fi } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
|
|
80
|
+
import { downloadFile as Ii, exportConversation as Li } from "./shared/assistant/exportConversation.js";
|
|
81
|
+
import { AssistantMoreMenu as Ri } from "./shared/assistant/ui/AssistantMoreMenu.js";
|
|
82
|
+
import { AssistantHeader as zi } from "./shared/assistant/ui/AssistantHeader.js";
|
|
83
|
+
import { AssistantConversationList as Bi } from "./shared/assistant/ui/AssistantConversationList.js";
|
|
84
|
+
import { AssistantEmptyState as Vi } from "./shared/assistant/ui/AssistantEmptyState.js";
|
|
85
|
+
import { AssistantMessageItem as Hi } from "./shared/assistant/ui/AssistantMessageItem.js";
|
|
86
|
+
import { AssistantMessageList as Ui } from "./shared/assistant/ui/AssistantMessageList.js";
|
|
87
|
+
import { AssistantVoiceSession as Wi } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
|
|
88
|
+
import { useAssistantApiAccess as Gi } from "./shared/assistant/useAssistantApiAccess.js";
|
|
89
|
+
import { useConversationTurns as Ki } from "./shared/assistant/useConversationTurns.js";
|
|
90
|
+
import { isMultimodalBodyRejection as qi, isRecoverableAssistantError as Ji } from "./shared/assistant/transportErrors.js";
|
|
91
|
+
import { aiCreditsUpdatedEventName as Yi, dispatchAssistantQuotaExhausted as Xi, notifyAiCreditsUpdated as Zi } from "./shared/assistant/aiCredits.js";
|
|
92
|
+
import { useWorkspaceWriteAccess as Qi } from "./shared/assistant/useWorkspaceWriteAccess.js";
|
|
93
|
+
import { extractDocumentText as $i } from "./shared/assistant/documentExtract.js";
|
|
94
|
+
import { useAssistantAttachments as ea } from "./shared/assistant/useAssistantAttachments.js";
|
|
95
|
+
import { AssistantComposer as ta } from "./shared/assistant/ui/composer/AssistantComposer.js";
|
|
96
|
+
import { isProdRuntime as na } from "./shared/assistant/env.js";
|
|
97
|
+
import { useAssistantHeartbeat as ra } from "./shared/assistant/useAssistantHeartbeat.js";
|
|
98
|
+
import { useAssistantKeyboardShortcuts as ia } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
|
|
99
|
+
import { AssistantApiCallsConsentDialog as aa } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
|
|
100
|
+
import { AssistantChatArea as oa } from "./shared/assistant/ui/AssistantChatArea.js";
|
|
101
|
+
import { AIAssistantPanel as sa } from "./shared/assistant/ui/AIAssistantPanel.js";
|
|
102
|
+
export { sa as AIAssistantPanel, L as ASSISTANT_API_AUTH_STRATEGY, sn as ASSISTANT_LANGUAGES, xi as ASSISTANT_MODE_META, ui as ASSISTANT_PANEL_ATTR, Kn as ATTACHMENT_ACCEPT, Hr as ATTACHMENT_SOURCES, Ti as AUTO_VOICE, aa as AssistantApiCallsConsentDialog, ii as AssistantAttachmentButton, ai as AssistantAttachmentChips, Jr as AssistantAutoSpeakToggle, oa as AssistantChatArea, ta as AssistantComposer, ri as AssistantConnectSourceItem, ti as AssistantConnectSourceProvider, Bi as AssistantConversationList, Vi as AssistantEmptyState, zi as AssistantHeader, s as AssistantI18nProvider, Zr as AssistantLanguageMenu, yi as AssistantLanguageSelector, f as AssistantMarkdownImage, h as AssistantMarkdownRenderer, Yr as AssistantMessageAttachments, Hi as AssistantMessageItem, Ui as AssistantMessageList, Si as AssistantModeSelector, Ri as AssistantMoreMenu, g as AssistantNavigateProvider, Xr as AssistantPendingWriteCard, vi as AssistantPreviewOverlay, oi as AssistantPreviewProvider, t as AssistantProductProvider, Qr as AssistantReplyLanguageSelector, _e as AssistantRuntimeManager, $r as AssistantSpeakButton, Ir as AssistantSpeechProvider, ei as AssistantSpokenTurnsNotice, Pr as AssistantToolActivity, wi as AssistantVoiceButton, Di as AssistantVoiceOrb, Ei as AssistantVoiceSelector, Wi as AssistantVoiceSession, Oi as AssistantVoiceSessionButton, qn as AttachmentRejectedError, En as BOILERPLATE_PAGE_SHARE, ki as CAPTION_SCROLL_ATTR, O as CHECK_AI_CREDITS, k as CREATE_SANDBOX, zt as DEFAULT_SPEAKABLE_LABELS, cn as DEFAULT_SPEECH_RATE, ft as ENDPOINT_GRACE_MS, A as EXTEND_SANDBOX_TTL, bi as FOLLOW_APP_LOCALE, j as GET_ACTIVE_SANDBOXES, M as GET_SANDBOX, He as HOSTED_TTS_MAX_CHARS, Re as HOSTED_TTS_TIER, ze as HOSTED_VOICES, yn as IDLE_PLAYBACK, ci as IDLE_PREVIEW_STATE, pt as INITIAL_SESSION, Jn as INLINE_IMAGE_MAX_DIM, Yn as INLINE_IMAGE_QUALITY, mt as INTERRUPT_MAX_MS, ht as INTERRUPT_MIN_MS, Xn as MAX_ATTACHMENTS, Dn as MAX_BOILERPLATE_LINE_CHARS, On as MAX_EXTRACTED_CHARS, Zn as MAX_FILE_BYTES, Qn as MAX_INLINE_CHARS_PER_FILE, $n as MAX_INLINE_CHARS_TOTAL, wn as MAX_INLINE_IMAGE_BASE64_BYTES, er as MAX_INLINE_IMAGE_BASE64_CHARS, tr as MAX_INLINE_IMAGE_PARTS, nr as MAX_INLINE_TURN_BODY_BYTES, kn as MAX_PDF_PAGES_SCANNED, Tn as MAX_REQUEST_BODY_BYTES, Bt as MAX_SPEAKABLE_CHARS, Vt as MAX_SPOKEN_TABLE_ROWS, rr as MAX_TURN_BODY_BYTES, Zt as MINI_CAPTION_BUDGET, An as MIN_PAGE_TEXT_CHARS, jn as MIN_TEXT_PAGE_SHARE, di as NO_PANEL_OVERLAY, Dr as PHRASE_ROTATE_MS, $t as POLL_FAST_MS, en as POLL_FAST_UNTIL_MS, tn as POLL_SLOW_MS, nn as POLL_STEADY_MS, rn as POLL_STEADY_UNTIL_MS, Yt as PREVIEW_LANGUAGES, ir as PROMPT_ENVELOPE_RESERVE_BYTES, N as PROXY_SANDBOX_REQUEST, P as REPORT_AI_TOKEN_USAGE, Gr as SANDBOX_READY_TTL_MS, gt as SILENCE_SUBMIT_MS, Ue as SPEAKING_RATE_MAX, We as SPEAKING_RATE_MAX_STREAMING, Ge as SPEAKING_RATE_MAX_SYNC, Ke as SPEAKING_RATE_MIN, Ht as SPEECH_CHUNK_CHARS, Ut as SPEECH_CHUNK_CJK_CHARS, wt as SPEECH_LANG, hn as SPOKEN_LABEL_LANGUAGES, Or as STAGE_COPY, F as STOP_ASSISTANT_SANDBOX, kr as THINKING_PHRASES, ar as TURN_BODY_HEADROOM_BYTES, Tt as VOICE_LIST_TIMEOUT_MS, Ai as VoiceCaption, ji as VoiceConversationView, Ni as VoiceMiniController, Pi as VoiceStage, Fi as VoiceTranscriptDrawer, Mi as VoiceWaveform, I as WAIT_FOR_SANDBOX_RUNNING, q as abortAssistantTurn, Yi as aiCreditsUpdatedEventName, J as approvePendingWrite, fi as assistantPanelOwnsEscape, _ as assistantRoutePath, c as assistantTranslationKey, v as assistantUrlTransform, Ur as availableAttachmentSources, qe as base64ToBytes, y as browserShouldHandle, Le as browserSpeechEngine, Y as buildAssistantSandboxEnv, or as buildAttachmentPromptBlock, It as buildContinuedFromVoiceNote, ve as buildProgress, sr as buildPromptParts, X as buildPromptRequestBody, cr as buildPromptWithAttachments, Je as buildRequest, E as buildSandboxContextInput, Lt as buildVoiceTranscriptMarkdown, Ae as chatTurns, Z as checkAssistantAiCredits, Wt as chunkForSpeech, b as classifyAssistantHref, lr as classifyAttachment, Ye as classifyHttpFailure, S as classifyQuotaError, Mn as columnLetterToIndex, tt as configureSpeechEngine, Gt as containsCjk, d as copyToClipboard, ur as countInlineImageCandidates, dr as countInlinedImageParts, Q as createAssistantSandbox, $ as createAssistantSession, $e as createHostedTtsEngine, Kr as createReadinessTracker, et as createRoutingSpeechEngine, Oe as createSandboxAssistantTransport, nt as createSpeechEngines, Xe as decodeAudioResponse, Nn as decodeXmlEntities, C as describeQuotaError, fr as detectDocumentFormat, _n as detectScriptLocale, Wr as deviceHasCamera, Xi as dispatchAssistantQuotaExhausted, Pn as docxXmlToText, ee as downloadAssistantArtifact, Ii as downloadFile, pi as escapeDismisses, pr as estimateTurnBodyBytes, D as executeSandboxGraphQL, Li as exportConversation, te as extendAssistantSandboxTTL, $i as extractDocumentText, ln as findAssistantLanguage, ne as findExistingSandbox, pn as findPendingWrite, Fn as fitPdfPages, mi as focusIsInsidePanel, mr as formatBytes, In as formatPageRanges, zr as getActorId, re as getAssistantArtifacts, ye as getAssistantMedia, ie as getAssistantMessages, ae as getAssistantSession, oe as getAssistantStreamAccess, be as getAssistantText, hr as getAttachmentSendBlocker, U as getCapability, gr as getExtension, R as getImageForMode, z as getImageTagForMode, Br as getOrganizationId, xe as getRawMessageCreatedAt, B as getResourcesForMode, V as getSandboxImageRegistry, _r as getSendableAttachments, rt as getSpeechEngine, Se as getToolProgress, Vr as getWorkspaceId, je as groupBySession, Me as groupConsecutiveBySession, vr as hasAttachmentWorkInFlight, Be as hostedLocaleFor, Ve as hostedSupportsLanguage, p as imageHostLabel, _t as isCapturing, vt as isEcho, Ln as isMostlyImagePages, qi as isMultimodalBodyRejection, na as isProdRuntime, w as isQuotaExhaustedError, Ce as isReapedSandboxConnectionError, qr as isRecentlyVerified, we as isRecoverable, Ji as isRecoverableAssistantError, m as isRemoteImageSrc, bn as isSpeakingMessage, Et as isSpeechBlocked, Ar as isStageCopy, yt as isSubmittable, wr as isTurnInFlight, W as isUnknownFieldError, Ne as isVoiceTurn, Rn as joinSheets, Dt as languageDisplayName, Te as mapSessionToHistory, G as markSupported, K as markUnsupported, Ee as mergeMessagesById, ot as micIsInterrupt, se as modeRequiresConfirmWrites, Ci as nextModeIndex, hi as nextPanelOverlays, li as nextPreviewEvents, Ot as normalizeLangTag, Zi as notifyAiCreditsUpdated, bt as orbMode, zn as pageMarker, mn as parseConfirmationRefusal, yr as parseDataUrl, Bn as parseSharedStrings, Fr as parseToolActivity, Vn as parseWorkbookSheets, Hn as pdfTextItemsToPage, Tr as planAbandonedTurn, xt as planReplyConsumption, Er as planTurnAbort, an as pollDelayMs, kt as primaryLanguageSubtag, xn as publishedChunks, T as quotaExhaustedEventName, it as readSpeechEngineConfig, ce as releaseSupersededAssistantSandboxes, dn as replyFollowsInput, le as reportAssistantAiTokenUsage, Sn as requiresCancel, at as resetSpeechEngine, un as resolveAssistantLanguage, fn as resolveLanguagePair, n as resolveModeConfig, H as resolveSandboxAssistantMode, vn as resolveSpeechLocale, De as sanitize, ue as selectExistingAssistantSandbox, de as selectSupersededAssistantSandboxes, At as selectVoiceForLocale, fe as sendAssistantPromptAsync, pe as sendHeartbeat, Un as sheetXmlToRows, Ze as shouldDisableEngine, Qt as showPreviousChunk, st as showsAssistantCaption, ct as showsUserCaption, Kt as speakableEmail, jt as speechGate, gn as speechLabelsFor, Mt as speechLangForLocale, Cn as speechPlaybackReducer, Qe as splitForVendor, qt as splitTableRow, St as spokenSoFar, jr as stageText, Mr as statusStageCopy, me as stopReapedAssistantSandbox, Wn as summarisePageText, Nr as thinkingPhrase, on as toCaptionText, br as toMessageAttachment, Jt as toSpeakableText, xr as truncateForInline, Gn as truncatePagesForInline, Gi as useAssistantApiAccess, ea as useAssistantAttachments, ni as useAssistantConnectSource, ra as useAssistantHeartbeat, l as useAssistantI18nNamespace, ia as useAssistantKeyboardShortcuts, x as useAssistantNavigate, r as useAssistantPageLabel, si as useAssistantPreview, _i as useAssistantPreviewBridge, i as useAssistantProduct, a as useAssistantProductOrNull, Lr as useAssistantSpeech, o as useAssistantStorageFolders, Cr as useAssistantStore, u as useAssistantTr, Ki as useConversationTurns, gi as useOverlayFocus, ke as useSandboxAssistantTransport, e as useVoiceInput, Rr as useVoiceSession, Qi as useWorkspaceWriteAccess, Sr as validateFile, Nt as voiceAvailability, Pe as voiceMarker, Xt as voicePreviewText, Pt as voiceQualityRank, Fe as voiceSessionIdOf, Ct as voiceSessionReducer, lt as voiceStageState, Rt as voiceTranscriptFilename, Ie as voiceTurnsOnly, Ft as voicesForLocale, he as waitForAssistantServiceReady, ge as waitForSandboxRunning, ut as waveformIsActive, dt as waveformIsSettled };
|