@frontera-sdk/chat-ui 1.52.40 → 1.52.42
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/chat.js +56 -43
- package/dist/{chunk-77OYEA4D.js → chunk-3ED4DPTV.js} +106 -0
- package/dist/{chunk-L2SBA2T6.js → chunk-3J7EDXMY.js} +3 -3
- package/dist/{chunk-L53QV2NP.js → chunk-4DDOGZVM.js} +1 -1
- package/dist/{chunk-HX5M56P5.js → chunk-4DWSQQQE.js} +7 -6
- package/dist/{chunk-PBCI2XZ5.js → chunk-5FR2R2Q5.js} +1 -1
- package/dist/{chunk-QBV7MAFV.js → chunk-BRCS2NHC.js} +1 -1
- package/dist/{chunk-UZ6RDWCT.js → chunk-N3I3MZTY.js} +1 -1
- package/dist/{chunk-ZPFZYY6T.js → chunk-WO2UNC2J.js} +9 -5
- package/dist/header.js +5 -5
- package/dist/message.js +5 -5
- package/dist/new-session.js +2 -2
- package/dist/parts.js +2 -2
- package/dist/{pdf-deck-view-inner-MDUCJH2U.js → pdf-deck-view-inner-ZE7DECMZ.js} +2 -2
- package/dist/{pdf-document-view-inner-V52OOVMQ.js → pdf-document-view-inner-V7FGCXYR.js} +2 -2
- package/dist/pending-cards.js +2 -2
- package/dist/platform.css +1 -1
- package/package.json +3 -3
- package/src/styles.css +0 -1
- /package/dist/{chunk-PKNEC4LJ.js → chunk-X33KXNO3.js} +0 -0
package/dist/chat.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { offset, flip, autoUpdate, computePosition } from './chunk-I7SXWUAN.js';
|
|
3
3
|
import { isFullscreenHotkey, DeckNotesCard, deckOwnsArrowKeys } from './chunk-4FRTPVJT.js';
|
|
4
|
-
import { ArtifactSkeleton, resolveStageWidth, zoomPercent, DECK_ZOOM_LEVELS, LazyThumb } from './chunk-
|
|
5
|
-
import { NewSessionPrompt, keepCaretOnTap } from './chunk-
|
|
6
|
-
import { PendingCards } from './chunk-
|
|
4
|
+
import { ArtifactSkeleton, resolveStageWidth, zoomPercent, DECK_ZOOM_LEVELS, LazyThumb } from './chunk-4DDOGZVM.js';
|
|
5
|
+
import { NewSessionPrompt, keepCaretOnTap } from './chunk-5FR2R2Q5.js';
|
|
6
|
+
import { PendingCards } from './chunk-N3I3MZTY.js';
|
|
7
7
|
import { themeToStyle } from './chunk-6HYPVNVA.js';
|
|
8
8
|
import { useChatAgents } from './chunk-O6CVTMZJ.js';
|
|
9
9
|
import { subjectOfChatToken, capabilitiesOfChatToken } from './chunk-CCVPZVFK.js';
|
|
10
10
|
import { useChatCredential } from './chunk-37G6MHWS.js';
|
|
11
11
|
import './chunk-WDYCLC4F.js';
|
|
12
|
-
import { chatSidePanelSessionKey, Chart1Icon, useTemplatePreviewStore, useHasTemplatePreviewHost, useChatSidePanelStore, ChatHeader, ChatHeaderActions, useRightPane, getChatOverviewAgentStatus, useChatOverviewVisible, useConversationArtifacts, PENDING_CHART_TAB_PREFIX, CHART_TAB_PREFIX, AGENT_WORK_TAB_ID, AGENT_ROUTINES_TAB_ID, SOURCES_TAB_ID, TEMPLATE_TAB_ID, OutputsSection, ChainLink1Icon, ChatOverviewContent, COMPUTER_TAB_PREFIX, SourceRow, motion, MAX_CHAT_SIDE_PANEL_SESSIONS, DEFAULT_CHAT_SIDE_PANEL_SIZE, TableIcon } from './chunk-
|
|
12
|
+
import { chatSidePanelSessionKey, Chart1Icon, useTemplatePreviewStore, useHasTemplatePreviewHost, useChatSidePanelStore, ChatHeader, ChatHeaderActions, useRightPane, getChatOverviewAgentStatus, useChatOverviewVisible, useConversationArtifacts, PENDING_CHART_TAB_PREFIX, CHART_TAB_PREFIX, AGENT_WORK_TAB_ID, AGENT_ROUTINES_TAB_ID, SOURCES_TAB_ID, TEMPLATE_TAB_ID, OutputsSection, ChainLink1Icon, ChatOverviewContent, COMPUTER_TAB_PREFIX, SourceRow, motion, MAX_CHAT_SIDE_PANEL_SESSIONS, DEFAULT_CHAT_SIDE_PANEL_SIZE, TableIcon } from './chunk-3J7EDXMY.js';
|
|
13
13
|
import './chunk-X3QVICX7.js';
|
|
14
|
-
import { dynamic, useChatStreamStore, useComposerStore, Message, Thinking, setPendingFiles, usePersonConfirmations, unshownPendingConfirmations, ConversationConfirmationCard, useLivePreviewUrl, ArrowRotateClockwiseIcon, useComputerFiles, useUploadComputerFile, CanvasWidget, isPlainTextLanguage, useUploadFile, COMPOSER_ID_MAIN, useContextWindowInfo, useIsCompacting, useQueuedMessages, VolumeFullIcon, WarningSignIcon, useComputer, csvTextToWorkbookJson, CSV_PREVIEW_MAX_ROWS, CopyButton, COMPOSER_ID_COPILOT, ModelIcon, modeToBrandRow, useBackDismiss, PdfViewer, brandLabel, Spinner } from './chunk-
|
|
15
|
-
import { Textarea, artifactFormatIcon, BookIcon, useAgentRoster, ShieldCheckIcon, useArtifactStore, useCanvasStore, useChatOverviewStore, setSdkConversationPath, setSdkDarkMode, AgentsProvider, PluginProvider, WorkspaceProvider, TooltipProvider, getPersonConfirmation, isToolPart, getToolState, getToolName, getToolInput, sourceKind, extractDomain, CitationViewerContext, MarkdownRenderer, ConnectRunnerContext, usePathname, usePaneFocusStore, useAgentPanelStore, Tooltip, TooltipTrigger, TooltipContent, StudioDisplayIcon, WorldIcon, SlidesWideIcon, ArtifactActionsMenu, DotGrid1x3HorizontalTightIcon, ArrowsShowIcon, useKeyboardInset, ExclamationCircleIcon, getToolOutput, useArtifact, useUpdateArtifact, useArtifactFileObjectUrl, resolveArtifactIconFormat, useSourcesEnrichment, LoaderIcon, FileDownloadIcon, Label, Input, renderPluginBlock, useArtifactVersion, useChatCapabilities, useChatCapabilityEnabled, useChatOptInEnabled, useSessionPendingApprovals, tableToCsv, tableToXlsx, tableToMarkdown, DropdownMenu, DropdownMenuTrigger, StyledDropdownMenuContent, StyledDropdownMenuItem, useArtifactVersions, useClient, unwrapData, authFetch, getBearerHeadersForApi, EyeOpenIcon, EyeSlashIcon, useRestoreArtifactVersion, ZoomableImage, ChatImageLightbox, useDownloadArtifact, useArtifactFileBytes, useArtifactPreviewFileObjectUrl, useArtifactVersionPreviewFileObjectUrl, errorText, SpreadsheetIcon, FilePdfIcon, useOptionalWorkspaceContext, useAgentConnectionStatus, useArtifacts, useSession, useWorkspaceContext, useConversationDesktopStatus, isRequestHumanTool, appsKeys, unwrapDataDeep, useRouter, Images1Icon, ArrowUpIcon, VideoIcon, AudioIcon, useBrand, resolveBearerHeaders, subscribeSdkDarkMode, getSdkDarkMode, unwrap, useConnectRunner, useStartUserConnect, useUpsertGrant, useRevokeGrant, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction, LayoutGrid1Icon, useCatalog, useInstalls, useWorkspaceSlug, buildTenantUrlAbsolute } from './chunk-
|
|
14
|
+
import { dynamic, useChatStreamStore, useComposerStore, Message, Thinking, setPendingFiles, usePersonConfirmations, unshownPendingConfirmations, ConversationConfirmationCard, useLivePreviewUrl, ArrowRotateClockwiseIcon, useComputerFiles, useUploadComputerFile, CanvasWidget, isPlainTextLanguage, useUploadFile, COMPOSER_ID_MAIN, useContextWindowInfo, useIsCompacting, useQueuedMessages, VolumeFullIcon, WarningSignIcon, useComputer, csvTextToWorkbookJson, CSV_PREVIEW_MAX_ROWS, CopyButton, COMPOSER_ID_COPILOT, ModelIcon, modeToBrandRow, useBackDismiss, PdfViewer, brandLabel, Spinner } from './chunk-WO2UNC2J.js';
|
|
15
|
+
import { Textarea, artifactFormatIcon, BookIcon, useAgentRoster, ShieldCheckIcon, useArtifactStore, useCanvasStore, useChatOverviewStore, setSdkConversationPath, setSdkDarkMode, AgentsProvider, PluginProvider, WorkspaceProvider, TooltipProvider, getPersonConfirmation, isToolPart, getToolState, getToolName, getToolInput, sourceKind, extractDomain, CitationViewerContext, MarkdownRenderer, ConnectRunnerContext, usePathname, usePaneFocusStore, useAgentPanelStore, Tooltip, TooltipTrigger, TooltipContent, StudioDisplayIcon, WorldIcon, SlidesWideIcon, ArtifactActionsMenu, DotGrid1x3HorizontalTightIcon, ArrowsShowIcon, useKeyboardInset, ExclamationCircleIcon, getToolOutput, useArtifact, useUpdateArtifact, useArtifactFileObjectUrl, resolveArtifactIconFormat, useSourcesEnrichment, LoaderIcon, FileDownloadIcon, Label, Input, renderPluginBlock, useArtifactVersion, useChatCapabilities, useChatCapabilityEnabled, useChatOptInEnabled, useSessionPendingApprovals, tableToCsv, tableToXlsx, tableToMarkdown, DropdownMenu, DropdownMenuTrigger, StyledDropdownMenuContent, StyledDropdownMenuItem, useArtifactVersions, useClient, unwrapData, authFetch, getBearerHeadersForApi, EyeOpenIcon, EyeSlashIcon, useRestoreArtifactVersion, ZoomableImage, ChatImageLightbox, useDownloadArtifact, useArtifactFileBytes, useArtifactPreviewFileObjectUrl, useArtifactVersionPreviewFileObjectUrl, errorText, SpreadsheetIcon, FilePdfIcon, useOptionalWorkspaceContext, useAgentConnectionStatus, useArtifacts, useSession, useWorkspaceContext, useConversationDesktopStatus, isRequestHumanTool, appsKeys, unwrapDataDeep, useRouter, Images1Icon, ArrowUpIcon, VideoIcon, AudioIcon, useBrand, resolveBearerHeaders, subscribeSdkDarkMode, getSdkDarkMode, unwrap, useConnectRunner, useStartUserConnect, useUpsertGrant, useRevokeGrant, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction, LayoutGrid1Icon, useCatalog, useInstalls, useWorkspaceSlug, buildTenantUrlAbsolute } from './chunk-4DWSQQQE.js';
|
|
16
16
|
import { ChevronLeftIcon } from './chunk-CWAOLMFS.js';
|
|
17
17
|
import { Popover, PopoverTrigger, PopoverContent, Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription } from './chunk-T5SANYSX.js';
|
|
18
|
-
import { MOBILE_BREAKPOINT, useIsMobile, I18nProvider, useTranslation } from './chunk-
|
|
19
|
-
import './chunk-
|
|
20
|
-
import { AppIcon, frontera_icon_default, PhotoIcon, Folder1Icon, FileTextIcon, describeToolRow, SquareArrowTopRightIcon, ClipboardIcon, getToolMeta, useStreamdownPlugins, AppIconFrame, MessageResponse } from './chunk-
|
|
18
|
+
import { MOBILE_BREAKPOINT, useIsMobile, I18nProvider, useTranslation } from './chunk-3ED4DPTV.js';
|
|
19
|
+
import './chunk-BRCS2NHC.js';
|
|
20
|
+
import { AppIcon, frontera_icon_default, PhotoIcon, Folder1Icon, FileTextIcon, describeToolRow, SquareArrowTopRightIcon, ClipboardIcon, getToolMeta, useStreamdownPlugins, AppIconFrame, MessageResponse } from './chunk-X33KXNO3.js';
|
|
21
21
|
import { Skeleton, Button, ScrollArea, ChevronDownMediumIcon, buttonVariants } from './chunk-UWKO24VT.js';
|
|
22
22
|
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, CrossMediumIcon, DialogFooter } from './chunk-2P4IEVOQ.js';
|
|
23
23
|
import './chunk-CDTES65T.js';
|
|
@@ -42449,7 +42449,7 @@ function SheetEditor({ content, onSave, readOnly = false }) {
|
|
|
42449
42449
|
);
|
|
42450
42450
|
}
|
|
42451
42451
|
var PdfDocumentViewInner = dynamic(
|
|
42452
|
-
() => import('./pdf-document-view-inner-
|
|
42452
|
+
() => import('./pdf-document-view-inner-V7FGCXYR.js'),
|
|
42453
42453
|
{
|
|
42454
42454
|
ssr: false,
|
|
42455
42455
|
loading: () => /* @__PURE__ */ jsx(ArtifactSkeleton, { format: "pdf" })
|
|
@@ -43001,11 +43001,11 @@ function DeckPresenter({ slides, start, mode, onClose }) {
|
|
|
43001
43001
|
};
|
|
43002
43002
|
window.addEventListener("keydown", onKey);
|
|
43003
43003
|
let entered = false;
|
|
43004
|
-
|
|
43005
|
-
|
|
43004
|
+
const fullscreen = document.documentElement.requestFullscreen?.();
|
|
43005
|
+
void fullscreen?.then(() => {
|
|
43006
43006
|
entered = true;
|
|
43007
|
-
}
|
|
43008
|
-
}
|
|
43007
|
+
}).catch(() => {
|
|
43008
|
+
});
|
|
43009
43009
|
const fmt = () => (/* @__PURE__ */ new Date()).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
|
|
43010
43010
|
setNow(fmt());
|
|
43011
43011
|
const t2 = setInterval(() => {
|
|
@@ -43266,7 +43266,7 @@ function HtmlDeckView({ content, inChat = false, versionSlot }) {
|
|
|
43266
43266
|
!present && inChat && /* @__PURE__ */ jsx(DeckEditPanel, { currentIndex: sel, currentHtml: slides[sel]?.html ?? "" })
|
|
43267
43267
|
] });
|
|
43268
43268
|
}
|
|
43269
|
-
var Inner = dynamic(() => import('./pdf-deck-view-inner-
|
|
43269
|
+
var Inner = dynamic(() => import('./pdf-deck-view-inner-ZE7DECMZ.js'), {
|
|
43270
43270
|
ssr: false,
|
|
43271
43271
|
loading: () => /* @__PURE__ */ jsx(ArtifactSkeleton, { format: "htmldeck" })
|
|
43272
43272
|
});
|
|
@@ -45325,6 +45325,7 @@ function CopyAction({ text: text2 }) {
|
|
|
45325
45325
|
navigator.clipboard.writeText(text2).then(() => {
|
|
45326
45326
|
setCopied(true);
|
|
45327
45327
|
setTimeout(() => setCopied(false), 2e3);
|
|
45328
|
+
}).catch(() => {
|
|
45328
45329
|
});
|
|
45329
45330
|
}, [text2]);
|
|
45330
45331
|
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
@@ -65325,6 +65326,22 @@ var MOBILE_LIST_FRACTION = 0.5;
|
|
|
65325
65326
|
var PLACEHOLDER_CHAR_MS = 20;
|
|
65326
65327
|
var AT_PLUGIN_KEY = new PluginKey("composerMentionAt");
|
|
65327
65328
|
var SLASH_PLUGIN_KEY = new PluginKey("composerMentionSlash");
|
|
65329
|
+
function composerKeymap(onBackspaceAtStart) {
|
|
65330
|
+
return Extension.create({
|
|
65331
|
+
name: "composerKeymap",
|
|
65332
|
+
priority: 50,
|
|
65333
|
+
addKeyboardShortcuts() {
|
|
65334
|
+
return {
|
|
65335
|
+
"Shift-Enter": () => this.editor.commands.setHardBreak(),
|
|
65336
|
+
Backspace: () => {
|
|
65337
|
+
const { selection } = this.editor.state;
|
|
65338
|
+
if (!selection.empty || selection.$anchor.pos > 1) return false;
|
|
65339
|
+
return onBackspaceAtStart.current?.() ?? false;
|
|
65340
|
+
}
|
|
65341
|
+
};
|
|
65342
|
+
}
|
|
65343
|
+
});
|
|
65344
|
+
}
|
|
65328
65345
|
var ComposerEditor = forwardRef(function ComposerEditor2({
|
|
65329
65346
|
placeholder,
|
|
65330
65347
|
typePlaceholder,
|
|
@@ -65374,22 +65391,7 @@ var ComposerEditor = forwardRef(function ComposerEditor2({
|
|
|
65374
65391
|
onCutAtStartRef.current = onCutAtStart;
|
|
65375
65392
|
const onBackspaceAtStartRef = useRef(onBackspaceAtStart);
|
|
65376
65393
|
onBackspaceAtStartRef.current = onBackspaceAtStart;
|
|
65377
|
-
const submitKeymap = useRef(
|
|
65378
|
-
Extension.create({
|
|
65379
|
-
name: "composerKeymap",
|
|
65380
|
-
priority: 50,
|
|
65381
|
-
addKeyboardShortcuts() {
|
|
65382
|
-
return {
|
|
65383
|
-
"Shift-Enter": () => this.editor.commands.setHardBreak(),
|
|
65384
|
-
Backspace: () => {
|
|
65385
|
-
const { selection } = this.editor.state;
|
|
65386
|
-
if (!selection.empty || selection.$anchor.pos > 1) return false;
|
|
65387
|
-
return onBackspaceAtStartRef.current?.() ?? false;
|
|
65388
|
-
}
|
|
65389
|
-
};
|
|
65390
|
-
}
|
|
65391
|
-
})
|
|
65392
|
-
).current;
|
|
65394
|
+
const submitKeymap = useRef(composerKeymap(onBackspaceAtStartRef)).current;
|
|
65393
65395
|
const editor = useEditor({
|
|
65394
65396
|
immediatelyRender: false,
|
|
65395
65397
|
extensions: [
|
|
@@ -67333,6 +67335,12 @@ function useVoiceDictation(onTranscript, onError) {
|
|
|
67333
67335
|
}, []);
|
|
67334
67336
|
return { phase, error: error2, supported, start, stop, cancel, getLevel };
|
|
67335
67337
|
}
|
|
67338
|
+
|
|
67339
|
+
// ../chat/src/ui/voice/voice-offer.ts
|
|
67340
|
+
function voiceOffer(voice) {
|
|
67341
|
+
const readAloud = !!voice?.hasVoice && !!voice.canSpeak;
|
|
67342
|
+
return { readAloud, microphone: readAloud && !!voice?.providerConfigured };
|
|
67343
|
+
}
|
|
67336
67344
|
var useVoiceModeStore = create()(
|
|
67337
67345
|
persist(
|
|
67338
67346
|
(set2, get2) => ({
|
|
@@ -69324,7 +69332,7 @@ function ComposerTemplateStrip({
|
|
|
69324
69332
|
className: "hidden",
|
|
69325
69333
|
onChange: (e) => {
|
|
69326
69334
|
const f = e.target.files?.[0];
|
|
69327
|
-
if (f) onImport(f);
|
|
69335
|
+
if (f) void onImport(f);
|
|
69328
69336
|
e.target.value = "";
|
|
69329
69337
|
}
|
|
69330
69338
|
}
|
|
@@ -69792,10 +69800,12 @@ function ApprovalGrantsList({
|
|
|
69792
69800
|
/* @__PURE__ */ jsx("p", { className: "px-2 pb-1 text-xs text-muted-foreground", children: "Not asking in this chat" }),
|
|
69793
69801
|
/* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-0.5", children: grants.map((grant) => {
|
|
69794
69802
|
const tool = getToolMeta(grant.toolName).label;
|
|
69795
|
-
const label = grant.target ? `${tool}: ${grant.target}` : tool;
|
|
69803
|
+
const label = grant.label ?? (grant.target ? `${tool}: ${grant.target}` : tool);
|
|
69804
|
+
const detail = grant.label ? grant.target ?? tool : null;
|
|
69796
69805
|
return /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 rounded-lg px-2 py-1", children: [
|
|
69797
69806
|
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
69798
69807
|
/* @__PURE__ */ jsx("span", { className: "block truncate text-xs font-medium text-foreground", children: label }),
|
|
69808
|
+
detail && /* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-muted-foreground", children: detail }),
|
|
69799
69809
|
/* @__PURE__ */ jsxs("span", { className: "block text-xs text-muted-foreground", children: [
|
|
69800
69810
|
"Allowed ",
|
|
69801
69811
|
new Date(grant.createdAt).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" })
|
|
@@ -69809,7 +69819,7 @@ function ApprovalGrantsList({
|
|
|
69809
69819
|
variant: "outline",
|
|
69810
69820
|
className: "h-7 rounded-full px-2.5 text-xs",
|
|
69811
69821
|
disabled: revoke.isPending,
|
|
69812
|
-
"aria-label": `Stop allowing ${label}`,
|
|
69822
|
+
"aria-label": `Stop allowing ${label}${detail ? ` (${detail})` : ""}`,
|
|
69813
69823
|
onClick: () => revoke.mutate(grant.id),
|
|
69814
69824
|
children: "Stop allowing"
|
|
69815
69825
|
}
|
|
@@ -69872,7 +69882,7 @@ function approvalEffect(approval) {
|
|
|
69872
69882
|
case "external":
|
|
69873
69883
|
return { label: "Reaches outside this workspace", tone: "external" };
|
|
69874
69884
|
case "live":
|
|
69875
|
-
return { label: "Makes a live change", tone: "neutral" };
|
|
69885
|
+
return approval.readsOnly ? { label: "Only reads data", tone: "neutral" } : { label: "Makes a live change", tone: "neutral" };
|
|
69876
69886
|
default:
|
|
69877
69887
|
return null;
|
|
69878
69888
|
}
|
|
@@ -70037,10 +70047,10 @@ function ApprovalPromptDetails({
|
|
|
70037
70047
|
approval.policyReason
|
|
70038
70048
|
] }),
|
|
70039
70049
|
plan && !summaryShown && /* @__PURE__ */ jsx(ApprovalPlanDetails, { plan }),
|
|
70040
|
-
!plan && preview.length > 0 && /* @__PURE__ */ jsx("dl", { className: "grid grid-cols-[minmax(4.5rem,max-content)_1fr] gap-x-3 gap-y-1", children: preview.map((item) => /* @__PURE__ */ jsxs("div", { className: "contents", children: [
|
|
70050
|
+
!plan && preview.length > 0 && /* @__PURE__ */ jsx("dl", { className: "grid grid-cols-[minmax(4.5rem,max-content)_1fr] gap-x-3 gap-y-1", children: preview.map((item, index) => /* @__PURE__ */ jsxs("div", { className: "contents", children: [
|
|
70041
70051
|
/* @__PURE__ */ jsx("dt", { className: "break-all text-muted-foreground", children: item.label }),
|
|
70042
70052
|
/* @__PURE__ */ jsx("dd", { className: "min-w-0 break-words text-foreground", children: item.value })
|
|
70043
|
-
] },
|
|
70053
|
+
] }, index)) }),
|
|
70044
70054
|
/* @__PURE__ */ jsx("p", { className: "flex flex-wrap gap-x-2.5 gap-y-0.5 text-muted-foreground", children: meta.map((part) => /* @__PURE__ */ jsx("span", { className: "break-all", children: part }, part)) })
|
|
70045
70055
|
] });
|
|
70046
70056
|
}
|
|
@@ -70128,7 +70138,11 @@ function ComposerApprovalPrompt({ state }) {
|
|
|
70128
70138
|
{ verdict: "approve", label: irreversible ? "Approve\u2026" : "Approve" },
|
|
70129
70139
|
// Offered only when the server says this request can be allowed for the
|
|
70130
70140
|
// chat: never for deletes, workspace-wide changes or sensitive actions.
|
|
70131
|
-
...approval.canAllowForChat ? [{
|
|
70141
|
+
...approval.canAllowForChat ? [{
|
|
70142
|
+
verdict: "allow",
|
|
70143
|
+
label: "Approve, and don\u2019t ask again in this chat",
|
|
70144
|
+
hint: `for ${approval.actionSummary?.grantLabel ?? kindLabel}`
|
|
70145
|
+
}] : [],
|
|
70132
70146
|
{ verdict: "deny", label: "Deny" }
|
|
70133
70147
|
];
|
|
70134
70148
|
const choose = (verdict) => {
|
|
@@ -70603,7 +70617,7 @@ function ChatInputBar({
|
|
|
70603
70617
|
console.debug("[voice] composer mounted", { agentId: agentId ?? null });
|
|
70604
70618
|
}, [voiceAvailable, agentId]);
|
|
70605
70619
|
const { data: agentVoice } = useAgentVoice(voiceAvailable ? agentId : null);
|
|
70606
|
-
const voiceReady = voiceAvailable &&
|
|
70620
|
+
const voiceReady = voiceAvailable && voiceOffer(agentVoice).microphone;
|
|
70607
70621
|
const canConverse = voiceReady;
|
|
70608
70622
|
const startVoiceSession = useVoiceSessionStore((s) => s.start);
|
|
70609
70623
|
const endVoiceSession = useVoiceSessionStore((s) => s.end);
|
|
@@ -70814,7 +70828,7 @@ function ChatInputBar({
|
|
|
70814
70828
|
}, [steerable, sessionKey, dequeueMessage, onSend]);
|
|
70815
70829
|
const handleSteerQueued = useCallback(
|
|
70816
70830
|
(id, text2, fileRefs) => {
|
|
70817
|
-
onSteer?.(text2, fileRefs);
|
|
70831
|
+
void onSteer?.(text2, fileRefs);
|
|
70818
70832
|
removeQueuedMessage(sessionKey, id);
|
|
70819
70833
|
},
|
|
70820
70834
|
[onSteer, removeQueuedMessage, sessionKey]
|
|
@@ -70876,7 +70890,7 @@ function ChatInputBar({
|
|
|
70876
70890
|
setFileError(t2("chat.input.fileLimit", { count: remaining }));
|
|
70877
70891
|
return;
|
|
70878
70892
|
}
|
|
70879
|
-
const results = await Promise.all(files.map(handleUploadFile));
|
|
70893
|
+
const results = await Promise.all(files.map((file) => handleUploadFile(file)));
|
|
70880
70894
|
const uploaded = results.filter(
|
|
70881
70895
|
(r) => r !== null
|
|
70882
70896
|
);
|
|
@@ -72058,8 +72072,7 @@ function PortalRootProvider({
|
|
|
72058
72072
|
root.removeAttribute("style");
|
|
72059
72073
|
for (const [key2, value] of Object.entries(style2 ?? {})) {
|
|
72060
72074
|
if (typeof value !== "string") continue;
|
|
72061
|
-
|
|
72062
|
-
else root.style.setProperty(key2, value);
|
|
72075
|
+
root.style.setProperty(key2, value);
|
|
72063
72076
|
}
|
|
72064
72077
|
}, [root, dark, style2]);
|
|
72065
72078
|
return /* @__PURE__ */ jsx(PortalContainerContext.Provider, { value: root, children });
|
|
@@ -189,6 +189,7 @@ var en_default = {
|
|
|
189
189
|
"appSwitcher.organization": "Organization Home",
|
|
190
190
|
"appSwitcher.homeSubtitle": "Your workspace at a glance",
|
|
191
191
|
"appSwitcher.chat": "Chat",
|
|
192
|
+
"appSwitcher.voice": "Voice",
|
|
192
193
|
"appSwitcher.chatSubtitle": "Chat with agents",
|
|
193
194
|
"appSwitcher.omnichannel": "Omnichannel",
|
|
194
195
|
"appSwitcher.apps": "Apps",
|
|
@@ -1838,6 +1839,7 @@ var en_default = {
|
|
|
1838
1839
|
"admin.voices.keyRemovedTitle": "Agents can\u2019t speak until ElevenLabs is added again",
|
|
1839
1840
|
"admin.voices.keyRemovedBody": "The organization\u2019s ElevenLabs key was removed, so every voice below is silent.",
|
|
1840
1841
|
"admin.voices.addElevenLabs": "Add ElevenLabs",
|
|
1842
|
+
"admin.voices.addOpenRouter": "Add OpenRouter",
|
|
1841
1843
|
"admin.voices.emptyTitle": "No voices yet",
|
|
1842
1844
|
"admin.voices.emptyBody": "Register an ElevenLabs voice by name, then choose it in an agent\u2019s settings.",
|
|
1843
1845
|
"admin.voices.unused": "Not used by any agent",
|
|
@@ -1861,6 +1863,12 @@ var en_default = {
|
|
|
1861
1863
|
"admin.voices.voiceIdPlaceholder": "Pg9csYyww2U9PYHJWRGS",
|
|
1862
1864
|
"admin.voices.voiceIdHint": "In ElevenLabs, open the voice and copy its ID.",
|
|
1863
1865
|
"admin.voices.findVoice": "Find a voice",
|
|
1866
|
+
"admin.voices.provider.elevenlabs": "ElevenLabs voice",
|
|
1867
|
+
"admin.voices.openRouterVoiceId": "Voice",
|
|
1868
|
+
"admin.voices.openRouterVoiceIdPlaceholder": "george",
|
|
1869
|
+
"admin.voices.openRouterVoiceIdHint": "One of the model\u2019s voices. Preview plays a sentence in it before you add it.",
|
|
1870
|
+
"admin.voices.preview": "Preview",
|
|
1871
|
+
"admin.voices.previewing": "Speaking\u2026",
|
|
1864
1872
|
"admin.voices.required": "Enter this value.",
|
|
1865
1873
|
"admin.voices.speed": "Speaking speed",
|
|
1866
1874
|
"admin.voices.speedHint": "How fast every agent reads its replies. Takes effect on the next reply.",
|
|
@@ -1872,6 +1880,33 @@ var en_default = {
|
|
|
1872
1880
|
"admin.voices.speedDefault": "Default",
|
|
1873
1881
|
"admin.voices.speedOption": "{label} ({value}\xD7)",
|
|
1874
1882
|
"admin.voices.speedValue": "{value}\xD7",
|
|
1883
|
+
"admin.speech.heading": "Speech",
|
|
1884
|
+
"admin.speech.subtitle": "How Agents listen and speak, in voice calls and when Chat reads replies aloud. Each Agent picks a transcription model and a voice on its Voice page.",
|
|
1885
|
+
"admin.speech.listening.heading": "Listening (speech to text)",
|
|
1886
|
+
"admin.speech.listening.subtitle": "Voice calls use one of these to turn what callers say into text.",
|
|
1887
|
+
"admin.speech.listening.dialogTitle": "Add transcription model",
|
|
1888
|
+
"admin.speech.listening.emptyTitle": "No transcription models yet",
|
|
1889
|
+
"admin.speech.listening.emptyBody": "Add one so voice calls can turn what callers say into text.",
|
|
1890
|
+
"admin.speech.listening.removeTitle": "Remove {name}?",
|
|
1891
|
+
"admin.speech.listening.removeBody": "Agents that use it can\u2019t take voice calls until they choose another transcription model on their Voice page.",
|
|
1892
|
+
"admin.speech.speaking.heading": "Speaking voices (text to speech)",
|
|
1893
|
+
"admin.speech.speaking.subtitle": "Voices Agents speak with. An Agent with none chosen doesn\u2019t speak.",
|
|
1894
|
+
"admin.speech.speaking.dialogDescription": "Choose a speech model, then one of its voices, and give the voice a name.",
|
|
1895
|
+
"admin.speech.speaking.needKeyTitle": "Voices need a speech provider",
|
|
1896
|
+
"admin.speech.speaking.needKeyBody": "Agents speak through ElevenLabs or OpenRouter. Add either API key, then register the voices agents can use.",
|
|
1897
|
+
"admin.speech.speaking.keyRemovedTitle": "Agents can\u2019t speak until a speech provider is added again",
|
|
1898
|
+
"admin.speech.speaking.keyRemovedBody": "The organization has no ElevenLabs or OpenRouter key, so every voice below is silent.",
|
|
1899
|
+
"admin.speech.speaking.emptyBody": "Register a voice by name, then choose it in an agent\u2019s settings.",
|
|
1900
|
+
"admin.speech.speaking.inUseBody": "These agents speak with {name}. Choose another voice for them on their Voice page and publish, then remove it.",
|
|
1901
|
+
"admin.speech.provider.openrouter": "OpenRouter",
|
|
1902
|
+
"admin.speech.provider.elevenlabs": "ElevenLabs",
|
|
1903
|
+
"admin.speech.voiceCount": "{count} voices",
|
|
1904
|
+
"admin.speech.speechTag": "Speech",
|
|
1905
|
+
"admin.speech.elevenLabsHint": "A voice from your ElevenLabs library, by its voice ID.",
|
|
1906
|
+
"admin.speech.elevenLabsNeedsKey": "Needs an ElevenLabs API key. Choose this to add one, then add voices from your ElevenLabs library.",
|
|
1907
|
+
"admin.speech.elevenLabsNeedsKeyAsk": "Needs an ElevenLabs API key. Ask an organization admin to add one.",
|
|
1908
|
+
"admin.speech.searchSpeechModels": "Search speech models by name or ID",
|
|
1909
|
+
"admin.speech.noMatch": "Try another name, or clear the search.",
|
|
1875
1910
|
"admin.imageModel.heading": "Image generation",
|
|
1876
1911
|
"admin.imageModel.subtitle": "The model used to generate images and slide-template decks for this organization.",
|
|
1877
1912
|
"admin.imageModel.label": "Image model",
|
|
@@ -2994,6 +3029,7 @@ var en_default = {
|
|
|
2994
3029
|
"admin.datasets.managed.title": "Rows are not available yet",
|
|
2995
3030
|
"admin.datasets.managed.body": "Managed Datasets store their own rows. That storage is not built yet, so there is nothing to preview here.",
|
|
2996
3031
|
"admin.models.form.kindEmbeddingDetected": "Detected as an embedding model \u2014 it powers knowledge, memory, and semantic search, and won't appear in chat model pickers.",
|
|
3032
|
+
"admin.models.form.kindTranscriptionDetected": "Detected as a transcription model \u2014 Voice calls use it to turn what callers say into text, and it won't appear in chat model pickers.",
|
|
2997
3033
|
"admin.nav.apiKeys": "API Keys",
|
|
2998
3034
|
"admin.applicationLibrary.status.included": "Included",
|
|
2999
3035
|
"admin.applicationLibrary.status.not_in_licence": "Not in licence",
|
|
@@ -3088,6 +3124,21 @@ var en_default = {
|
|
|
3088
3124
|
"admin.applicationLibrary.dialog.candidate.approveAndUse": "Approve access and use version {version}",
|
|
3089
3125
|
"admin.applicationLibrary.dialog.candidate.goBack": "Go back to version {version}",
|
|
3090
3126
|
"admin.applicationLibrary.dialog.note.candidateChanged": "The newer version changed while you were reviewing it. Review it again.",
|
|
3127
|
+
"admin.applicationLibrary.dialog.voiceRecording.title": "Call recording",
|
|
3128
|
+
"admin.applicationLibrary.dialog.voiceRecording.help": "Whether Agents may record their voice calls, and how long recordings are kept. Each Agent turns recording on for its own calls.",
|
|
3129
|
+
"admin.applicationLibrary.dialog.voiceRecording.allow": "Allow Agents to record calls",
|
|
3130
|
+
"admin.applicationLibrary.dialog.voiceRecording.allowHint": "Callers hear that the call is recorded before the Agent speaks.",
|
|
3131
|
+
"admin.applicationLibrary.dialog.voiceRecording.defaultDays": "Keep recordings for",
|
|
3132
|
+
"admin.applicationLibrary.dialog.voiceRecording.defaultDaysHint": "Days, for Agents that do not set their own period.",
|
|
3133
|
+
"admin.applicationLibrary.dialog.voiceRecording.maxDays": "Longest keep period",
|
|
3134
|
+
"admin.applicationLibrary.dialog.voiceRecording.maxDaysHint": "Days. No Agent keeps recordings longer. A shorter period deletes older recordings at the next cleanup.",
|
|
3135
|
+
"admin.applicationLibrary.dialog.voiceRecording.save": "Save call recording",
|
|
3136
|
+
"admin.applicationLibrary.dialog.voiceRecording.saved": "Call recording saved.",
|
|
3137
|
+
"admin.applicationLibrary.dialog.voiceRecording.invalid": "Use 1 to 3650 days, and a default no longer than the longest period.",
|
|
3138
|
+
"admin.applicationLibrary.dialog.voiceRecording.noStorage": "Call recording needs storage that this deployment has not set up. Ask your platform administrator to set it up.",
|
|
3139
|
+
"admin.applicationLibrary.dialog.voiceRecording.loadFailed": "Call recording settings could not load.",
|
|
3140
|
+
"admin.applicationLibrary.dialog.voiceRecording.saveFailed": "Call recording could not be saved.",
|
|
3141
|
+
"admin.applicationLibrary.dialog.voiceRecording.retry": "Try again",
|
|
3091
3142
|
"admin.applicationLibrary.toast.usingCandidate": "{name} now uses version {version} in this organization",
|
|
3092
3143
|
"admin.applicationLibrary.toast.usingCurrent": "{name} is back on version {version}",
|
|
3093
3144
|
"admin.applicationLibrary.error.candidateChanged": "The newer version changed while you were reviewing it. Review it again.",
|
|
@@ -4195,6 +4246,7 @@ var en_default = {
|
|
|
4195
4246
|
"admin.models.form.catalog.priceTitle": "List price per 1M tokens \u2014 input / output",
|
|
4196
4247
|
"admin.models.form.catalog.image": "Image",
|
|
4197
4248
|
"admin.models.form.catalog.embedding": "Embedding",
|
|
4249
|
+
"admin.models.form.catalog.transcription": "Transcription",
|
|
4198
4250
|
"admin.models.form.catalog.azureHint": "Enter a deployment name",
|
|
4199
4251
|
"admin.models.form.catalog.customHint": "Enter a model ID",
|
|
4200
4252
|
"admin.models.form.catalog.azureTyped": "Azure deployment \u201C{id}\u201D",
|
|
@@ -4284,6 +4336,7 @@ var en_default = {
|
|
|
4284
4336
|
"platformNav.skip": "Skip to content",
|
|
4285
4337
|
"platformNav.description.chat": "Work with agents in conversation.",
|
|
4286
4338
|
"platformNav.description.omnichannel": "Answer customers' WhatsApp chats with your team.",
|
|
4339
|
+
"platformNav.description.voice": "Calls with your Agents, which Agents answer calls, and what calls use.",
|
|
4287
4340
|
"platformNav.description.agents": "Configure, equip, and manage agents.",
|
|
4288
4341
|
"platformNav.description.workflows": "Design processes and follow their runs.",
|
|
4289
4342
|
"platformNav.description.functions": "Build and run reusable functions.",
|
|
@@ -5739,6 +5792,7 @@ var id_default = {
|
|
|
5739
5792
|
"appSwitcher.organization": "Beranda Organisasi",
|
|
5740
5793
|
"appSwitcher.homeSubtitle": "Sekilas ruang kerja Anda",
|
|
5741
5794
|
"appSwitcher.chat": "Obrolan",
|
|
5795
|
+
"appSwitcher.voice": "Voice",
|
|
5742
5796
|
"appSwitcher.chatSubtitle": "Percakapan, perpustakaan, dan otomatisasi",
|
|
5743
5797
|
"appSwitcher.omnichannel": "Omnichannel",
|
|
5744
5798
|
"appSwitcher.apps": "Apps",
|
|
@@ -7366,6 +7420,7 @@ var id_default = {
|
|
|
7366
7420
|
"admin.voices.keyRemovedTitle": "Agen tidak bisa berbicara sampai ElevenLabs ditambahkan lagi",
|
|
7367
7421
|
"admin.voices.keyRemovedBody": "Kunci ElevenLabs organisasi telah dihapus, jadi semua suara di bawah tidak bersuara.",
|
|
7368
7422
|
"admin.voices.addElevenLabs": "Tambah ElevenLabs",
|
|
7423
|
+
"admin.voices.addOpenRouter": "Tambah OpenRouter",
|
|
7369
7424
|
"admin.voices.emptyTitle": "Belum ada suara",
|
|
7370
7425
|
"admin.voices.emptyBody": "Daftarkan suara ElevenLabs dengan sebuah nama, lalu pilih di pengaturan agen.",
|
|
7371
7426
|
"admin.voices.unused": "Tidak dipakai agen mana pun",
|
|
@@ -7389,6 +7444,12 @@ var id_default = {
|
|
|
7389
7444
|
"admin.voices.voiceIdPlaceholder": "Pg9csYyww2U9PYHJWRGS",
|
|
7390
7445
|
"admin.voices.voiceIdHint": "Di ElevenLabs, buka suaranya lalu salin ID-nya.",
|
|
7391
7446
|
"admin.voices.findVoice": "Cari suara",
|
|
7447
|
+
"admin.voices.provider.elevenlabs": "Suara ElevenLabs",
|
|
7448
|
+
"admin.voices.openRouterVoiceId": "Suara",
|
|
7449
|
+
"admin.voices.openRouterVoiceIdPlaceholder": "george",
|
|
7450
|
+
"admin.voices.openRouterVoiceIdHint": "Salah satu suara model ini. Pratinjau memutar satu kalimat dengan suara itu sebelum Anda menambahkannya.",
|
|
7451
|
+
"admin.voices.preview": "Pratinjau",
|
|
7452
|
+
"admin.voices.previewing": "Berbicara\u2026",
|
|
7392
7453
|
"admin.voices.required": "Isi nilai ini.",
|
|
7393
7454
|
"admin.voices.speed": "Kecepatan bicara",
|
|
7394
7455
|
"admin.voices.speedHint": "Seberapa cepat setiap agen membacakan balasannya. Berlaku pada balasan berikutnya.",
|
|
@@ -7400,6 +7461,33 @@ var id_default = {
|
|
|
7400
7461
|
"admin.voices.speedDefault": "Bawaan",
|
|
7401
7462
|
"admin.voices.speedOption": "{label} ({value}\xD7)",
|
|
7402
7463
|
"admin.voices.speedValue": "{value}\xD7",
|
|
7464
|
+
"admin.speech.heading": "Ucapan",
|
|
7465
|
+
"admin.speech.subtitle": "Cara Agen mendengar dan berbicara, dalam panggilan suara dan saat Chat membacakan balasan. Setiap Agen memilih satu model transkripsi dan satu suara di halaman Suara-nya.",
|
|
7466
|
+
"admin.speech.listening.heading": "Mendengar (ucapan ke teks)",
|
|
7467
|
+
"admin.speech.listening.subtitle": "Panggilan suara memakai salah satunya untuk mengubah ucapan penelepon menjadi teks.",
|
|
7468
|
+
"admin.speech.listening.dialogTitle": "Tambah model transkripsi",
|
|
7469
|
+
"admin.speech.listening.emptyTitle": "Belum ada model transkripsi",
|
|
7470
|
+
"admin.speech.listening.emptyBody": "Tambahkan satu agar panggilan suara bisa mengubah ucapan penelepon menjadi teks.",
|
|
7471
|
+
"admin.speech.listening.removeTitle": "Hapus {name}?",
|
|
7472
|
+
"admin.speech.listening.removeBody": "Agen yang memakainya tidak bisa menerima panggilan suara sampai memilih model transkripsi lain di halaman Suara-nya.",
|
|
7473
|
+
"admin.speech.speaking.heading": "Suara bicara (teks ke ucapan)",
|
|
7474
|
+
"admin.speech.speaking.subtitle": "Suara yang dipakai Agen untuk berbicara. Agen tanpa pilihan tidak berbicara.",
|
|
7475
|
+
"admin.speech.speaking.dialogDescription": "Pilih model ucapan, lalu salah satu suaranya, dan beri nama suara itu.",
|
|
7476
|
+
"admin.speech.speaking.needKeyTitle": "Suara memerlukan penyedia suara",
|
|
7477
|
+
"admin.speech.speaking.needKeyBody": "Agen berbicara melalui ElevenLabs atau OpenRouter. Tambahkan salah satu API key-nya, lalu daftarkan suara yang bisa dipakai agen.",
|
|
7478
|
+
"admin.speech.speaking.keyRemovedTitle": "Agen tidak bisa berbicara sampai penyedia suara ditambahkan lagi",
|
|
7479
|
+
"admin.speech.speaking.keyRemovedBody": "Organisasi tidak memiliki kunci ElevenLabs maupun OpenRouter, jadi semua suara di bawah tidak bersuara.",
|
|
7480
|
+
"admin.speech.speaking.emptyBody": "Daftarkan suara dengan sebuah nama, lalu pilih di pengaturan agen.",
|
|
7481
|
+
"admin.speech.speaking.inUseBody": "Agen-agen ini berbicara dengan {name}. Pilih suara lain untuk mereka di halaman Suara lalu publikasikan, kemudian hapus suara ini.",
|
|
7482
|
+
"admin.speech.provider.openrouter": "OpenRouter",
|
|
7483
|
+
"admin.speech.provider.elevenlabs": "ElevenLabs",
|
|
7484
|
+
"admin.speech.voiceCount": "{count} suara",
|
|
7485
|
+
"admin.speech.speechTag": "Ucapan",
|
|
7486
|
+
"admin.speech.elevenLabsHint": "Suara dari pustaka ElevenLabs Anda, berdasarkan ID suaranya.",
|
|
7487
|
+
"admin.speech.elevenLabsNeedsKey": "Memerlukan kunci API ElevenLabs. Pilih ini untuk menambahkannya, lalu tambahkan suara dari pustaka ElevenLabs Anda.",
|
|
7488
|
+
"admin.speech.elevenLabsNeedsKeyAsk": "Memerlukan kunci API ElevenLabs. Minta admin organisasi untuk menambahkannya.",
|
|
7489
|
+
"admin.speech.searchSpeechModels": "Cari model ucapan berdasarkan nama atau ID",
|
|
7490
|
+
"admin.speech.noMatch": "Coba nama lain, atau hapus pencarian.",
|
|
7403
7491
|
"admin.imageModel.heading": "Pembuatan gambar",
|
|
7404
7492
|
"admin.imageModel.subtitle": "Model yang dipakai untuk membuat gambar dan dek templat slide untuk organisasi ini.",
|
|
7405
7493
|
"admin.imageModel.label": "Model gambar",
|
|
@@ -8499,6 +8587,7 @@ var id_default = {
|
|
|
8499
8587
|
"admin.datasets.managed.title": "Baris belum tersedia",
|
|
8500
8588
|
"admin.datasets.managed.body": "Dataset terkelola menyimpan barisnya sendiri. Penyimpanan tersebut belum dibangun, sehingga belum ada yang dapat dipratinjau di sini.",
|
|
8501
8589
|
"admin.models.form.kindEmbeddingDetected": "Terdeteksi sebagai model embedding \u2014 dipakai untuk pencarian knowledge, memori, dan semantik; tidak muncul di pilihan model chat.",
|
|
8590
|
+
"admin.models.form.kindTranscriptionDetected": "Terdeteksi sebagai model transkripsi \u2014 dipakai panggilan suara untuk mengubah ucapan penelepon menjadi teks; tidak muncul di pilihan model chat.",
|
|
8502
8591
|
"admin.nav.apiKeys": "Kunci API",
|
|
8503
8592
|
"admin.applicationLibrary.status.included": "Termasuk",
|
|
8504
8593
|
"admin.applicationLibrary.status.not_in_licence": "Tidak termasuk lisensi",
|
|
@@ -8593,6 +8682,21 @@ var id_default = {
|
|
|
8593
8682
|
"admin.applicationLibrary.dialog.candidate.approveAndUse": "Setujui akses dan gunakan versi {version}",
|
|
8594
8683
|
"admin.applicationLibrary.dialog.candidate.goBack": "Kembali ke versi {version}",
|
|
8595
8684
|
"admin.applicationLibrary.dialog.note.candidateChanged": "Versi yang lebih baru berubah saat Anda meninjaunya. Tinjau lagi.",
|
|
8685
|
+
"admin.applicationLibrary.dialog.voiceRecording.title": "Perekaman panggilan",
|
|
8686
|
+
"admin.applicationLibrary.dialog.voiceRecording.help": "Apakah Agent boleh merekam panggilan suaranya, dan berapa lama rekaman disimpan. Setiap Agent menyalakan perekaman untuk panggilannya sendiri.",
|
|
8687
|
+
"admin.applicationLibrary.dialog.voiceRecording.allow": "Izinkan Agent merekam panggilan",
|
|
8688
|
+
"admin.applicationLibrary.dialog.voiceRecording.allowHint": "Penelepon mendengar bahwa panggilan direkam sebelum Agent berbicara.",
|
|
8689
|
+
"admin.applicationLibrary.dialog.voiceRecording.defaultDays": "Simpan rekaman selama",
|
|
8690
|
+
"admin.applicationLibrary.dialog.voiceRecording.defaultDaysHint": "Hari, untuk Agent yang tidak mengatur masanya sendiri.",
|
|
8691
|
+
"admin.applicationLibrary.dialog.voiceRecording.maxDays": "Masa simpan terlama",
|
|
8692
|
+
"admin.applicationLibrary.dialog.voiceRecording.maxDaysHint": "Hari. Tidak ada Agent yang menyimpan rekaman lebih lama. Masa yang lebih pendek menghapus rekaman lama pada pembersihan berikutnya.",
|
|
8693
|
+
"admin.applicationLibrary.dialog.voiceRecording.save": "Simpan perekaman panggilan",
|
|
8694
|
+
"admin.applicationLibrary.dialog.voiceRecording.saved": "Perekaman panggilan disimpan.",
|
|
8695
|
+
"admin.applicationLibrary.dialog.voiceRecording.invalid": "Gunakan 1 sampai 3650 hari, dan masa bawaan yang tidak lebih lama dari masa terlama.",
|
|
8696
|
+
"admin.applicationLibrary.dialog.voiceRecording.noStorage": "Perekaman panggilan memerlukan penyimpanan yang belum disiapkan di deployment ini. Minta administrator platform Anda untuk menyiapkannya.",
|
|
8697
|
+
"admin.applicationLibrary.dialog.voiceRecording.loadFailed": "Pengaturan perekaman panggilan tidak dapat dimuat.",
|
|
8698
|
+
"admin.applicationLibrary.dialog.voiceRecording.saveFailed": "Perekaman panggilan tidak dapat disimpan.",
|
|
8699
|
+
"admin.applicationLibrary.dialog.voiceRecording.retry": "Coba lagi",
|
|
8596
8700
|
"admin.applicationLibrary.toast.usingCandidate": "{name} sekarang menggunakan versi {version} di organisasi ini",
|
|
8597
8701
|
"admin.applicationLibrary.toast.usingCurrent": "{name} kembali ke versi {version}",
|
|
8598
8702
|
"admin.applicationLibrary.error.candidateChanged": "Versi yang lebih baru berubah saat Anda meninjaunya. Tinjau lagi.",
|
|
@@ -9704,6 +9808,7 @@ var id_default = {
|
|
|
9704
9808
|
"admin.models.form.catalog.priceTitle": "Harga daftar per 1 juta token \u2014 input / output",
|
|
9705
9809
|
"admin.models.form.catalog.image": "Gambar",
|
|
9706
9810
|
"admin.models.form.catalog.embedding": "Embedding",
|
|
9811
|
+
"admin.models.form.catalog.transcription": "Transkripsi",
|
|
9707
9812
|
"admin.models.form.catalog.azureHint": "Masukkan nama deployment",
|
|
9708
9813
|
"admin.models.form.catalog.customHint": "Masukkan ID model",
|
|
9709
9814
|
"admin.models.form.catalog.azureTyped": "Deployment Azure \u201C{id}\u201D",
|
|
@@ -9793,6 +9898,7 @@ var id_default = {
|
|
|
9793
9898
|
"platformNav.skip": "Langsung ke konten",
|
|
9794
9899
|
"platformNav.description.chat": "Bekerja bersama agen melalui percakapan.",
|
|
9795
9900
|
"platformNav.description.omnichannel": "Jawab chat WhatsApp pelanggan bersama tim Anda.",
|
|
9901
|
+
"platformNav.description.voice": "Panggilan dengan Agen Anda, Agen yang menjawab panggilan, dan pemakaian panggilan.",
|
|
9796
9902
|
"platformNav.description.agents": "Konfigurasi, lengkapi, dan kelola agen.",
|
|
9797
9903
|
"platformNav.description.workflows": "Rancang proses dan pantau eksekusinya.",
|
|
9798
9904
|
"platformNav.description.functions": "Buat dan jalankan fungsi yang dapat digunakan kembali.",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { MagnifyingGlassIcon } from './chunk-X3QVICX7.js';
|
|
3
|
-
import { requestPaneFocus, useArtifacts, usePlugins, useCanvasStore, useArtifactStore, useChatOverviewStore, useSourcesEnrichment, sourceKind, useCitationViewer, resolveSourceDisplay, extractDomain, canvasId, StudioDisplayIcon, LayoutDashboardIcon, useAgentPanelStore, SourceFavicon, dedup, useArtifactFileObjectUrl, resolveArtifactIconFormat, artifactFormatIcon, avatarMotionForStream, AGENT_AVATAR_SIZE, getFileCategory, FileThumbnail, formatFileSize, usePathname, artifactFormatSubtitle, artifactCategory, Input, MobileScreenSheet, TooltipTrigger, Tooltip, useChatCapabilities, TooltipContent, processMessageParts, GridSpinner, PanelEdgeRing, ArtifactActionsMenu, DotGrid1x3HorizontalTightIcon, extractCitationsFromSteps, resolvePluginLanguage, getMessageDisplayTimestampValue } from './chunk-
|
|
3
|
+
import { requestPaneFocus, useArtifacts, usePlugins, useCanvasStore, useArtifactStore, useChatOverviewStore, useSourcesEnrichment, sourceKind, useCitationViewer, resolveSourceDisplay, extractDomain, canvasId, StudioDisplayIcon, LayoutDashboardIcon, useAgentPanelStore, SourceFavicon, dedup, useArtifactFileObjectUrl, resolveArtifactIconFormat, artifactFormatIcon, avatarMotionForStream, AGENT_AVATAR_SIZE, getFileCategory, FileThumbnail, formatFileSize, usePathname, artifactFormatSubtitle, artifactCategory, Input, MobileScreenSheet, TooltipTrigger, Tooltip, useChatCapabilities, TooltipContent, processMessageParts, GridSpinner, PanelEdgeRing, ArtifactActionsMenu, DotGrid1x3HorizontalTightIcon, extractCitationsFromSteps, resolvePluginLanguage, getMessageDisplayTimestampValue } from './chunk-4DWSQQQE.js';
|
|
4
4
|
import { Popover, PopoverTrigger, PopoverContent, Sheet, SheetContent, SheetHeader, SheetTitle } from './chunk-T5SANYSX.js';
|
|
5
|
-
import { useTranslation, useIsMobile } from './chunk-
|
|
6
|
-
import { Collapsible, CollapsibleTrigger, CollapsibleContent, Shimmer, HoverCard, HoverCardTrigger, HoverCardContent } from './chunk-
|
|
5
|
+
import { useTranslation, useIsMobile } from './chunk-3ED4DPTV.js';
|
|
6
|
+
import { Collapsible, CollapsibleTrigger, CollapsibleContent, Shimmer, HoverCard, HoverCardTrigger, HoverCardContent } from './chunk-X33KXNO3.js';
|
|
7
7
|
import { ChevronDownMediumIcon, ScrollArea, Skeleton, Button } from './chunk-UWKO24VT.js';
|
|
8
8
|
import { Dialog, DialogContent, DialogHeader, DialogTitle, CrossMediumIcon } from './chunk-2P4IEVOQ.js';
|
|
9
9
|
import { ChevronRightIcon } from './chunk-C3HW5S2Z.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { useTranslation } from './chunk-
|
|
2
|
+
import { useTranslation } from './chunk-3ED4DPTV.js';
|
|
3
3
|
import { Skeleton } from './chunk-UWKO24VT.js';
|
|
4
4
|
import { useRef, useState, useEffect } from 'react';
|
|
5
5
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { ChevronLeftIcon } from './chunk-CWAOLMFS.js';
|
|
3
3
|
import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from './chunk-T5SANYSX.js';
|
|
4
|
-
import { useIsMobile, useTranslation } from './chunk-
|
|
5
|
-
import { ToolCallItem, ProcessorIcon } from './chunk-
|
|
6
|
-
import { toolKindVerb, getToolMeta, Shimmer, Collapse, ToolGroupReasoningItem, SkillToolItem, DeviceDesktopIcon, WorldSearchIcon, FileTextIcon, useStreamdownPlugins, CircleXIcon, STREAMDOWN_LINK_SAFETY, Folder1Icon, AppIconFrame, AppIcon, Collapsible, CollapsibleTrigger, CollapsibleContent, SquareArrowTopRightIcon, Icon } from './chunk-
|
|
4
|
+
import { useIsMobile, useTranslation } from './chunk-3ED4DPTV.js';
|
|
5
|
+
import { ToolCallItem, ProcessorIcon } from './chunk-BRCS2NHC.js';
|
|
6
|
+
import { toolKindVerb, getToolMeta, Shimmer, Collapse, ToolGroupReasoningItem, SkillToolItem, DeviceDesktopIcon, WorldSearchIcon, FileTextIcon, useStreamdownPlugins, CircleXIcon, STREAMDOWN_LINK_SAFETY, Folder1Icon, AppIconFrame, AppIcon, Collapsible, CollapsibleTrigger, CollapsibleContent, SquareArrowTopRightIcon, Icon } from './chunk-X33KXNO3.js';
|
|
7
7
|
import { ChevronDownMediumIcon, Button, Skeleton, buttonVariants } from './chunk-UWKO24VT.js';
|
|
8
8
|
import { Dialog, DialogContent, DialogTitle, DialogDescription, DialogClose, CrossMediumIcon, DialogHeader, DialogFooter } from './chunk-2P4IEVOQ.js';
|
|
9
9
|
import { zipSync } from './chunk-CDTES65T.js';
|
|
@@ -10517,6 +10517,7 @@ function useSourcesEnrichment(citations) {
|
|
|
10517
10517
|
if (pending.length === 0) return;
|
|
10518
10518
|
Promise.all(pending).then(() => {
|
|
10519
10519
|
if (!cancelled2) syncFromCache(urls, setEnriched);
|
|
10520
|
+
}).catch(() => {
|
|
10520
10521
|
});
|
|
10521
10522
|
return () => {
|
|
10522
10523
|
cancelled2 = true;
|
|
@@ -11531,7 +11532,7 @@ function SourceFavicon({
|
|
|
11531
11532
|
size = "sm",
|
|
11532
11533
|
kind = "web"
|
|
11533
11534
|
}) {
|
|
11534
|
-
const sizeClass =
|
|
11535
|
+
const sizeClass = "size-4";
|
|
11535
11536
|
const iconSize = size === "sm" ? "size-2.5" : "size-4";
|
|
11536
11537
|
const [idx, setIdx] = useState(0);
|
|
11537
11538
|
if (kind === "knowledge") {
|
|
@@ -13496,7 +13497,7 @@ function connectVerb(opts) {
|
|
|
13496
13497
|
|
|
13497
13498
|
// ../platform-kit/src/lib/platform-scope-path.ts
|
|
13498
13499
|
var SLUG = /^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/;
|
|
13499
|
-
var WORKSPACE_APPS = /* @__PURE__ */ new Set(["home", "chat", "omnichannel", "apps", "applications", "blueprint", "forge"]);
|
|
13500
|
+
var WORKSPACE_APPS = /* @__PURE__ */ new Set(["home", "chat", "omnichannel", "voice", "apps", "applications", "blueprint", "forge"]);
|
|
13500
13501
|
var CONSOLE_APPS = /* @__PURE__ */ new Set(["agents", "workflows", "functions"]);
|
|
13501
13502
|
var CONSOLE_UNSCOPED = /* @__PURE__ */ new Set(["workspaces", "connections"]);
|
|
13502
13503
|
var ORG_APPS = /* @__PURE__ */ new Set(["blueprint", "settings", "admin"]);
|
|
@@ -17723,7 +17724,7 @@ function DelegationToolItem({
|
|
|
17723
17724
|
useEffect(() => {
|
|
17724
17725
|
if (!discoveredRunId || state !== "running" || !apiBasePath) return;
|
|
17725
17726
|
const controller = new AbortController();
|
|
17726
|
-
(async () => {
|
|
17727
|
+
void (async () => {
|
|
17727
17728
|
try {
|
|
17728
17729
|
const res = await fetch(
|
|
17729
17730
|
`${apiBasePath}/v1/chat/${encodeURIComponent(discoveredRunId)}/stream`,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { MagnifyingGlassIcon } from './chunk-X3QVICX7.js';
|
|
3
3
|
import { Sheet, SheetContent, SheetHeader, SheetTitle, Popover, PopoverTrigger, PopoverContent } from './chunk-T5SANYSX.js';
|
|
4
|
-
import { useIsMobile, useTranslation } from './chunk-
|
|
4
|
+
import { useIsMobile, useTranslation } from './chunk-3ED4DPTV.js';
|
|
5
5
|
import { CrossMediumIcon } from './chunk-2P4IEVOQ.js';
|
|
6
6
|
import { AgentAvatar } from './chunk-RVJEI4ZY.js';
|
|
7
7
|
import { cn, Checkmark1Icon } from './chunk-LGVMMBL3.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { describeToolRow, Code2Icon, getToolMeta, Shimmer, Collapse } from './chunk-
|
|
2
|
+
import { describeToolRow, Code2Icon, getToolMeta, Shimmer, Collapse } from './chunk-X33KXNO3.js';
|
|
3
3
|
import { ChevronDownMediumIcon } from './chunk-UWKO24VT.js';
|
|
4
4
|
import { cn } from './chunk-LGVMMBL3.js';
|
|
5
5
|
import { memo, useState, useMemo } from 'react';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { getToolMeta } from './chunk-
|
|
2
|
+
import { getToolMeta } from './chunk-X33KXNO3.js';
|
|
3
3
|
import { Button } from './chunk-UWKO24VT.js';
|
|
4
4
|
import { ChevronDownMediumIcon, CrossMediumIcon } from './chunk-TUDJ35AB.js';
|
|
5
5
|
import { useChatClientOptional } from './chunk-6JLWE7M3.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
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, 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, attachmentFileOf, MobileScreenSheet, useAgentHistorySource, treatyErrorMessage, useRouter, useBasePath, useAgentPanelStore, AgentRoutineForm, getFileCategory, unwrap, unwrapData, unwrapDataDeep, formatDecisionTime, DecisionCard, LoaderIcon, formatRelativeTime, CircleCheckIcon, agentRoutineKeys, useOptionalAgentsContext, avatarMotionForStream, AGENT_AVATAR_SIZE } from './chunk-
|
|
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, attachmentFileOf, MobileScreenSheet, useAgentHistorySource, treatyErrorMessage, useRouter, useBasePath, useAgentPanelStore, AgentRoutineForm, getFileCategory, unwrap, unwrapData, unwrapDataDeep, formatDecisionTime, DecisionCard, LoaderIcon, formatRelativeTime, CircleCheckIcon, agentRoutineKeys, useOptionalAgentsContext, avatarMotionForStream, AGENT_AVATAR_SIZE } from './chunk-4DWSQQQE.js';
|
|
3
3
|
import { Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription, Popover, PopoverTrigger, PopoverContent } from './chunk-T5SANYSX.js';
|
|
4
|
-
import { useIsMobile, useTranslation } from './chunk-
|
|
5
|
-
import { MessageToolbar, MessageResponse, SquareArrowTopRightIcon, FileTextIcon, Shimmer, ClipboardIcon, Message, MessageContent, PencilIcon, deferDuringLayoutMotion, HoverCard, HoverCardTrigger, HoverCardContent, Collapse, Icon, CircleXIcon, ClockIcon } from './chunk-
|
|
4
|
+
import { useIsMobile, useTranslation } from './chunk-3ED4DPTV.js';
|
|
5
|
+
import { MessageToolbar, MessageResponse, SquareArrowTopRightIcon, FileTextIcon, Shimmer, ClipboardIcon, Message, MessageContent, PencilIcon, deferDuringLayoutMotion, HoverCard, HoverCardTrigger, HoverCardContent, Collapse, Icon, CircleXIcon, ClockIcon } from './chunk-X33KXNO3.js';
|
|
6
6
|
import { ChevronDownMediumIcon, Button, ScrollArea, Skeleton } from './chunk-UWKO24VT.js';
|
|
7
7
|
import { CrossMediumIcon } from './chunk-2P4IEVOQ.js';
|
|
8
8
|
import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent } from './chunk-C3HW5S2Z.js';
|
|
@@ -858,6 +858,7 @@ function CopyButton({ text, className }) {
|
|
|
858
858
|
navigator.clipboard.writeText(text).then(() => {
|
|
859
859
|
setCopied(true);
|
|
860
860
|
setTimeout(() => setCopied(false), 2e3);
|
|
861
|
+
}).catch(() => {
|
|
861
862
|
});
|
|
862
863
|
};
|
|
863
864
|
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
@@ -4660,7 +4661,8 @@ var DocumentStreamCard = memo(function DocumentStreamCard2({
|
|
|
4660
4661
|
} : void 0;
|
|
4661
4662
|
const copyContent = () => {
|
|
4662
4663
|
if (!displayContent) return;
|
|
4663
|
-
navigator.clipboard.writeText(displayContent)
|
|
4664
|
+
void navigator.clipboard.writeText(displayContent).catch(() => {
|
|
4665
|
+
});
|
|
4664
4666
|
setCopied(true);
|
|
4665
4667
|
window.setTimeout(() => setCopied(false), 1200);
|
|
4666
4668
|
};
|
|
@@ -5440,6 +5442,7 @@ var AssistantMessage = memo(function AssistantMessage2({
|
|
|
5440
5442
|
{ isCancelled: () => cancelled }
|
|
5441
5443
|
).then((suggestions) => {
|
|
5442
5444
|
if (!cancelled && suggestions) setPolledFollowUps(suggestions);
|
|
5445
|
+
}).catch(() => {
|
|
5443
5446
|
});
|
|
5444
5447
|
return () => {
|
|
5445
5448
|
cancelled = true;
|
|
@@ -5470,7 +5473,7 @@ var AssistantMessage = memo(function AssistantMessage2({
|
|
|
5470
5473
|
await new Promise((r) => setTimeout(r, 1e3));
|
|
5471
5474
|
}
|
|
5472
5475
|
};
|
|
5473
|
-
fetchMetadata();
|
|
5476
|
+
void fetchMetadata();
|
|
5474
5477
|
return () => {
|
|
5475
5478
|
cancelled = true;
|
|
5476
5479
|
};
|
|
@@ -6099,6 +6102,7 @@ var UserMessageActions = memo(function UserMessageActions2({
|
|
|
6099
6102
|
navigator.clipboard.writeText(messageText).then(() => {
|
|
6100
6103
|
setCopied(true);
|
|
6101
6104
|
setTimeout(() => setCopied(false), 2e3);
|
|
6105
|
+
}).catch(() => {
|
|
6102
6106
|
});
|
|
6103
6107
|
}, [messageText]);
|
|
6104
6108
|
if (isStreaming) return null;
|