@burdenoff/fe-libs 2026.1018.1 → 2026.1019.2
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/AccountSwitcher.js +90 -89
- package/dist/chrome/Breadcrumbs.js +1 -1
- package/dist/chrome/CommandPalette.js +91 -90
- package/dist/chrome/Footer.js +31 -8
- package/dist/chrome/GlobalSearch.js +78 -77
- package/dist/chrome/HeaderBar.js +1 -1
- package/dist/chrome/HeaderThemeSwitcher.js +48 -47
- package/dist/chrome/LanguagePickerSheet.js +23 -22
- package/dist/chrome/NavCustomizeDialog.d.ts +0 -14
- package/dist/chrome/NavCustomizeDialog.js +114 -122
- package/dist/chrome/PanelTabs.js +45 -41
- package/dist/chrome/PersonaSurfaceControls.d.ts +0 -17
- package/dist/chrome/PersonaSurfaceControls.js +115 -118
- package/dist/chrome/PluginSettingsPage.js +29 -28
- package/dist/chrome/PluginWidgetGrid.js +19 -18
- package/dist/chrome/ProductPickerSheet.js +44 -47
- package/dist/chrome/ProductSwitcher.js +2 -6
- package/dist/chrome/ProfileSwitcher.js +6 -10
- package/dist/chrome/ShortcutHelpDialog.js +60 -65
- package/dist/chrome/SideNavigation.js +2 -2
- package/dist/chrome/Sidebar.js +44 -43
- package/dist/chrome/ThemePreferences.js +289 -267
- package/dist/chrome/contextSwitcher/EmptyState.js +31 -27
- package/dist/chrome/contextSwitcher/OrganizationList.js +40 -30
- package/dist/chrome/contextSwitcher/ProjectList.js +48 -44
- package/dist/chrome/contextSwitcher/SearchInput.js +44 -40
- package/dist/chrome/contextSwitcher/TriggerButton.js +2 -2
- package/dist/chrome/contextSwitcher/WorkspaceList.js +36 -32
- package/dist/chrome/globalSearch/AdvancedFiltersPanel.js +128 -126
- package/dist/chrome/globalSearch/ResultsList.js +25 -27
- package/dist/chrome/globalSearch/SearchInput.js +16 -14
- package/dist/chrome/notificationCenter/NotificationCardItem.js +58 -47
- package/dist/chrome/notificationCenter/NotificationFilters.js +76 -62
- package/dist/chrome/notificationCenter/NotificationFooter.js +21 -21
- package/dist/chrome/notificationCenter/NotificationHeader.js +67 -63
- package/dist/chrome/notificationCenter/NotificationList.js +75 -71
- package/dist/chrome/notificationCenter/NotificationPanel.js +37 -33
- package/dist/chrome/notificationCenter/PushOptInToggle.js +33 -32
- package/dist/chrome/notificationCenter/constants.d.ts +6 -1
- package/dist/chrome/notificationCenter/constants.js +12 -11
- package/dist/chrome/useThemeOptionLabels.d.ts +33 -0
- package/dist/chrome/useThemeOptionLabels.js +39 -0
- package/dist/shared/assistant/conversation.d.ts +8 -0
- package/dist/shared/assistant/history/historyMapping.js +1 -1
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.d.ts +6 -6
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.js +86 -85
- package/dist/shared/assistant/ui/AssistantMessageItem.js +101 -96
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.d.ts +2 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.js +93 -89
- package/dist/shared/assistant/ui/WorkflowAssistantPanel.js +152 -140
- package/dist/shared/assistant/ui/useWriteProposals.js +122 -85
- package/dist/shared/assistant/writeProposalDiscovery.d.ts +3 -1
- package/dist/shared/assistant/writeProposalDiscovery.js +2 -2
- package/dist/shared/events/sinks/RybbitSink.js +2 -2
- package/dist/shared/providers/shell/interpolateShellLabel.d.ts +3 -0
- package/dist/shared/providers/shell/interpolateShellLabel.js +11 -0
- package/dist/shared/providers/shell/useAssistantShellLabels.d.ts +45 -0
- package/dist/shared/providers/shell/useAssistantShellLabels.js +54 -0
- package/dist/shared/tours/TourPlayer.js +33 -32
- package/dist/shared/tours/TourTooltip.js +108 -109
- package/dist/shared/tours/tourTrigger/MobileTourSheet.js +98 -85
- package/dist/shared/tours/tourTrigger/TourListItemDesktop.js +20 -18
- package/dist/shared/tours/tourTrigger/TourListItemMobile.js +23 -25
- package/dist/shared-assistant.js +188 -188
- package/package.json +2 -2
|
@@ -1,114 +1,115 @@
|
|
|
1
1
|
import { useI18n as e } from "../../providers/shell/I18nProvider.js";
|
|
2
2
|
import { useAuthToken as t } from "../../providers/shell/AuthTokenProvider.js";
|
|
3
3
|
import "../../../shared-providers-shell.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
4
|
+
import { useAssistantChromeLabels as n } from "../../providers/shell/useAssistantShellLabels.js";
|
|
5
|
+
import { useAssistantStorageFolders as r } from "../product.js";
|
|
6
|
+
import { useAssistantTr as i } from "../i18n.js";
|
|
7
|
+
import { copyToClipboard as a } from "../clipboard.js";
|
|
8
|
+
import { AssistantMarkdownRenderer as o } from "./AssistantMarkdownRenderer.js";
|
|
9
|
+
import { downloadAssistantArtifact as s } from "../api.js";
|
|
10
|
+
import { languageConfirmationCopy as ee } from "../appControls/languageReply.js";
|
|
10
11
|
import { getAssistantDisplayContent as c } from "../displayContent.js";
|
|
11
|
-
import { AssistantToolActivity as
|
|
12
|
-
import { usePrefersReducedMotion as
|
|
13
|
-
import { AssistantAvatar as
|
|
14
|
-
import { useAssistantSpeech as
|
|
15
|
-
import { AssistantMessageAttachments as
|
|
16
|
-
import { AssistantPendingWriteCard as
|
|
17
|
-
import { AssistantSpeakButton as
|
|
18
|
-
import { SaveToFilesButton as
|
|
12
|
+
import { AssistantToolActivity as l, parseToolActivity as u } from "./AssistantToolActivity.js";
|
|
13
|
+
import { usePrefersReducedMotion as d } from "./usePrefersReducedMotion.js";
|
|
14
|
+
import { AssistantAvatar as te } from "./AssistantAvatar.js";
|
|
15
|
+
import { useAssistantSpeech as ne } from "./AssistantSpeechProvider.js";
|
|
16
|
+
import { AssistantMessageAttachments as re } from "./AssistantMessageAttachments.js";
|
|
17
|
+
import { AssistantPendingWriteCard as f } from "./AssistantPendingWriteCard.js";
|
|
18
|
+
import { AssistantSpeakButton as p } from "./AssistantSpeakButton.js";
|
|
19
|
+
import { SaveToFilesButton as m } from "../../../storage/SaveToFilesButton.js";
|
|
19
20
|
import "../../../storage/index.js";
|
|
20
|
-
import { AssistantTurnActivity as
|
|
21
|
-
import { useMemo as
|
|
22
|
-
import { Check as oe, Copy as
|
|
23
|
-
import { Fragment as
|
|
21
|
+
import { AssistantTurnActivity as ie } from "./AssistantTurnActivity.js";
|
|
22
|
+
import { useMemo as h, useRef as ae, useState as g } from "react";
|
|
23
|
+
import { Check as oe, Copy as se, RotateCcw as _ } from "lucide-react";
|
|
24
|
+
import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
24
25
|
//#region src/shared/assistant/ui/AssistantMessageItem.tsx
|
|
25
|
-
function
|
|
26
|
+
function x(e) {
|
|
26
27
|
return e.role === "assistant" ? e.metadata : void 0;
|
|
27
28
|
}
|
|
28
29
|
function ce(e) {
|
|
29
30
|
return e?.artifacts ?? [];
|
|
30
31
|
}
|
|
31
|
-
function
|
|
32
|
+
function S(e) {
|
|
32
33
|
return window.atob(e);
|
|
33
34
|
}
|
|
34
|
-
function
|
|
35
|
-
let r =
|
|
35
|
+
function C(e, t, n) {
|
|
36
|
+
let r = S(e), i = new Uint8Array(r.length);
|
|
36
37
|
for (let e = 0; e < r.length; e += 1) i[e] = r.charCodeAt(e);
|
|
37
38
|
let a = new Blob([i], { type: n }), o = URL.createObjectURL(a), s = document.createElement("a");
|
|
38
39
|
s.href = o, s.download = t, document.body.appendChild(s), s.click(), document.body.removeChild(s), URL.revokeObjectURL(o);
|
|
39
40
|
}
|
|
40
|
-
var
|
|
41
|
+
var w = () => /* @__PURE__ */ y("span", {
|
|
41
42
|
"aria-hidden": "true",
|
|
42
43
|
"data-testid": "assistant-streaming-caret",
|
|
43
|
-
className: "ml-0.5 inline-block h-4 w-1.5 rounded-sm bg-text-secondary align-middle" + (
|
|
44
|
-
}),
|
|
45
|
-
let
|
|
44
|
+
className: "ml-0.5 inline-block h-4 w-1.5 rounded-sm bg-text-secondary align-middle" + (d() ? "" : " motion-safe:animate-pulse")
|
|
45
|
+
}), T = ({ onApprovePendingWrite: d, approvingWriteRef: S = null, pendingWriteExpired: T = !1, pendingWriteApproved: le = !1, pendingWriteGoAheadSent: ue = !1, message: E, processing: D, isStreaming: O, isFailed: k, isLastAssistant: A, isNewestAssistant: j, onRetry: M, legacyWriteCardHidden: N = !1, writeProposals: P, uiOffers: F }) => {
|
|
46
|
+
let I = n(), L = i(), { locale: R } = e(), z = ee(E, L), B = z ? z.translated ? R : "en" : E.metadata?.lang, V = z ? `${E.id}:language:${B}` : E.id, H = ae(V), de = r(), { getAccessToken: fe, getWorkspaceToken: pe } = t(), U = ne(), [me, W] = g(null), [he, G] = g(!1), K = E.role === "user", q = h(() => x(E), [E]), J = h(() => ce(q), [q]), Y = D === void 0 ? O ? {
|
|
46
47
|
status: "streaming",
|
|
47
|
-
messageId:
|
|
48
|
-
updatedAt:
|
|
49
|
-
} : null :
|
|
48
|
+
messageId: E.id,
|
|
49
|
+
updatedAt: E.timestamp
|
|
50
|
+
} : null : D, X = c(E, Y, L), { steps: Z, text: Q } = h(() => K ? {
|
|
50
51
|
steps: [],
|
|
51
|
-
text:
|
|
52
|
-
} : X.kind === "output" ?
|
|
52
|
+
text: E.content
|
|
53
|
+
} : X.kind === "output" ? u(X.text) : {
|
|
53
54
|
steps: [],
|
|
54
55
|
text: ""
|
|
55
56
|
}, [
|
|
56
57
|
K,
|
|
57
|
-
|
|
58
|
+
E.content,
|
|
58
59
|
X.kind,
|
|
59
60
|
X.text
|
|
60
|
-
]),
|
|
61
|
-
|
|
61
|
+
]), ge = () => {
|
|
62
|
+
a(Q).then((e) => {
|
|
62
63
|
e && (G(!0), setTimeout(() => G(!1), 2e3));
|
|
63
64
|
});
|
|
64
|
-
},
|
|
65
|
+
}, _e = async (e) => {
|
|
65
66
|
if (!q?.sandboxId || !q.sessionId) return;
|
|
66
67
|
let t = new URLSearchParams(window.location.search).get("workspace") ?? "";
|
|
67
68
|
if (t) {
|
|
68
69
|
W(e.path);
|
|
69
70
|
try {
|
|
70
|
-
let n = await
|
|
71
|
-
accessToken:
|
|
72
|
-
workspaceToken:
|
|
71
|
+
let n = await s(q.sandboxId, t, q.sessionId, e.path, q.mode, {
|
|
72
|
+
accessToken: fe(),
|
|
73
|
+
workspaceToken: pe()
|
|
73
74
|
});
|
|
74
|
-
|
|
75
|
+
C(n.contentBase64, n.filename, n.mimeType);
|
|
75
76
|
} finally {
|
|
76
77
|
W(null);
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
|
-
}, $ = new Date(
|
|
80
|
+
}, $ = new Date(E.timestamp).toLocaleTimeString([], {
|
|
80
81
|
hour: "2-digit",
|
|
81
82
|
minute: "2-digit"
|
|
82
83
|
});
|
|
83
|
-
if (
|
|
84
|
+
if (E.role === "system") return /* @__PURE__ */ y("div", {
|
|
84
85
|
className: "flex justify-center px-2 py-1",
|
|
85
86
|
"data-testid": "assistant-message-system",
|
|
86
|
-
children:
|
|
87
|
+
children: E.metadata?.localAction?.kind === "navigate" ? /* @__PURE__ */ y("div", {
|
|
87
88
|
className: "max-w-[90%] 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",
|
|
88
89
|
"data-testid": "assistant-message-system-navigation",
|
|
89
|
-
children: /* @__PURE__ */
|
|
90
|
-
}) : /* @__PURE__ */
|
|
90
|
+
children: /* @__PURE__ */ y(o, { content: E.content })
|
|
91
|
+
}) : /* @__PURE__ */ y("p", {
|
|
91
92
|
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",
|
|
92
|
-
children:
|
|
93
|
+
children: E.content
|
|
93
94
|
})
|
|
94
95
|
});
|
|
95
96
|
if (K) {
|
|
96
|
-
let e =
|
|
97
|
-
return /* @__PURE__ */
|
|
97
|
+
let e = E.metadata?.attachments ?? [];
|
|
98
|
+
return /* @__PURE__ */ y("div", {
|
|
98
99
|
className: "flex justify-end",
|
|
99
100
|
"data-testid": "assistant-message-user",
|
|
100
|
-
children: /* @__PURE__ */
|
|
101
|
+
children: /* @__PURE__ */ b("div", {
|
|
101
102
|
className: "max-w-[85%]",
|
|
102
103
|
children: [
|
|
103
|
-
|
|
104
|
+
E.content && /* @__PURE__ */ y("div", {
|
|
104
105
|
className: "rounded-2xl rounded-br-md bg-action-primary-bg/12 px-3.5 py-2.5 text-[15px] leading-relaxed text-text-primary",
|
|
105
|
-
children: /* @__PURE__ */
|
|
106
|
+
children: /* @__PURE__ */ y("p", {
|
|
106
107
|
className: "whitespace-pre-wrap",
|
|
107
|
-
children:
|
|
108
|
+
children: E.content
|
|
108
109
|
})
|
|
109
110
|
}),
|
|
110
|
-
/* @__PURE__ */
|
|
111
|
-
/* @__PURE__ */
|
|
111
|
+
/* @__PURE__ */ y(re, { attachments: e }),
|
|
112
|
+
/* @__PURE__ */ y("div", {
|
|
112
113
|
className: "mt-1 pr-1 text-right text-[10px] text-text-muted",
|
|
113
114
|
children: $
|
|
114
115
|
})
|
|
@@ -116,47 +117,47 @@ var C = () => /* @__PURE__ */ v("span", {
|
|
|
116
117
|
})
|
|
117
118
|
});
|
|
118
119
|
}
|
|
119
|
-
return /* @__PURE__ */
|
|
120
|
+
return /* @__PURE__ */ b("div", {
|
|
120
121
|
className: "flex gap-2.5",
|
|
121
122
|
"data-testid": "assistant-message-assistant",
|
|
122
|
-
children: [/* @__PURE__ */
|
|
123
|
+
children: [/* @__PURE__ */ y(te, { active: O }), /* @__PURE__ */ b("div", {
|
|
123
124
|
className: "min-w-0 flex-1",
|
|
124
125
|
children: [
|
|
125
|
-
Z.length > 0 && /* @__PURE__ */
|
|
126
|
-
q?.pendingWrite && !
|
|
126
|
+
Z.length > 0 && /* @__PURE__ */ y(l, { steps: Z }),
|
|
127
|
+
q?.pendingWrite && !N ? /* @__PURE__ */ y(f, {
|
|
127
128
|
pendingWrite: q.pendingWrite,
|
|
128
|
-
onApprove:
|
|
129
|
-
approving:
|
|
130
|
-
expired:
|
|
129
|
+
onApprove: d,
|
|
130
|
+
approving: S !== null && S === q.pendingWrite.reference,
|
|
131
|
+
expired: T,
|
|
131
132
|
approved: le,
|
|
132
133
|
goAheadSent: ue,
|
|
133
|
-
awaitingTurn: !!
|
|
134
|
+
awaitingTurn: !!O
|
|
134
135
|
}) : null,
|
|
135
|
-
|
|
136
|
-
Q && /* @__PURE__ */
|
|
136
|
+
P,
|
|
137
|
+
Q && /* @__PURE__ */ y("div", {
|
|
137
138
|
className: "text-[15px] leading-relaxed text-text-primary",
|
|
138
|
-
children: /* @__PURE__ */
|
|
139
|
+
children: /* @__PURE__ */ y(o, { content: Q })
|
|
139
140
|
}),
|
|
140
|
-
X.kind === "working" && /* @__PURE__ */
|
|
141
|
-
X.kind === "stopped" && /* @__PURE__ */
|
|
141
|
+
X.kind === "working" && /* @__PURE__ */ y(ie, { processing: Y }),
|
|
142
|
+
X.kind === "stopped" && /* @__PURE__ */ y("p", {
|
|
142
143
|
className: "text-[15px] leading-relaxed text-text-secondary",
|
|
143
144
|
"data-testid": "assistant-turn-stopped",
|
|
144
145
|
children: X.text
|
|
145
146
|
}),
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
J.length > 0 && q?.sandboxId && q.sessionId && /* @__PURE__ */
|
|
147
|
+
O && /* @__PURE__ */ y(w, {}),
|
|
148
|
+
F,
|
|
149
|
+
J.length > 0 && q?.sandboxId && q.sessionId && /* @__PURE__ */ b("div", {
|
|
149
150
|
className: "mt-3 space-y-2 border-t border-border-subtle pt-2",
|
|
150
|
-
children: [/* @__PURE__ */
|
|
151
|
+
children: [/* @__PURE__ */ y("p", {
|
|
151
152
|
className: "text-[10px] font-medium uppercase tracking-wide text-text-muted",
|
|
152
|
-
children:
|
|
153
|
-
}), /* @__PURE__ */
|
|
153
|
+
children: L("message.downloads", "Downloads")
|
|
154
|
+
}), /* @__PURE__ */ y("div", {
|
|
154
155
|
className: "flex flex-wrap gap-2",
|
|
155
156
|
children: J.map((e) => {
|
|
156
157
|
let t = `${e.name}${e.type === "directory" ? ".tar.gz" : ""}`;
|
|
157
|
-
return /* @__PURE__ */
|
|
158
|
+
return /* @__PURE__ */ y(m, {
|
|
158
159
|
label: t,
|
|
159
|
-
disabled:
|
|
160
|
+
disabled: me === e.path,
|
|
160
161
|
testId: `assistant-artifact-${e.name}`,
|
|
161
162
|
source: {
|
|
162
163
|
kind: "sandbox-artifact",
|
|
@@ -165,27 +166,27 @@ var C = () => /* @__PURE__ */ v("span", {
|
|
|
165
166
|
path: e.path,
|
|
166
167
|
filename: t
|
|
167
168
|
},
|
|
168
|
-
defaultFolderPath:
|
|
169
|
-
onDownload: () =>
|
|
169
|
+
defaultFolderPath: de.artifacts,
|
|
170
|
+
onDownload: () => _e(e)
|
|
170
171
|
}, e.path);
|
|
171
172
|
})
|
|
172
173
|
})]
|
|
173
174
|
}),
|
|
174
|
-
!
|
|
175
|
+
!O && (Q || k || A) && /* @__PURE__ */ b("div", {
|
|
175
176
|
className: "mt-1.5 flex items-center gap-1",
|
|
176
177
|
children: [
|
|
177
|
-
Q && /* @__PURE__ */
|
|
178
|
+
Q && /* @__PURE__ */ y("button", {
|
|
178
179
|
type: "button",
|
|
179
|
-
onClick:
|
|
180
|
+
onClick: ge,
|
|
180
181
|
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",
|
|
181
|
-
"aria-label":
|
|
182
|
+
"aria-label": L("message.copy", "Copy message"),
|
|
182
183
|
"data-testid": "assistant-message-copy",
|
|
183
|
-
children:
|
|
184
|
+
children: he ? /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(oe, { className: "size-3 text-status-success-text" }), /* @__PURE__ */ y("span", { children: L("message.copied", "Copied") })] }) : /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(se, { className: "size-3" }), /* @__PURE__ */ y("span", { children: L("message.copyShort", "Copy") })] })
|
|
184
185
|
}),
|
|
185
186
|
Q && U.isSupported && (() => {
|
|
186
|
-
let e = U.blockedFor(
|
|
187
|
-
return /* @__PURE__ */
|
|
188
|
-
/* @__PURE__ */
|
|
187
|
+
let e = U.blockedFor(V) ?? U.disabledReason, t = U.isSpeaking(E.id) || U.isSpeaking(H.current), n = !!e && !!j, r = n ? `speak-reason-${E.id}` : void 0, i = n ? null : U.deviceFallbackFor(V), a = i ? `speak-fallback-${E.id}` : void 0;
|
|
188
|
+
return /* @__PURE__ */ b(v, { children: [
|
|
189
|
+
/* @__PURE__ */ y(p, {
|
|
189
190
|
isSpeaking: t,
|
|
190
191
|
disabled: e !== null,
|
|
191
192
|
disabledReason: e,
|
|
@@ -195,16 +196,16 @@ var C = () => /* @__PURE__ */ v("span", {
|
|
|
195
196
|
U.stop();
|
|
196
197
|
return;
|
|
197
198
|
}
|
|
198
|
-
|
|
199
|
+
H.current = V, U.toggle(V, Q, B);
|
|
199
200
|
}
|
|
200
201
|
}),
|
|
201
|
-
n && /* @__PURE__ */
|
|
202
|
+
n && /* @__PURE__ */ y("span", {
|
|
202
203
|
id: r,
|
|
203
204
|
className: "text-[11px] text-text-muted",
|
|
204
205
|
"data-testid": "assistant-speak-reason",
|
|
205
206
|
children: e
|
|
206
207
|
}),
|
|
207
|
-
i && /* @__PURE__ */
|
|
208
|
+
i && /* @__PURE__ */ y("span", {
|
|
208
209
|
id: a,
|
|
209
210
|
role: "status",
|
|
210
211
|
className: "text-[11px] text-text-muted",
|
|
@@ -213,21 +214,25 @@ var C = () => /* @__PURE__ */ v("span", {
|
|
|
213
214
|
})
|
|
214
215
|
] });
|
|
215
216
|
})(),
|
|
216
|
-
(
|
|
217
|
+
(k || A) && M && !E.metadata?.localAction && /* @__PURE__ */ b("button", {
|
|
217
218
|
type: "button",
|
|
218
|
-
onClick:
|
|
219
|
-
className: `flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-colors hover:bg-bg-elevated ${
|
|
220
|
-
"aria-label":
|
|
219
|
+
onClick: M,
|
|
220
|
+
className: `flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-colors hover:bg-bg-elevated ${k ? "text-status-error-text" : "text-text-muted hover:text-text-secondary"}`,
|
|
221
|
+
"aria-label": L("message.retry", "Retry"),
|
|
221
222
|
"data-testid": "assistant-message-retry",
|
|
222
|
-
children: [/* @__PURE__ */
|
|
223
|
+
children: [/* @__PURE__ */ y(_, { className: "size-3" }), /* @__PURE__ */ y("span", { children: L("message.retry", "Retry") })]
|
|
223
224
|
})
|
|
224
225
|
]
|
|
225
226
|
}),
|
|
226
|
-
/* @__PURE__ */
|
|
227
|
+
/* @__PURE__ */ b("div", {
|
|
227
228
|
className: "mt-1 text-[10px] text-text-muted",
|
|
228
|
-
children: [$,
|
|
229
|
+
children: [$, E.tokens && /* @__PURE__ */ b("span", {
|
|
229
230
|
className: "ml-2",
|
|
230
|
-
children: [
|
|
231
|
+
children: [
|
|
232
|
+
E.tokens.input + E.tokens.output,
|
|
233
|
+
" ",
|
|
234
|
+
I.tokens
|
|
235
|
+
]
|
|
231
236
|
})]
|
|
232
237
|
})
|
|
233
238
|
]
|
|
@@ -235,4 +240,4 @@ var C = () => /* @__PURE__ */ v("span", {
|
|
|
235
240
|
});
|
|
236
241
|
};
|
|
237
242
|
//#endregion
|
|
238
|
-
export {
|
|
243
|
+
export { T as AssistantMessageItem, w as StreamingCaret };
|
|
@@ -75,4 +75,6 @@ export interface AssistantWriteProposalCardProps {
|
|
|
75
75
|
}
|
|
76
76
|
/** How long the card must stay half visible before it counts as presented. */
|
|
77
77
|
export declare const WRITE_PROPOSAL_PRESENTED_AFTER_MS = 500;
|
|
78
|
+
/** The chip's words: from the record's status, and its result only. */
|
|
79
|
+
export declare function statusText(view: WriteProposalView, tr: AssistantTr): string;
|
|
78
80
|
export declare const AssistantWriteProposalCard: FC<AssistantWriteProposalCardProps>;
|