@agent-native/toolkit 0.198.4 → 0.198.6
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/app/agentkit/react/components.d.ts +6 -3
- package/dist/app/agentkit/react/components.d.ts.map +1 -1
- package/dist/app/agentkit/react/components.js +98 -68
- package/dist/app/agentkit/react/components.js.map +1 -1
- package/dist/app/agentkit/react/styles.css +36 -24
- package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
- package/dist/app/chat/AgentKitAssistantChat.js +32 -15
- package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
- package/dist/app/chat/AgentPanel.d.ts +1 -1
- package/dist/app/chat/AgentPanel.d.ts.map +1 -1
- package/dist/app/chat/AgentPanel.js +11 -38
- package/dist/app/chat/AgentPanel.js.map +1 -1
- package/dist/app/chat/AgentSidebar.d.ts.map +1 -1
- package/dist/app/chat/AgentSidebar.js +3 -11
- package/dist/app/chat/AgentSidebar.js.map +1 -1
- package/dist/app/chat/chat/tool-call-display.d.ts +2 -1
- package/dist/app/chat/chat/tool-call-display.d.ts.map +1 -1
- package/dist/app/chat/chat/tool-call-display.js +83 -55
- package/dist/app/chat/chat/tool-call-display.js.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.js +1 -0
- package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.js +1 -0
- package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
- package/dist/app/i18n/catalogs/en-US.d.ts +1 -0
- package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/en-US.js +1 -0
- package/dist/app/i18n/catalogs/en-US.js.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.js +1 -0
- package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.js +1 -0
- package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.js +1 -0
- package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.js +1 -0
- package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.js +1 -0
- package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.js +1 -0
- package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.js +1 -0
- package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.js +1 -0
- package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
- package/dist/composer/PromptComposer.d.ts +3 -0
- package/dist/composer/PromptComposer.d.ts.map +1 -1
- package/dist/composer/PromptComposer.js +2 -2
- package/dist/composer/PromptComposer.js.map +1 -1
- package/dist/composer/TiptapComposer.d.ts +4 -1
- package/dist/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/composer/TiptapComposer.js +32 -25
- package/dist/composer/TiptapComposer.js.map +1 -1
- package/dist/ui/sonner.js +1 -1
- package/dist/ui/sonner.js.map +1 -1
- package/package.json +3 -3
- package/src/app/agentkit/react/components.interaction.spec.tsx +93 -0
- package/src/app/agentkit/react/components.spec.tsx +1 -2
- package/src/app/agentkit/react/components.tsx +185 -132
- package/src/app/agentkit/react/composer-context.spec.tsx +7 -0
- package/src/app/agentkit/react/lifecycle.spec.tsx +556 -39
- package/src/app/agentkit/react/styles.css +36 -24
- package/src/app/chat/AgentKitAssistantChat.spec.tsx +60 -1
- package/src/app/chat/AgentKitAssistantChat.tsx +45 -14
- package/src/app/chat/AgentPanel.overlay.spec.tsx +28 -4
- package/src/app/chat/AgentPanel.tsx +51 -168
- package/src/app/chat/AgentSidebar.spec.tsx +19 -19
- package/src/app/chat/AgentSidebar.tsx +59 -94
- package/src/app/chat/chat/tool-call-display.spec.tsx +371 -15
- package/src/app/chat/chat/tool-call-display.tsx +154 -80
- package/src/app/i18n/catalogs/ar-SA.ts +1 -0
- package/src/app/i18n/catalogs/de-DE.ts +1 -0
- package/src/app/i18n/catalogs/en-US.ts +1 -0
- package/src/app/i18n/catalogs/es-ES.ts +1 -0
- package/src/app/i18n/catalogs/fr-FR.ts +1 -0
- package/src/app/i18n/catalogs/hi-IN.ts +1 -0
- package/src/app/i18n/catalogs/ja-JP.ts +1 -0
- package/src/app/i18n/catalogs/ko-KR.ts +1 -0
- package/src/app/i18n/catalogs/pt-BR.ts +1 -0
- package/src/app/i18n/catalogs/zh-CN.ts +1 -0
- package/src/app/i18n/catalogs/zh-TW.ts +1 -0
- package/src/app-shell/sidebar-overflow.spec.tsx +2 -1
- package/src/composer/PromptComposer.context.spec.tsx +28 -15
- package/src/composer/PromptComposer.tsx +7 -0
- package/src/composer/TiptapComposer.spec.ts +40 -6
- package/src/composer/TiptapComposer.tsx +89 -89
- package/src/ui/sonner.spec.ts +15 -0
- package/src/ui/sonner.tsx +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useComposer, useComposerRuntime } from "@assistant-ui/react";
|
|
3
|
-
import { IconArrowUp, IconCheck, IconChevronDown, IconChevronRight, IconBulb, IconClock, IconBolt, IconTool, IconX, IconClipboardList, IconKey, IconPencil, IconPlugConnected, IconHelpCircle,
|
|
3
|
+
import { IconArrowUp, IconCheck, IconChevronDown, IconChevronRight, IconBulb, IconClock, IconBolt, IconTool, IconX, IconClipboardList, IconKey, IconPencil, IconPlugConnected, IconHelpCircle, IconAlertCircle, IconLoader2, IconRefresh, } from "@tabler/icons-react";
|
|
4
4
|
import Placeholder from "@tiptap/extension-placeholder";
|
|
5
5
|
import { TextSelection } from "@tiptap/pm/state";
|
|
6
6
|
import { useEditor, EditorContent } from "@tiptap/react";
|
|
7
7
|
import StarterKit from "@tiptap/starter-kit";
|
|
8
|
-
import { useState, useRef, useEffect, useLayoutEffect, useCallback, useImperativeHandle, useMemo, } from "react";
|
|
8
|
+
import React, { useState, useRef, useEffect, useLayoutEffect, useCallback, useImperativeHandle, useMemo, } from "react";
|
|
9
9
|
import { toast } from "sonner";
|
|
10
10
|
import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger, } from "../ui/popover.js";
|
|
11
11
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../ui/tooltip.js";
|
|
@@ -1190,7 +1190,7 @@ function ModelSelector({ model, effort, engines, agents, selectedAgent, selected
|
|
|
1190
1190
|
: undefined);
|
|
1191
1191
|
return (_jsxs("div", { className: showProviderLabels && groupIndex > 0
|
|
1192
1192
|
? "mt-2 pt-1"
|
|
1193
|
-
: "", children: [showProviderLabels && (_jsxs("div", { className: "group flex items-center px-2 py-1", children: [_jsx("span", { className: "shrink-0 text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: group.label }), !group.configured && statusLabel && (_jsx("button", { type: "button", "aria-label": statusLabel, className: "ms-auto max-w-[9rem] shrink-0 cursor-pointer truncate px-0 py-1 text-end text-[10px] text-muted-foreground/60 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100 hover:text-foreground focus-visible:opacity-100", onClick: () => canConnectLocalRuntime
|
|
1193
|
+
: "", children: [showProviderLabels && (_jsxs("div", { className: "group flex items-center px-2 py-1", children: [_jsx("span", { className: "shrink-0 text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: group.label.replace(/ · Builder\.io$/i, "") }), !group.configured && statusLabel && (_jsx("button", { type: "button", "aria-label": statusLabel, className: "ms-auto max-w-[9rem] shrink-0 cursor-pointer truncate px-0 py-1 text-end text-[10px] text-muted-foreground/60 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100 hover:text-foreground focus-visible:opacity-100", onClick: () => canConnectLocalRuntime
|
|
1194
1194
|
? connectLocalRuntime(group.engine)
|
|
1195
1195
|
: openLlmSettings(), children: statusLabel })), group.configured && statusLabel && (_jsx("span", { className: "ms-auto max-w-[9rem] shrink-0 truncate py-1 text-end text-[10px] text-muted-foreground/70 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100", children: statusLabel }))] })), models.map((m) => {
|
|
1196
1196
|
const isSelected = m === model && group.configured;
|
|
@@ -1235,7 +1235,7 @@ function ModelSelector({ model, effort, engines, agents, selectedAgent, selected
|
|
|
1235
1235
|
? "text-foreground"
|
|
1236
1236
|
: "text-muted-foreground"}`, children: option.label }), option.enabled === terminalModeControl.enabled && (_jsx(IconCheck, { className: "size-4 shrink-0 text-primary" }))] }, option.label))) }))] }) }) })] }) })] }));
|
|
1237
1237
|
}
|
|
1238
|
-
export function TiptapComposer({ placeholder, ariaLabel, disabled = false, contextControlsDisabled = false, submissionDisabled = false, submitting = false, maxDocumentAttachmentBytes = MAX_DOCUMENT_ATTACHMENT_BYTES, documentAttachmentLimitLabel = "PDFs", attachmentsEnabled = true, onAttachmentRequest, contextButtonTooltipDisabled = false, focusRef, initialText, initialTextKey, onSubmit, onBeforeSubmit, getSubmitFailureDraftScope, clearOnSubmit = true, clearOnSubmitImmediately = false, onTextChange, actionButton, willQueue = false, extraActionButton, stopButton, attachButton, modeControl, toolbarSlot, layoutVariant = "default", slashCommands = [], slashSkills = [], includeDefaultSlashCommands = true, includeDefaultSlashSkills = true, onSlashCommand, execMode, onExecModeChange, planModeDisabled = false, planModeDisabledReason, voiceEnabled = DEFAULT_VOICE_DICTATION_ENABLED, selectedModel, selectedEngine, selectedEffort, showAutoModelOption = true, modelSelectorOpen, availableModels, modelListLoading, onModelChange, onEffortChange, availableAgents, selectedAgent, agentOnly = false, hostedHarness, onAgentChange, onModelSelectorOpenChange, providerConnectStatusEnabled, onConnectProvider, onConnectLocalRuntime, imageModelMenu, draftScope, contextItems: providedContextItems, onRemoveContextItem,
|
|
1238
|
+
export function TiptapComposer({ placeholder, ariaLabel, disabled = false, contextControlsDisabled = false, submissionDisabled = false, sendButtonDisabled = false, submitting = false, maxDocumentAttachmentBytes = MAX_DOCUMENT_ATTACHMENT_BYTES, documentAttachmentLimitLabel = "PDFs", attachmentsEnabled = true, onAttachmentRequest, contextButtonTooltipDisabled = false, focusRef, initialText, initialTextKey, onSubmit, onBeforeSubmit, onSubmissionPendingChange, getSubmitFailureDraftScope, clearOnSubmit = true, clearOnSubmitImmediately = false, onTextChange, actionButton, willQueue = false, extraActionButton, stopButton, attachButton, modeControl, toolbarSlot, layoutVariant = "default", slashCommands = [], slashSkills = [], includeDefaultSlashCommands = true, includeDefaultSlashSkills = true, onSlashCommand, execMode, onExecModeChange, planModeDisabled = false, planModeDisabledReason, voiceEnabled = DEFAULT_VOICE_DICTATION_ENABLED, selectedModel, selectedEngine, selectedEffort, showAutoModelOption = true, modelSelectorOpen, availableModels, modelListLoading, onModelChange, onEffortChange, availableAgents, selectedAgent, agentOnly = false, hostedHarness, onAgentChange, onModelSelectorOpenChange, providerConnectStatusEnabled, onConnectProvider, onConnectLocalRuntime, imageModelMenu, draftScope, contextItems: providedContextItems, onRemoveContextItem, onRetryContextItem, contextMenuItems, plusMenuMode = "full", terminalModeControl, extensionTools = false, interceptBuildRequestsForBuilder = false, onAttachmentError, mentionItems: hostMentionItems = [], mentionPopoverDensity = "default", includeDefaultMentionSearch = true, onReferencesChange, onEscape, onFocus, onBlur, onSelectionChange, }) {
|
|
1239
1239
|
const contextItems = providedContextItems ?? [];
|
|
1240
1240
|
const hasContextMenu = (contextMenuItems !== undefined || plusMenuMode !== "hidden") &&
|
|
1241
1241
|
!(attachmentsEnabled && attachButton);
|
|
@@ -2609,7 +2609,6 @@ export function TiptapComposer({ placeholder, ariaLabel, disabled = false, conte
|
|
|
2609
2609
|
(composerDocumentHasContent(ed.state.doc) ||
|
|
2610
2610
|
slotReferencesRef.current.length > 0);
|
|
2611
2611
|
const canPreserveFollowUp = preserveFollowUp &&
|
|
2612
|
-
clearedBeforePreflight &&
|
|
2613
2612
|
!isForkRecovery &&
|
|
2614
2613
|
hasFollowUp &&
|
|
2615
2614
|
(currentDraft === null ||
|
|
@@ -2672,6 +2671,7 @@ export function TiptapComposer({ placeholder, ariaLabel, disabled = false, conte
|
|
|
2672
2671
|
}
|
|
2673
2672
|
if (onBeforeSubmit) {
|
|
2674
2673
|
submitInFlightRef.current = true;
|
|
2674
|
+
onSubmissionPendingChange?.(true);
|
|
2675
2675
|
try {
|
|
2676
2676
|
const shouldSubmit = await onBeforeSubmit();
|
|
2677
2677
|
if (!shouldSubmit) {
|
|
@@ -2690,6 +2690,7 @@ export function TiptapComposer({ placeholder, ariaLabel, disabled = false, conte
|
|
|
2690
2690
|
}
|
|
2691
2691
|
finally {
|
|
2692
2692
|
submitInFlightRef.current = false;
|
|
2693
|
+
onSubmissionPendingChange?.(false);
|
|
2693
2694
|
}
|
|
2694
2695
|
}
|
|
2695
2696
|
if (!isComposerEditorUsable(ed) ||
|
|
@@ -2820,6 +2821,7 @@ export function TiptapComposer({ placeholder, ariaLabel, disabled = false, conte
|
|
|
2820
2821
|
submitInFlightRef.current = true;
|
|
2821
2822
|
let locallySubmitted = false;
|
|
2822
2823
|
let settled = false;
|
|
2824
|
+
onSubmissionPendingChange?.(true);
|
|
2823
2825
|
const clearSubmittedComposer = () => {
|
|
2824
2826
|
if (clearOnSubmit) {
|
|
2825
2827
|
clearComposerDraft(submittingDraftKey, submittingDraftSnapshot);
|
|
@@ -2891,7 +2893,7 @@ export function TiptapComposer({ placeholder, ariaLabel, disabled = false, conte
|
|
|
2891
2893
|
}
|
|
2892
2894
|
catch (error) {
|
|
2893
2895
|
if (locallySubmitted) {
|
|
2894
|
-
restoreSubmittedDraft();
|
|
2896
|
+
restoreSubmittedDraft(true);
|
|
2895
2897
|
return true;
|
|
2896
2898
|
}
|
|
2897
2899
|
restoreSubmittedDraft(true);
|
|
@@ -2905,6 +2907,7 @@ export function TiptapComposer({ placeholder, ariaLabel, disabled = false, conte
|
|
|
2905
2907
|
finally {
|
|
2906
2908
|
settled = true;
|
|
2907
2909
|
submitInFlightRef.current = false;
|
|
2910
|
+
onSubmissionPendingChange?.(false);
|
|
2908
2911
|
}
|
|
2909
2912
|
if (!isCurrentDraftScope()) {
|
|
2910
2913
|
clearComposerDraft(submittingDraftKey, submittingDraftSnapshot);
|
|
@@ -2983,6 +2986,7 @@ export function TiptapComposer({ placeholder, ariaLabel, disabled = false, conte
|
|
|
2983
2986
|
clearOnSubmitImmediately,
|
|
2984
2987
|
getSubmitFailureDraftScope,
|
|
2985
2988
|
onBeforeSubmit,
|
|
2989
|
+
onSubmissionPendingChange,
|
|
2986
2990
|
extractComposerPayload,
|
|
2987
2991
|
syncComposerState,
|
|
2988
2992
|
updateSlotReferences,
|
|
@@ -3366,7 +3370,7 @@ export function TiptapComposer({ placeholder, ariaLabel, disabled = false, conte
|
|
|
3366
3370
|
if (isComposerEditorUsable(editor)) {
|
|
3367
3371
|
editor.commands.focus("end");
|
|
3368
3372
|
}
|
|
3369
|
-
} }) })), hasContextRows && (_jsxs("div", { "data-agent-composer-variant": layoutVariant, "data-agent-composer-slot": "context-row", className: "agent-composer-context-row flex flex-wrap gap-1.5 px-2.5 pt-2 pb-0", children: [slotReferences.map((ref) => (_jsxs("span", { className: "inline-flex max-w-full items-center gap-1.5 rounded-md border border-border bg-background px-2 py-
|
|
3373
|
+
} }) })), hasContextRows && (_jsxs("div", { "data-agent-composer-variant": layoutVariant, "data-agent-composer-slot": "context-row", className: "agent-composer-context-row flex flex-wrap gap-1.5 px-2.5 pt-2 pb-0", children: [slotReferences.map((ref) => (_jsxs("span", { className: "inline-flex max-w-full items-center gap-1.5 rounded-md border border-border bg-background px-2 py-0.5 text-[11px] font-medium text-foreground shadow-sm", children: [_jsx(MentionItemMedia, { media: ref.media, size: "sm", fallbackIcon: "clipboard" }), ref.slotLabel && (_jsx("span", { className: "shrink-0 text-muted-foreground", children: ref.slotLabel })), _jsx("span", { className: "min-w-0 truncate", children: ref.label }), _jsx("button", { type: "button", onClick: () => {
|
|
3370
3374
|
updateSlotReferences((current) => removeSlotReference(current, ref));
|
|
3371
3375
|
if (isComposerEditorUsable(editor)) {
|
|
3372
3376
|
editor.commands.focus("end");
|
|
@@ -3374,23 +3378,26 @@ export function TiptapComposer({ placeholder, ariaLabel, disabled = false, conte
|
|
|
3374
3378
|
}, "aria-label": t("agentChat.composer.removeReference", {
|
|
3375
3379
|
defaultValue: "Remove {{name}} reference",
|
|
3376
3380
|
name: slotReferenceTitle(ref),
|
|
3377
|
-
}), className: "ms-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground", children: _jsx(IconX, { className: "h-3 w-3" }) })] }, ref.slotKey))), contextItems.map((item) => (_jsxs("span", { "data-context-key": item.key, "data-context-status": item.status ?? "ready", title: item.statusMessage, "data-state": selectedContextItemKey === item.key ? "selected" : undefined, className: `inline-flex max-w-full items-center gap-1.5 rounded-md border px-2 py-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3381
|
+
}), className: "ms-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground", children: _jsx(IconX, { className: "h-3 w-3" }) })] }, ref.slotKey))), contextItems.map((item) => (_jsxs(React.Fragment, { children: [_jsxs("span", { "data-context-key": item.key, "data-context-status": item.status ?? "ready", title: item.statusMessage, "data-state": selectedContextItemKey === item.key ? "selected" : undefined, className: `inline-flex max-w-full items-center gap-1.5 rounded-md border px-2 py-0.5 text-[11px] font-medium text-foreground ${selectedContextItemKey === item.key
|
|
3382
|
+
? "border-ring bg-accent ring-2 ring-ring/40"
|
|
3383
|
+
: "border-border bg-muted/50"}`, children: [item.status === "pending" ? (_jsx(IconLoader2, { "aria-label": t("agentChat.composer.contextPending", {
|
|
3384
|
+
defaultValue: "Context pending",
|
|
3385
|
+
}), className: "size-3 shrink-0 animate-spin motion-reduce:animate-none text-muted-foreground" })) : item.status === "error" ? (_jsx(IconAlertCircle, { "aria-label": t("agentChat.composer.contextError", {
|
|
3386
|
+
defaultValue: "Context failed",
|
|
3387
|
+
}), className: "size-3 shrink-0 text-destructive" })) : (_jsx(IconClipboardList, { className: "h-3 w-3 shrink-0 text-muted-foreground" })), _jsx("span", { className: "min-w-0 truncate", children: item.title }), onRemoveContextItem && item.removable !== false ? (_jsx("button", { type: "button", onClick: () => {
|
|
3388
|
+
selectedContextItemKeyRef.current = null;
|
|
3389
|
+
setSelectedContextItemKey(null);
|
|
3390
|
+
onRemoveContextItem?.(item.key);
|
|
3391
|
+
}, "aria-label": t("agentChat.composer.removeContext", {
|
|
3392
|
+
defaultValue: "Remove {{name}} context",
|
|
3393
|
+
name: item.title,
|
|
3394
|
+
}), className: "ms-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground", children: _jsx(IconX, { className: "h-3 w-3" }) })) : null] }), item.status === "error" && onRetryContextItem ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: () => onRetryContextItem(item.key), "aria-label": t("agentChat.composer.retryContext", {
|
|
3395
|
+
defaultValue: "Retry {{name}} context",
|
|
3396
|
+
name: item.title,
|
|
3397
|
+
}), className: "flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground", children: _jsx(IconRefresh, { "aria-hidden": "true", className: "size-3.5" }) }) }), _jsx(TooltipContent, { children: t("agentChat.composer.retryContext", {
|
|
3398
|
+
defaultValue: "Retry {{name}} context",
|
|
3399
|
+
name: item.title,
|
|
3400
|
+
}) })] })) : null] }, item.key)))] })), contextSubmissionError ? (_jsx("p", { role: "alert", className: "px-2 text-xs text-destructive", children: contextSubmissionError })) : null, _jsx("div", { "data-agent-composer-variant": layoutVariant, "data-agent-composer-slot": "editor-wrap", className: `agent-composer-editor-wrap ${composerMode || hasContextRows ? "px-2 pt-1 pb-1" : "px-2 pt-2 pb-1"}`, children: _jsx(EditorContent, { editor: editor, "data-agent-composer-variant": layoutVariant, "data-agent-composer-slot": "editor", className: "agent-composer-editor aui-composer flex-1 min-w-0 [&_.ProseMirror]:outline-none [&_.ProseMirror_p]:m-0 px-0.5" }) }), voiceEnabled && _jsx(VoiceRecordingOverlay, { voice: voice }), _jsxs("div", { "data-agent-composer-variant": layoutVariant, "data-agent-composer-slot": "toolbar", className: "agent-composer-toolbar flex items-center gap-1 px-2 py-1.5", children: [!launchersDisabled && attachmentsEnabled && attachButton ? (attachButton) : hasContextMenu ? (_jsx(ComposerPlusMenu, { contextMenuItems: launchersDisabled ? [] : contextLauncherItems, mode: launchersDisabled || plusMenuMode === "hidden"
|
|
3394
3401
|
? "upload-only"
|
|
3395
3402
|
: plusMenuMode, onSelectMode: handleSelectMode, terminalModeControl: terminalModeControl, extensionTools: extensionTools, attachmentsEnabled: attachmentsEnabled, open: contextMenuOpen, onOpenChange: setContextMenuOpen, onSearchChange: setContextMenuSearch, loading: mentionsLoading, error: mentionsError
|
|
3396
3403
|
? t("agentChat.composer.contextLoadFailed", {
|
|
@@ -3410,6 +3417,6 @@ export function TiptapComposer({ placeholder, ariaLabel, disabled = false, conte
|
|
|
3410
3417
|
}
|
|
3411
3418
|
const pageTarget = Array.from(document.querySelectorAll('button:not(:disabled), a[href], input:not([type="hidden"]):not(:disabled), textarea:not(:disabled)')).find((element) => !root?.contains(element) && !element.closest("[hidden]"));
|
|
3412
3419
|
pageTarget?.focus();
|
|
3413
|
-
}, disabled: launchersDisabled })) : null, toolbarSlot ?? modeControl, _jsx("div", { "data-agent-composer-slot": "toolbar-spacer", className: "flex-1" }), shouldRenderModelSelector(availableModels, onModelChange) && (_jsx(ModelSelector, { model: selectedModel ?? "", selectedEngine: selectedEngine, open: modelSelectorOpen, effort: selectedEffort, engines: availableModels, agents: availableAgents, selectedAgent: selectedAgent, agentOnly: agentOnly, hostedHarness: hostedHarness, showAutoModelOption: showAutoModelOption, modelListLoading: modelListLoading, onChange: onModelChange, onEffortChange: onEffortChange, onAgentChange: onAgentChange, onModelSelectorOpenChange: onModelSelectorOpenChange, providerConnectStatusEnabled: providerConnectStatusEnabled, onConnectProvider: onConnectProvider, onConnectLocalRuntime: onConnectLocalRuntime, terminalModeControl: terminalModeControl, imageModel: imageModelMenu })), execMode && onExecModeChange && (_jsx(ModeSelector, { mode: execMode, onChange: onExecModeChange, planModeDisabled: planModeDisabled, planModeDisabledReason: planModeDisabledReason })), actionButton ?? (_jsxs(_Fragment, { children: [extraActionButton, voiceEnabled && (_jsx(VoiceButton, { voice: voice, isMac: isMac, disabled: disabled })), primaryAction === "stop" ? (stopButton) : (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: () => void submitComposer("immediate"), disabled: !canSend, "aria-label":
|
|
3420
|
+
}, disabled: launchersDisabled })) : null, toolbarSlot ?? modeControl, _jsx("div", { "data-agent-composer-slot": "toolbar-spacer", className: "flex-1" }), shouldRenderModelSelector(availableModels, onModelChange) && (_jsx(ModelSelector, { model: selectedModel ?? "", selectedEngine: selectedEngine, open: modelSelectorOpen, effort: selectedEffort, engines: availableModels, agents: availableAgents, selectedAgent: selectedAgent, agentOnly: agentOnly, hostedHarness: hostedHarness, showAutoModelOption: showAutoModelOption, modelListLoading: modelListLoading, onChange: onModelChange, onEffortChange: onEffortChange, onAgentChange: onAgentChange, onModelSelectorOpenChange: onModelSelectorOpenChange, providerConnectStatusEnabled: providerConnectStatusEnabled, onConnectProvider: onConnectProvider, onConnectLocalRuntime: onConnectLocalRuntime, terminalModeControl: terminalModeControl, imageModel: imageModelMenu })), execMode && onExecModeChange && (_jsx(ModeSelector, { mode: execMode, onChange: onExecModeChange, planModeDisabled: planModeDisabled, planModeDisabledReason: planModeDisabledReason })), actionButton ?? (_jsxs(_Fragment, { children: [extraActionButton, voiceEnabled && (_jsx(VoiceButton, { voice: voice, isMac: isMac, disabled: disabled })), primaryAction === "stop" ? (stopButton) : (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: () => void submitComposer("immediate"), disabled: !canSend || sendButtonDisabled, "aria-label": sendButtonTooltip, "data-agent-composer-slot": "send-button", className: "agent-composer-send-button shrink-0 flex h-7 w-7 items-center justify-center rounded-full bg-primary text-primary-foreground hover:opacity-90 transition-[opacity,transform] duration-150 active:scale-[0.97] disabled:opacity-30 disabled:cursor-not-allowed", children: _jsx(IconArrowUp, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: sendButtonTooltip })] }))] }))] }), _jsx(MentionPopover, { ref: popoverRef, density: mentionPopoverDensity, type: popover?.type ?? "@", position: popover?.position ?? null, mentionItems: filteredMentionItems, skills: filteredSkills, commands: filteredCommands, hint: hint, isLoading: popover?.type === "@" ? mentionsLoading : skillsLoading, query: popover?.query ?? "", onSelectMention: handleSelectMention, onSelectSkill: handleSelectSkill, onSelectCommand: handleSelectCommand, onClose: closePopover })] }));
|
|
3414
3421
|
}
|
|
3415
3422
|
//# sourceMappingURL=TiptapComposer.js.map
|