@frontera-sdk/chat-ui 1.50.78 → 1.50.80
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/agent-picker.js +6 -6
- package/dist/{capture-NO5ZIGP6.js → capture-G4CDPSBH.js} +1 -1
- package/dist/chat.d.ts +1 -1
- package/dist/chat.js +4594 -941
- package/dist/{chunk-V44YVBRX.js → chunk-2P4IEVOQ.js} +29 -12
- package/dist/{chunk-WMN6BPPS.js → chunk-4FRTPVJT.js} +2 -2
- package/dist/{chunk-UTKQ6G2A.js → chunk-5B25DNOG.js} +7 -7
- package/dist/{chunk-FTLVGUG5.js → chunk-7AT2LRVW.js} +2640 -153
- package/dist/{chunk-FNIHHKOZ.js → chunk-C2TZSGKK.js} +1374 -186
- package/dist/{chunk-BDJFVRYR.js → chunk-C3HW5S2Z.js} +57 -18
- package/dist/chunk-CWAOLMFS.js +32 -0
- package/dist/{chunk-26L3ST3H.js → chunk-EFFOOCIK.js} +5975 -639
- package/dist/{chunk-J7EWRXEC.js → chunk-EXPHCRFP.js} +3 -3
- package/dist/{chunk-PH7AYVSS.js → chunk-FLOAEPRU.js} +4 -4
- package/dist/chunk-LGVMMBL3.js +33 -0
- package/dist/{chunk-IQXJEZM7.js → chunk-LOBDKA2D.js} +328 -32
- package/dist/{chunk-FDGBZFGN.js → chunk-PKNEC4LJ.js} +528 -12
- package/dist/{chunk-TSKFBMGC.js → chunk-PUMRNN3R.js} +117 -66
- package/dist/{chunk-S3ECTKA3.js → chunk-QBV7MAFV.js} +30 -4
- package/dist/{chunk-F6PEZE7A.js → chunk-T5SANYSX.js} +3 -10
- package/dist/{chunk-AFVU5VT6.js → chunk-TUDJ35AB.js} +1071 -87
- package/dist/{chunk-ROJM44GB.js → chunk-UWKO24VT.js} +28 -2
- package/dist/{chunk-KHF7OM3F.js → chunk-UZ6RDWCT.js} +4 -4
- package/dist/chunk-X3QVICX7.js +32 -0
- package/dist/client.d.ts +3 -3
- package/dist/client.js +1 -1
- package/dist/header.d.ts +1 -1
- package/dist/header.js +15 -15
- package/dist/message.js +14 -15
- package/dist/new-session.d.ts +1 -1
- package/dist/new-session.js +7 -8
- package/dist/parts.js +6 -6
- package/dist/{pdf-deck-view-inner-AY4FYDAJ.js → pdf-deck-view-inner-KW6RIALH.js} +7 -8
- package/dist/{pdf-document-view-inner-NC5MBN7X.js → pdf-document-view-inner-AJEP5IJC.js} +6 -7
- package/dist/{pdf-viewer-inner-GPES3KG2.js → pdf-viewer-inner-CXWPRACH.js} +2 -2
- package/dist/pending-cards.js +7 -7
- package/dist/platform.css +1 -1
- package/package.json +7 -4
- package/dist/chunk-6BPHEBCF.js +0 -639
- package/dist/chunk-IXDM5R55.js +0 -23
- package/dist/chunk-XLX3L3P4.js +0 -43
- package/dist/vega-chart-block-NQADYNWQ.js +0 -2857
- package/dist/{chunk-7ADM3CKD.js → chunk-6JLWE7M3.js} +0 -0
- package/dist/{pdf-cover-thumbnail-inner-4N2Q5AAG.js → pdf-cover-thumbnail-inner-B2P6S25B.js} +0 -0
- package/dist/{types-BDqLaBfH.d.ts → types-BZhoOcz2.d.ts} +3 -3
- /package/dist/{univer-workbook-LSBVETAQ.js → univer-workbook-PENO65OQ.js} +0 -0
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { usePlugins, useChatCapabilityEnabled, resolvePluginLanguage, renderPluginBlock, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction, TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, ActionMenu, useArtifactStore, ArtifactActionsMenu, useArtifact, resolveArtifactIconFormat, artifactFormatIcon, useArtifactFileObjectUrl, artifactFormatSubtitle, ChatImageLightbox, useClient, processMessageParts, getMessageDisplayTimestampValue, extractCitationsFromSteps, useSourcesEnrichment, extractImagesFromSteps, dedupeImageResults, getDocumentStreamArtifacts, getToolOutput, useCanvasStore, ImageResultsGallery, MessageDecisionCards,
|
|
3
|
-
import { Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription, Popover, PopoverTrigger, PopoverContent } from './chunk-
|
|
4
|
-
import { useTranslation } from './chunk-
|
|
5
|
-
import { MessageToolbar, MessageResponse, Shimmer, Message, MessageContent, deferDuringLayoutMotion, HoverCard, HoverCardTrigger, HoverCardContent, Icon } from './chunk-
|
|
6
|
-
import { Button, ScrollArea, Skeleton } from './chunk-
|
|
7
|
-
import {
|
|
8
|
-
import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent } from './chunk-
|
|
9
|
-
import { HISTORY_CITATION_PREFIX, historyCitationReference, AgentAvatar } from './chunk-
|
|
10
|
-
import { cn } from './chunk-
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { createContext, memo, useMemo, isValidElement, cloneElement, useState, useCallback, useRef, useEffect, useId, useLayoutEffect, useContext } from 'react';
|
|
14
|
-
import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
|
|
2
|
+
import { usePlugins, useChatCapabilityEnabled, resolvePluginLanguage, renderPluginBlock, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction, TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, ActionMenu, useArtifactStore, ArtifactActionsMenu, DotGrid1x3HorizontalTightIcon, useArtifact, resolveArtifactIconFormat, artifactFormatIcon, useArtifactFileObjectUrl, artifactFormatSubtitle, ChatImageLightbox, ArrowsShowIcon, FileDownloadIcon, useClient, processMessageParts, getMessageDisplayTimestampValue, getMessageCreatedAtMs, isApprovalRequested, extractCitationsFromSteps, useSourcesEnrichment, extractImagesFromSteps, dedupeImageResults, getDocumentStreamArtifacts, getToolOutput, useCanvasStore, ImageResultsGallery, MessageDecisionCards, useChatCapabilities, useOptionalWorkspaceContext, useCitationViewer, useChatOverviewStore, dedup, extractDomain, sourceKind, SourceFavicon, Input, exportDocumentPdf, FilePdfIcon, StudioDisplayIcon, WorldIcon, MessageStepsGroup, getToolState, getToolInput, getToolErrorText, useChatOptInEnabled, ArrowRightIcon, formatFileSize, FileThumbnail, MobileScreenSheet, useAgentHistorySource, treatyErrorMessage, useRouter, useBasePath, useAgentPanelStore, AgentRoutineForm, getFileCategory, unwrap, unwrapData, CircleCheckIcon, agentRoutineKeys, LoaderIcon, useOptionalAgentsContext, avatarMotionForStream, AGENT_AVATAR_SIZE } from './chunk-EFFOOCIK.js';
|
|
3
|
+
import { Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription, Popover, PopoverTrigger, PopoverContent } from './chunk-T5SANYSX.js';
|
|
4
|
+
import { useIsMobile, useTranslation } from './chunk-7AT2LRVW.js';
|
|
5
|
+
import { MessageToolbar, MessageResponse, SquareArrowTopRightIcon, FileTextIcon, Shimmer, ClipboardIcon, Message, MessageContent, PencilIcon, deferDuringLayoutMotion, HoverCard, HoverCardTrigger, HoverCardContent, Collapse, Icon, CircleXIcon, ClockIcon } from './chunk-PKNEC4LJ.js';
|
|
6
|
+
import { ChevronDownMediumIcon, Button, ScrollArea, Skeleton } from './chunk-UWKO24VT.js';
|
|
7
|
+
import { CrossMediumIcon } from './chunk-2P4IEVOQ.js';
|
|
8
|
+
import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent } from './chunk-C3HW5S2Z.js';
|
|
9
|
+
import { HISTORY_CITATION_PREFIX, historyCitationReference, AgentAvatar } from './chunk-PUMRNN3R.js';
|
|
10
|
+
import { cn, Checkmark1Icon } from './chunk-LGVMMBL3.js';
|
|
11
|
+
import { useChatClientOptional } from './chunk-6JLWE7M3.js';
|
|
12
|
+
import { createContext, memo, useMemo, isValidElement, cloneElement, useState, useCallback, useRef, useEffect, useId, useLayoutEffect, lazy, Suspense, useContext } from 'react';
|
|
15
13
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
14
|
+
import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
|
|
16
15
|
import { cva } from 'class-variance-authority';
|
|
17
16
|
import '@radix-ui/react-separator';
|
|
18
17
|
import { Slot } from '@radix-ui/react-slot';
|
|
@@ -20,6 +19,90 @@ import { CodeBlock, defaultUrlTransform } from 'streamdown';
|
|
|
20
19
|
import { create } from 'zustand';
|
|
21
20
|
import { toast } from 'sonner';
|
|
22
21
|
|
|
22
|
+
function formatElapsed(ms) {
|
|
23
|
+
const total = Math.max(0, Math.round(ms / 1e3));
|
|
24
|
+
if (total < 60) return `${total}s`;
|
|
25
|
+
const minutes = Math.floor(total / 60);
|
|
26
|
+
if (minutes < 60) {
|
|
27
|
+
const seconds = total % 60;
|
|
28
|
+
return seconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;
|
|
29
|
+
}
|
|
30
|
+
const hours = Math.floor(minutes / 60);
|
|
31
|
+
const rest = minutes % 60;
|
|
32
|
+
return rest === 0 ? `${hours}h` : `${hours}h ${rest}m`;
|
|
33
|
+
}
|
|
34
|
+
function MessageWorkFold({
|
|
35
|
+
isStreaming,
|
|
36
|
+
forceOpen = false,
|
|
37
|
+
persistedDurationMs = null,
|
|
38
|
+
startedAtMs = null,
|
|
39
|
+
children
|
|
40
|
+
}) {
|
|
41
|
+
const expandedByDefault = useChatOptInEnabled("expandedWorkDetails");
|
|
42
|
+
const mountedAt = useRef(isStreaming ? Date.now() : null);
|
|
43
|
+
const anchorRef = useRef(null);
|
|
44
|
+
if (startedAtMs != null && (anchorRef.current === null || startedAtMs < anchorRef.current)) {
|
|
45
|
+
anchorRef.current = startedAtMs;
|
|
46
|
+
}
|
|
47
|
+
const anchor = anchorRef.current;
|
|
48
|
+
const [elapsed, setElapsed] = useState(null);
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
if (!isStreaming) return;
|
|
51
|
+
if (mountedAt.current === null) mountedAt.current = Date.now();
|
|
52
|
+
const tick = () => {
|
|
53
|
+
const from = anchor ?? mountedAt.current ?? Date.now();
|
|
54
|
+
setElapsed(Math.max(0, Date.now() - from));
|
|
55
|
+
};
|
|
56
|
+
tick();
|
|
57
|
+
const id = setInterval(tick, 1e3);
|
|
58
|
+
return () => {
|
|
59
|
+
clearInterval(id);
|
|
60
|
+
tick();
|
|
61
|
+
};
|
|
62
|
+
}, [isStreaming, anchor]);
|
|
63
|
+
const [collapsed, setCollapsed] = useState(
|
|
64
|
+
() => !isStreaming && !expandedByDefault
|
|
65
|
+
);
|
|
66
|
+
const wasStreaming = useRef(isStreaming);
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
if (isStreaming === wasStreaming.current) return;
|
|
69
|
+
wasStreaming.current = isStreaming;
|
|
70
|
+
if (!isStreaming && !expandedByDefault) setCollapsed(true);
|
|
71
|
+
}, [isStreaming, expandedByDefault]);
|
|
72
|
+
const settled = elapsed ?? persistedDurationMs;
|
|
73
|
+
const open = forceOpen || expandedByDefault || !collapsed;
|
|
74
|
+
return /* @__PURE__ */ jsxs("div", { className: "my-1 w-full min-w-0", children: [
|
|
75
|
+
/* @__PURE__ */ jsxs(
|
|
76
|
+
"button",
|
|
77
|
+
{
|
|
78
|
+
type: "button",
|
|
79
|
+
onClick: () => setCollapsed((c) => !c),
|
|
80
|
+
"aria-expanded": open,
|
|
81
|
+
disabled: forceOpen,
|
|
82
|
+
className: cn(
|
|
83
|
+
"flex w-full items-center gap-1.5 py-1.5 text-left text-sm text-muted-foreground transition-colors",
|
|
84
|
+
// The rule under the label runs the full width of the message
|
|
85
|
+
// column, separating the turn's work from the answer below it.
|
|
86
|
+
"border-b border-border",
|
|
87
|
+
!forceOpen && "hover:text-foreground"
|
|
88
|
+
),
|
|
89
|
+
children: [
|
|
90
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 shrink overflow-hidden", children: isStreaming ? /* @__PURE__ */ jsx(Shimmer, { as: "span", className: "text-sm", children: elapsed === null ? "Working\u2026" : `Working for ${formatElapsed(elapsed)}` }) : /* @__PURE__ */ jsx("span", { className: "truncate", children: settled === null ? "Worked" : `Worked for ${formatElapsed(settled)}` }) }),
|
|
91
|
+
/* @__PURE__ */ jsx(
|
|
92
|
+
ChevronDownMediumIcon,
|
|
93
|
+
{
|
|
94
|
+
className: cn(
|
|
95
|
+
"size-3.5 shrink-0 transition-transform duration-200",
|
|
96
|
+
!open && "-rotate-90"
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
),
|
|
103
|
+
/* @__PURE__ */ jsx(Collapse, { open, unmountClosed: true, children: /* @__PURE__ */ jsx("div", { className: "w-full min-w-0", children }) })
|
|
104
|
+
] });
|
|
105
|
+
}
|
|
23
106
|
var agentRoutineOfferKeys = {
|
|
24
107
|
all: ["agentRoutineOffers"],
|
|
25
108
|
result: (workspaceId, conversationId, messageId) => ["agentRoutineOffers", "result", workspaceId, conversationId, messageId],
|
|
@@ -106,6 +189,90 @@ function AgentRoutineOfferFooter({ conversationId, messageId }) {
|
|
|
106
189
|
(accept.isError || dismiss.isError) && /* @__PURE__ */ jsx("p", { role: "alert", className: "mt-2 text-destructive", children: t("agentMode.routines.suggestions.error") })
|
|
107
190
|
] });
|
|
108
191
|
}
|
|
192
|
+
function UserAddedIcon(props) {
|
|
193
|
+
return /* @__PURE__ */ jsxs(
|
|
194
|
+
"svg",
|
|
195
|
+
{
|
|
196
|
+
"aria-hidden": "true",
|
|
197
|
+
role: "img",
|
|
198
|
+
"aria-label": "user-added, people, person, member, checked",
|
|
199
|
+
width: "24px",
|
|
200
|
+
height: "24px",
|
|
201
|
+
viewBox: "0 0 24 24",
|
|
202
|
+
fill: "none",
|
|
203
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
204
|
+
...props,
|
|
205
|
+
children: [
|
|
206
|
+
/* @__PURE__ */ jsx(
|
|
207
|
+
"circle",
|
|
208
|
+
{
|
|
209
|
+
cx: "12",
|
|
210
|
+
cy: "7.75",
|
|
211
|
+
r: "4.5",
|
|
212
|
+
stroke: "currentColor",
|
|
213
|
+
strokeWidth: "1.5",
|
|
214
|
+
strokeLinecap: "round",
|
|
215
|
+
strokeLinejoin: "round"
|
|
216
|
+
}
|
|
217
|
+
),
|
|
218
|
+
/* @__PURE__ */ jsx(
|
|
219
|
+
"path",
|
|
220
|
+
{
|
|
221
|
+
d: "M12.0018 12.25C8.22236 12.25 5.87133 14.4212 4.94874 17.2952C4.44232 18.8728 5.84498 20.25 7.50184 20.25H11.252",
|
|
222
|
+
stroke: "currentColor",
|
|
223
|
+
strokeWidth: "1.5",
|
|
224
|
+
strokeLinecap: "round",
|
|
225
|
+
strokeLinejoin: "round"
|
|
226
|
+
}
|
|
227
|
+
),
|
|
228
|
+
/* @__PURE__ */ jsx(
|
|
229
|
+
"path",
|
|
230
|
+
{
|
|
231
|
+
d: "M14.75 18.5543L16.9318 20.25L20.75 14.25",
|
|
232
|
+
stroke: "currentColor",
|
|
233
|
+
strokeWidth: "1.5",
|
|
234
|
+
strokeLinecap: "round",
|
|
235
|
+
strokeLinejoin: "round"
|
|
236
|
+
}
|
|
237
|
+
)
|
|
238
|
+
]
|
|
239
|
+
}
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
function Email1Icon(props) {
|
|
243
|
+
return /* @__PURE__ */ jsxs(
|
|
244
|
+
"svg",
|
|
245
|
+
{
|
|
246
|
+
"aria-hidden": "true",
|
|
247
|
+
role: "img",
|
|
248
|
+
"aria-label": "email-1, envelope",
|
|
249
|
+
width: "24px",
|
|
250
|
+
height: "24px",
|
|
251
|
+
viewBox: "0 0 24 24",
|
|
252
|
+
fill: "none",
|
|
253
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
254
|
+
...props,
|
|
255
|
+
children: [
|
|
256
|
+
/* @__PURE__ */ jsx(
|
|
257
|
+
"path",
|
|
258
|
+
{
|
|
259
|
+
d: "M21.25 14.45V9.55C21.25 7.86984 21.25 7.02976 20.923 6.38803C20.6354 5.82354 20.1765 5.3646 19.612 5.07698C18.9702 4.75 18.1302 4.75 16.45 4.75H7.55C5.86984 4.75 5.02976 4.75 4.38803 5.07698C3.82354 5.3646 3.3646 5.82354 3.07698 6.38803C2.75 7.02976 2.75 7.86984 2.75 9.55V14.45C2.75 16.1302 2.75 16.9702 3.07698 17.612C3.3646 18.1765 3.82354 18.6354 4.38803 18.923C5.02976 19.25 5.86984 19.25 7.55 19.25H16.45C18.1302 19.25 18.9702 19.25 19.612 18.923C20.1765 18.6354 20.6354 18.1765 20.923 17.612C21.25 16.9702 21.25 16.1302 21.25 14.45Z",
|
|
260
|
+
stroke: "currentColor",
|
|
261
|
+
strokeWidth: "1.5"
|
|
262
|
+
}
|
|
263
|
+
),
|
|
264
|
+
/* @__PURE__ */ jsx(
|
|
265
|
+
"path",
|
|
266
|
+
{
|
|
267
|
+
d: "M21 6L13.8418 11.5675C12.7585 12.4101 11.2415 12.4101 10.1582 11.5675L3 6",
|
|
268
|
+
stroke: "currentColor",
|
|
269
|
+
strokeWidth: "1.5"
|
|
270
|
+
}
|
|
271
|
+
)
|
|
272
|
+
]
|
|
273
|
+
}
|
|
274
|
+
);
|
|
275
|
+
}
|
|
109
276
|
function FieldGroup({ className, ...props }) {
|
|
110
277
|
return /* @__PURE__ */ jsx(
|
|
111
278
|
"div",
|
|
@@ -177,7 +344,7 @@ function FieldValue({ className, ...props }) {
|
|
|
177
344
|
);
|
|
178
345
|
}
|
|
179
346
|
|
|
180
|
-
// src/
|
|
347
|
+
// ../chat/src/ui/chat/supervisor-approval-card/utils.ts
|
|
181
348
|
function parseKeyValueDescription(text) {
|
|
182
349
|
const trimmed = text.trim();
|
|
183
350
|
if (!trimmed) return [];
|
|
@@ -428,6 +595,206 @@ function SupervisorApprovalCard({
|
|
|
428
595
|
] }) })
|
|
429
596
|
] });
|
|
430
597
|
}
|
|
598
|
+
function ForkCodeIcon(props) {
|
|
599
|
+
return /* @__PURE__ */ jsxs(
|
|
600
|
+
"svg",
|
|
601
|
+
{
|
|
602
|
+
"aria-hidden": "true",
|
|
603
|
+
role: "img",
|
|
604
|
+
"aria-label": "fork-code",
|
|
605
|
+
width: "24px",
|
|
606
|
+
height: "24px",
|
|
607
|
+
viewBox: "0 0 24 24",
|
|
608
|
+
fill: "none",
|
|
609
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
610
|
+
...props,
|
|
611
|
+
children: [
|
|
612
|
+
/* @__PURE__ */ jsx(
|
|
613
|
+
"circle",
|
|
614
|
+
{
|
|
615
|
+
cx: "6",
|
|
616
|
+
cy: "6",
|
|
617
|
+
r: "2.25",
|
|
618
|
+
stroke: "currentColor",
|
|
619
|
+
strokeWidth: "1.5",
|
|
620
|
+
strokeLinecap: "round",
|
|
621
|
+
strokeLinejoin: "round"
|
|
622
|
+
}
|
|
623
|
+
),
|
|
624
|
+
/* @__PURE__ */ jsx(
|
|
625
|
+
"circle",
|
|
626
|
+
{
|
|
627
|
+
cx: "12",
|
|
628
|
+
cy: "18",
|
|
629
|
+
r: "2.25",
|
|
630
|
+
stroke: "currentColor",
|
|
631
|
+
strokeWidth: "1.5",
|
|
632
|
+
strokeLinecap: "round",
|
|
633
|
+
strokeLinejoin: "round"
|
|
634
|
+
}
|
|
635
|
+
),
|
|
636
|
+
/* @__PURE__ */ jsx(
|
|
637
|
+
"circle",
|
|
638
|
+
{
|
|
639
|
+
cx: "18",
|
|
640
|
+
cy: "6",
|
|
641
|
+
r: "2.25",
|
|
642
|
+
stroke: "currentColor",
|
|
643
|
+
strokeWidth: "1.5",
|
|
644
|
+
strokeLinecap: "round",
|
|
645
|
+
strokeLinejoin: "round"
|
|
646
|
+
}
|
|
647
|
+
),
|
|
648
|
+
/* @__PURE__ */ jsx(
|
|
649
|
+
"path",
|
|
650
|
+
{
|
|
651
|
+
d: "M6 8.25V9C6 10.6569 7.34315 12 9 12C10.6569 12 12 13.3431 12 15V15.75",
|
|
652
|
+
stroke: "currentColor",
|
|
653
|
+
strokeWidth: "1.5",
|
|
654
|
+
strokeLinecap: "round",
|
|
655
|
+
strokeLinejoin: "round"
|
|
656
|
+
}
|
|
657
|
+
),
|
|
658
|
+
/* @__PURE__ */ jsx(
|
|
659
|
+
"path",
|
|
660
|
+
{
|
|
661
|
+
d: "M18 8.25V9C18 10.6569 16.6569 12 15 12C13.3431 12 12 13.3431 12 15V15.75",
|
|
662
|
+
stroke: "currentColor",
|
|
663
|
+
strokeWidth: "1.5",
|
|
664
|
+
strokeLinecap: "round",
|
|
665
|
+
strokeLinejoin: "round"
|
|
666
|
+
}
|
|
667
|
+
)
|
|
668
|
+
]
|
|
669
|
+
}
|
|
670
|
+
);
|
|
671
|
+
}
|
|
672
|
+
function CircleInfoIcon(props) {
|
|
673
|
+
return /* @__PURE__ */ jsxs(
|
|
674
|
+
"svg",
|
|
675
|
+
{
|
|
676
|
+
"aria-hidden": "true",
|
|
677
|
+
role: "img",
|
|
678
|
+
"aria-label": "circle-info, info circle, tooltip, information",
|
|
679
|
+
width: "24px",
|
|
680
|
+
height: "24px",
|
|
681
|
+
viewBox: "0 0 24 24",
|
|
682
|
+
fill: "none",
|
|
683
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
684
|
+
...props,
|
|
685
|
+
children: [
|
|
686
|
+
/* @__PURE__ */ jsx(
|
|
687
|
+
"path",
|
|
688
|
+
{
|
|
689
|
+
d: "M10.75 11H12L12 16.25M21.25 12C21.25 17.1086 17.1086 21.25 12 21.25C6.89137 21.25 2.75 17.1086 2.75 12C2.75 6.89137 6.89137 2.75 12 2.75C17.1086 2.75 21.25 6.89137 21.25 12Z",
|
|
690
|
+
stroke: "currentColor",
|
|
691
|
+
strokeWidth: "1.5",
|
|
692
|
+
strokeLinecap: "round",
|
|
693
|
+
strokeLinejoin: "round"
|
|
694
|
+
}
|
|
695
|
+
),
|
|
696
|
+
/* @__PURE__ */ jsx(
|
|
697
|
+
"path",
|
|
698
|
+
{
|
|
699
|
+
d: "M12 7.375C11.6548 7.375 11.375 7.65482 11.375 8C11.375 8.34518 11.6548 8.625 12 8.625C12.3452 8.625 12.625 8.34518 12.625 8C12.625 7.65482 12.3452 7.375 12 7.375Z",
|
|
700
|
+
fill: "currentColor",
|
|
701
|
+
stroke: "currentColor",
|
|
702
|
+
strokeWidth: "0.25"
|
|
703
|
+
}
|
|
704
|
+
)
|
|
705
|
+
]
|
|
706
|
+
}
|
|
707
|
+
);
|
|
708
|
+
}
|
|
709
|
+
function ArrowRotateClockwiseIcon(props) {
|
|
710
|
+
return /* @__PURE__ */ jsxs(
|
|
711
|
+
"svg",
|
|
712
|
+
{
|
|
713
|
+
"aria-hidden": "true",
|
|
714
|
+
role: "img",
|
|
715
|
+
"aria-label": "arrow-rotate-clockwise, rotate-right",
|
|
716
|
+
width: "24px",
|
|
717
|
+
height: "24px",
|
|
718
|
+
viewBox: "0 0 24 24",
|
|
719
|
+
fill: "none",
|
|
720
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
721
|
+
...props,
|
|
722
|
+
children: [
|
|
723
|
+
/* @__PURE__ */ jsx(
|
|
724
|
+
"path",
|
|
725
|
+
{
|
|
726
|
+
d: "M18.5 7.00891C16.6791 4.95438 14.7962 3.75 11.979 3.75C7.42266 3.75 3.729 7.44365 3.729 12C3.729 16.5563 7.42266 20.25 11.979 20.25C15.5711 20.25 18.627 17.9543 19.7596 14.75",
|
|
727
|
+
stroke: "currentColor",
|
|
728
|
+
strokeWidth: "1.5",
|
|
729
|
+
strokeLinecap: "round",
|
|
730
|
+
strokeLinejoin: "round"
|
|
731
|
+
}
|
|
732
|
+
),
|
|
733
|
+
/* @__PURE__ */ jsx(
|
|
734
|
+
"path",
|
|
735
|
+
{
|
|
736
|
+
d: "M19.25 4V8H15.25",
|
|
737
|
+
stroke: "currentColor",
|
|
738
|
+
strokeWidth: "1.5",
|
|
739
|
+
strokeLinecap: "round",
|
|
740
|
+
strokeLinejoin: "round"
|
|
741
|
+
}
|
|
742
|
+
)
|
|
743
|
+
]
|
|
744
|
+
}
|
|
745
|
+
);
|
|
746
|
+
}
|
|
747
|
+
function ThumbsUpIcon(props) {
|
|
748
|
+
return /* @__PURE__ */ jsx(
|
|
749
|
+
"svg",
|
|
750
|
+
{
|
|
751
|
+
"aria-hidden": "true",
|
|
752
|
+
role: "img",
|
|
753
|
+
"aria-label": "thumbs-up, thumb, hand, yes, pro",
|
|
754
|
+
width: "24px",
|
|
755
|
+
height: "24px",
|
|
756
|
+
viewBox: "0 0 24 24",
|
|
757
|
+
fill: "none",
|
|
758
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
759
|
+
...props,
|
|
760
|
+
children: /* @__PURE__ */ jsx(
|
|
761
|
+
"path",
|
|
762
|
+
{
|
|
763
|
+
d: "M6.75 10.75H3.75C3.19772 10.75 2.75 11.1977 2.75 11.75V19.25C2.75 19.8023 3.19772 20.25 3.75 20.25H6.75M6.75 20.25V11L10.7208 3.29204C10.8922 2.95918 11.2365 2.75 11.611 2.75C12.8384 2.75 13.7808 3.84535 13.5917 5.0581L13.0161 8.75H18.2589C20.0956 8.75 21.5011 10.3856 21.2248 12.2013L20.3878 17.7013C20.1648 19.167 18.9046 20.25 17.422 20.25H6.75Z",
|
|
764
|
+
stroke: "currentColor",
|
|
765
|
+
strokeWidth: "1.5",
|
|
766
|
+
strokeLinecap: "round",
|
|
767
|
+
strokeLinejoin: "round"
|
|
768
|
+
}
|
|
769
|
+
)
|
|
770
|
+
}
|
|
771
|
+
);
|
|
772
|
+
}
|
|
773
|
+
function ThumbsDownIcon(props) {
|
|
774
|
+
return /* @__PURE__ */ jsx(
|
|
775
|
+
"svg",
|
|
776
|
+
{
|
|
777
|
+
"aria-hidden": "true",
|
|
778
|
+
role: "img",
|
|
779
|
+
"aria-label": "thumbs-down, thumb, hand, no, contra",
|
|
780
|
+
width: "24px",
|
|
781
|
+
height: "24px",
|
|
782
|
+
viewBox: "0 0 24 24",
|
|
783
|
+
fill: "none",
|
|
784
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
785
|
+
...props,
|
|
786
|
+
children: /* @__PURE__ */ jsx(
|
|
787
|
+
"path",
|
|
788
|
+
{
|
|
789
|
+
d: "M17.2521 13.25H20.25C20.8023 13.25 21.25 12.8023 21.25 12.25V4.75C21.25 4.19772 20.8023 3.75 20.25 3.75H17.2521M17.2521 3.75V13L13.2835 20.7078C13.112 21.0407 12.7635 21.25 12.389 21.25V21.25C11.1622 21.25 10.2249 20.1546 10.4139 18.9419L10.9892 15.25H5.74908C3.91335 15.25 2.50859 13.6144 2.78476 11.7987L3.62128 6.29867C3.84421 4.83298 5.1038 3.75 6.5856 3.75H17.2521Z",
|
|
790
|
+
stroke: "currentColor",
|
|
791
|
+
strokeWidth: "1.5",
|
|
792
|
+
strokeLinejoin: "round"
|
|
793
|
+
}
|
|
794
|
+
)
|
|
795
|
+
}
|
|
796
|
+
);
|
|
797
|
+
}
|
|
431
798
|
function useStreamingStickToBottom(isStreaming, viewportSelector = "[data-slot=scroll-area-viewport]") {
|
|
432
799
|
const containerRef = useRef(null);
|
|
433
800
|
useEffect(() => {
|
|
@@ -492,6 +859,58 @@ function CopyButton({ text, className }) {
|
|
|
492
859
|
/* @__PURE__ */ jsx(TooltipContent, { side: "bottom", className: "text-xs", children: copied ? "Copied!" : "Copy" })
|
|
493
860
|
] });
|
|
494
861
|
}
|
|
862
|
+
function VolumeFullIcon(props) {
|
|
863
|
+
return /* @__PURE__ */ jsx(
|
|
864
|
+
"svg",
|
|
865
|
+
{
|
|
866
|
+
"aria-hidden": "true",
|
|
867
|
+
role: "img",
|
|
868
|
+
"aria-label": "volume-full, speaker, loud, sound",
|
|
869
|
+
width: "24px",
|
|
870
|
+
height: "24px",
|
|
871
|
+
viewBox: "0 0 24 24",
|
|
872
|
+
fill: "none",
|
|
873
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
874
|
+
...props,
|
|
875
|
+
children: /* @__PURE__ */ jsx(
|
|
876
|
+
"path",
|
|
877
|
+
{
|
|
878
|
+
d: "M19.2478 4.75194C21.1027 6.60683 22.25 9.16933 22.25 11.9998C22.25 14.8302 21.1027 17.3927 19.2478 19.2476M15.8891 8.11132C16.8844 9.10662 17.5 10.4816 17.5 12.0004C17.5 13.5192 16.8844 14.8942 15.8891 15.8895M3.75 7.74999H5.29844C5.75258 7.74999 6.1932 7.59543 6.54783 7.31173L10.6253 4.04974C11.2801 3.52593 12.25 3.99211 12.25 4.83061V19.1694C12.25 20.0079 11.2801 20.474 10.6253 19.9502L6.54783 16.6883C6.1932 16.4045 5.75258 16.25 5.29844 16.25H3.75C2.64543 16.25 1.75 15.3546 1.75 14.25V9.74999C1.75 8.64542 2.64543 7.74999 3.75 7.74999Z",
|
|
879
|
+
stroke: "currentColor",
|
|
880
|
+
strokeWidth: "1.5",
|
|
881
|
+
strokeLinecap: "round",
|
|
882
|
+
strokeLinejoin: "round"
|
|
883
|
+
}
|
|
884
|
+
)
|
|
885
|
+
}
|
|
886
|
+
);
|
|
887
|
+
}
|
|
888
|
+
function StopIcon(props) {
|
|
889
|
+
return /* @__PURE__ */ jsx(
|
|
890
|
+
"svg",
|
|
891
|
+
{
|
|
892
|
+
"aria-hidden": "true",
|
|
893
|
+
role: "img",
|
|
894
|
+
"aria-label": "stop",
|
|
895
|
+
width: "24px",
|
|
896
|
+
height: "24px",
|
|
897
|
+
viewBox: "0 0 24 24",
|
|
898
|
+
fill: "none",
|
|
899
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
900
|
+
...props,
|
|
901
|
+
children: /* @__PURE__ */ jsx(
|
|
902
|
+
"path",
|
|
903
|
+
{
|
|
904
|
+
d: "M20.25 15.45V8.55C20.25 6.86984 20.25 6.02976 19.923 5.38803C19.6354 4.82354 19.1765 4.3646 18.612 4.07698C17.9702 3.75 17.1302 3.75 15.45 3.75H8.55C6.86984 3.75 6.02976 3.75 5.38803 4.07698C4.82354 4.3646 4.3646 4.82354 4.07698 5.38803C3.75 6.02976 3.75 6.86984 3.75 8.55V15.45C3.75 17.1302 3.75 17.9702 4.07698 18.612C4.3646 19.1765 4.82354 19.6354 5.38803 19.923C6.02976 20.25 6.86984 20.25 8.55 20.25H15.45C17.1302 20.25 17.9702 20.25 18.612 19.923C19.1765 19.6354 19.6354 19.1765 19.923 18.612C20.25 17.9702 20.25 17.1302 20.25 15.45Z",
|
|
905
|
+
stroke: "currentColor",
|
|
906
|
+
strokeWidth: "1.5",
|
|
907
|
+
strokeLinecap: "round",
|
|
908
|
+
strokeLinejoin: "round"
|
|
909
|
+
}
|
|
910
|
+
)
|
|
911
|
+
}
|
|
912
|
+
);
|
|
913
|
+
}
|
|
495
914
|
var SILENT = {
|
|
496
915
|
available: false,
|
|
497
916
|
speakingMessageId: null,
|
|
@@ -529,7 +948,7 @@ function SpeakButton({ messageId, text, className, iconClassName }) {
|
|
|
529
948
|
] });
|
|
530
949
|
}
|
|
531
950
|
|
|
532
|
-
// src/
|
|
951
|
+
// ../chat/src/lib/language-meta.ts
|
|
533
952
|
var ALIASES = {
|
|
534
953
|
ts: "typescript",
|
|
535
954
|
tsx: "tsx",
|
|
@@ -687,6 +1106,133 @@ function ActionSheetRow({
|
|
|
687
1106
|
}
|
|
688
1107
|
);
|
|
689
1108
|
}
|
|
1109
|
+
function BrainIcon(props) {
|
|
1110
|
+
return /* @__PURE__ */ jsxs(
|
|
1111
|
+
"svg",
|
|
1112
|
+
{
|
|
1113
|
+
"aria-hidden": "true",
|
|
1114
|
+
role: "img",
|
|
1115
|
+
"aria-label": "brain, thinking, human, clever",
|
|
1116
|
+
width: "24px",
|
|
1117
|
+
height: "24px",
|
|
1118
|
+
viewBox: "0 0 24 24",
|
|
1119
|
+
fill: "none",
|
|
1120
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1121
|
+
...props,
|
|
1122
|
+
children: [
|
|
1123
|
+
/* @__PURE__ */ jsx(
|
|
1124
|
+
"path",
|
|
1125
|
+
{
|
|
1126
|
+
d: "M4.08682 11C3.87085 10.5454 3.75 10.0368 3.75 9.50002C3.75 7.82446 4.92741 6.4239 6.5 6.08057",
|
|
1127
|
+
stroke: "currentColor",
|
|
1128
|
+
strokeWidth: "1.5",
|
|
1129
|
+
strokeLinecap: "round"
|
|
1130
|
+
}
|
|
1131
|
+
),
|
|
1132
|
+
/* @__PURE__ */ jsx(
|
|
1133
|
+
"path",
|
|
1134
|
+
{
|
|
1135
|
+
d: "M4.08682 11C3.87085 10.5454 3.75 10.0368 3.75 9.50002C3.75 7.82446 4.92741 6.4239 6.5 6.08057",
|
|
1136
|
+
stroke: "currentColor",
|
|
1137
|
+
strokeWidth: "1.5",
|
|
1138
|
+
strokeLinecap: "round"
|
|
1139
|
+
}
|
|
1140
|
+
),
|
|
1141
|
+
/* @__PURE__ */ jsx(
|
|
1142
|
+
"path",
|
|
1143
|
+
{
|
|
1144
|
+
d: "M4.08682 11C3.87085 10.5454 3.75 10.0368 3.75 9.50002C3.75 7.82446 4.92741 6.4239 6.5 6.08057",
|
|
1145
|
+
stroke: "currentColor",
|
|
1146
|
+
strokeWidth: "1.5",
|
|
1147
|
+
strokeLinecap: "round"
|
|
1148
|
+
}
|
|
1149
|
+
),
|
|
1150
|
+
/* @__PURE__ */ jsx(
|
|
1151
|
+
"path",
|
|
1152
|
+
{
|
|
1153
|
+
d: "M19.9132 11C20.1292 10.5454 20.25 10.0368 20.25 9.50002C20.25 7.82446 19.0726 6.4239 17.5 6.08057",
|
|
1154
|
+
stroke: "currentColor",
|
|
1155
|
+
strokeWidth: "1.5",
|
|
1156
|
+
strokeLinecap: "round"
|
|
1157
|
+
}
|
|
1158
|
+
),
|
|
1159
|
+
/* @__PURE__ */ jsx(
|
|
1160
|
+
"path",
|
|
1161
|
+
{
|
|
1162
|
+
d: "M19.9132 11C20.1292 10.5454 20.25 10.0368 20.25 9.50002C20.25 7.82446 19.0726 6.4239 17.5 6.08057",
|
|
1163
|
+
stroke: "currentColor",
|
|
1164
|
+
strokeWidth: "1.5",
|
|
1165
|
+
strokeLinecap: "round"
|
|
1166
|
+
}
|
|
1167
|
+
),
|
|
1168
|
+
/* @__PURE__ */ jsx(
|
|
1169
|
+
"path",
|
|
1170
|
+
{
|
|
1171
|
+
d: "M19.9132 11C20.1292 10.5454 20.25 10.0368 20.25 9.50002C20.25 7.82446 19.0726 6.4239 17.5 6.08057",
|
|
1172
|
+
stroke: "currentColor",
|
|
1173
|
+
strokeWidth: "1.5",
|
|
1174
|
+
strokeLinecap: "round"
|
|
1175
|
+
}
|
|
1176
|
+
),
|
|
1177
|
+
/* @__PURE__ */ jsx(
|
|
1178
|
+
"path",
|
|
1179
|
+
{
|
|
1180
|
+
d: "M7 16.7282C6.61947 16.9028 6.19611 17.0002 5.75 17.0002C4.09315 17.0002 2.75 15.6571 2.75 14.0002C2.75 12.6023 3.70608 11.4278 5 11.0947",
|
|
1181
|
+
stroke: "currentColor",
|
|
1182
|
+
strokeWidth: "1.5",
|
|
1183
|
+
strokeLinecap: "round"
|
|
1184
|
+
}
|
|
1185
|
+
),
|
|
1186
|
+
/* @__PURE__ */ jsx(
|
|
1187
|
+
"path",
|
|
1188
|
+
{
|
|
1189
|
+
d: "M17 16.7282C17.3805 16.9028 17.8039 17.0002 18.25 17.0002C19.9069 17.0002 21.25 15.6571 21.25 14.0002C21.25 12.6023 20.2939 11.4278 19 11.0947",
|
|
1190
|
+
stroke: "currentColor",
|
|
1191
|
+
strokeWidth: "1.5",
|
|
1192
|
+
strokeLinecap: "round"
|
|
1193
|
+
}
|
|
1194
|
+
),
|
|
1195
|
+
/* @__PURE__ */ jsx(
|
|
1196
|
+
"path",
|
|
1197
|
+
{
|
|
1198
|
+
d: "M12 5.375C12 3.92525 10.8247 2.75 9.375 2.75C7.92525 2.75 6.75 3.92525 6.75 5.375C6.75 5.98861 6.96054 6.55304 7.31331 7",
|
|
1199
|
+
stroke: "currentColor",
|
|
1200
|
+
strokeWidth: "1.5",
|
|
1201
|
+
strokeLinecap: "round"
|
|
1202
|
+
}
|
|
1203
|
+
),
|
|
1204
|
+
/* @__PURE__ */ jsx(
|
|
1205
|
+
"path",
|
|
1206
|
+
{
|
|
1207
|
+
d: "M12 5.375C12 3.92525 13.1753 2.75 14.625 2.75C16.0747 2.75 17.25 3.92525 17.25 5.375C17.25 5.98861 17.0395 6.55304 16.6867 7",
|
|
1208
|
+
stroke: "currentColor",
|
|
1209
|
+
strokeWidth: "1.5",
|
|
1210
|
+
strokeLinecap: "round"
|
|
1211
|
+
}
|
|
1212
|
+
),
|
|
1213
|
+
/* @__PURE__ */ jsx("path", { d: "M12 5.25V17.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }),
|
|
1214
|
+
/* @__PURE__ */ jsx(
|
|
1215
|
+
"path",
|
|
1216
|
+
{
|
|
1217
|
+
d: "M12 17.5C12 19.5711 10.3211 21.25 8.25 21.25C6.17893 21.25 4.5 19.5711 4.5 17.5V17",
|
|
1218
|
+
stroke: "currentColor",
|
|
1219
|
+
strokeWidth: "1.5",
|
|
1220
|
+
strokeLinecap: "round"
|
|
1221
|
+
}
|
|
1222
|
+
),
|
|
1223
|
+
/* @__PURE__ */ jsx(
|
|
1224
|
+
"path",
|
|
1225
|
+
{
|
|
1226
|
+
d: "M12 17.5C12 19.5711 13.6789 21.25 15.75 21.25C17.8211 21.25 19.5 19.5711 19.5 17.5V17",
|
|
1227
|
+
stroke: "currentColor",
|
|
1228
|
+
strokeWidth: "1.5",
|
|
1229
|
+
strokeLinecap: "round"
|
|
1230
|
+
}
|
|
1231
|
+
)
|
|
1232
|
+
]
|
|
1233
|
+
}
|
|
1234
|
+
);
|
|
1235
|
+
}
|
|
690
1236
|
var BRAND_PATTERNS = [
|
|
691
1237
|
// Order is load-bearing. Anthropic-on-Vertex must beat generic Vertex.
|
|
692
1238
|
{ match: /anthropic|claude/, icon: "logos:claude-icon", brand: "Anthropic" },
|
|
@@ -755,6 +1301,17 @@ var BRAND_PATTERNS = [
|
|
|
755
1301
|
{ match: /moonshot|kimi/, icon: "hugeicons:kimi-ai", brand: "Moonshot" },
|
|
756
1302
|
{ match: /z-ai|zhipu|(^|[\W_])glm/, icon: "@brand/zai", brand: "Z.ai" },
|
|
757
1303
|
{ match: /openrouter/, icon: "simple-icons:openrouter", brand: "OpenRouter" },
|
|
1304
|
+
// Azure (`azure`, `azure:<slug>`) is a PLATFORM: a deployment whose
|
|
1305
|
+
// name or upstream model names a brand shows that brand (model pass);
|
|
1306
|
+
// only an opaque deployment on a bare Azure row lands here.
|
|
1307
|
+
{ match: /(^|[\W_])azure([\W_:]|$)/, icon: "logos:microsoft-azure", brand: "Azure" },
|
|
1308
|
+
// Netra is an OpenAI-compatible endpoint registered under the slug
|
|
1309
|
+
// `netra`: matched by its provider id only, never by label text. Before
|
|
1310
|
+
// the generic custom rule; a recognizable model id still wins (model pass).
|
|
1311
|
+
{ match: /^custom:netra$/, icon: "@brand/netra", brand: "Netra" },
|
|
1312
|
+
// ElevenLabs (voice and transcription) is a provider id only, never a
|
|
1313
|
+
// model id — matched exactly, like Netra.
|
|
1314
|
+
{ match: /^elevenlabs$/, icon: "@brand/elevenlabs", brand: "ElevenLabs" },
|
|
758
1315
|
// Admin-registered OpenAI-compatible endpoints (`custom:<slug>`) have no
|
|
759
1316
|
// brand of their own — LAST, so a recognizable model id inside a custom
|
|
760
1317
|
// provider (e.g. custom:acme + deepseek-v4) still wins its own glyph.
|
|
@@ -767,10 +1324,24 @@ var LOCAL_BRAND_ICONS = {
|
|
|
767
1324
|
}, viewBox: "0 0 24 24", className, children: [
|
|
768
1325
|
/* @__PURE__ */ jsx("title", { children: "Z.ai" }),
|
|
769
1326
|
/* @__PURE__ */ jsx("path", { d: "M12.105 2L9.927 4.953H.653L2.83 2h9.276zM23.254 19.048L21.078 22h-9.242l2.174-2.952h9.244zM24 2L9.264 22H0L14.736 2H24z" })
|
|
1327
|
+
] }),
|
|
1328
|
+
// Simple Icons "elevenlabs" mark (CC0). currentColor, so it takes the
|
|
1329
|
+
// caller's text colour in both themes. Decorative, like Netra's.
|
|
1330
|
+
"@brand/elevenlabs": ({ className }) => /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", viewBox: "0 0 24 24", style: { flex: "none" }, "aria-hidden": true, className, children: /* @__PURE__ */ jsx("path", { d: "M4.6035 0v24h4.9317V0zm9.8613 0v24h4.9317V0z" }) }),
|
|
1331
|
+
// The mark from netraruntime.com (wordmark dropped). Fixed brand colours,
|
|
1332
|
+
// like the other full-colour logos: a dark tile with a white N reads on
|
|
1333
|
+
// both themes. Decorative: it always sits beside the provider's name.
|
|
1334
|
+
"@brand/netra": ({ className }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", style: { flex: "none" }, "aria-hidden": true, className, children: [
|
|
1335
|
+
/* @__PURE__ */ jsx("rect", { width: "24", height: "24", fill: "#0A0A0A" }),
|
|
1336
|
+
/* @__PURE__ */ jsx("path", { d: "M7.1 17.6V6.4L5 6.05V5H9.2L15.5 13.75V6.4L13.4 6.05V5H19V6.05L16.9 6.4V19H15.5L8.5 9.2V17.6L10.6 17.95V19H5V17.95L7.1 17.6Z", fill: "white" })
|
|
770
1337
|
] })
|
|
771
1338
|
};
|
|
772
1339
|
function matchBrand(row) {
|
|
773
|
-
const model = [
|
|
1340
|
+
const model = [
|
|
1341
|
+
(row.upstreamModelId ?? "").toLowerCase(),
|
|
1342
|
+
(row.modelId ?? "").toLowerCase(),
|
|
1343
|
+
(row.slug ?? "").toLowerCase()
|
|
1344
|
+
].join("|");
|
|
774
1345
|
const provider = (row.provider ?? "").toLowerCase();
|
|
775
1346
|
for (const hay of [model, provider]) {
|
|
776
1347
|
if (!hay.replace(/\|/g, "")) continue;
|
|
@@ -798,15 +1369,15 @@ function modeToBrandRow(mode) {
|
|
|
798
1369
|
A mode key is frozen when the mode is created; the model behind it can be
|
|
799
1370
|
changed afterwards, and several agents carry `key: 'deepseek-v4-pro'` with
|
|
800
1371
|
`name: 'Claude Sonnet 5'`. On the platform the stale key is harmless
|
|
801
|
-
because a real `modelId` sits ahead of it in the haystack.
|
|
802
|
-
withholds `modelId` — it names the checkpoint the
|
|
803
|
-
|
|
804
|
-
key became the only signal and drew a DeepSeek glyph
|
|
805
|
-
label.
|
|
1372
|
+
because a real `modelId` sits ahead of it in the haystack. The embedded
|
|
1373
|
+
chat's agent list withholds `modelId` — it names the checkpoint the
|
|
1374
|
+
deployment runs — and the composer then fills the field with the key
|
|
1375
|
+
itself, so the stale key became the only signal and drew a DeepSeek glyph
|
|
1376
|
+
beside a Claude label.
|
|
806
1377
|
|
|
807
1378
|
Nothing new is disclosed: the name is already rendered next to the icon.
|
|
808
|
-
A
|
|
809
|
-
|
|
1379
|
+
A name that names no model ("Fast") changes nothing: the key stays in
|
|
1380
|
+
the haystack as `slug`, so the brand resolves from it exactly as before.
|
|
810
1381
|
*/
|
|
811
1382
|
modelId: mode.modelId && mode.modelId !== mode.key ? mode.modelId : mode.model ?? mode.name ?? mode.key,
|
|
812
1383
|
slug: mode.key
|
|
@@ -823,7 +1394,7 @@ function ModelIcon({
|
|
|
823
1394
|
return /* @__PURE__ */ jsx(Icon, { icon: name, className });
|
|
824
1395
|
}
|
|
825
1396
|
|
|
826
|
-
// src/
|
|
1397
|
+
// ../chat/src/ui/chat/message-text-block/utils.ts
|
|
827
1398
|
function extractTextContent(node) {
|
|
828
1399
|
if (node.type === "text") return node.value ?? "";
|
|
829
1400
|
if (node.children)
|
|
@@ -1036,7 +1607,7 @@ function MessageActionsSheet({
|
|
|
1036
1607
|
) });
|
|
1037
1608
|
}
|
|
1038
1609
|
|
|
1039
|
-
// src/
|
|
1610
|
+
// ../chat/src/ui/chat/message-actions/utils.ts
|
|
1040
1611
|
var MESSAGE_CONTROLS_REVEAL_CLASS = "transition-opacity duration-150 [@media(hover:hover)]:pointer-events-none [@media(hover:hover)]:opacity-0 [@media(hover:hover)]:group-hover/message:pointer-events-auto [@media(hover:hover)]:group-hover/message:opacity-100 group-focus-within/message:pointer-events-auto group-focus-within/message:opacity-100";
|
|
1041
1612
|
var CHIP_CLASS = "inline-flex items-center rounded-md border border-border bg-secondary px-1.5 py-0.5 text-xs font-medium text-muted-foreground no-underline hover:bg-accent hover:text-foreground cursor-pointer ml-0.5 whitespace-nowrap transition-colors align-baseline";
|
|
1042
1613
|
function CitationChip({
|
|
@@ -1144,7 +1715,7 @@ function CitationChip({
|
|
|
1144
1715
|
] });
|
|
1145
1716
|
}
|
|
1146
1717
|
|
|
1147
|
-
// src/
|
|
1718
|
+
// ../chat/src/ui/chat/history-citation/copy.ts
|
|
1148
1719
|
var historyCitationCopy = {
|
|
1149
1720
|
title: "Earlier exchange",
|
|
1150
1721
|
description: "Retained text from this conversation.",
|
|
@@ -1247,7 +1818,34 @@ function HistoryCitation({ href, label }) {
|
|
|
1247
1818
|
)
|
|
1248
1819
|
] });
|
|
1249
1820
|
}
|
|
1821
|
+
function BubblePlusIcon(props) {
|
|
1822
|
+
return /* @__PURE__ */ jsx(
|
|
1823
|
+
"svg",
|
|
1824
|
+
{
|
|
1825
|
+
"aria-hidden": "true",
|
|
1826
|
+
role: "img",
|
|
1827
|
+
"aria-label": "bubble-plus, comment, feedback",
|
|
1828
|
+
width: "24px",
|
|
1829
|
+
height: "24px",
|
|
1830
|
+
viewBox: "0 0 24 24",
|
|
1831
|
+
fill: "none",
|
|
1832
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1833
|
+
...props,
|
|
1834
|
+
children: /* @__PURE__ */ jsx(
|
|
1835
|
+
"path",
|
|
1836
|
+
{
|
|
1837
|
+
d: "M12 7.75L12 11M12 11V14.25M12 11H8.75M12 11H15.25M9.29422 18.4836L11.3593 20.2147C11.7292 20.5248 12.2679 20.5263 12.6397 20.2183L14.738 18.4799C14.9173 18.3313 15.143 18.25 15.3759 18.25H17.25C18.9069 18.25 20.25 16.9069 20.25 15.25V6.75C20.25 5.09315 18.9069 3.75 17.25 3.75H6.75C5.09315 3.75 3.75 5.09315 3.75 6.75V15.25C3.75 16.9069 5.09315 18.25 6.75 18.25H8.65182C8.88675 18.25 9.11418 18.3327 9.29422 18.4836Z",
|
|
1838
|
+
stroke: "currentColor",
|
|
1839
|
+
strokeWidth: "1.5",
|
|
1840
|
+
strokeLinecap: "round",
|
|
1841
|
+
strokeLinejoin: "round"
|
|
1842
|
+
}
|
|
1843
|
+
)
|
|
1844
|
+
}
|
|
1845
|
+
);
|
|
1846
|
+
}
|
|
1250
1847
|
var COMPOSER_ID_MAIN = "main";
|
|
1848
|
+
var COMPOSER_ID_COPILOT = "copilot";
|
|
1251
1849
|
var useComposerStore = create((set) => ({
|
|
1252
1850
|
modes: [],
|
|
1253
1851
|
readingHistory: false,
|
|
@@ -1655,6 +2253,75 @@ function MessageDetailsContent({ metadata }) {
|
|
|
1655
2253
|
] })
|
|
1656
2254
|
] });
|
|
1657
2255
|
}
|
|
2256
|
+
function DotGrid1x3HorizontalIcon(props) {
|
|
2257
|
+
return /* @__PURE__ */ jsxs(
|
|
2258
|
+
"svg",
|
|
2259
|
+
{
|
|
2260
|
+
"aria-hidden": "true",
|
|
2261
|
+
role: "img",
|
|
2262
|
+
"aria-label": "dot-grid-1x3-horizontal, menu, drag, grab",
|
|
2263
|
+
width: "24px",
|
|
2264
|
+
height: "24px",
|
|
2265
|
+
viewBox: "0 0 24 24",
|
|
2266
|
+
fill: "none",
|
|
2267
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2268
|
+
...props,
|
|
2269
|
+
children: [
|
|
2270
|
+
/* @__PURE__ */ jsx(
|
|
2271
|
+
"path",
|
|
2272
|
+
{
|
|
2273
|
+
d: "M12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13Z",
|
|
2274
|
+
fill: "currentColor"
|
|
2275
|
+
}
|
|
2276
|
+
),
|
|
2277
|
+
/* @__PURE__ */ jsx(
|
|
2278
|
+
"path",
|
|
2279
|
+
{
|
|
2280
|
+
d: "M20.25 13C20.8023 13 21.25 12.5523 21.25 12C21.25 11.4477 20.8023 11 20.25 11C19.6977 11 19.25 11.4477 19.25 12C19.25 12.5523 19.6977 13 20.25 13Z",
|
|
2281
|
+
fill: "currentColor"
|
|
2282
|
+
}
|
|
2283
|
+
),
|
|
2284
|
+
/* @__PURE__ */ jsx(
|
|
2285
|
+
"path",
|
|
2286
|
+
{
|
|
2287
|
+
d: "M3.75 13C4.30228 13 4.75 12.5523 4.75 12C4.75 11.4477 4.30228 11 3.75 11C3.19772 11 2.75 11.4477 2.75 12C2.75 12.5523 3.19772 13 3.75 13Z",
|
|
2288
|
+
fill: "currentColor"
|
|
2289
|
+
}
|
|
2290
|
+
),
|
|
2291
|
+
/* @__PURE__ */ jsx(
|
|
2292
|
+
"path",
|
|
2293
|
+
{
|
|
2294
|
+
d: "M12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13Z",
|
|
2295
|
+
stroke: "currentColor",
|
|
2296
|
+
strokeWidth: "1.5",
|
|
2297
|
+
strokeLinecap: "round",
|
|
2298
|
+
strokeLinejoin: "round"
|
|
2299
|
+
}
|
|
2300
|
+
),
|
|
2301
|
+
/* @__PURE__ */ jsx(
|
|
2302
|
+
"path",
|
|
2303
|
+
{
|
|
2304
|
+
d: "M20.25 13C20.8023 13 21.25 12.5523 21.25 12C21.25 11.4477 20.8023 11 20.25 11C19.6977 11 19.25 11.4477 19.25 12C19.25 12.5523 19.6977 13 20.25 13Z",
|
|
2305
|
+
stroke: "currentColor",
|
|
2306
|
+
strokeWidth: "1.5",
|
|
2307
|
+
strokeLinecap: "round",
|
|
2308
|
+
strokeLinejoin: "round"
|
|
2309
|
+
}
|
|
2310
|
+
),
|
|
2311
|
+
/* @__PURE__ */ jsx(
|
|
2312
|
+
"path",
|
|
2313
|
+
{
|
|
2314
|
+
d: "M3.75 13C4.30228 13 4.75 12.5523 4.75 12C4.75 11.4477 4.30228 11 3.75 11C3.19772 11 2.75 11.4477 2.75 12C2.75 12.5523 3.19772 13 3.75 13Z",
|
|
2315
|
+
stroke: "currentColor",
|
|
2316
|
+
strokeWidth: "1.5",
|
|
2317
|
+
strokeLinecap: "round",
|
|
2318
|
+
strokeLinejoin: "round"
|
|
2319
|
+
}
|
|
2320
|
+
)
|
|
2321
|
+
]
|
|
2322
|
+
}
|
|
2323
|
+
);
|
|
2324
|
+
}
|
|
1658
2325
|
function MessageMoreMenu({
|
|
1659
2326
|
text,
|
|
1660
2327
|
onRegenerate,
|
|
@@ -1745,6 +2412,32 @@ function MessageMoreMenu({
|
|
|
1745
2412
|
] })
|
|
1746
2413
|
] });
|
|
1747
2414
|
}
|
|
2415
|
+
function SendIcon(props) {
|
|
2416
|
+
return /* @__PURE__ */ jsx(
|
|
2417
|
+
"svg",
|
|
2418
|
+
{
|
|
2419
|
+
"aria-hidden": "true",
|
|
2420
|
+
role: "img",
|
|
2421
|
+
"aria-label": "send, email, paper-plane, arrow",
|
|
2422
|
+
width: "24px",
|
|
2423
|
+
height: "24px",
|
|
2424
|
+
viewBox: "0 0 24 24",
|
|
2425
|
+
fill: "none",
|
|
2426
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2427
|
+
...props,
|
|
2428
|
+
children: /* @__PURE__ */ jsx(
|
|
2429
|
+
"path",
|
|
2430
|
+
{
|
|
2431
|
+
d: "M12.7568 21.1941C13.0831 22.7171 15.2274 22.7951 15.6635 21.2998L20.235 5.6259C20.5666 4.48906 19.5119 3.43432 18.375 3.7659L2.70115 8.33745C1.20587 8.77357 1.28384 10.9178 2.80686 11.2442L10.0519 12.7967C10.6294 12.9204 11.0805 13.3715 11.2043 13.9491L12.7568 21.1941Z",
|
|
2432
|
+
stroke: "currentColor",
|
|
2433
|
+
strokeWidth: "1.5",
|
|
2434
|
+
strokeLinecap: "round",
|
|
2435
|
+
strokeLinejoin: "round"
|
|
2436
|
+
}
|
|
2437
|
+
)
|
|
2438
|
+
}
|
|
2439
|
+
);
|
|
2440
|
+
}
|
|
1748
2441
|
var DOMAIN = "failure-categories";
|
|
1749
2442
|
var failureCategoryKeys = {
|
|
1750
2443
|
all: [DOMAIN],
|
|
@@ -2479,6 +3172,34 @@ function useUploadComputerFile(computerId) {
|
|
|
2479
3172
|
}
|
|
2480
3173
|
});
|
|
2481
3174
|
}
|
|
3175
|
+
function SidebarSimpleRightWideIcon(props) {
|
|
3176
|
+
return /* @__PURE__ */ jsxs(
|
|
3177
|
+
"svg",
|
|
3178
|
+
{
|
|
3179
|
+
"aria-hidden": "true",
|
|
3180
|
+
role: "img",
|
|
3181
|
+
"aria-label": "sidebar-simple-right-wide",
|
|
3182
|
+
width: "24px",
|
|
3183
|
+
height: "24px",
|
|
3184
|
+
viewBox: "0 0 24 24",
|
|
3185
|
+
fill: "none",
|
|
3186
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
3187
|
+
...props,
|
|
3188
|
+
children: [
|
|
3189
|
+
/* @__PURE__ */ jsx("path", { d: "M15.75 5V19", stroke: "currentColor", strokeWidth: "1.5", strokeLinejoin: "round" }),
|
|
3190
|
+
/* @__PURE__ */ jsx(
|
|
3191
|
+
"path",
|
|
3192
|
+
{
|
|
3193
|
+
d: "M2.75 7.75C2.75 6.09315 4.09315 4.75 5.75 4.75H18.25C19.9069 4.75 21.25 6.09315 21.25 7.75V16.25C21.25 17.9069 19.9069 19.25 18.25 19.25H5.75C4.09315 19.25 2.75 17.9069 2.75 16.25V7.75Z",
|
|
3194
|
+
stroke: "currentColor",
|
|
3195
|
+
strokeWidth: "1.5",
|
|
3196
|
+
strokeLinejoin: "round"
|
|
3197
|
+
}
|
|
3198
|
+
)
|
|
3199
|
+
]
|
|
3200
|
+
}
|
|
3201
|
+
);
|
|
3202
|
+
}
|
|
2482
3203
|
var AppOpenInButton = memo(function AppOpenInButton2({
|
|
2483
3204
|
href,
|
|
2484
3205
|
onOpenPanel
|
|
@@ -2560,6 +3281,120 @@ function AppCard({ title, computerId, appId, onClick }) {
|
|
|
2560
3281
|
}
|
|
2561
3282
|
);
|
|
2562
3283
|
}
|
|
3284
|
+
function ArrowUpRightIcon(props) {
|
|
3285
|
+
return /* @__PURE__ */ jsx(
|
|
3286
|
+
"svg",
|
|
3287
|
+
{
|
|
3288
|
+
"aria-hidden": "true",
|
|
3289
|
+
role: "img",
|
|
3290
|
+
"aria-label": "arrow-up-right",
|
|
3291
|
+
width: "24px",
|
|
3292
|
+
height: "24px",
|
|
3293
|
+
viewBox: "0 0 24 24",
|
|
3294
|
+
fill: "none",
|
|
3295
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
3296
|
+
...props,
|
|
3297
|
+
children: /* @__PURE__ */ jsx(
|
|
3298
|
+
"path",
|
|
3299
|
+
{
|
|
3300
|
+
d: "M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18",
|
|
3301
|
+
stroke: "currentColor",
|
|
3302
|
+
strokeWidth: "1.5",
|
|
3303
|
+
strokeLinecap: "round",
|
|
3304
|
+
strokeLinejoin: "round"
|
|
3305
|
+
}
|
|
3306
|
+
)
|
|
3307
|
+
}
|
|
3308
|
+
);
|
|
3309
|
+
}
|
|
3310
|
+
function CheckCircle2Icon(props) {
|
|
3311
|
+
return /* @__PURE__ */ jsxs(
|
|
3312
|
+
"svg",
|
|
3313
|
+
{
|
|
3314
|
+
"aria-hidden": "true",
|
|
3315
|
+
role: "img",
|
|
3316
|
+
"aria-label": "check-circle-2, done, confirm, save, success",
|
|
3317
|
+
width: "24px",
|
|
3318
|
+
height: "24px",
|
|
3319
|
+
viewBox: "0 0 24 24",
|
|
3320
|
+
fill: "none",
|
|
3321
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
3322
|
+
...props,
|
|
3323
|
+
children: [
|
|
3324
|
+
/* @__PURE__ */ jsx(
|
|
3325
|
+
"circle",
|
|
3326
|
+
{
|
|
3327
|
+
cx: "12",
|
|
3328
|
+
cy: "12",
|
|
3329
|
+
r: "9.25",
|
|
3330
|
+
stroke: "currentColor",
|
|
3331
|
+
strokeWidth: "1.5",
|
|
3332
|
+
strokeLinecap: "round",
|
|
3333
|
+
strokeLinejoin: "round"
|
|
3334
|
+
}
|
|
3335
|
+
),
|
|
3336
|
+
/* @__PURE__ */ jsx(
|
|
3337
|
+
"path",
|
|
3338
|
+
{
|
|
3339
|
+
d: "M7.75 12.9231L10.5625 15.75L15.25 8.75",
|
|
3340
|
+
stroke: "currentColor",
|
|
3341
|
+
strokeWidth: "1.5",
|
|
3342
|
+
strokeLinecap: "round",
|
|
3343
|
+
strokeLinejoin: "round"
|
|
3344
|
+
}
|
|
3345
|
+
)
|
|
3346
|
+
]
|
|
3347
|
+
}
|
|
3348
|
+
);
|
|
3349
|
+
}
|
|
3350
|
+
function CircleQuestionmarkIcon(props) {
|
|
3351
|
+
return /* @__PURE__ */ jsxs(
|
|
3352
|
+
"svg",
|
|
3353
|
+
{
|
|
3354
|
+
"aria-hidden": "true",
|
|
3355
|
+
role: "img",
|
|
3356
|
+
"aria-label": "circle-questionmark, faq, help, questionaire",
|
|
3357
|
+
width: "24px",
|
|
3358
|
+
height: "24px",
|
|
3359
|
+
viewBox: "0 0 24 24",
|
|
3360
|
+
fill: "none",
|
|
3361
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
3362
|
+
...props,
|
|
3363
|
+
children: [
|
|
3364
|
+
/* @__PURE__ */ jsx(
|
|
3365
|
+
"path",
|
|
3366
|
+
{
|
|
3367
|
+
d: "M12 21.25C17.1086 21.25 21.25 17.1086 21.25 12C21.25 6.89137 17.1086 2.75 12 2.75C6.89137 2.75 2.75 6.89137 2.75 12C2.75 17.1086 6.89137 21.25 12 21.25Z",
|
|
3368
|
+
stroke: "currentColor",
|
|
3369
|
+
strokeWidth: "1.5",
|
|
3370
|
+
strokeLinecap: "round",
|
|
3371
|
+
strokeLinejoin: "round"
|
|
3372
|
+
}
|
|
3373
|
+
),
|
|
3374
|
+
/* @__PURE__ */ jsx(
|
|
3375
|
+
"path",
|
|
3376
|
+
{
|
|
3377
|
+
d: "M12 16V15.99M12.25 16C12.25 16.1381 12.1381 16.25 12 16.25C11.8619 16.25 11.75 16.1381 11.75 16C11.75 15.8619 11.8619 15.75 12 15.75C12.1381 15.75 12.25 15.8619 12.25 16Z",
|
|
3378
|
+
stroke: "currentColor",
|
|
3379
|
+
strokeWidth: "1.5",
|
|
3380
|
+
strokeLinecap: "round",
|
|
3381
|
+
strokeLinejoin: "round"
|
|
3382
|
+
}
|
|
3383
|
+
),
|
|
3384
|
+
/* @__PURE__ */ jsx(
|
|
3385
|
+
"path",
|
|
3386
|
+
{
|
|
3387
|
+
d: "M9.75 9.25001C10.5 7.00001 14.25 7.19157 14.25 9.54133C14.25 11.2008 12 11.4614 12 13.25",
|
|
3388
|
+
stroke: "currentColor",
|
|
3389
|
+
strokeWidth: "1.5",
|
|
3390
|
+
strokeLinecap: "round",
|
|
3391
|
+
strokeLinejoin: "round"
|
|
3392
|
+
}
|
|
3393
|
+
)
|
|
3394
|
+
]
|
|
3395
|
+
}
|
|
3396
|
+
);
|
|
3397
|
+
}
|
|
2563
3398
|
var NEW_CHAT_EFFORT_KEY = "__new__";
|
|
2564
3399
|
var useChatStreamStore = create((set, get) => ({
|
|
2565
3400
|
streams: {},
|
|
@@ -2570,6 +3405,7 @@ var useChatStreamStore = create((set, get) => ({
|
|
|
2570
3405
|
messageWebSearchAugment: {},
|
|
2571
3406
|
messageFileAttachments: {},
|
|
2572
3407
|
messageQueue: {},
|
|
3408
|
+
turnOutcomes: {},
|
|
2573
3409
|
agentMessageDelivery: {},
|
|
2574
3410
|
thinkingEnabled: true,
|
|
2575
3411
|
reasoningEffortBySession: {},
|
|
@@ -2592,6 +3428,17 @@ var useChatStreamStore = create((set, get) => ({
|
|
|
2592
3428
|
}
|
|
2593
3429
|
}
|
|
2594
3430
|
),
|
|
3431
|
+
setAwaitingApprovalToolCalls: (sessionId, calls) => set((state) => {
|
|
3432
|
+
const prev = state.streams[sessionId];
|
|
3433
|
+
const prevCalls = prev?.awaitingApprovalToolCalls;
|
|
3434
|
+
if (prevCalls ? shallowSameCalls(prevCalls, calls) : Object.keys(calls).length === 0) return {};
|
|
3435
|
+
return {
|
|
3436
|
+
streams: {
|
|
3437
|
+
...state.streams,
|
|
3438
|
+
[sessionId]: { ...prev, status: prev?.status ?? "idle", awaitingApprovalToolCalls: calls }
|
|
3439
|
+
}
|
|
3440
|
+
};
|
|
3441
|
+
}),
|
|
2595
3442
|
setInflightToolCalls: (sessionId, calls) => set((state) => {
|
|
2596
3443
|
const prev = state.streams[sessionId];
|
|
2597
3444
|
const prevCalls = prev?.inflightToolCalls;
|
|
@@ -2712,6 +3559,7 @@ var useChatStreamStore = create((set, get) => ({
|
|
|
2712
3559
|
}
|
|
2713
3560
|
}
|
|
2714
3561
|
}),
|
|
3562
|
+
setTurnOutcome: (sessionId, outcome) => set((state) => ({ turnOutcomes: { ...state.turnOutcomes, [sessionId]: { outcome, at: Date.now() } } })),
|
|
2715
3563
|
enqueueMessage: (sessionId, msg) => set((state) => ({
|
|
2716
3564
|
messageQueue: {
|
|
2717
3565
|
...state.messageQueue,
|
|
@@ -2873,35 +3721,46 @@ function shallowEqualInput(a, b) {
|
|
|
2873
3721
|
return true;
|
|
2874
3722
|
}
|
|
2875
3723
|
|
|
2876
|
-
// src/
|
|
2877
|
-
function stagePendingNewSessionPrompt(text, fileAttachments, modelMode, conversationId) {
|
|
3724
|
+
// ../chat/src/ui/shell/new-session-prompt/utils.ts
|
|
3725
|
+
function stagePendingNewSessionPrompt(text, fileAttachments, modelMode, conversationId, effortKey = NEW_CHAT_EFFORT_KEY, composer) {
|
|
2878
3726
|
const store = useChatStreamStore.getState();
|
|
2879
|
-
const effort = store.reasoningEffortBySession[
|
|
3727
|
+
const effort = store.reasoningEffortBySession[effortKey];
|
|
2880
3728
|
store.setPendingChat({
|
|
2881
3729
|
...conversationId ? { conversationId } : {},
|
|
2882
3730
|
prompt: text,
|
|
2883
3731
|
...{},
|
|
2884
3732
|
...{},
|
|
2885
|
-
...effort ? { reasoningEffort: effort } : {}
|
|
3733
|
+
...effort ? { reasoningEffort: effort } : {},
|
|
3734
|
+
...{},
|
|
3735
|
+
...{},
|
|
3736
|
+
...{},
|
|
3737
|
+
...{},
|
|
3738
|
+
...{}
|
|
2886
3739
|
});
|
|
2887
|
-
if (effort) store.setReasoningEffort(
|
|
3740
|
+
if (effort) store.setReasoningEffort(effortKey, null);
|
|
2888
3741
|
}
|
|
2889
3742
|
var DOMAIN2 = "sessions";
|
|
2890
3743
|
var sessionKeys = {
|
|
2891
|
-
|
|
3744
|
+
// The active workspace is part of both list keys. It scopes the response
|
|
3745
|
+
// (the server reads `x-workspace-id`, and answers a request without one by
|
|
3746
|
+
// flattening across every membership) but travels as a header, so without it
|
|
3747
|
+
// in the key one cache entry holds two different answers: the pre-selection
|
|
3748
|
+
// list renders, then the scoped refetch silently replaces it and the sidebar
|
|
3749
|
+
// visibly collapses from every workspace's history to the active one's.
|
|
3750
|
+
list: (params, workspaceId) => [DOMAIN2, "list", params, workspaceId ?? null],
|
|
2892
3751
|
// Infinite list MUST NOT share a key with `list`: react-query stores one cache
|
|
2893
3752
|
// entry per key, and the infinite shape (`{ pages, pageParams }`) is incompatible
|
|
2894
3753
|
// with the plain query shape (`{ data, nextCursor, counts }`). Sharing corrupts
|
|
2895
3754
|
// whichever hook reads after the other writes — crashing the infinite reader in
|
|
2896
3755
|
// `getNextPageParam` (`pages.length` on undefined). Keep the `[DOMAIN, 'list']`
|
|
2897
3756
|
// prefix so existing prefix-invalidations cover both keys.
|
|
2898
|
-
infiniteList: (params) => [DOMAIN2, "list", "infinite", params],
|
|
3757
|
+
infiniteList: (params, workspaceId) => [DOMAIN2, "list", "infinite", params, workspaceId ?? null],
|
|
2899
3758
|
detail: (id) => [DOMAIN2, "detail", id],
|
|
2900
3759
|
messages: (id) => [DOMAIN2, "messages", id],
|
|
2901
3760
|
share: (id) => [DOMAIN2, "share", id]
|
|
2902
3761
|
};
|
|
2903
3762
|
|
|
2904
|
-
// src/
|
|
3763
|
+
// ../chat/src/lib/services/session-handoff/session-handoff-hooks.ts
|
|
2905
3764
|
var DOMAIN3 = "sessionHandoff";
|
|
2906
3765
|
var sessionHandoffKeys = {
|
|
2907
3766
|
all: [DOMAIN3],
|
|
@@ -3153,6 +4012,32 @@ function PublishedCard({ details }) {
|
|
|
3153
4012
|
}
|
|
3154
4013
|
);
|
|
3155
4014
|
}
|
|
4015
|
+
function ChevronTopMediumIcon(props) {
|
|
4016
|
+
return /* @__PURE__ */ jsx(
|
|
4017
|
+
"svg",
|
|
4018
|
+
{
|
|
4019
|
+
"aria-hidden": "true",
|
|
4020
|
+
role: "img",
|
|
4021
|
+
"aria-label": "chevron-top-medium",
|
|
4022
|
+
width: "24px",
|
|
4023
|
+
height: "24px",
|
|
4024
|
+
viewBox: "0 0 24 24",
|
|
4025
|
+
fill: "none",
|
|
4026
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4027
|
+
...props,
|
|
4028
|
+
children: /* @__PURE__ */ jsx(
|
|
4029
|
+
"path",
|
|
4030
|
+
{
|
|
4031
|
+
d: "M5.75 14.5L12 8.25L18.25 14.5",
|
|
4032
|
+
stroke: "currentColor",
|
|
4033
|
+
strokeWidth: "1.5",
|
|
4034
|
+
strokeLinecap: "round",
|
|
4035
|
+
strokeLinejoin: "round"
|
|
4036
|
+
}
|
|
4037
|
+
)
|
|
4038
|
+
}
|
|
4039
|
+
);
|
|
4040
|
+
}
|
|
3156
4041
|
var ArtifactOpenInButton = memo(function ArtifactOpenInButton2({
|
|
3157
4042
|
artifactId,
|
|
3158
4043
|
title,
|
|
@@ -3395,7 +4280,7 @@ var MessageArtifactList = memo(function MessageArtifactList2({
|
|
|
3395
4280
|
] });
|
|
3396
4281
|
});
|
|
3397
4282
|
|
|
3398
|
-
// src/
|
|
4283
|
+
// ../platform-kit/src/lib/csv-to-workbook.ts
|
|
3399
4284
|
var CSV_PREVIEW_MAX_ROWS = 1e3;
|
|
3400
4285
|
function coerceNumeric(c) {
|
|
3401
4286
|
if (typeof c === "string") {
|
|
@@ -3770,6 +4655,80 @@ var DocumentStreamCard = memo(function DocumentStreamCard2({
|
|
|
3770
4655
|
}
|
|
3771
4656
|
);
|
|
3772
4657
|
});
|
|
4658
|
+
function WarningSignIcon(props) {
|
|
4659
|
+
return /* @__PURE__ */ jsx(
|
|
4660
|
+
"svg",
|
|
4661
|
+
{
|
|
4662
|
+
"aria-hidden": "true",
|
|
4663
|
+
role: "img",
|
|
4664
|
+
"aria-label": "warning-sign,attention,coution",
|
|
4665
|
+
width: "24px",
|
|
4666
|
+
height: "24px",
|
|
4667
|
+
viewBox: "0 0 24 24",
|
|
4668
|
+
fill: "none",
|
|
4669
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4670
|
+
...props,
|
|
4671
|
+
children: /* @__PURE__ */ jsx(
|
|
4672
|
+
"path",
|
|
4673
|
+
{
|
|
4674
|
+
d: "M2.75 20.25L6.19407 6.0432C6.52028 4.69758 7.72503 3.75 9.10962 3.75H14.0715M14.0715 3.75H14.8904C16.275 3.75 17.4797 4.69758 17.8059 6.0432L21.25 20.25M14.0715 3.75C15.6906 3.75 16.8826 5.26551 16.5012 6.839L14.0985 16.75M13.25 20.25L14.0985 16.75M14.0985 16.75H4M14.0985 16.75H20",
|
|
4675
|
+
stroke: "currentColor",
|
|
4676
|
+
strokeWidth: "1.5",
|
|
4677
|
+
strokeLinecap: "round",
|
|
4678
|
+
strokeLinejoin: "round"
|
|
4679
|
+
}
|
|
4680
|
+
)
|
|
4681
|
+
}
|
|
4682
|
+
);
|
|
4683
|
+
}
|
|
4684
|
+
function FloppyDisk1Icon(props) {
|
|
4685
|
+
return /* @__PURE__ */ jsxs(
|
|
4686
|
+
"svg",
|
|
4687
|
+
{
|
|
4688
|
+
"aria-hidden": "true",
|
|
4689
|
+
role: "img",
|
|
4690
|
+
"aria-label": "floppy-disk-1, save",
|
|
4691
|
+
width: "24px",
|
|
4692
|
+
height: "24px",
|
|
4693
|
+
viewBox: "0 0 24 24",
|
|
4694
|
+
fill: "none",
|
|
4695
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4696
|
+
...props,
|
|
4697
|
+
children: [
|
|
4698
|
+
/* @__PURE__ */ jsx(
|
|
4699
|
+
"path",
|
|
4700
|
+
{
|
|
4701
|
+
d: "M3.75 6.75C3.75 5.09315 5.09315 3.75 6.75 3.75H16.0074C16.803 3.75 17.5661 4.06607 18.1287 4.62868L19.3713 5.87132C19.9339 6.43393 20.25 7.19699 20.25 7.99264V17.25C20.25 18.9069 18.9069 20.25 17.25 20.25H6.75C5.09315 20.25 3.75 18.9069 3.75 17.25V6.75Z",
|
|
4702
|
+
stroke: "currentColor",
|
|
4703
|
+
strokeWidth: "1.5",
|
|
4704
|
+
strokeLinecap: "round",
|
|
4705
|
+
strokeLinejoin: "round"
|
|
4706
|
+
}
|
|
4707
|
+
),
|
|
4708
|
+
/* @__PURE__ */ jsx(
|
|
4709
|
+
"path",
|
|
4710
|
+
{
|
|
4711
|
+
d: "M7.75 19.25V13.75C7.75 13.1977 8.19772 12.75 8.75 12.75H15.25C15.8023 12.75 16.25 13.1977 16.25 13.75V19.25C16.25 19.8023 15.8023 20.25 15.25 20.25H8.75C8.19772 20.25 7.75 19.8023 7.75 19.25Z",
|
|
4712
|
+
stroke: "currentColor",
|
|
4713
|
+
strokeWidth: "1.5",
|
|
4714
|
+
strokeLinecap: "round",
|
|
4715
|
+
strokeLinejoin: "round"
|
|
4716
|
+
}
|
|
4717
|
+
),
|
|
4718
|
+
/* @__PURE__ */ jsx(
|
|
4719
|
+
"path",
|
|
4720
|
+
{
|
|
4721
|
+
d: "M7.75 3.75V7.25C7.75 7.80228 8.19772 8.25 8.75 8.25H15.25C15.8023 8.25 16.25 7.80228 16.25 7.25V3.75",
|
|
4722
|
+
stroke: "currentColor",
|
|
4723
|
+
strokeWidth: "1.5",
|
|
4724
|
+
strokeLinecap: "round",
|
|
4725
|
+
strokeLinejoin: "round"
|
|
4726
|
+
}
|
|
4727
|
+
)
|
|
4728
|
+
]
|
|
4729
|
+
}
|
|
4730
|
+
);
|
|
4731
|
+
}
|
|
3773
4732
|
function useCreateCanvasArtifact() {
|
|
3774
4733
|
const client = useClient();
|
|
3775
4734
|
return useCallback(
|
|
@@ -3783,7 +4742,7 @@ function useCreateCanvasArtifact() {
|
|
|
3783
4742
|
);
|
|
3784
4743
|
}
|
|
3785
4744
|
|
|
3786
|
-
// src/
|
|
4745
|
+
// ../chat/src/lib/canvas/canvas-protocol.ts
|
|
3787
4746
|
function isCanvasRuntimeMessage(d) {
|
|
3788
4747
|
if (!d || typeof d !== "object") return false;
|
|
3789
4748
|
const m = d;
|
|
@@ -3801,7 +4760,7 @@ function isCanvasRuntimeMessage(d) {
|
|
|
3801
4760
|
}
|
|
3802
4761
|
}
|
|
3803
4762
|
|
|
3804
|
-
// src/
|
|
4763
|
+
// ../platform-kit/src/lib/tokens.ts
|
|
3805
4764
|
var hsl = (name) => `hsl(var(${name}))`;
|
|
3806
4765
|
var v = (name) => `var(${name})`;
|
|
3807
4766
|
var tokens = {
|
|
@@ -3884,7 +4843,7 @@ var tokens = {
|
|
|
3884
4843
|
chart12: v("--chart-12")
|
|
3885
4844
|
};
|
|
3886
4845
|
|
|
3887
|
-
// src/
|
|
4846
|
+
// ../chat/src/lib/canvas/resolve-canvas-tokens.ts
|
|
3888
4847
|
var TOKEN_KEYS = [
|
|
3889
4848
|
"background",
|
|
3890
4849
|
"foreground",
|
|
@@ -4230,7 +5189,7 @@ function CanvasCard({
|
|
|
4230
5189
|
] });
|
|
4231
5190
|
}
|
|
4232
5191
|
|
|
4233
|
-
// src/
|
|
5192
|
+
// ../chat/src/ui/chat/follow-up-polling.ts
|
|
4234
5193
|
var DEFAULT_ATTEMPTS = 10;
|
|
4235
5194
|
var DEFAULT_INITIAL_DELAY_MS = 1e3;
|
|
4236
5195
|
var DEFAULT_RETRY_DELAY_MS = 1e3;
|
|
@@ -4276,7 +5235,8 @@ var AssistantMessage = memo(function AssistantMessage2({
|
|
|
4276
5235
|
onFeedback,
|
|
4277
5236
|
onFeedbackDetail,
|
|
4278
5237
|
feedbackRating,
|
|
4279
|
-
timestamp
|
|
5238
|
+
timestamp,
|
|
5239
|
+
turnStartedAtMs
|
|
4280
5240
|
}) {
|
|
4281
5241
|
const client = useClient();
|
|
4282
5242
|
const openViewer = useArtifactStore((s) => s.openViewer);
|
|
@@ -4292,6 +5252,8 @@ var AssistantMessage = memo(function AssistantMessage2({
|
|
|
4292
5252
|
const followUpsEnabled = useChatCapabilityEnabled("followUps");
|
|
4293
5253
|
const workDetailsEnabled = useChatCapabilityEnabled("workDetails");
|
|
4294
5254
|
const richTextEnabled = useChatCapabilityEnabled("richText");
|
|
5255
|
+
const webSearchImageResultsEnabled = useChatCapabilityEnabled("webSearchImageResults");
|
|
5256
|
+
const workFoldEnabled = useChatCapabilityEnabled("workFold");
|
|
4295
5257
|
const persistedFollowUps = useMemo(() => {
|
|
4296
5258
|
const part = parts.find((p) => p.type === "follow-ups");
|
|
4297
5259
|
return part?.suggestions ?? null;
|
|
@@ -4364,6 +5326,18 @@ var AssistantMessage = memo(function AssistantMessage2({
|
|
|
4364
5326
|
metadata
|
|
4365
5327
|
});
|
|
4366
5328
|
const displayTimestamp = displayTimestampValue ? new Date(displayTimestampValue) : void 0;
|
|
5329
|
+
const startedAtMs = useMemo(
|
|
5330
|
+
() => getMessageCreatedAtMs(message) ?? turnStartedAtMs ?? null,
|
|
5331
|
+
[message, turnStartedAtMs]
|
|
5332
|
+
);
|
|
5333
|
+
const persistedDurationMs = useMemo(() => {
|
|
5334
|
+
const completedAt = metadata?.completedAt;
|
|
5335
|
+
if (completedAt == null || startedAtMs == null) return null;
|
|
5336
|
+
const end = new Date(completedAt).getTime();
|
|
5337
|
+
if (!Number.isFinite(end)) return null;
|
|
5338
|
+
const elapsed = end - startedAtMs;
|
|
5339
|
+
return elapsed >= 1e3 ? elapsed : null;
|
|
5340
|
+
}, [metadata, startedAtMs]);
|
|
4367
5341
|
const followUps = persistedFollowUps ?? polledFollowUps;
|
|
4368
5342
|
const showFollowUps = followUpsEnabled && isLastMessage && followUps && followUps.length > 0 && onFollowUpClick && status !== "streaming";
|
|
4369
5343
|
const messageText = useMemo(
|
|
@@ -4388,6 +5362,28 @@ var AssistantMessage = memo(function AssistantMessage2({
|
|
|
4388
5362
|
),
|
|
4389
5363
|
[processedParts]
|
|
4390
5364
|
);
|
|
5365
|
+
const hasWorkParts = useMemo(
|
|
5366
|
+
() => processedParts.some((p) => p.kind !== "text"),
|
|
5367
|
+
[processedParts]
|
|
5368
|
+
);
|
|
5369
|
+
const workSplitIndex = !workFoldEnabled || !hasWorkParts ? -1 : isStreamingMessage ? processedParts.length : lastTextIndex > 0 ? lastTextIndex : -1;
|
|
5370
|
+
const canvasesWithAnswer = !isStreamingMessage && workSplitIndex !== -1;
|
|
5371
|
+
const foldPartIndices = useMemo(() => {
|
|
5372
|
+
const indices = /* @__PURE__ */ new Set();
|
|
5373
|
+
if (workSplitIndex === -1) return indices;
|
|
5374
|
+
processedParts.forEach((processed, index) => {
|
|
5375
|
+
if (canvasesWithAnswer && processed.kind === "canvas") return;
|
|
5376
|
+
if (index < workSplitIndex) indices.add(index);
|
|
5377
|
+
else if (index > workSplitIndex && processed.kind !== "text") indices.add(index);
|
|
5378
|
+
});
|
|
5379
|
+
return indices;
|
|
5380
|
+
}, [processedParts, workSplitIndex, canvasesWithAnswer]);
|
|
5381
|
+
const hasPendingDecision = useMemo(
|
|
5382
|
+
() => processedParts.some(
|
|
5383
|
+
(p) => p.kind === "steps-group" && p.items.some((item) => isApprovalRequested(item.part))
|
|
5384
|
+
),
|
|
5385
|
+
[processedParts]
|
|
5386
|
+
);
|
|
4391
5387
|
const allCitations = useMemo(() => {
|
|
4392
5388
|
const citations = [];
|
|
4393
5389
|
for (const part of processedParts) {
|
|
@@ -4401,16 +5397,17 @@ var AssistantMessage = memo(function AssistantMessage2({
|
|
|
4401
5397
|
const imageResults = useMemo(() => {
|
|
4402
5398
|
const galleryImages = [];
|
|
4403
5399
|
const inlineImageUrls = /* @__PURE__ */ new Set();
|
|
5400
|
+
const visibleImageTool = webSearchImageResultsEnabled ? void 0 : "display_image";
|
|
4404
5401
|
for (const part of processedParts) {
|
|
4405
5402
|
if (part.kind === "steps-group") {
|
|
4406
|
-
galleryImages.push(...extractImagesFromSteps(part.items, "gallery"));
|
|
4407
|
-
for (const image of extractImagesFromSteps(part.items, "inline")) {
|
|
5403
|
+
galleryImages.push(...extractImagesFromSteps(part.items, "gallery", visibleImageTool));
|
|
5404
|
+
for (const image of extractImagesFromSteps(part.items, "inline", visibleImageTool)) {
|
|
4408
5405
|
inlineImageUrls.add(image.url);
|
|
4409
5406
|
}
|
|
4410
5407
|
}
|
|
4411
5408
|
}
|
|
4412
5409
|
return dedupeImageResults(galleryImages).filter((image) => !inlineImageUrls.has(image.url));
|
|
4413
|
-
}, [processedParts]);
|
|
5410
|
+
}, [processedParts, webSearchImageResultsEnabled]);
|
|
4414
5411
|
const documentArtifactIds = useMemo(() => {
|
|
4415
5412
|
const ids = /* @__PURE__ */ new Set();
|
|
4416
5413
|
for (const part of processedParts) {
|
|
@@ -4464,6 +5461,17 @@ var AssistantMessage = memo(function AssistantMessage2({
|
|
|
4464
5461
|
[processedParts]
|
|
4465
5462
|
);
|
|
4466
5463
|
const handoffCards = handoffParts.length > 0 ? /* @__PURE__ */ jsx(Fragment, { children: handoffParts.map((p) => /* @__PURE__ */ jsx(SessionHandoffCard, { output: getToolOutput(p.part) }, `${message.id}-handoff-${p.index}`)) }) : null;
|
|
5464
|
+
const canvasCards = canvasesWithAnswer && richTextEnabled ? processedParts.map(
|
|
5465
|
+
(p) => p.kind === "canvas" ? /* @__PURE__ */ jsx(
|
|
5466
|
+
CanvasCard,
|
|
5467
|
+
{
|
|
5468
|
+
canvas: p.canvas,
|
|
5469
|
+
isStreaming: isStreamingMessage,
|
|
5470
|
+
conversationId
|
|
5471
|
+
},
|
|
5472
|
+
`${message.id}-canvas-${p.index}`
|
|
5473
|
+
) : null
|
|
5474
|
+
) : null;
|
|
4467
5475
|
const hasTrailingCards = appParts.length > 0 || siteParts.length > 0;
|
|
4468
5476
|
const showArtifactList = !isStreamingMessage && (messageArtifactListItems.length > 0 || hasTrailingCards);
|
|
4469
5477
|
const latestAppId = appParts.length > 0 ? appParts[appParts.length - 1].part.appId : null;
|
|
@@ -4516,156 +5524,198 @@ var AssistantMessage = memo(function AssistantMessage2({
|
|
|
4516
5524
|
{
|
|
4517
5525
|
className: cn("gap-1 w-full max-w-none min-w-0"),
|
|
4518
5526
|
children: [
|
|
4519
|
-
richTextEnabled && /* @__PURE__ */ jsx(ImageResultsGallery, { images: imageResults, size: "compact" }),
|
|
4520
|
-
|
|
4521
|
-
|
|
4522
|
-
|
|
5527
|
+
richTextEnabled && (!isStreamingMessage || workSplitIndex === -1) && /* @__PURE__ */ jsx(ImageResultsGallery, { images: imageResults, size: "compact" }),
|
|
5528
|
+
(() => {
|
|
5529
|
+
const renderPart = (processed, groupIndex) => {
|
|
5530
|
+
const insideFold = foldPartIndices.has(groupIndex);
|
|
5531
|
+
if (processed.kind === "steps-group") {
|
|
5532
|
+
if (!workDetailsEnabled) {
|
|
5533
|
+
if (insideFold) return null;
|
|
5534
|
+
return /* @__PURE__ */ jsx(
|
|
5535
|
+
MessageDecisionCards,
|
|
5536
|
+
{
|
|
5537
|
+
messageId: message.id,
|
|
5538
|
+
items: processed.items,
|
|
5539
|
+
conversationId,
|
|
5540
|
+
isStreamingMessage,
|
|
5541
|
+
hasLaterStepsGroup: groupIndex < lastStepsGroupIndex
|
|
5542
|
+
},
|
|
5543
|
+
`${message.id}-dc-${groupIndex}`
|
|
5544
|
+
);
|
|
5545
|
+
}
|
|
4523
5546
|
return /* @__PURE__ */ jsx(
|
|
4524
|
-
|
|
5547
|
+
MessageStepsGroup,
|
|
4525
5548
|
{
|
|
4526
5549
|
messageId: message.id,
|
|
4527
5550
|
items: processed.items,
|
|
4528
|
-
conversationId,
|
|
4529
5551
|
isStreamingMessage,
|
|
4530
|
-
hasLaterStepsGroup: groupIndex < lastStepsGroupIndex
|
|
5552
|
+
hasLaterStepsGroup: groupIndex < lastStepsGroupIndex,
|
|
5553
|
+
onToolApproval,
|
|
5554
|
+
conversationId,
|
|
5555
|
+
hasResponseImageGroup
|
|
4531
5556
|
},
|
|
4532
|
-
`${message.id}-
|
|
5557
|
+
`${message.id}-sg-${groupIndex}`
|
|
4533
5558
|
);
|
|
4534
5559
|
}
|
|
4535
|
-
|
|
4536
|
-
|
|
4537
|
-
|
|
4538
|
-
|
|
4539
|
-
|
|
4540
|
-
|
|
4541
|
-
|
|
4542
|
-
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
|
|
4546
|
-
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
|
|
4560
|
-
|
|
4561
|
-
|
|
4562
|
-
|
|
4563
|
-
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4567
|
-
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
|
|
4571
|
-
|
|
4572
|
-
|
|
4573
|
-
|
|
4574
|
-
|
|
4575
|
-
|
|
4576
|
-
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4582
|
-
|
|
4583
|
-
|
|
4584
|
-
|
|
4585
|
-
|
|
4586
|
-
{
|
|
4587
|
-
|
|
4588
|
-
}
|
|
4589
|
-
|
|
4590
|
-
|
|
4591
|
-
|
|
4592
|
-
|
|
4593
|
-
|
|
4594
|
-
|
|
4595
|
-
|
|
4596
|
-
|
|
4597
|
-
|
|
4598
|
-
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
|
|
4602
|
-
|
|
4603
|
-
|
|
4604
|
-
|
|
4605
|
-
|
|
4606
|
-
|
|
5560
|
+
if (processed.kind === "plan") {
|
|
5561
|
+
return null;
|
|
5562
|
+
}
|
|
5563
|
+
if (processed.kind === "document-stream") {
|
|
5564
|
+
if (!richTextEnabled) return null;
|
|
5565
|
+
return /* @__PURE__ */ jsx(
|
|
5566
|
+
DocumentStreamCard,
|
|
5567
|
+
{
|
|
5568
|
+
title: processed.document.title,
|
|
5569
|
+
content: processed.document.content,
|
|
5570
|
+
mimeType: processed.document.mimeType,
|
|
5571
|
+
state: processed.document.state,
|
|
5572
|
+
action: processed.document.action,
|
|
5573
|
+
artifactId: processed.document.artifactId,
|
|
5574
|
+
version: processed.document.version,
|
|
5575
|
+
errorText: processed.document.errorText,
|
|
5576
|
+
onOpen: processed.document.artifactId ? () => openViewer(processed.document.artifactId, processed.document.version) : void 0
|
|
5577
|
+
},
|
|
5578
|
+
`${message.id}-doc-${processed.index}`
|
|
5579
|
+
);
|
|
5580
|
+
}
|
|
5581
|
+
if (processed.kind === "canvas") {
|
|
5582
|
+
if (!richTextEnabled) return null;
|
|
5583
|
+
if (canvasesWithAnswer) return null;
|
|
5584
|
+
return /* @__PURE__ */ jsx(
|
|
5585
|
+
CanvasCard,
|
|
5586
|
+
{
|
|
5587
|
+
canvas: processed.canvas,
|
|
5588
|
+
isStreaming: isStreamingMessage,
|
|
5589
|
+
conversationId
|
|
5590
|
+
},
|
|
5591
|
+
`${message.id}-canvas-${processed.index}`
|
|
5592
|
+
);
|
|
5593
|
+
}
|
|
5594
|
+
if (processed.kind === "session-handoff") {
|
|
5595
|
+
if (lastTextIndex !== -1) return null;
|
|
5596
|
+
return /* @__PURE__ */ jsx(
|
|
5597
|
+
SessionHandoffCard,
|
|
5598
|
+
{
|
|
5599
|
+
output: getToolOutput(processed.part)
|
|
5600
|
+
},
|
|
5601
|
+
`${message.id}-handoff-${processed.index}`
|
|
5602
|
+
);
|
|
5603
|
+
}
|
|
5604
|
+
if (processed.kind === "supervisor-approval") {
|
|
5605
|
+
const toolState = getToolState(processed.part);
|
|
5606
|
+
const input = getToolInput(processed.part);
|
|
5607
|
+
const output = getToolOutput(processed.part);
|
|
5608
|
+
let cardState = "waiting";
|
|
5609
|
+
if (toolState === "input-streaming" || toolState === "input-available" || toolState === "partial-call" || toolState === "call") {
|
|
5610
|
+
cardState = "waiting";
|
|
5611
|
+
} else if (toolState === "output-error" || toolState === "error") {
|
|
5612
|
+
cardState = "error";
|
|
5613
|
+
} else if (output) {
|
|
5614
|
+
if (output.success === false) cardState = "error";
|
|
5615
|
+
else if (output.timedOut || output.status === "timed_out") cardState = "timeout";
|
|
5616
|
+
else if (output.status === "approved") cardState = "approved";
|
|
5617
|
+
else if (output.status === "rejected") cardState = "rejected";
|
|
5618
|
+
else cardState = "waiting";
|
|
5619
|
+
}
|
|
5620
|
+
const toolCallId = processed.part.toolCallId;
|
|
5621
|
+
return /* @__PURE__ */ jsx(
|
|
5622
|
+
SupervisorApprovalCard,
|
|
5623
|
+
{
|
|
5624
|
+
state: cardState,
|
|
5625
|
+
toolCallId,
|
|
5626
|
+
input,
|
|
5627
|
+
output,
|
|
5628
|
+
errorText: getToolErrorText(processed.part)
|
|
5629
|
+
},
|
|
5630
|
+
`${message.id}-sup-${processed.index}`
|
|
5631
|
+
);
|
|
5632
|
+
}
|
|
5633
|
+
if (processed.kind === "artifact") {
|
|
5634
|
+
return null;
|
|
5635
|
+
}
|
|
5636
|
+
if (processed.kind === "text") {
|
|
5637
|
+
const isLast = groupIndex === lastTextIndex;
|
|
5638
|
+
const artifactList = isLast && showArtifactList ? /* @__PURE__ */ jsx(
|
|
5639
|
+
MessageArtifactList,
|
|
5640
|
+
{
|
|
5641
|
+
items: messageArtifactListItems,
|
|
5642
|
+
extraRows: trailingCards,
|
|
5643
|
+
presentation
|
|
5644
|
+
}
|
|
5645
|
+
) : void 0;
|
|
5646
|
+
return /* @__PURE__ */ jsx(
|
|
5647
|
+
MessageTextBlock,
|
|
5648
|
+
{
|
|
5649
|
+
messageId: message.id,
|
|
5650
|
+
partIndex: processed.index,
|
|
5651
|
+
animateArrival: presentation === "bubble" && processed.index >= animateTextFromIndex,
|
|
5652
|
+
text: processed.part.text,
|
|
5653
|
+
fullMessageText: messageText,
|
|
5654
|
+
isLastTextBlock: isLast,
|
|
5655
|
+
bubbleTopFull: bubbleRunFirst && groupIndex === firstTextIndex,
|
|
5656
|
+
bubbleBottomFull: bubbleRunLast && isLast,
|
|
5657
|
+
presentation,
|
|
5658
|
+
isStreaming: isStreamingMessage,
|
|
5659
|
+
onFork: onFork ? () => onFork(message.id) : void 0,
|
|
5660
|
+
timestamp: displayTimestamp,
|
|
5661
|
+
feedbackRating,
|
|
5662
|
+
onFeedback,
|
|
5663
|
+
onFeedbackDetail,
|
|
5664
|
+
onRegenerate: onRegenerate ? () => onRegenerate(message.id) : void 0,
|
|
5665
|
+
isLastMessage,
|
|
5666
|
+
citations: isLast ? allCitations : void 0,
|
|
5667
|
+
enriched: isLast ? enriched : void 0,
|
|
5668
|
+
metadata: isLast ? metadata : void 0,
|
|
5669
|
+
beforeToolbar: isLast ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5670
|
+
canvasCards,
|
|
5671
|
+
artifactList,
|
|
5672
|
+
handoffCards,
|
|
5673
|
+
!isStreamingMessage && conversationId && /* @__PURE__ */ jsx(AgentRoutineOfferFooter, { conversationId, messageId: message.id })
|
|
5674
|
+
] }) : artifactList
|
|
5675
|
+
},
|
|
5676
|
+
`${message.id}-txt-${processed.index}-container`
|
|
5677
|
+
);
|
|
4607
5678
|
}
|
|
4608
|
-
const toolCallId = processed.part.toolCallId;
|
|
4609
|
-
return /* @__PURE__ */ jsx(
|
|
4610
|
-
SupervisorApprovalCard,
|
|
4611
|
-
{
|
|
4612
|
-
state: cardState,
|
|
4613
|
-
toolCallId,
|
|
4614
|
-
input,
|
|
4615
|
-
output,
|
|
4616
|
-
errorText: getToolErrorText(processed.part)
|
|
4617
|
-
},
|
|
4618
|
-
`${message.id}-sup-${processed.index}`
|
|
4619
|
-
);
|
|
4620
|
-
}
|
|
4621
|
-
if (processed.kind === "artifact") {
|
|
4622
5679
|
return null;
|
|
5680
|
+
};
|
|
5681
|
+
if (workSplitIndex === -1) {
|
|
5682
|
+
return processedParts.map(renderPart);
|
|
4623
5683
|
}
|
|
4624
|
-
|
|
4625
|
-
|
|
4626
|
-
|
|
4627
|
-
MessageArtifactList,
|
|
4628
|
-
{
|
|
4629
|
-
items: messageArtifactListItems,
|
|
4630
|
-
extraRows: trailingCards,
|
|
4631
|
-
presentation
|
|
4632
|
-
}
|
|
4633
|
-
) : void 0;
|
|
4634
|
-
return /* @__PURE__ */ jsx(
|
|
4635
|
-
MessageTextBlock,
|
|
5684
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5685
|
+
/* @__PURE__ */ jsxs(
|
|
5686
|
+
MessageWorkFold,
|
|
4636
5687
|
{
|
|
4637
|
-
messageId: message.id,
|
|
4638
|
-
partIndex: processed.index,
|
|
4639
|
-
animateArrival: presentation === "bubble" && processed.index >= animateTextFromIndex,
|
|
4640
|
-
text: processed.part.text,
|
|
4641
|
-
fullMessageText: messageText,
|
|
4642
|
-
isLastTextBlock: isLast,
|
|
4643
|
-
bubbleTopFull: bubbleRunFirst && groupIndex === firstTextIndex,
|
|
4644
|
-
bubbleBottomFull: bubbleRunLast && isLast,
|
|
4645
|
-
presentation,
|
|
4646
5688
|
isStreaming: isStreamingMessage,
|
|
4647
|
-
|
|
4648
|
-
|
|
4649
|
-
|
|
4650
|
-
|
|
4651
|
-
|
|
4652
|
-
|
|
4653
|
-
|
|
4654
|
-
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
4659
|
-
|
|
4660
|
-
|
|
4661
|
-
|
|
4662
|
-
|
|
4663
|
-
|
|
4664
|
-
|
|
4665
|
-
|
|
4666
|
-
|
|
4667
|
-
|
|
4668
|
-
|
|
5689
|
+
forceOpen: hasPendingDecision,
|
|
5690
|
+
persistedDurationMs,
|
|
5691
|
+
startedAtMs,
|
|
5692
|
+
children: [
|
|
5693
|
+
richTextEnabled && isStreamingMessage ? /* @__PURE__ */ jsx(ImageResultsGallery, { images: imageResults, size: "compact", collapsible: true }) : null,
|
|
5694
|
+
processedParts.map(
|
|
5695
|
+
(processed, i) => foldPartIndices.has(i) ? renderPart(processed, i) : null
|
|
5696
|
+
)
|
|
5697
|
+
]
|
|
5698
|
+
}
|
|
5699
|
+
),
|
|
5700
|
+
processedParts.map(
|
|
5701
|
+
(processed, i) => foldPartIndices.has(i) && processed.kind === "steps-group" ? /* @__PURE__ */ jsx(
|
|
5702
|
+
MessageDecisionCards,
|
|
5703
|
+
{
|
|
5704
|
+
messageId: message.id,
|
|
5705
|
+
items: processed.items,
|
|
5706
|
+
conversationId,
|
|
5707
|
+
isStreamingMessage,
|
|
5708
|
+
hasLaterStepsGroup: i < lastStepsGroupIndex
|
|
5709
|
+
},
|
|
5710
|
+
`${message.id}-dc-hoist-${i}`
|
|
5711
|
+
) : null
|
|
5712
|
+
),
|
|
5713
|
+
processedParts.map(
|
|
5714
|
+
(processed, i) => foldPartIndices.has(i) ? null : renderPart(processed, i)
|
|
5715
|
+
)
|
|
5716
|
+
] });
|
|
5717
|
+
})(),
|
|
5718
|
+
lastTextIndex === -1 && showArtifactList && (!isStreamingMessage || workSplitIndex === -1) && /* @__PURE__ */ jsx(
|
|
4669
5719
|
MessageArtifactList,
|
|
4670
5720
|
{
|
|
4671
5721
|
items: messageArtifactListItems,
|
|
@@ -4686,7 +5736,7 @@ var AssistantMessage = memo(function AssistantMessage2({
|
|
|
4686
5736
|
);
|
|
4687
5737
|
});
|
|
4688
5738
|
|
|
4689
|
-
// src/
|
|
5739
|
+
// ../chat/src/ui/chat/message-thread/utils.ts
|
|
4690
5740
|
var PROCESSING_MESSAGES = [
|
|
4691
5741
|
"Thinking...",
|
|
4692
5742
|
"Pondering...",
|
|
@@ -4770,6 +5820,7 @@ function ProcessingIndicator({
|
|
|
4770
5820
|
agentName: agentNameProp,
|
|
4771
5821
|
avatarSeed,
|
|
4772
5822
|
avatarConfig,
|
|
5823
|
+
showAvatar = true,
|
|
4773
5824
|
status,
|
|
4774
5825
|
activity,
|
|
4775
5826
|
phase
|
|
@@ -4791,7 +5842,7 @@ function ProcessingIndicator({
|
|
|
4791
5842
|
const phrase = phase === "tool" && activity ? `${activity}${/(?:…|\.\.\.)$/.test(activity) ? "" : "\u2026"}` : generalPhase ? t(`chat.activity.${generalPhase}${agentName ? "" : "Unnamed"}`, { agent: agentName ?? "" }) : activity ?? PROCESSING_MESSAGES[phraseIndex];
|
|
4792
5843
|
const visiblePhrase = useMinimumPhraseDuration(phrase);
|
|
4793
5844
|
return /* @__PURE__ */ jsx(Message, { from: "assistant", className: "max-w-none", children: /* @__PURE__ */ jsx(MessageContent, { className: "w-full max-w-none min-w-0", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 py-2 text-sm animate-in fade-in slide-in-from-bottom-1 duration-300", children: [
|
|
4794
|
-
/* @__PURE__ */ jsx(
|
|
5845
|
+
showAvatar && /* @__PURE__ */ jsx(
|
|
4795
5846
|
AgentAvatar,
|
|
4796
5847
|
{
|
|
4797
5848
|
name: agentName,
|
|
@@ -4806,6 +5857,54 @@ function ProcessingIndicator({
|
|
|
4806
5857
|
/* @__PURE__ */ jsx(Shimmer, { as: "span", children: visiblePhrase }, visiblePhrase)
|
|
4807
5858
|
] }) }) });
|
|
4808
5859
|
}
|
|
5860
|
+
function LayoutLeftRightIcon(props) {
|
|
5861
|
+
return /* @__PURE__ */ jsxs(
|
|
5862
|
+
"svg",
|
|
5863
|
+
{
|
|
5864
|
+
"aria-hidden": "true",
|
|
5865
|
+
role: "img",
|
|
5866
|
+
"aria-label": "layout-left-right, margin, padding",
|
|
5867
|
+
width: "24px",
|
|
5868
|
+
height: "24px",
|
|
5869
|
+
viewBox: "0 0 24 24",
|
|
5870
|
+
fill: "none",
|
|
5871
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
5872
|
+
...props,
|
|
5873
|
+
children: [
|
|
5874
|
+
/* @__PURE__ */ jsx(
|
|
5875
|
+
"path",
|
|
5876
|
+
{
|
|
5877
|
+
d: "M7.75 6.75C7.75 5.09315 9.09315 3.75 10.75 3.75L13.25 3.75C14.9069 3.75 16.25 5.09315 16.25 6.75L16.25 17.25C16.25 18.9069 14.9069 20.25 13.25 20.25H10.75C9.09315 20.25 7.75 18.9069 7.75 17.25L7.75 6.75Z",
|
|
5878
|
+
stroke: "currentColor",
|
|
5879
|
+
strokeWidth: "1.5",
|
|
5880
|
+
strokeLinecap: "round",
|
|
5881
|
+
strokeLinejoin: "round"
|
|
5882
|
+
}
|
|
5883
|
+
),
|
|
5884
|
+
/* @__PURE__ */ jsx(
|
|
5885
|
+
"path",
|
|
5886
|
+
{
|
|
5887
|
+
d: "M20.25 3.75V20.25",
|
|
5888
|
+
stroke: "currentColor",
|
|
5889
|
+
strokeWidth: "1.5",
|
|
5890
|
+
strokeLinecap: "round",
|
|
5891
|
+
strokeLinejoin: "round"
|
|
5892
|
+
}
|
|
5893
|
+
),
|
|
5894
|
+
/* @__PURE__ */ jsx(
|
|
5895
|
+
"path",
|
|
5896
|
+
{
|
|
5897
|
+
d: "M3.75 3.75V20.25",
|
|
5898
|
+
stroke: "currentColor",
|
|
5899
|
+
strokeWidth: "1.5",
|
|
5900
|
+
strokeLinecap: "round",
|
|
5901
|
+
strokeLinejoin: "round"
|
|
5902
|
+
}
|
|
5903
|
+
)
|
|
5904
|
+
]
|
|
5905
|
+
}
|
|
5906
|
+
);
|
|
5907
|
+
}
|
|
4809
5908
|
function ActionButton({
|
|
4810
5909
|
onClick,
|
|
4811
5910
|
title,
|
|
@@ -4907,7 +6006,7 @@ function InlineEdit({ initialText, onSubmit, onCancel }) {
|
|
|
4907
6006
|
] });
|
|
4908
6007
|
}
|
|
4909
6008
|
|
|
4910
|
-
// src/
|
|
6009
|
+
// ../chat/src/ui/stores/pending-files.ts
|
|
4911
6010
|
var pendingFiles = /* @__PURE__ */ new Map();
|
|
4912
6011
|
function setPendingFiles(text, files) {
|
|
4913
6012
|
pendingFiles.set(text, files);
|
|
@@ -4954,8 +6053,15 @@ function useUploadFile() {
|
|
|
4954
6053
|
}
|
|
4955
6054
|
};
|
|
4956
6055
|
}
|
|
6056
|
+
function dynamic(load, options = {}) {
|
|
6057
|
+
const Lazy = lazy(load);
|
|
6058
|
+
const fallback = options.loading?.() ?? null;
|
|
6059
|
+
return function DynamicComponent(props) {
|
|
6060
|
+
return /* @__PURE__ */ jsx(Suspense, { fallback, children: /* @__PURE__ */ jsx(Lazy, { ...props }) });
|
|
6061
|
+
};
|
|
6062
|
+
}
|
|
4957
6063
|
var PdfCoverThumbnailInner = dynamic(
|
|
4958
|
-
() => import('./pdf-cover-thumbnail-inner-
|
|
6064
|
+
() => import('./pdf-cover-thumbnail-inner-B2P6S25B.js'),
|
|
4959
6065
|
{ ssr: false, loading: () => null }
|
|
4960
6066
|
);
|
|
4961
6067
|
function PdfCoverThumbnail({
|
|
@@ -5042,7 +6148,7 @@ function previewKind(ref) {
|
|
|
5042
6148
|
if (/\.(jpe?g|png|gif|webp|bmp|svg|avif|heic|heif)$/i.test(ref.filename)) return "image";
|
|
5043
6149
|
return "link";
|
|
5044
6150
|
}
|
|
5045
|
-
var Pdf = dynamic(() => import('./pdf-viewer-inner-
|
|
6151
|
+
var Pdf = dynamic(() => import('./pdf-viewer-inner-CXWPRACH.js'), {
|
|
5046
6152
|
ssr: false,
|
|
5047
6153
|
loading: () => /* @__PURE__ */ jsx("div", { className: "p-6 text-sm text-muted-foreground", children: "Loading preview\u2026" })
|
|
5048
6154
|
});
|
|
@@ -5378,6 +6484,88 @@ function useBackDismiss({
|
|
|
5378
6484
|
};
|
|
5379
6485
|
}, [active]);
|
|
5380
6486
|
}
|
|
6487
|
+
function TextSelectIcon(props) {
|
|
6488
|
+
return /* @__PURE__ */ jsxs(
|
|
6489
|
+
"svg",
|
|
6490
|
+
{
|
|
6491
|
+
"aria-hidden": "true",
|
|
6492
|
+
role: "img",
|
|
6493
|
+
"aria-label": "text-select, lollipops",
|
|
6494
|
+
width: "24px",
|
|
6495
|
+
height: "24px",
|
|
6496
|
+
viewBox: "0 0 24 24",
|
|
6497
|
+
fill: "none",
|
|
6498
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
6499
|
+
...props,
|
|
6500
|
+
children: [
|
|
6501
|
+
/* @__PURE__ */ jsx(
|
|
6502
|
+
"path",
|
|
6503
|
+
{
|
|
6504
|
+
d: "M4.25 7.25V15.75C4.25 17.4069 5.59315 18.75 7.25 18.75H13.25",
|
|
6505
|
+
stroke: "currentColor",
|
|
6506
|
+
strokeWidth: "1.5",
|
|
6507
|
+
strokeLinecap: "round",
|
|
6508
|
+
strokeLinejoin: "round"
|
|
6509
|
+
}
|
|
6510
|
+
),
|
|
6511
|
+
/* @__PURE__ */ jsx(
|
|
6512
|
+
"path",
|
|
6513
|
+
{
|
|
6514
|
+
d: "M19.75 16.75V8.25C19.75 6.59315 18.4069 5.25 16.75 5.25H10.75",
|
|
6515
|
+
stroke: "currentColor",
|
|
6516
|
+
strokeWidth: "1.5",
|
|
6517
|
+
strokeLinecap: "round",
|
|
6518
|
+
strokeLinejoin: "round"
|
|
6519
|
+
}
|
|
6520
|
+
),
|
|
6521
|
+
/* @__PURE__ */ jsx(
|
|
6522
|
+
"circle",
|
|
6523
|
+
{
|
|
6524
|
+
cx: "4.25",
|
|
6525
|
+
cy: "5",
|
|
6526
|
+
r: "2.25",
|
|
6527
|
+
stroke: "currentColor",
|
|
6528
|
+
strokeWidth: "1.5",
|
|
6529
|
+
strokeLinecap: "round",
|
|
6530
|
+
strokeLinejoin: "round"
|
|
6531
|
+
}
|
|
6532
|
+
),
|
|
6533
|
+
/* @__PURE__ */ jsx(
|
|
6534
|
+
"circle",
|
|
6535
|
+
{
|
|
6536
|
+
cx: "19.75",
|
|
6537
|
+
cy: "19",
|
|
6538
|
+
r: "2.25",
|
|
6539
|
+
stroke: "currentColor",
|
|
6540
|
+
strokeWidth: "1.5",
|
|
6541
|
+
strokeLinecap: "round",
|
|
6542
|
+
strokeLinejoin: "round"
|
|
6543
|
+
}
|
|
6544
|
+
),
|
|
6545
|
+
/* @__PURE__ */ jsx(
|
|
6546
|
+
"path",
|
|
6547
|
+
{
|
|
6548
|
+
d: "M9.25 10.25H14.75",
|
|
6549
|
+
stroke: "currentColor",
|
|
6550
|
+
strokeWidth: "1.5",
|
|
6551
|
+
strokeLinecap: "round",
|
|
6552
|
+
strokeLinejoin: "round"
|
|
6553
|
+
}
|
|
6554
|
+
),
|
|
6555
|
+
/* @__PURE__ */ jsx(
|
|
6556
|
+
"path",
|
|
6557
|
+
{
|
|
6558
|
+
d: "M9.25 13.75H12.75",
|
|
6559
|
+
stroke: "currentColor",
|
|
6560
|
+
strokeWidth: "1.5",
|
|
6561
|
+
strokeLinecap: "round",
|
|
6562
|
+
strokeLinejoin: "round"
|
|
6563
|
+
}
|
|
6564
|
+
)
|
|
6565
|
+
]
|
|
6566
|
+
}
|
|
6567
|
+
);
|
|
6568
|
+
}
|
|
5381
6569
|
function UserMessageActionsSheet({
|
|
5382
6570
|
open,
|
|
5383
6571
|
onOpenChange,
|
|
@@ -5906,4 +7094,4 @@ function Thinking({
|
|
|
5906
7094
|
) });
|
|
5907
7095
|
}
|
|
5908
7096
|
|
|
5909
|
-
export { COMPOSER_ID_MAIN, CSV_PREVIEW_MAX_ROWS, CanvasWidget, CopyButton, Message2 as Message, ModelIcon, PdfViewer, Spinner, Thinking, brandLabel, csvTextToWorkbookJson, isPlainTextLanguage, modeToBrandRow, setPendingFiles, useBackDismiss, useChatStreamStore, useComposerStore, useComputer, useComputerFiles, useContextWindowInfo, useIsCompacting, useLivePreviewUrl, useQueuedMessages, useUploadComputerFile, useUploadFile };
|
|
7097
|
+
export { ArrowRotateClockwiseIcon, COMPOSER_ID_COPILOT, COMPOSER_ID_MAIN, CSV_PREVIEW_MAX_ROWS, CanvasWidget, CopyButton, Message2 as Message, ModelIcon, PdfViewer, Spinner, Thinking, VolumeFullIcon, WarningSignIcon, brandLabel, csvTextToWorkbookJson, dynamic, isPlainTextLanguage, modeToBrandRow, setPendingFiles, useBackDismiss, useChatStreamStore, useComposerStore, useComputer, useComputerFiles, useContextWindowInfo, useIsCompacting, useLivePreviewUrl, useQueuedMessages, useUploadComputerFile, useUploadFile };
|