@burdenoff/fe-libs 2026.912.2 → 2026.912.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/shared/assistant/preview/entity/AssistantEntityPreview.d.ts +8 -0
- package/dist/shared/assistant/preview/entity/AssistantEntityPreview.d.ts.map +1 -1
- package/dist/shared/assistant/preview/entity/AssistantEntityPreview.js +108 -69
- package/dist/shared/assistant/preview/entity/AssistantStepRail.d.ts.map +1 -1
- package/dist/shared/assistant/preview/entity/entityPreviewState.d.ts +42 -0
- package/dist/shared/assistant/preview/entity/entityPreviewState.d.ts.map +1 -1
- package/dist/shared/assistant/preview/entity/entityPreviewState.js +7 -1
- package/dist/shared-assistant.js +41 -41
- package/package.json +1 -1
|
@@ -69,6 +69,14 @@ export interface AssistantEntityPreviewProps {
|
|
|
69
69
|
* is the whole message.
|
|
70
70
|
*/
|
|
71
71
|
readonly stepStatus?: AssistantStepRailProps['statusLabels'];
|
|
72
|
+
/**
|
|
73
|
+
* Names the failure above the message — "Build stopped", "Import failed".
|
|
74
|
+
*
|
|
75
|
+
* ★ Optional. A raw transport message ("ECONNRESET") tells a viewer that
|
|
76
|
+
* something broke but not WHAT, and only the product knows what the run was
|
|
77
|
+
* called. Omit it and the message stands alone, as before.
|
|
78
|
+
*/
|
|
79
|
+
readonly errorHeading?: string;
|
|
72
80
|
};
|
|
73
81
|
/** Body shown when there are no tabs. */
|
|
74
82
|
readonly children?: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantEntityPreview.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/preview/entity/AssistantEntityPreview.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAQL,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,
|
|
1
|
+
{"version":3,"file":"AssistantEntityPreview.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/preview/entity/AssistantEntityPreview.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAQL,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAQL,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC;IACzC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B;;;;;;;WAOG;QACH,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAAC;QAC7D;;;;;;WAMG;QACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAgaD,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAqKlE,CAAC"}
|
|
@@ -1,29 +1,33 @@
|
|
|
1
|
-
import { IDLE_ACTIVE_TAB as e, nextActiveTab as t, pinActiveTab as n,
|
|
2
|
-
import { AssistantStepRail as
|
|
3
|
-
import { useCallback as
|
|
4
|
-
import { Fragment as
|
|
1
|
+
import { IDLE_ACTIVE_TAB as e, nextActiveTab as t, pinActiveTab as n, shouldPinOnMove as r, shouldPinOnSelect as i, tabForArrowKey as a } from "./entityPreviewState.js";
|
|
2
|
+
import { AssistantStepRail as o } from "./AssistantStepRail.js";
|
|
3
|
+
import { useCallback as s, useEffect as c, useId as l, useMemo as u, useRef as d, useState as f } from "react";
|
|
4
|
+
import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
5
5
|
//#region src/shared/assistant/preview/entity/AssistantEntityPreview.tsx
|
|
6
|
-
var
|
|
6
|
+
var g = {
|
|
7
7
|
borderColor: "var(--color-border-subtle)",
|
|
8
8
|
backgroundColor: "var(--color-bg-sunken)",
|
|
9
9
|
boxShadow: "var(--shadow-elevation-1)",
|
|
10
10
|
borderRadius: "var(--radius-card)"
|
|
11
|
-
},
|
|
11
|
+
}, _ = { borderColor: "var(--color-border-subtle)" }, v = {
|
|
12
|
+
borderColor: "var(--color-status-error-border)",
|
|
13
|
+
backgroundColor: "var(--color-status-error-bgSubtle)",
|
|
14
|
+
color: "var(--color-status-error-text)"
|
|
15
|
+
}, y = (e) => e.replace(/[^A-Za-z0-9_-]/g, (e) => `-${e.charCodeAt(0).toString(36)}-`), b = [], x = [], S = ({ title: e, meta: t, onClose: n, headerActions: r, closeLabel: i }) => /* @__PURE__ */ h("header", {
|
|
12
16
|
className: "flex items-center justify-between gap-2 border-b px-3 py-2",
|
|
13
|
-
style:
|
|
14
|
-
children: [/* @__PURE__ */
|
|
17
|
+
style: _,
|
|
18
|
+
children: [/* @__PURE__ */ h("div", {
|
|
15
19
|
className: "flex min-w-0 items-center gap-2",
|
|
16
|
-
children: [/* @__PURE__ */
|
|
20
|
+
children: [/* @__PURE__ */ m("span", {
|
|
17
21
|
className: "truncate text-sm font-medium",
|
|
18
22
|
style: { color: "var(--color-text-primary)" },
|
|
19
23
|
children: e
|
|
20
|
-
}), t == null ? null : /* @__PURE__ */
|
|
24
|
+
}), t == null ? null : /* @__PURE__ */ m("span", {
|
|
21
25
|
className: "shrink-0 text-xs",
|
|
22
26
|
style: { color: "var(--color-text-muted)" },
|
|
23
27
|
"data-testid": "assistant-entity-preview-meta",
|
|
24
28
|
children: t
|
|
25
29
|
})]
|
|
26
|
-
}), r ?? (n ? /* @__PURE__ */
|
|
30
|
+
}), r ?? (n ? /* @__PURE__ */ m("button", {
|
|
27
31
|
type: "button",
|
|
28
32
|
onClick: n,
|
|
29
33
|
className: "shrink-0 rounded-md px-2 py-1 text-xs focus:outline-none focus-visible:ring-2",
|
|
@@ -32,76 +36,110 @@ var m = {
|
|
|
32
36
|
"data-testid": "assistant-entity-preview-close",
|
|
33
37
|
children: i ?? "Close preview"
|
|
34
38
|
}) : null)]
|
|
35
|
-
}),
|
|
39
|
+
}), C = ({ error: e, errorHeading: t, caption: n }) => /* @__PURE__ */ h(p, { children: [e ? /* @__PURE__ */ m("div", {
|
|
36
40
|
role: "alert",
|
|
37
|
-
className: "border-b px-3 py-2
|
|
38
|
-
style:
|
|
39
|
-
...h,
|
|
40
|
-
color: "var(--color-status-error-text)"
|
|
41
|
-
},
|
|
41
|
+
className: "border-b px-3 py-2",
|
|
42
|
+
style: v,
|
|
42
43
|
"data-testid": "assistant-entity-preview-error",
|
|
43
|
-
children:
|
|
44
|
-
|
|
44
|
+
children: /* @__PURE__ */ h("p", {
|
|
45
|
+
className: "flex items-start gap-1.5 text-xs",
|
|
46
|
+
style: { margin: 0 },
|
|
47
|
+
children: [/* @__PURE__ */ h("svg", {
|
|
48
|
+
"aria-hidden": "true",
|
|
49
|
+
focusable: "false",
|
|
50
|
+
width: "14",
|
|
51
|
+
height: "14",
|
|
52
|
+
viewBox: "0 0 24 24",
|
|
53
|
+
fill: "none",
|
|
54
|
+
stroke: "currentColor",
|
|
55
|
+
strokeWidth: "2",
|
|
56
|
+
strokeLinecap: "round",
|
|
57
|
+
strokeLinejoin: "round",
|
|
58
|
+
className: "mt-px shrink-0",
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ m("path", { d: "M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z" }),
|
|
61
|
+
/* @__PURE__ */ m("line", {
|
|
62
|
+
x1: "12",
|
|
63
|
+
y1: "9",
|
|
64
|
+
x2: "12",
|
|
65
|
+
y2: "13"
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ m("line", {
|
|
68
|
+
x1: "12",
|
|
69
|
+
y1: "17",
|
|
70
|
+
x2: "12.01",
|
|
71
|
+
y2: "17"
|
|
72
|
+
})
|
|
73
|
+
]
|
|
74
|
+
}), /* @__PURE__ */ h("span", {
|
|
75
|
+
className: "min-w-0 break-words",
|
|
76
|
+
children: [t ? /* @__PURE__ */ h("span", {
|
|
77
|
+
className: "font-semibold uppercase tracking-wide",
|
|
78
|
+
children: [t, ": "]
|
|
79
|
+
}) : null, e]
|
|
80
|
+
})]
|
|
81
|
+
})
|
|
82
|
+
}) : null, /* @__PURE__ */ m("p", {
|
|
45
83
|
"aria-live": "polite",
|
|
46
|
-
className: e == null &&
|
|
47
|
-
style:
|
|
48
|
-
...
|
|
84
|
+
className: e == null && n ? "border-b px-3 py-2 text-xs" : void 0,
|
|
85
|
+
style: n && !e ? {
|
|
86
|
+
..._,
|
|
49
87
|
color: "var(--color-text-secondary)",
|
|
50
88
|
margin: 0
|
|
51
89
|
} : { margin: 0 },
|
|
52
90
|
"data-testid": "assistant-entity-preview-caption",
|
|
53
|
-
children: e ? "" :
|
|
54
|
-
})] }),
|
|
55
|
-
let
|
|
56
|
-
return
|
|
57
|
-
let e =
|
|
91
|
+
children: e ? "" : n ?? ""
|
|
92
|
+
})] }), w = ({ tabs: e, tabIds: t, title: n, activeId: o, pinnedId: s, onPick: l, tabDomId: u, panelDomId: f }) => {
|
|
93
|
+
let p = d(null), g = d(null);
|
|
94
|
+
return c(() => {
|
|
95
|
+
let e = g.current;
|
|
58
96
|
if (e !== null) {
|
|
59
97
|
if (t.includes(e)) {
|
|
60
|
-
document.activeElement === document.body && (
|
|
98
|
+
document.activeElement === document.body && (g.current = null);
|
|
61
99
|
return;
|
|
62
100
|
}
|
|
63
|
-
|
|
101
|
+
g.current = null, document.activeElement === document.body && o !== null && (g.current = o, document.getElementById(u(o))?.focus());
|
|
64
102
|
}
|
|
65
103
|
}, [
|
|
66
104
|
t,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
]), e.length === 0 ? null : /* @__PURE__ */
|
|
70
|
-
ref:
|
|
105
|
+
o,
|
|
106
|
+
u
|
|
107
|
+
]), e.length === 0 ? null : /* @__PURE__ */ m("div", {
|
|
108
|
+
ref: p,
|
|
71
109
|
role: "tablist",
|
|
72
110
|
"aria-label": n,
|
|
73
111
|
className: "flex min-w-0 items-center gap-1 overflow-x-auto border-b px-2 py-1",
|
|
74
|
-
style:
|
|
112
|
+
style: _,
|
|
75
113
|
children: e.map((e) => {
|
|
76
|
-
let n = e.id ===
|
|
77
|
-
return /* @__PURE__ */
|
|
114
|
+
let n = e.id === o;
|
|
115
|
+
return /* @__PURE__ */ h("button", {
|
|
78
116
|
type: "button",
|
|
79
117
|
role: "tab",
|
|
80
|
-
id:
|
|
118
|
+
id: u(e.id),
|
|
81
119
|
"aria-selected": n,
|
|
82
|
-
"aria-controls": n ?
|
|
120
|
+
"aria-controls": n ? f(e.id) : void 0,
|
|
83
121
|
tabIndex: n ? 0 : -1,
|
|
84
122
|
onClick: () => {
|
|
85
|
-
e.id
|
|
123
|
+
i(e.id, s) && l(e.id);
|
|
86
124
|
},
|
|
87
125
|
onFocus: () => {
|
|
88
|
-
|
|
126
|
+
g.current = e.id;
|
|
89
127
|
},
|
|
90
128
|
onBlur: (t) => {
|
|
91
129
|
let n = t.relatedTarget;
|
|
92
130
|
if (n !== null) {
|
|
93
|
-
if (
|
|
94
|
-
|
|
131
|
+
if (p.current?.contains(n) === !0) return;
|
|
132
|
+
g.current === e.id && (g.current = null);
|
|
95
133
|
return;
|
|
96
134
|
}
|
|
97
135
|
let r = e.id;
|
|
98
136
|
queueMicrotask(() => {
|
|
99
|
-
|
|
137
|
+
g.current === r && document.getElementById(u(r)) !== null && (g.current = null);
|
|
100
138
|
});
|
|
101
139
|
},
|
|
102
140
|
onKeyDown: (n) => {
|
|
103
|
-
let
|
|
104
|
-
|
|
141
|
+
let i = getComputedStyle(n.currentTarget).direction === "rtl", c = a(n.key, t, e.id, i);
|
|
142
|
+
c !== null && (n.preventDefault(), r(c, s, o) && l(c), document.getElementById(u(c))?.focus());
|
|
105
143
|
},
|
|
106
144
|
"data-testid": `assistant-entity-tab-${e.id}`,
|
|
107
145
|
"data-selected": n ? "true" : "false",
|
|
@@ -110,72 +148,73 @@ var m = {
|
|
|
110
148
|
backgroundColor: n ? "var(--color-bg-surface)" : "transparent",
|
|
111
149
|
color: n ? "var(--color-text-primary)" : "var(--color-text-muted)"
|
|
112
150
|
},
|
|
113
|
-
children: [e.label, e.badge === void 0 ? null : /* @__PURE__ */
|
|
151
|
+
children: [e.label, e.badge === void 0 ? null : /* @__PURE__ */ m("span", {
|
|
114
152
|
className: "ml-1.5 text-[10px]",
|
|
115
153
|
children: e.badge
|
|
116
154
|
})]
|
|
117
155
|
}, e.id);
|
|
118
156
|
})
|
|
119
157
|
});
|
|
120
|
-
},
|
|
121
|
-
let A =
|
|
122
|
-
runKey:
|
|
158
|
+
}, T = ({ title: r, steps: i = b, tabs: a = x, runKey: c = null, follow: d, caption: p, error: v, meta: T, onClose: E, headerActions: D, labels: O, children: k }) => {
|
|
159
|
+
let A = l(), j = s((e) => `assistant-entity-tab-${A}-${y(e)}`, [A]), M = s((e) => `assistant-entity-panel-${A}-${y(e)}`, [A]), [N, P] = f(e), F = u(() => a.map((e) => e.id), [a]), I = t(N, {
|
|
160
|
+
runKey: c,
|
|
123
161
|
tabIds: F,
|
|
124
|
-
steps:
|
|
125
|
-
follow:
|
|
162
|
+
steps: i,
|
|
163
|
+
follow: d
|
|
126
164
|
});
|
|
127
165
|
(I.pinnedId !== N.pinnedId || I.runKey !== N.runKey || I.activeId !== N.activeId) && P({
|
|
128
166
|
activeId: I.activeId,
|
|
129
167
|
pinnedId: I.pinnedId,
|
|
130
168
|
runKey: I.runKey
|
|
131
169
|
});
|
|
132
|
-
let L =
|
|
133
|
-
return /* @__PURE__ */
|
|
170
|
+
let L = a.find((e) => e.id === I.activeId) ?? null;
|
|
171
|
+
return /* @__PURE__ */ h("section", {
|
|
134
172
|
className: "flex min-w-0 flex-col overflow-hidden border",
|
|
135
|
-
style:
|
|
173
|
+
style: g,
|
|
136
174
|
"data-testid": "assistant-entity-preview",
|
|
137
175
|
"aria-label": r,
|
|
138
176
|
children: [
|
|
139
|
-
/* @__PURE__ */
|
|
177
|
+
/* @__PURE__ */ m(S, {
|
|
140
178
|
title: r,
|
|
141
179
|
meta: T,
|
|
142
180
|
onClose: E,
|
|
143
181
|
headerActions: D,
|
|
144
182
|
closeLabel: O?.close
|
|
145
183
|
}),
|
|
146
|
-
|
|
184
|
+
i.length > 0 ? /* @__PURE__ */ h("div", {
|
|
147
185
|
className: "border-b px-3 py-2",
|
|
148
|
-
style:
|
|
149
|
-
children: [O?.stepsHeading ? /* @__PURE__ */
|
|
186
|
+
style: _,
|
|
187
|
+
children: [O?.stepsHeading ? /* @__PURE__ */ m("h3", {
|
|
150
188
|
className: "mb-1 text-[11px] font-semibold uppercase tracking-wide",
|
|
151
189
|
style: { color: "var(--color-text-muted)" },
|
|
152
190
|
children: O.stepsHeading
|
|
153
|
-
}) : null, /* @__PURE__ */
|
|
154
|
-
steps:
|
|
191
|
+
}) : null, /* @__PURE__ */ m(o, {
|
|
192
|
+
steps: i,
|
|
155
193
|
label: O?.steps,
|
|
156
194
|
skippedLabel: O?.skipped,
|
|
157
195
|
statusLabels: O?.stepStatus
|
|
158
196
|
})]
|
|
159
197
|
}) : null,
|
|
160
|
-
/* @__PURE__ */
|
|
161
|
-
error:
|
|
162
|
-
|
|
198
|
+
/* @__PURE__ */ m(C, {
|
|
199
|
+
error: v,
|
|
200
|
+
errorHeading: O?.errorHeading,
|
|
201
|
+
caption: p
|
|
163
202
|
}),
|
|
164
|
-
/* @__PURE__ */
|
|
165
|
-
tabs:
|
|
203
|
+
/* @__PURE__ */ m(w, {
|
|
204
|
+
tabs: a,
|
|
166
205
|
tabIds: F,
|
|
167
206
|
title: r,
|
|
168
207
|
activeId: I.activeId,
|
|
169
208
|
pinnedId: I.pinnedId,
|
|
170
209
|
onPick: (e) => {
|
|
171
|
-
P(n(e,
|
|
210
|
+
P(n(e, c));
|
|
172
211
|
},
|
|
173
212
|
tabDomId: j,
|
|
174
213
|
panelDomId: M
|
|
175
214
|
}),
|
|
176
|
-
/* @__PURE__ */
|
|
215
|
+
/* @__PURE__ */ m("div", {
|
|
177
216
|
className: "min-w-0 flex-1 overflow-auto",
|
|
178
|
-
children: L ? /* @__PURE__ */
|
|
217
|
+
children: L ? /* @__PURE__ */ m("div", {
|
|
179
218
|
role: "tabpanel",
|
|
180
219
|
tabIndex: 0,
|
|
181
220
|
id: M(L.id),
|
|
@@ -188,4 +227,4 @@ var m = {
|
|
|
188
227
|
});
|
|
189
228
|
};
|
|
190
229
|
//#endregion
|
|
191
|
-
export {
|
|
230
|
+
export { T as AssistantEntityPreview };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantStepRail.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/preview/entity/AssistantStepRail.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAiB,EAAE,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AssistantStepRail.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/preview/entity/AssistantStepRail.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAiB,EAAE,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAyI7F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAChD,iFAAiF;IACjF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7E;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAsGxD,CAAC"}
|
|
@@ -131,4 +131,46 @@ export declare function tabForArrowKey(key: string, tabIds: readonly string[], a
|
|
|
131
131
|
* arrow press goes the opposite way from the one they pressed.
|
|
132
132
|
*/
|
|
133
133
|
rtl?: boolean): string | null;
|
|
134
|
+
/**
|
|
135
|
+
* Whether SELECTING `tabId` — a click, or Enter/Space on a focused tab — should
|
|
136
|
+
* be recorded as the viewer's choice.
|
|
137
|
+
*
|
|
138
|
+
* ★★★ COMPARED AGAINST THE PIN, NOT AGAINST WHAT IS ON SCREEN.
|
|
139
|
+
*
|
|
140
|
+
* Selecting the tab you are already reading is the commonest way to say "stay
|
|
141
|
+
* here", and it used to do nothing. The guard compared against
|
|
142
|
+
* `pinnedId ?? activeId`, so with nothing pinned a click on the displayed tab
|
|
143
|
+
* was swallowed as "no preference different from what the surface chose". In a
|
|
144
|
+
* real run that is exactly backwards: the surface puts you on the entity that
|
|
145
|
+
* just landed, you start reading it, the next one lands seconds later and takes
|
|
146
|
+
* you away — and the one tab you want to click is the only one that is inert.
|
|
147
|
+
* Reaching a pin meant clicking some other tab and clicking back.
|
|
148
|
+
*
|
|
149
|
+
* Comparing against the pin alone keeps the case the old guard was written for.
|
|
150
|
+
* A pinned tab that disappears KEEPS its pin while a fallback is shown, so
|
|
151
|
+
* clicking that fallback still replaces a pin the viewer can no longer see.
|
|
152
|
+
*
|
|
153
|
+
* The only selection worth ignoring is one that is already the pin.
|
|
154
|
+
*/
|
|
155
|
+
export declare function shouldPinOnSelect(tabId: string, pinnedId: string | null): boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Whether MOVING to `nextId` with an arrow/Home/End key should create a pin.
|
|
158
|
+
*
|
|
159
|
+
* ★★★ A DIFFERENT QUESTION FROM `shouldPinOnSelect`, and the difference is the
|
|
160
|
+
* point. A click says "I choose this one" even when it is already displayed. A
|
|
161
|
+
* navigation key says "go there" — and when there is nowhere to go it has said
|
|
162
|
+
* nothing at all.
|
|
163
|
+
*
|
|
164
|
+
* `tabForArrowKey` wraps, so in a ONE-TAB list every arrow resolves back to the
|
|
165
|
+
* tab you are on, and Home/End do the same at their edges. A one-tab list is
|
|
166
|
+
* not exotic here: it is what a run looks like before the second entity lands.
|
|
167
|
+
* Pinning on that keypress would opt the viewer out of follow-the-run for the
|
|
168
|
+
* rest of the build — silently, for a key that moved nothing.
|
|
169
|
+
*
|
|
170
|
+
* So this compares against what is DISPLAYED, falling back through the pin: a
|
|
171
|
+
* key that lands on the tab already on screen pins nothing, while one that
|
|
172
|
+
* lands anywhere else — including on the fallback shown in place of a pin whose
|
|
173
|
+
* tab has disappeared — still records the choice.
|
|
174
|
+
*/
|
|
175
|
+
export declare function shouldPinOnMove(nextId: string, pinnedId: string | null, activeId: string | null): boolean;
|
|
134
176
|
//# sourceMappingURL=entityPreviewState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityPreviewState.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/preview/entity/entityPreviewState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,0BAA0B,
|
|
1
|
+
{"version":3,"file":"entityPreviewState.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/preview/entity/entityPreviewState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/F;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;CAC7C;AAYD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,GAAG,oBAAoB,EAAE,CAMjG;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;uEACmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,eAAe,EAAE,cAI7B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAChD,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC;CAC1C;AA6BD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,cAAc,CA+D1F;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAEpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,QAAQ,EAAE,MAAM,GAAG,IAAI;AACvB;;;;;GAKG;AACH,GAAG,UAAQ,GACV,MAAM,GAAG,IAAI,CAef;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAEjF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAET"}
|
|
@@ -59,5 +59,11 @@ function s(e, t, n, r = !1) {
|
|
|
59
59
|
let s = n === null ? -1 : t.indexOf(n);
|
|
60
60
|
return s < 0 ? i : t[(s + o + t.length) % t.length] ?? null;
|
|
61
61
|
}
|
|
62
|
+
function c(e, t) {
|
|
63
|
+
return e !== t;
|
|
64
|
+
}
|
|
65
|
+
function l(e, t, n) {
|
|
66
|
+
return e !== (t ?? n);
|
|
67
|
+
}
|
|
62
68
|
//#endregion
|
|
63
|
-
export { r as IDLE_ACTIVE_TAB, a as nextActiveTab, o as pinActiveTab, n as stepsFromToolActivity, s as tabForArrowKey };
|
|
69
|
+
export { r as IDLE_ACTIVE_TAB, a as nextActiveTab, o as pinActiveTab, l as shouldPinOnMove, c as shouldPinOnSelect, n as stepsFromToolActivity, s as tabForArrowKey };
|
package/dist/shared-assistant.js
CHANGED
|
@@ -65,44 +65,44 @@ import { AssistantPreviewProvider as gi, useAssistantPreview as _i } from "./sha
|
|
|
65
65
|
import { IDLE_PREVIEW_STATE as vi, isRunningStatus as yi, nextPreviewEvents as bi } from "./shared/assistant/preview/previewTransitions.js";
|
|
66
66
|
import { IDLE_PREVIEW as xi, NO_OWNER as Si, applyPreviewEvent as Ci, createAssistantPreviewSurface as wi, currentPreviewOwner as Ti, runBelongsTo as Ei, sameOwner as Di } from "./shared/assistant/preview/surfaceState.js";
|
|
67
67
|
import { createRunIdentityCache as Oi, runIdentities as ki } from "./shared/assistant/preview/runIdentity.js";
|
|
68
|
-
import { IDLE_ACTIVE_TAB as Ai, nextActiveTab as ji, pinActiveTab as Mi,
|
|
69
|
-
import { AssistantStepRail as
|
|
70
|
-
import { AssistantEntityPreview as
|
|
71
|
-
import { useOverlayFocus as
|
|
72
|
-
import { useAssistantPreviewBridge as
|
|
73
|
-
import { AssistantPreviewOverlay as
|
|
74
|
-
import { AssistantLanguageSelector as
|
|
75
|
-
import { ASSISTANT_MODE_META as
|
|
76
|
-
import { AssistantVoiceButton as
|
|
77
|
-
import { AUTO_VOICE as
|
|
78
|
-
import { AssistantVoiceOrb as
|
|
79
|
-
import { AssistantVoiceSessionButton as
|
|
80
|
-
import { CAPTION_SCROLL_ATTR as
|
|
81
|
-
import { VoiceConversationView as
|
|
82
|
-
import { VoiceWaveform as
|
|
83
|
-
import { VoiceMiniController as
|
|
84
|
-
import { VoiceStage as
|
|
85
|
-
import { VoiceTranscriptDrawer as
|
|
86
|
-
import { downloadFile as
|
|
87
|
-
import { AssistantMoreMenu as
|
|
88
|
-
import { AssistantHeader as
|
|
89
|
-
import { AssistantConversationList as
|
|
90
|
-
import { AssistantEmptyState as
|
|
91
|
-
import { AssistantMessageItem as
|
|
92
|
-
import { AssistantMessageList as
|
|
93
|
-
import { AssistantVoiceSession as
|
|
94
|
-
import { useAssistantApiAccess as
|
|
95
|
-
import { useConversationTurns as
|
|
96
|
-
import { isMultimodalBodyRejection as
|
|
97
|
-
import { aiCreditsUpdatedEventName as
|
|
98
|
-
import { useWorkspaceWriteAccess as
|
|
99
|
-
import { extractDocumentText as
|
|
100
|
-
import { useAssistantAttachments as
|
|
101
|
-
import { AssistantComposer as
|
|
102
|
-
import { isProdRuntime as
|
|
103
|
-
import { useAssistantHeartbeat as
|
|
104
|
-
import { useAssistantKeyboardShortcuts as
|
|
105
|
-
import { AssistantApiCallsConsentDialog as
|
|
106
|
-
import { AssistantChatArea as
|
|
107
|
-
import { AIAssistantPanel as
|
|
108
|
-
export {
|
|
68
|
+
import { IDLE_ACTIVE_TAB as Ai, nextActiveTab as ji, pinActiveTab as Mi, shouldPinOnMove as Ni, shouldPinOnSelect as Pi, stepsFromToolActivity as Fi, tabForArrowKey as Ii } from "./shared/assistant/preview/entity/entityPreviewState.js";
|
|
69
|
+
import { AssistantStepRail as Li } from "./shared/assistant/preview/entity/AssistantStepRail.js";
|
|
70
|
+
import { AssistantEntityPreview as Ri } from "./shared/assistant/preview/entity/AssistantEntityPreview.js";
|
|
71
|
+
import { useOverlayFocus as zi } from "./shared/assistant/ui/useOverlayFocus.js";
|
|
72
|
+
import { useAssistantPreviewBridge as Bi } from "./shared/assistant/preview/useAssistantPreviewBridge.js";
|
|
73
|
+
import { AssistantPreviewOverlay as Vi } from "./shared/assistant/preview/AssistantPreviewOverlay.js";
|
|
74
|
+
import { AssistantLanguageSelector as Hi, FOLLOW_APP_LOCALE as Ui } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
|
|
75
|
+
import { ASSISTANT_MODE_META as Wi, AssistantModeSelector as Gi, nextModeIndex as Ki } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
|
|
76
|
+
import { AssistantVoiceButton as qi } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
|
|
77
|
+
import { AUTO_VOICE as Ji, AssistantVoiceSelector as Yi } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
|
|
78
|
+
import { AssistantVoiceOrb as Xi } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
|
|
79
|
+
import { AssistantVoiceSessionButton as Zi } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
|
|
80
|
+
import { CAPTION_SCROLL_ATTR as Qi, VoiceCaption as $i } from "./shared/assistant/ui/voice/VoiceCaption.js";
|
|
81
|
+
import { VoiceConversationView as ea } from "./shared/assistant/ui/voice/VoiceConversationView.js";
|
|
82
|
+
import { VoiceWaveform as ta } from "./shared/assistant/ui/voice/VoiceWaveform.js";
|
|
83
|
+
import { VoiceMiniController as na } from "./shared/assistant/ui/voice/VoiceMiniController.js";
|
|
84
|
+
import { VoiceStage as ra } from "./shared/assistant/ui/voice/VoiceStage.js";
|
|
85
|
+
import { VoiceTranscriptDrawer as ia } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
|
|
86
|
+
import { downloadFile as aa, exportConversation as oa } from "./shared/assistant/exportConversation.js";
|
|
87
|
+
import { AssistantMoreMenu as sa } from "./shared/assistant/ui/AssistantMoreMenu.js";
|
|
88
|
+
import { AssistantHeader as ca } from "./shared/assistant/ui/AssistantHeader.js";
|
|
89
|
+
import { AssistantConversationList as la } from "./shared/assistant/ui/AssistantConversationList.js";
|
|
90
|
+
import { AssistantEmptyState as ua } from "./shared/assistant/ui/AssistantEmptyState.js";
|
|
91
|
+
import { AssistantMessageItem as da } from "./shared/assistant/ui/AssistantMessageItem.js";
|
|
92
|
+
import { AssistantMessageList as fa } from "./shared/assistant/ui/AssistantMessageList.js";
|
|
93
|
+
import { AssistantVoiceSession as pa } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
|
|
94
|
+
import { useAssistantApiAccess as ma } from "./shared/assistant/useAssistantApiAccess.js";
|
|
95
|
+
import { useConversationTurns as ha } from "./shared/assistant/useConversationTurns.js";
|
|
96
|
+
import { isMultimodalBodyRejection as ga, isRecoverableAssistantError as _a } from "./shared/assistant/transportErrors.js";
|
|
97
|
+
import { aiCreditsUpdatedEventName as va, dispatchAssistantQuotaExhausted as ya, notifyAiCreditsUpdated as ba } from "./shared/assistant/aiCredits.js";
|
|
98
|
+
import { useWorkspaceWriteAccess as xa } from "./shared/assistant/useWorkspaceWriteAccess.js";
|
|
99
|
+
import { extractDocumentText as Sa } from "./shared/assistant/documentExtract.js";
|
|
100
|
+
import { useAssistantAttachments as Ca } from "./shared/assistant/useAssistantAttachments.js";
|
|
101
|
+
import { AssistantComposer as wa } from "./shared/assistant/ui/composer/AssistantComposer.js";
|
|
102
|
+
import { isProdRuntime as Ta } from "./shared/assistant/env.js";
|
|
103
|
+
import { useAssistantHeartbeat as Ea } from "./shared/assistant/useAssistantHeartbeat.js";
|
|
104
|
+
import { useAssistantKeyboardShortcuts as Da } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
|
|
105
|
+
import { AssistantApiCallsConsentDialog as Oa } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
|
|
106
|
+
import { AssistantChatArea as ka } from "./shared/assistant/ui/AssistantChatArea.js";
|
|
107
|
+
import { AIAssistantPanel as Aa } from "./shared/assistant/ui/AIAssistantPanel.js";
|
|
108
|
+
export { Aa as AIAssistantPanel, L as ASSISTANT_API_AUTH_STRATEGY, sn as ASSISTANT_LANGUAGES, Wi as ASSISTANT_MODE_META, ii as ASSISTANT_OVERLAY_ATTR, ai as ASSISTANT_PANEL_ATTR, Kn as ATTACHMENT_ACCEPT, Hr as ATTACHMENT_SOURCES, Ji as AUTO_VOICE, Oa as AssistantApiCallsConsentDialog, mi as AssistantAttachmentButton, hi as AssistantAttachmentChips, Jr as AssistantAutoSpeakToggle, ka as AssistantChatArea, wa as AssistantComposer, ri as AssistantConnectSourceItem, ti as AssistantConnectSourceProvider, la as AssistantConversationList, ua as AssistantEmptyState, Ri as AssistantEntityPreview, ca as AssistantHeader, s as AssistantI18nProvider, Zr as AssistantLanguageMenu, Hi as AssistantLanguageSelector, f as AssistantMarkdownImage, h as AssistantMarkdownRenderer, Yr as AssistantMessageAttachments, da as AssistantMessageItem, fa as AssistantMessageList, Gi as AssistantModeSelector, sa as AssistantMoreMenu, g as AssistantNavigateProvider, Xr as AssistantPendingWriteCard, Vi as AssistantPreviewOverlay, gi as AssistantPreviewProvider, t as AssistantProductProvider, Qr as AssistantReplyLanguageSelector, _e as AssistantRuntimeManager, $r as AssistantSpeakButton, Ir as AssistantSpeechProvider, ei as AssistantSpokenTurnsNotice, Li as AssistantStepRail, Pr as AssistantToolActivity, qi as AssistantVoiceButton, Xi as AssistantVoiceOrb, Yi as AssistantVoiceSelector, pa as AssistantVoiceSession, Zi as AssistantVoiceSessionButton, qn as AttachmentRejectedError, En as BOILERPLATE_PAGE_SHARE, Qi 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, Ui 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, Ai as IDLE_ACTIVE_TAB, yn as IDLE_PLAYBACK, xi as IDLE_PREVIEW, vi 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, Si as NO_OWNER, oi 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, $i as VoiceCaption, ea as VoiceConversationView, na as VoiceMiniController, ra as VoiceStage, ia as VoiceTranscriptDrawer, ta as VoiceWaveform, I as WAIT_FOR_SANDBOX_RUNNING, q as abortAssistantTurn, si as activePanelOverlay, va as aiCreditsUpdatedEventName, Ci as applyPreviewEvent, J as approvePendingWrite, ci 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, wi as createAssistantPreviewSurface, Q as createAssistantSandbox, $ as createAssistantSession, $e as createHostedTtsEngine, Kr as createReadinessTracker, et as createRoutingSpeechEngine, Oi as createRunIdentityCache, Oe as createSandboxAssistantTransport, nt as createSpeechEngines, Ti as currentPreviewOwner, Xe as decodeAudioResponse, Nn as decodeXmlEntities, C as describeQuotaError, fr as detectDocumentFormat, _n as detectScriptLocale, Wr as deviceHasCamera, ya as dispatchAssistantQuotaExhausted, Pn as docxXmlToText, ee as downloadAssistantArtifact, aa as downloadFile, li as escapeDismisses, pr as estimateTurnBodyBytes, D as executeSandboxGraphQL, oa as exportConversation, te as extendAssistantSandboxTTL, Sa as extractDocumentText, ln as findAssistantLanguage, ne as findExistingSandbox, pn as findPendingWrite, Fn as fitPdfPages, ui 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, ga as isMultimodalBodyRejection, Ta as isProdRuntime, w as isQuotaExhaustedError, Ce as isReapedSandboxConnectionError, qr as isRecentlyVerified, we as isRecoverable, _a as isRecoverableAssistantError, m as isRemoteImageSrc, yi as isRunningStatus, 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, ji as nextActiveTab, Ki as nextModeIndex, di as nextPanelOverlays, bi as nextPreviewEvents, Ot as normalizeLangTag, ba as notifyAiCreditsUpdated, bt as orbMode, zn as pageMarker, fi as panelOwnsEscape, mn as parseConfirmationRefusal, yr as parseDataUrl, Bn as parseSharedStrings, Fr as parseToolActivity, Vn as parseWorkbookSheets, Hn as pdfTextItemsToPage, Mi as pinActiveTab, 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, Ei as runBelongsTo, ki as runIdentities, Di as sameOwner, De as sanitize, ue as selectExistingAssistantSandbox, de as selectSupersededAssistantSandboxes, At as selectVoiceForLocale, fe as sendAssistantPromptAsync, pe as sendHeartbeat, Un as sheetXmlToRows, Ze as shouldDisableEngine, Ni as shouldPinOnMove, Pi as shouldPinOnSelect, 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, Fi as stepsFromToolActivity, me as stopReapedAssistantSandbox, Wn as summarisePageText, Ii as tabForArrowKey, Nr as thinkingPhrase, on as toCaptionText, br as toMessageAttachment, Jt as toSpeakableText, xr as truncateForInline, Gn as truncatePagesForInline, ma as useAssistantApiAccess, Ca as useAssistantAttachments, ni as useAssistantConnectSource, Ea as useAssistantHeartbeat, l as useAssistantI18nNamespace, Da as useAssistantKeyboardShortcuts, x as useAssistantNavigate, r as useAssistantPageLabel, _i as useAssistantPreview, Bi as useAssistantPreviewBridge, i as useAssistantProduct, a as useAssistantProductOrNull, Lr as useAssistantSpeech, o as useAssistantStorageFolders, Cr as useAssistantStore, u as useAssistantTr, ha as useConversationTurns, pi as useDropdownEscape, zi as useOverlayFocus, ke as useSandboxAssistantTransport, e as useVoiceInput, Rr as useVoiceSession, xa 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 };
|