@burdenoff/fe-libs 2026.1006.2 → 2026.1007.1
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/ContextSwitcher.d.ts.map +1 -1
- package/dist/chrome/ContextSwitcher.js +93 -89
- package/dist/chrome/GlobalSearch.d.ts.map +1 -1
- package/dist/chrome/GlobalSearch.js +94 -96
- package/dist/chrome/NotificationCenter.d.ts.map +1 -1
- package/dist/chrome/NotificationCenter.js +62 -62
- package/dist/chrome/ShortcutHelpDialog.d.ts.map +1 -1
- package/dist/chrome/ShortcutHelpDialog.js +103 -97
- package/dist/chrome/notificationCenter/NotificationPanel.d.ts.map +1 -1
- package/dist/chrome/notificationCenter/NotificationPanel.js +28 -17
- package/dist/chrome/notificationCenter/usePanelChrome.d.ts +0 -1
- package/dist/chrome/notificationCenter/usePanelChrome.d.ts.map +1 -1
- package/dist/chrome/notificationCenter/usePanelChrome.js +1 -10
- package/dist/chrome/shellOverlayLayer.d.ts +42 -0
- package/dist/chrome/shellOverlayLayer.d.ts.map +1 -0
- package/dist/chrome/shellOverlayLayer.js +4 -0
- package/dist/shared/assistant/appControls/languageReply.d.ts +28 -0
- package/dist/shared/assistant/appControls/languageReply.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/languageReply.js +17 -0
- package/dist/shared/assistant/appControls/text.d.ts +7 -1
- package/dist/shared/assistant/appControls/text.d.ts.map +1 -1
- package/dist/shared/assistant/appControls/text.js +4 -3
- package/dist/shared/assistant/conversation.d.ts +2 -0
- package/dist/shared/assistant/conversation.d.ts.map +1 -1
- package/dist/shared/assistant/displayContent.d.ts.map +1 -1
- package/dist/shared/assistant/displayContent.js +14 -11
- package/dist/shared/assistant/history/historyMapping.d.ts.map +1 -1
- package/dist/shared/assistant/history/historyMapping.js +10 -5
- package/dist/shared/assistant/index.d.ts +1 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AIAssistantPanel.js +8 -8
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +1012 -939
- package/dist/shared/assistant/ui/AssistantMessageItem.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMessageItem.js +105 -97
- package/dist/shared/assistant/ui/AssistantMoreMenu.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMoreMenu.js +112 -108
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.d.ts.map +1 -1
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.js +66 -62
- package/dist/shared/assistant/ui/controlConfirmDialog.js +4 -4
- package/dist/shared/assistant/ui/useDropdownEscape.d.ts +8 -30
- package/dist/shared/assistant/ui/useDropdownEscape.d.ts.map +1 -1
- package/dist/shared/assistant/ui/useDropdownEscape.js +6 -20
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +7 -7
- package/dist/shared/assistant/uiActions/recordNames.d.ts +18 -6
- package/dist/shared/assistant/uiActions/recordNames.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/recordNames.js +42 -37
- package/dist/shared/components/EscapeLayer.d.ts +15 -0
- package/dist/shared/components/EscapeLayer.d.ts.map +1 -0
- package/dist/shared/components/EscapeLayer.js +31 -0
- package/dist/shared-assistant.js +151 -150
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantMessageItem.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMessageItem.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AssistantMessageItem.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMessageItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAyB3E,OAAO,KAAK,EACV,+BAA+B,EAG/B,OAAO,EACR,MAAM,iBAAiB,CAAC;AAMzB,UAAU,KAAK;IACb,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,+BAA+B,GAAG,IAAI,CAAC;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uEAAuE;IACvE,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAyCD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,EAY5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,KAAK,CA2W1C,CAAC"}
|
|
@@ -1,108 +1,110 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useI18n as e } from "../../providers/shell/I18nProvider.js";
|
|
2
|
+
import { useAuthToken as t } from "../../providers/shell/AuthTokenProvider.js";
|
|
2
3
|
import "../../../shared-providers-shell.js";
|
|
3
|
-
import { useAssistantStorageFolders as
|
|
4
|
-
import { useAssistantTr as
|
|
5
|
-
import { copyToClipboard as
|
|
6
|
-
import { AssistantMarkdownRenderer as
|
|
7
|
-
import { downloadAssistantArtifact as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
4
|
+
import { useAssistantStorageFolders as n } from "../product.js";
|
|
5
|
+
import { useAssistantTr as r } from "../i18n.js";
|
|
6
|
+
import { copyToClipboard as i } from "../clipboard.js";
|
|
7
|
+
import { AssistantMarkdownRenderer as a } from "./AssistantMarkdownRenderer.js";
|
|
8
|
+
import { downloadAssistantArtifact as o } from "../api.js";
|
|
9
|
+
import { languageConfirmationCopy as s } from "../appControls/languageReply.js";
|
|
10
|
+
import { getAssistantDisplayContent as ee } from "../displayContent.js";
|
|
11
|
+
import { AssistantToolActivity as te, parseToolActivity as ne } from "./AssistantToolActivity.js";
|
|
10
12
|
import { usePrefersReducedMotion as c } from "./usePrefersReducedMotion.js";
|
|
11
|
-
import { AssistantAvatar as
|
|
13
|
+
import { AssistantAvatar as re } from "./AssistantAvatar.js";
|
|
12
14
|
import { useAssistantSpeech as l } from "./AssistantSpeechProvider.js";
|
|
13
|
-
import { AssistantMessageAttachments as
|
|
14
|
-
import { AssistantPendingWriteCard as
|
|
15
|
-
import { AssistantSpeakButton as
|
|
16
|
-
import { SaveToFilesButton as
|
|
15
|
+
import { AssistantMessageAttachments as ie } from "./AssistantMessageAttachments.js";
|
|
16
|
+
import { AssistantPendingWriteCard as u } from "./AssistantPendingWriteCard.js";
|
|
17
|
+
import { AssistantSpeakButton as d } from "./AssistantSpeakButton.js";
|
|
18
|
+
import { SaveToFilesButton as f } from "../../../storage/SaveToFilesButton.js";
|
|
17
19
|
import "../../../storage/index.js";
|
|
18
|
-
import { AssistantTurnActivity as
|
|
19
|
-
import { useMemo as
|
|
20
|
-
import { Check as
|
|
21
|
-
import { Fragment as
|
|
20
|
+
import { AssistantTurnActivity as ae } from "./AssistantTurnActivity.js";
|
|
21
|
+
import { useMemo as p, useRef as oe, useState as m } from "react";
|
|
22
|
+
import { Check as h, Copy as g, RotateCcw as se } from "lucide-react";
|
|
23
|
+
import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
22
24
|
//#region src/shared/assistant/ui/AssistantMessageItem.tsx
|
|
23
|
-
function
|
|
25
|
+
function b(e) {
|
|
24
26
|
return e.role === "assistant" ? e.metadata : void 0;
|
|
25
27
|
}
|
|
26
|
-
function
|
|
28
|
+
function ce(e) {
|
|
27
29
|
return e?.artifacts ?? [];
|
|
28
30
|
}
|
|
29
|
-
function
|
|
31
|
+
function x(e) {
|
|
30
32
|
return window.atob(e);
|
|
31
33
|
}
|
|
32
|
-
function
|
|
33
|
-
let r =
|
|
34
|
+
function S(e, t, n) {
|
|
35
|
+
let r = x(e), i = new Uint8Array(r.length);
|
|
34
36
|
for (let e = 0; e < r.length; e += 1) i[e] = r.charCodeAt(e);
|
|
35
37
|
let a = new Blob([i], { type: n }), o = URL.createObjectURL(a), s = document.createElement("a");
|
|
36
38
|
s.href = o, s.download = t, document.body.appendChild(s), s.click(), document.body.removeChild(s), URL.revokeObjectURL(o);
|
|
37
39
|
}
|
|
38
|
-
var
|
|
40
|
+
var C = () => /* @__PURE__ */ v("span", {
|
|
39
41
|
"aria-hidden": "true",
|
|
40
42
|
"data-testid": "assistant-streaming-caret",
|
|
41
43
|
className: "ml-0.5 inline-block h-4 w-1.5 rounded-sm bg-text-secondary align-middle" + (c() ? "" : " motion-safe:animate-pulse")
|
|
42
|
-
}),
|
|
43
|
-
let
|
|
44
|
+
}), w = ({ onApprovePendingWrite: c, approvingWriteRef: x = null, pendingWriteExpired: w = !1, pendingWriteApproved: le = !1, pendingWriteGoAheadSent: ue = !1, message: T, processing: E, isStreaming: D, isFailed: O, isLastAssistant: k, isNewestAssistant: A, onRetry: j, legacyWriteCardHidden: M = !1, writeProposals: N }) => {
|
|
45
|
+
let P = r(), { locale: F } = e(), I = s(T, P), L = I ? I.translated ? F : "en" : T.metadata?.lang, R = I ? `${T.id}:language:${L}` : T.id, z = oe(R), B = n(), { getAccessToken: V, getWorkspaceToken: H } = t(), U = l(), [de, W] = m(null), [fe, G] = m(!1), K = T.role === "user", q = p(() => b(T), [T]), J = p(() => ce(q), [q]), Y = E === void 0 ? D ? {
|
|
44
46
|
status: "streaming",
|
|
45
|
-
messageId:
|
|
46
|
-
updatedAt:
|
|
47
|
-
} : null :
|
|
47
|
+
messageId: T.id,
|
|
48
|
+
updatedAt: T.timestamp
|
|
49
|
+
} : null : E, X = ee(T, Y, P), { steps: Z, text: Q } = p(() => K ? {
|
|
48
50
|
steps: [],
|
|
49
|
-
text:
|
|
50
|
-
} : X.kind === "output" ?
|
|
51
|
+
text: T.content
|
|
52
|
+
} : X.kind === "output" ? ne(X.text) : {
|
|
51
53
|
steps: [],
|
|
52
54
|
text: ""
|
|
53
55
|
}, [
|
|
54
56
|
K,
|
|
55
|
-
|
|
57
|
+
T.content,
|
|
56
58
|
X.kind,
|
|
57
59
|
X.text
|
|
58
|
-
]),
|
|
59
|
-
|
|
60
|
+
]), pe = () => {
|
|
61
|
+
i(Q).then((e) => {
|
|
60
62
|
e && (G(!0), setTimeout(() => G(!1), 2e3));
|
|
61
63
|
});
|
|
62
|
-
},
|
|
64
|
+
}, me = async (e) => {
|
|
63
65
|
if (!q?.sandboxId || !q.sessionId) return;
|
|
64
66
|
let t = new URLSearchParams(window.location.search).get("workspace") ?? "";
|
|
65
67
|
if (t) {
|
|
66
|
-
|
|
68
|
+
W(e.path);
|
|
67
69
|
try {
|
|
68
|
-
let n = await
|
|
69
|
-
accessToken:
|
|
70
|
-
workspaceToken:
|
|
70
|
+
let n = await o(q.sandboxId, t, q.sessionId, e.path, q.mode, {
|
|
71
|
+
accessToken: V(),
|
|
72
|
+
workspaceToken: H()
|
|
71
73
|
});
|
|
72
|
-
|
|
74
|
+
S(n.contentBase64, n.filename, n.mimeType);
|
|
73
75
|
} finally {
|
|
74
|
-
|
|
76
|
+
W(null);
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
|
-
}, $ = new Date(
|
|
79
|
+
}, $ = new Date(T.timestamp).toLocaleTimeString([], {
|
|
78
80
|
hour: "2-digit",
|
|
79
81
|
minute: "2-digit"
|
|
80
82
|
});
|
|
81
|
-
if (
|
|
83
|
+
if (T.role === "system") return /* @__PURE__ */ v("div", {
|
|
82
84
|
className: "flex justify-center px-2 py-1",
|
|
83
85
|
"data-testid": "assistant-message-system",
|
|
84
|
-
children: /* @__PURE__ */
|
|
86
|
+
children: /* @__PURE__ */ v("p", {
|
|
85
87
|
className: "max-w-[90%] whitespace-pre-wrap break-words rounded-lg border border-border-subtle bg-bg-sunken/60 px-3 py-2 text-center text-xs leading-relaxed text-text-muted",
|
|
86
|
-
children:
|
|
88
|
+
children: T.content
|
|
87
89
|
})
|
|
88
90
|
});
|
|
89
91
|
if (K) {
|
|
90
|
-
let e =
|
|
91
|
-
return /* @__PURE__ */
|
|
92
|
+
let e = T.metadata?.attachments ?? [];
|
|
93
|
+
return /* @__PURE__ */ v("div", {
|
|
92
94
|
className: "flex justify-end",
|
|
93
95
|
"data-testid": "assistant-message-user",
|
|
94
|
-
children: /* @__PURE__ */
|
|
96
|
+
children: /* @__PURE__ */ y("div", {
|
|
95
97
|
className: "max-w-[85%]",
|
|
96
98
|
children: [
|
|
97
|
-
|
|
99
|
+
T.content && /* @__PURE__ */ v("div", {
|
|
98
100
|
className: "rounded-2xl rounded-br-md bg-action-primary-bg/12 px-3.5 py-2.5 text-[15px] leading-relaxed text-text-primary",
|
|
99
|
-
children: /* @__PURE__ */
|
|
101
|
+
children: /* @__PURE__ */ v("p", {
|
|
100
102
|
className: "whitespace-pre-wrap",
|
|
101
|
-
children:
|
|
103
|
+
children: T.content
|
|
102
104
|
})
|
|
103
105
|
}),
|
|
104
|
-
/* @__PURE__ */
|
|
105
|
-
/* @__PURE__ */
|
|
106
|
+
/* @__PURE__ */ v(ie, { attachments: e }),
|
|
107
|
+
/* @__PURE__ */ v("div", {
|
|
106
108
|
className: "mt-1 pr-1 text-right text-[10px] text-text-muted",
|
|
107
109
|
children: $
|
|
108
110
|
})
|
|
@@ -110,46 +112,46 @@ var E = () => /* @__PURE__ */ b("span", {
|
|
|
110
112
|
})
|
|
111
113
|
});
|
|
112
114
|
}
|
|
113
|
-
return /* @__PURE__ */
|
|
115
|
+
return /* @__PURE__ */ y("div", {
|
|
114
116
|
className: "flex gap-2.5",
|
|
115
117
|
"data-testid": "assistant-message-assistant",
|
|
116
|
-
children: [/* @__PURE__ */
|
|
118
|
+
children: [/* @__PURE__ */ v(re, { active: D }), /* @__PURE__ */ y("div", {
|
|
117
119
|
className: "min-w-0 flex-1",
|
|
118
120
|
children: [
|
|
119
|
-
Z.length > 0 && /* @__PURE__ */
|
|
120
|
-
q?.pendingWrite && !
|
|
121
|
+
Z.length > 0 && /* @__PURE__ */ v(te, { steps: Z }),
|
|
122
|
+
q?.pendingWrite && !M ? /* @__PURE__ */ v(u, {
|
|
121
123
|
pendingWrite: q.pendingWrite,
|
|
122
124
|
onApprove: c,
|
|
123
|
-
approving:
|
|
124
|
-
expired:
|
|
125
|
-
approved:
|
|
126
|
-
goAheadSent:
|
|
127
|
-
awaitingTurn: !!
|
|
125
|
+
approving: x !== null && x === q.pendingWrite.reference,
|
|
126
|
+
expired: w,
|
|
127
|
+
approved: le,
|
|
128
|
+
goAheadSent: ue,
|
|
129
|
+
awaitingTurn: !!D
|
|
128
130
|
}) : null,
|
|
129
|
-
|
|
130
|
-
Q && /* @__PURE__ */
|
|
131
|
+
N,
|
|
132
|
+
Q && /* @__PURE__ */ v("div", {
|
|
131
133
|
className: "text-[15px] leading-relaxed text-text-primary",
|
|
132
|
-
children: /* @__PURE__ */
|
|
134
|
+
children: /* @__PURE__ */ v(a, { content: Q })
|
|
133
135
|
}),
|
|
134
|
-
X.kind === "working" && /* @__PURE__ */
|
|
135
|
-
X.kind === "stopped" && /* @__PURE__ */
|
|
136
|
+
X.kind === "working" && /* @__PURE__ */ v(ae, { processing: Y }),
|
|
137
|
+
X.kind === "stopped" && /* @__PURE__ */ v("p", {
|
|
136
138
|
className: "text-[15px] leading-relaxed text-text-secondary",
|
|
137
139
|
"data-testid": "assistant-turn-stopped",
|
|
138
140
|
children: X.text
|
|
139
141
|
}),
|
|
140
|
-
|
|
141
|
-
J.length > 0 && q?.sandboxId && q.sessionId && /* @__PURE__ */
|
|
142
|
+
D && /* @__PURE__ */ v(C, {}),
|
|
143
|
+
J.length > 0 && q?.sandboxId && q.sessionId && /* @__PURE__ */ y("div", {
|
|
142
144
|
className: "mt-3 space-y-2 border-t border-border-subtle pt-2",
|
|
143
|
-
children: [/* @__PURE__ */
|
|
145
|
+
children: [/* @__PURE__ */ v("p", {
|
|
144
146
|
className: "text-[10px] font-medium uppercase tracking-wide text-text-muted",
|
|
145
|
-
children:
|
|
146
|
-
}), /* @__PURE__ */
|
|
147
|
+
children: P("message.downloads", "Downloads")
|
|
148
|
+
}), /* @__PURE__ */ v("div", {
|
|
147
149
|
className: "flex flex-wrap gap-2",
|
|
148
150
|
children: J.map((e) => {
|
|
149
151
|
let t = `${e.name}${e.type === "directory" ? ".tar.gz" : ""}`;
|
|
150
|
-
return /* @__PURE__ */
|
|
152
|
+
return /* @__PURE__ */ v(f, {
|
|
151
153
|
label: t,
|
|
152
|
-
disabled:
|
|
154
|
+
disabled: de === e.path,
|
|
153
155
|
testId: `assistant-artifact-${e.name}`,
|
|
154
156
|
source: {
|
|
155
157
|
kind: "sandbox-artifact",
|
|
@@ -158,53 +160,59 @@ var E = () => /* @__PURE__ */ b("span", {
|
|
|
158
160
|
path: e.path,
|
|
159
161
|
filename: t
|
|
160
162
|
},
|
|
161
|
-
defaultFolderPath:
|
|
162
|
-
onDownload: () =>
|
|
163
|
+
defaultFolderPath: B.artifacts,
|
|
164
|
+
onDownload: () => me(e)
|
|
163
165
|
}, e.path);
|
|
164
166
|
})
|
|
165
167
|
})]
|
|
166
168
|
}),
|
|
167
|
-
!
|
|
169
|
+
!D && (Q || O || k) && /* @__PURE__ */ y("div", {
|
|
168
170
|
className: "mt-1.5 flex items-center gap-1",
|
|
169
171
|
children: [
|
|
170
|
-
Q && /* @__PURE__ */
|
|
172
|
+
Q && /* @__PURE__ */ v("button", {
|
|
171
173
|
type: "button",
|
|
172
|
-
onClick:
|
|
174
|
+
onClick: pe,
|
|
173
175
|
className: "flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] text-text-muted transition-colors hover:bg-bg-elevated hover:text-text-secondary",
|
|
174
|
-
"aria-label":
|
|
176
|
+
"aria-label": P("message.copy", "Copy message"),
|
|
175
177
|
"data-testid": "assistant-message-copy",
|
|
176
|
-
children:
|
|
178
|
+
children: fe ? /* @__PURE__ */ y(_, { children: [/* @__PURE__ */ v(h, { className: "size-3 text-status-success-text" }), /* @__PURE__ */ v("span", { children: P("message.copied", "Copied") })] }) : /* @__PURE__ */ y(_, { children: [/* @__PURE__ */ v(g, { className: "size-3" }), /* @__PURE__ */ v("span", { children: P("message.copyShort", "Copy") })] })
|
|
177
179
|
}),
|
|
178
|
-
Q &&
|
|
179
|
-
let e =
|
|
180
|
-
return /* @__PURE__ */
|
|
181
|
-
isSpeaking:
|
|
180
|
+
Q && U.isSupported && (() => {
|
|
181
|
+
let e = U.blockedFor(R) ?? U.disabledReason, t = U.isSpeaking(T.id) || U.isSpeaking(z.current), n = !!e && !!A, r = n ? `speak-reason-${T.id}` : void 0;
|
|
182
|
+
return /* @__PURE__ */ y(_, { children: [/* @__PURE__ */ v(d, {
|
|
183
|
+
isSpeaking: t,
|
|
182
184
|
disabled: e !== null,
|
|
183
185
|
disabledReason: e,
|
|
184
|
-
describedById:
|
|
185
|
-
onClick: () =>
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
describedById: r,
|
|
187
|
+
onClick: () => {
|
|
188
|
+
if (t) {
|
|
189
|
+
U.stop();
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
z.current = R, U.toggle(R, Q, L);
|
|
193
|
+
}
|
|
194
|
+
}), n && /* @__PURE__ */ v("span", {
|
|
195
|
+
id: r,
|
|
188
196
|
className: "text-[11px] text-text-muted",
|
|
189
197
|
"data-testid": "assistant-speak-reason",
|
|
190
198
|
children: e
|
|
191
199
|
})] });
|
|
192
200
|
})(),
|
|
193
|
-
(
|
|
201
|
+
(O || k) && j && !T.metadata?.localAction && /* @__PURE__ */ y("button", {
|
|
194
202
|
type: "button",
|
|
195
|
-
onClick:
|
|
196
|
-
className: `flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-colors hover:bg-bg-elevated ${
|
|
197
|
-
"aria-label":
|
|
203
|
+
onClick: j,
|
|
204
|
+
className: `flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-colors hover:bg-bg-elevated ${O ? "text-status-error-text" : "text-text-muted hover:text-text-secondary"}`,
|
|
205
|
+
"aria-label": P("message.retry", "Retry"),
|
|
198
206
|
"data-testid": "assistant-message-retry",
|
|
199
|
-
children: [/* @__PURE__ */
|
|
207
|
+
children: [/* @__PURE__ */ v(se, { className: "size-3" }), /* @__PURE__ */ v("span", { children: P("message.retry", "Retry") })]
|
|
200
208
|
})
|
|
201
209
|
]
|
|
202
210
|
}),
|
|
203
|
-
/* @__PURE__ */
|
|
211
|
+
/* @__PURE__ */ y("div", {
|
|
204
212
|
className: "mt-1 text-[10px] text-text-muted",
|
|
205
|
-
children: [$,
|
|
213
|
+
children: [$, T.tokens && /* @__PURE__ */ y("span", {
|
|
206
214
|
className: "ml-2",
|
|
207
|
-
children: [
|
|
215
|
+
children: [T.tokens.input + T.tokens.output, " tokens"]
|
|
208
216
|
})]
|
|
209
217
|
})
|
|
210
218
|
]
|
|
@@ -212,4 +220,4 @@ var E = () => /* @__PURE__ */ b("span", {
|
|
|
212
220
|
});
|
|
213
221
|
};
|
|
214
222
|
//#endregion
|
|
215
|
-
export {
|
|
223
|
+
export { w as AssistantMessageItem, C as StreamingCaret };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantMoreMenu.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMoreMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AssistantMoreMenu.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMoreMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAa7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,iBAAiB,EAAE,EAuL/B,CAAC"}
|
|
@@ -1,127 +1,131 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
1
|
+
import { EscapeLayer as e } from "../../components/EscapeLayer.js";
|
|
2
|
+
import { useAssistantTr as t } from "../i18n.js";
|
|
3
|
+
import { useAssistantStore as n } from "../store.js";
|
|
4
|
+
import { useAssistantSpeech as r } from "./AssistantSpeechProvider.js";
|
|
5
|
+
import { AssistantLanguageMenu as i } from "./AssistantLanguageMenu.js";
|
|
6
|
+
import { useDropdownEscape as a } from "./useDropdownEscape.js";
|
|
7
|
+
import { AssistantVoiceSelector as o } from "./composer/AssistantVoiceSelector.js";
|
|
8
|
+
import { AssistantVoiceGraceSelector as s } from "./composer/AssistantVoiceGraceSelector.js";
|
|
9
|
+
import { AssistantHandsFreeInterruptToggle as c } from "./composer/AssistantHandsFreeInterruptToggle.js";
|
|
10
|
+
import { downloadFile as l, exportConversation as u } from "../exportConversation.js";
|
|
11
|
+
import { useEffect as d, useRef as f, useState as p } from "react";
|
|
12
|
+
import { Check as m, FileJson as h, FileText as g, MoreHorizontal as _, Play as v, Volume2 as y } from "lucide-react";
|
|
13
|
+
import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
13
14
|
//#region src/shared/assistant/ui/AssistantMoreMenu.tsx
|
|
14
|
-
var
|
|
15
|
-
let
|
|
16
|
-
|
|
17
|
-
if (!
|
|
15
|
+
var C = () => {
|
|
16
|
+
let C = t(), [w, T] = p(!1), E = f(null), D = f(null), { conversations: O, activeConversationId: k, processingByConversationId: A } = n(), j = O.find((e) => e.id === k), M = !!(j && j.messages.length > 0), { isSupported: N, isBlocked: P, disabledReason: F, autoSpeakEnabled: I, setAutoSpeak: L, stop: R, previewVoice: z, activeVoiceName: B } = r(), V = P && !I, H = a(D, () => T(!1));
|
|
17
|
+
d(() => {
|
|
18
|
+
if (!w) return;
|
|
18
19
|
let e = (e) => {
|
|
19
20
|
let t = e.target;
|
|
20
|
-
|
|
21
|
+
E.current?.contains(t) || D.current?.contains(t) || T(!1);
|
|
21
22
|
};
|
|
22
23
|
return document.addEventListener("mousedown", e), () => {
|
|
23
24
|
document.removeEventListener("mousedown", e);
|
|
24
25
|
};
|
|
25
|
-
}, [
|
|
26
|
-
let
|
|
27
|
-
if (!
|
|
28
|
-
let { content: t, filename: n, mimeType: r } =
|
|
29
|
-
processing:
|
|
30
|
-
tr:
|
|
26
|
+
}, [w]);
|
|
27
|
+
let U = (e) => {
|
|
28
|
+
if (!j) return;
|
|
29
|
+
let { content: t, filename: n, mimeType: r } = u(j, e, {
|
|
30
|
+
processing: A[j.id],
|
|
31
|
+
tr: C
|
|
31
32
|
});
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
},
|
|
36
|
-
return /* @__PURE__ */
|
|
33
|
+
l(t, n, r), T(!1);
|
|
34
|
+
}, W = () => {
|
|
35
|
+
I && R(), L(!I);
|
|
36
|
+
}, G = C("header.more", "More options");
|
|
37
|
+
return /* @__PURE__ */ S("div", {
|
|
37
38
|
className: "relative",
|
|
38
|
-
children: [/* @__PURE__ */
|
|
39
|
-
ref:
|
|
39
|
+
children: [/* @__PURE__ */ x("button", {
|
|
40
|
+
ref: D,
|
|
40
41
|
type: "button",
|
|
41
|
-
onClick: () =>
|
|
42
|
+
onClick: () => T((e) => !e),
|
|
42
43
|
className: "rounded p-1 transition-colors hover:bg-bg-elevated",
|
|
43
|
-
"aria-label":
|
|
44
|
+
"aria-label": G,
|
|
44
45
|
"aria-haspopup": "menu",
|
|
45
|
-
"aria-expanded":
|
|
46
|
+
"aria-expanded": w,
|
|
46
47
|
"data-testid": "assistant-more",
|
|
47
|
-
children: /* @__PURE__ */
|
|
48
|
-
}),
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"aria-checked": F,
|
|
59
|
-
onClick: H,
|
|
60
|
-
disabled: B,
|
|
61
|
-
title: B ? P ?? void 0 : void 0,
|
|
62
|
-
className: "flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-text-primary transition-colors hover:bg-bg-elevated disabled:cursor-not-allowed disabled:text-text-muted disabled:hover:bg-transparent",
|
|
63
|
-
"data-testid": "assistant-auto-speak",
|
|
64
|
-
children: [
|
|
65
|
-
/* @__PURE__ */ b(v, {
|
|
66
|
-
className: "size-3.5 flex-shrink-0 text-text-secondary",
|
|
67
|
-
"aria-hidden": "true"
|
|
68
|
-
}),
|
|
69
|
-
/* @__PURE__ */ b("span", {
|
|
70
|
-
className: "flex-1",
|
|
71
|
-
children: S("header.autoRead", "Auto-read replies")
|
|
72
|
-
}),
|
|
73
|
-
F ? /* @__PURE__ */ b(p, { className: "size-3.5 flex-shrink-0 text-action-primary-bg" }) : null
|
|
74
|
-
]
|
|
75
|
-
}) : null,
|
|
76
|
-
/* @__PURE__ */ b(r, {}),
|
|
77
|
-
/* @__PURE__ */ x("div", {
|
|
78
|
-
className: "flex items-center gap-1 px-3 py-1.5",
|
|
79
|
-
"data-testid": "assistant-more-voice",
|
|
80
|
-
children: [/* @__PURE__ */ b(a, {}), z ? /* @__PURE__ */ x("button", {
|
|
81
|
-
type: "button",
|
|
82
|
-
onClick: () => R(z),
|
|
83
|
-
className: "flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] text-text-muted transition-colors hover:bg-bg-elevated hover:text-text-secondary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong",
|
|
84
|
-
"aria-label": S("voice.preview", "Hear this voice"),
|
|
85
|
-
"data-testid": "assistant-voice-preview",
|
|
86
|
-
children: [/* @__PURE__ */ b(_, {
|
|
87
|
-
className: "size-3",
|
|
88
|
-
"aria-hidden": "true"
|
|
89
|
-
}), S("voice.previewShort", "Preview")]
|
|
90
|
-
}) : null]
|
|
91
|
-
}),
|
|
92
|
-
/* @__PURE__ */ b(o, {}),
|
|
93
|
-
/* @__PURE__ */ b(s, {}),
|
|
94
|
-
j ? /* @__PURE__ */ x(y, { children: [
|
|
95
|
-
/* @__PURE__ */ b("div", {
|
|
96
|
-
className: "my-1 border-t border-border-subtle",
|
|
97
|
-
role: "separator"
|
|
98
|
-
}),
|
|
99
|
-
/* @__PURE__ */ x("button", {
|
|
48
|
+
children: /* @__PURE__ */ x(_, { className: "size-4 text-text-secondary" })
|
|
49
|
+
}), w ? /* @__PURE__ */ x(e, {
|
|
50
|
+
...H,
|
|
51
|
+
children: /* @__PURE__ */ S("div", {
|
|
52
|
+
ref: E,
|
|
53
|
+
role: "menu",
|
|
54
|
+
"aria-label": G,
|
|
55
|
+
className: "absolute right-0 top-full z-50 mt-1 min-w-56 overflow-hidden rounded-xl border border-border-default bg-bg-surface py-1 shadow-lg",
|
|
56
|
+
"data-testid": "assistant-more-menu",
|
|
57
|
+
children: [
|
|
58
|
+
N ? /* @__PURE__ */ S("button", {
|
|
100
59
|
type: "button",
|
|
101
|
-
role: "
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
60
|
+
role: "menuitemcheckbox",
|
|
61
|
+
"aria-checked": I,
|
|
62
|
+
onClick: W,
|
|
63
|
+
disabled: V,
|
|
64
|
+
title: V ? F ?? void 0 : void 0,
|
|
65
|
+
className: "flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-text-primary transition-colors hover:bg-bg-elevated disabled:cursor-not-allowed disabled:text-text-muted disabled:hover:bg-transparent",
|
|
66
|
+
"data-testid": "assistant-auto-speak",
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ x(y, {
|
|
69
|
+
className: "size-3.5 flex-shrink-0 text-text-secondary",
|
|
70
|
+
"aria-hidden": "true"
|
|
71
|
+
}),
|
|
72
|
+
/* @__PURE__ */ x("span", {
|
|
73
|
+
className: "flex-1",
|
|
74
|
+
children: C("header.autoRead", "Auto-read replies")
|
|
75
|
+
}),
|
|
76
|
+
I ? /* @__PURE__ */ x(m, { className: "size-3.5 flex-shrink-0 text-action-primary-bg" }) : null
|
|
77
|
+
]
|
|
78
|
+
}) : null,
|
|
79
|
+
/* @__PURE__ */ x(i, {}),
|
|
80
|
+
/* @__PURE__ */ S("div", {
|
|
81
|
+
className: "flex items-center gap-1 px-3 py-1.5",
|
|
82
|
+
"data-testid": "assistant-more-voice",
|
|
83
|
+
children: [/* @__PURE__ */ x(o, {}), B ? /* @__PURE__ */ S("button", {
|
|
84
|
+
type: "button",
|
|
85
|
+
onClick: () => z(B),
|
|
86
|
+
className: "flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] text-text-muted transition-colors hover:bg-bg-elevated hover:text-text-secondary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong",
|
|
87
|
+
"aria-label": C("voice.preview", "Hear this voice"),
|
|
88
|
+
"data-testid": "assistant-voice-preview",
|
|
89
|
+
children: [/* @__PURE__ */ x(v, {
|
|
90
|
+
className: "size-3",
|
|
91
|
+
"aria-hidden": "true"
|
|
92
|
+
}), C("voice.previewShort", "Preview")]
|
|
93
|
+
}) : null]
|
|
109
94
|
}),
|
|
110
|
-
/* @__PURE__ */ x(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
95
|
+
/* @__PURE__ */ x(s, {}),
|
|
96
|
+
/* @__PURE__ */ x(c, {}),
|
|
97
|
+
M ? /* @__PURE__ */ S(b, { children: [
|
|
98
|
+
/* @__PURE__ */ x("div", {
|
|
99
|
+
className: "my-1 border-t border-border-subtle",
|
|
100
|
+
role: "separator"
|
|
101
|
+
}),
|
|
102
|
+
/* @__PURE__ */ S("button", {
|
|
103
|
+
type: "button",
|
|
104
|
+
role: "menuitem",
|
|
105
|
+
onClick: () => U("json"),
|
|
106
|
+
className: "flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-text-primary transition-colors hover:bg-bg-elevated",
|
|
107
|
+
"data-testid": "export-json",
|
|
108
|
+
children: [/* @__PURE__ */ x(h, {
|
|
109
|
+
className: "size-3.5 flex-shrink-0 text-text-secondary",
|
|
110
|
+
"aria-hidden": "true"
|
|
111
|
+
}), C("export.json", "Export as JSON")]
|
|
112
|
+
}),
|
|
113
|
+
/* @__PURE__ */ S("button", {
|
|
114
|
+
type: "button",
|
|
115
|
+
role: "menuitem",
|
|
116
|
+
onClick: () => U("markdown"),
|
|
117
|
+
className: "flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-text-primary transition-colors hover:bg-bg-elevated",
|
|
118
|
+
"data-testid": "export-markdown",
|
|
119
|
+
children: [/* @__PURE__ */ x(g, {
|
|
120
|
+
className: "size-3.5 flex-shrink-0 text-text-secondary",
|
|
121
|
+
"aria-hidden": "true"
|
|
122
|
+
}), C("export.markdown", "Export as Markdown")]
|
|
123
|
+
})
|
|
124
|
+
] }) : null
|
|
125
|
+
]
|
|
126
|
+
})
|
|
123
127
|
}) : null]
|
|
124
128
|
});
|
|
125
129
|
};
|
|
126
130
|
//#endregion
|
|
127
|
-
export {
|
|
131
|
+
export { C as AssistantMoreMenu };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantAttachmentButton.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantAttachmentButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AssistantAttachmentButton.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantAttachmentButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAef,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,wEAAwE;IACxE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAoBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,KAAK,CA2M/C,CAAC"}
|