@tutti-os/agent-gui 0.0.145 → 0.0.147
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/README.md +14 -9
- package/dist/agent-conversation/index.d.ts +36 -2
- package/dist/agent-conversation/index.js +3 -1
- package/dist/agent-conversation/index.js.map +1 -1
- package/dist/agent-gui.d.ts +12 -0
- package/dist/agent-gui.js +3 -3
- package/dist/app/renderer/agentactivity.css +41 -16
- package/dist/{chunk-4DIYEFHH.js → chunk-3CZYC2YN.js} +425 -57
- package/dist/chunk-3CZYC2YN.js.map +1 -0
- package/dist/{chunk-57W6N7EW.js → chunk-LWXHBRDO.js} +300 -576
- package/dist/chunk-LWXHBRDO.js.map +1 -0
- package/dist/{chunk-EGEYJLG2.js → chunk-ZF65NZ4B.js} +15 -8
- package/dist/chunk-ZF65NZ4B.js.map +1 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/workbench/contribution.js +1 -1
- package/dist/workbench/index.d.ts +2 -1
- package/dist/workbench/index.js +1 -1
- package/package.json +15 -15
- package/dist/chunk-4DIYEFHH.js.map +0 -1
- package/dist/chunk-57W6N7EW.js.map +0 -1
- package/dist/chunk-EGEYJLG2.js.map +0 -1
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
resolveAgentGuiSessionProviderFlatIconUrl,
|
|
13
13
|
resolveNextAgentGUIConversationRailWidthPx,
|
|
14
14
|
shouldAutoCollapseAgentGUIConversationRail
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-ZF65NZ4B.js";
|
|
16
16
|
import {
|
|
17
17
|
AGENT_PROVIDERS,
|
|
18
18
|
AGENT_PROVIDER_LABEL,
|
|
@@ -51,6 +51,7 @@ import {
|
|
|
51
51
|
emptyAgentComposerDraft,
|
|
52
52
|
getAppErrorCode,
|
|
53
53
|
isWorkspaceAgentToolCallItem,
|
|
54
|
+
loadCompleteAgentConversationMessages,
|
|
54
55
|
materializePastedTextInstructions,
|
|
55
56
|
normalizeAgentPromptContentBlocks,
|
|
56
57
|
pastedTextPreview,
|
|
@@ -58,12 +59,13 @@ import {
|
|
|
58
59
|
projectAgentConversationVM,
|
|
59
60
|
resolveWorkspaceAgentNoticeCommandSemantics,
|
|
60
61
|
resolveWorkspaceAgentToolName,
|
|
62
|
+
serializeAgentConversationForClipboard,
|
|
61
63
|
snapshotAgentComposerDraft,
|
|
62
64
|
textPromptContent,
|
|
63
65
|
toLocalShortDateTime,
|
|
64
66
|
updateAgentComposerDraft,
|
|
65
67
|
useProjectedAgentConversation
|
|
66
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-3CZYC2YN.js";
|
|
67
69
|
import {
|
|
68
70
|
agentRichTextContentToPromptText,
|
|
69
71
|
createAgentRichTextInputExtensions,
|
|
@@ -97,9 +99,6 @@ import {
|
|
|
97
99
|
agentGuiScheduler,
|
|
98
100
|
buildWorkspaceAgentActivityListViewModel
|
|
99
101
|
} from "./chunk-HMSN264L.js";
|
|
100
|
-
import {
|
|
101
|
-
isLocalImagePath
|
|
102
|
-
} from "./chunk-JDVP33S5.js";
|
|
103
102
|
import {
|
|
104
103
|
AGENT_RICH_TEXT_CARET_ANCHOR,
|
|
105
104
|
agentComposerFileMentionReferences,
|
|
@@ -181,10 +180,10 @@ import {
|
|
|
181
180
|
|
|
182
181
|
// AgentGUI.tsx
|
|
183
182
|
import { memo as memo15, useMemo as useMemo45 } from "react";
|
|
184
|
-
import { TooltipProvider as
|
|
183
|
+
import { TooltipProvider as TooltipProvider7 } from "@tutti-os/ui-system";
|
|
185
184
|
|
|
186
185
|
// agent-gui/agentGuiNode/AgentGUINode.tsx
|
|
187
|
-
import { memo as memo14, useCallback as
|
|
186
|
+
import { memo as memo14, useCallback as useCallback61, useEffect as useEffect40, useMemo as useMemo44, useRef as useRef51 } from "react";
|
|
188
187
|
import { createWorkspaceUserProjectI18nRuntime } from "@tutti-os/workspace-user-project/i18n";
|
|
189
188
|
import { createWorkspaceFileManagerI18nRuntime } from "@tutti-os/workspace-file-manager";
|
|
190
189
|
import { useReferenceProvenanceFilterCatalog } from "@tutti-os/workspace-file-reference/react";
|
|
@@ -13315,13 +13314,13 @@ function useAgentGUINodeController({
|
|
|
13315
13314
|
|
|
13316
13315
|
// agent-gui/agentGuiNode/AgentGUINodeView.tsx
|
|
13317
13316
|
import {
|
|
13318
|
-
useCallback as
|
|
13317
|
+
useCallback as useCallback59,
|
|
13319
13318
|
useEffect as useEffect38,
|
|
13320
13319
|
useMemo as useMemo41,
|
|
13321
13320
|
useRef as useRef49,
|
|
13322
13321
|
useState as useState41
|
|
13323
13322
|
} from "react";
|
|
13324
|
-
import { TooltipProvider as
|
|
13323
|
+
import { TooltipProvider as TooltipProvider6 } from "@tutti-os/ui-system";
|
|
13325
13324
|
|
|
13326
13325
|
// shared/workspaceSettingsPanel/workspaceSettingsPanelStore.ts
|
|
13327
13326
|
import { useSnapshot } from "valtio";
|
|
@@ -14250,12 +14249,12 @@ function AgentGUIConfigMenu({
|
|
|
14250
14249
|
// agent-gui/agentGuiNode/view/AgentGUIProviderRail.tsx
|
|
14251
14250
|
import {
|
|
14252
14251
|
memo as memo4,
|
|
14253
|
-
useCallback as
|
|
14252
|
+
useCallback as useCallback45,
|
|
14254
14253
|
useMemo as useMemo32,
|
|
14255
14254
|
useRef as useRef36,
|
|
14256
14255
|
useState as useState27
|
|
14257
14256
|
} from "react";
|
|
14258
|
-
import { Tooltip as
|
|
14257
|
+
import { Tooltip as Tooltip6, TooltipContent as TooltipContent6, TooltipTrigger as TooltipTrigger6 } from "@tutti-os/ui-system";
|
|
14259
14258
|
|
|
14260
14259
|
// agent-gui/agentGuiNode/model/agentGuiProviderRailOrder.ts
|
|
14261
14260
|
var AGENT_GUI_PROVIDER_RAIL_PREFERENCES_STORAGE_KEY = "agent-gui:provider-rail-preferences";
|
|
@@ -16182,7 +16181,7 @@ function AgentSessionChrome({
|
|
|
16182
16181
|
}
|
|
16183
16182
|
|
|
16184
16183
|
// agent-gui/agentGuiNode/AgentComposer.tsx
|
|
16185
|
-
import { useEffect as useEffect28, useRef as useRef33, useState as useState23 } from "react";
|
|
16184
|
+
import { useCallback as useCallback42, useEffect as useEffect28, useRef as useRef33, useState as useState23 } from "react";
|
|
16186
16185
|
import { repairMentionPaletteHighlight } from "@tutti-os/ui-rich-text/at-panel";
|
|
16187
16186
|
|
|
16188
16187
|
// agent-gui/agentGuiNode/AgentSlashStatusPanel.tsx
|
|
@@ -19663,10 +19662,10 @@ import { createPortal as createPortal4 } from "react-dom";
|
|
|
19663
19662
|
import {
|
|
19664
19663
|
Popover as Popover3,
|
|
19665
19664
|
PopoverAnchor as PopoverAnchor2,
|
|
19666
|
-
Tooltip as
|
|
19667
|
-
TooltipContent as
|
|
19668
|
-
TooltipProvider as
|
|
19669
|
-
TooltipTrigger as
|
|
19665
|
+
Tooltip as Tooltip5,
|
|
19666
|
+
TooltipContent as TooltipContent5,
|
|
19667
|
+
TooltipProvider as TooltipProvider5,
|
|
19668
|
+
TooltipTrigger as TooltipTrigger5
|
|
19670
19669
|
} from "@tutti-os/ui-system";
|
|
19671
19670
|
|
|
19672
19671
|
// agent-gui/agentGuiNode/AgentQueuedPromptPanel.tsx
|
|
@@ -23890,10 +23889,10 @@ import {
|
|
|
23890
23889
|
SelectContent as SelectContent3,
|
|
23891
23890
|
SelectItem as SelectItem3,
|
|
23892
23891
|
SelectTrigger as SelectTrigger3,
|
|
23893
|
-
Tooltip as
|
|
23894
|
-
TooltipContent as
|
|
23895
|
-
TooltipProvider as
|
|
23896
|
-
TooltipTrigger as
|
|
23892
|
+
Tooltip as Tooltip4,
|
|
23893
|
+
TooltipContent as TooltipContent4,
|
|
23894
|
+
TooltipProvider as TooltipProvider4,
|
|
23895
|
+
TooltipTrigger as TooltipTrigger4
|
|
23897
23896
|
} from "@tutti-os/ui-system";
|
|
23898
23897
|
|
|
23899
23898
|
// app/renderer/assets/icons/add-lined.svg
|
|
@@ -23908,7 +23907,11 @@ import {
|
|
|
23908
23907
|
Select as Select2,
|
|
23909
23908
|
SelectContent as SelectContent2,
|
|
23910
23909
|
SelectItem as SelectItem2,
|
|
23911
|
-
SelectTrigger as SelectTrigger2
|
|
23910
|
+
SelectTrigger as SelectTrigger2,
|
|
23911
|
+
Tooltip as Tooltip3,
|
|
23912
|
+
TooltipContent as TooltipContent3,
|
|
23913
|
+
TooltipProvider as TooltipProvider3,
|
|
23914
|
+
TooltipTrigger as TooltipTrigger3
|
|
23912
23915
|
} from "@tutti-os/ui-system";
|
|
23913
23916
|
|
|
23914
23917
|
// agent-gui/agentGuiNode/composer/handoffTargetPresentation.ts
|
|
@@ -23968,53 +23971,55 @@ function AgentHandoffMenu({
|
|
|
23968
23971
|
onSelect(target);
|
|
23969
23972
|
},
|
|
23970
23973
|
children: [
|
|
23971
|
-
/* @__PURE__ */ jsx36(
|
|
23972
|
-
|
|
23973
|
-
|
|
23974
|
-
|
|
23975
|
-
|
|
23976
|
-
|
|
23977
|
-
|
|
23978
|
-
|
|
23979
|
-
|
|
23980
|
-
|
|
23981
|
-
|
|
23982
|
-
|
|
23983
|
-
|
|
23984
|
-
|
|
23985
|
-
|
|
23986
|
-
|
|
23987
|
-
|
|
23988
|
-
|
|
23989
|
-
|
|
23990
|
-
|
|
23991
|
-
|
|
23992
|
-
|
|
23993
|
-
|
|
23994
|
-
|
|
23995
|
-
|
|
23996
|
-
|
|
23997
|
-
|
|
23998
|
-
|
|
23999
|
-
|
|
24000
|
-
|
|
24001
|
-
|
|
24002
|
-
|
|
24003
|
-
|
|
24004
|
-
|
|
24005
|
-
),
|
|
24006
|
-
children: /* @__PURE__ */ jsxs26("span", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
24007
|
-
/* @__PURE__ */ jsx36(
|
|
24008
|
-
AgentComposerHandoffIcon,
|
|
24009
|
-
{
|
|
24010
|
-
disabled: menuDisabled,
|
|
24011
|
-
isPlaying: isIconPlaying
|
|
24012
|
-
}
|
|
23974
|
+
/* @__PURE__ */ jsx36(TooltipProvider3, { delayDuration: 120, children: /* @__PURE__ */ jsxs26(Tooltip3, { children: [
|
|
23975
|
+
/* @__PURE__ */ jsx36(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx36("span", { className: "inline-flex", children: /* @__PURE__ */ jsx36(
|
|
23976
|
+
SelectTrigger2,
|
|
23977
|
+
{
|
|
23978
|
+
size: "sm",
|
|
23979
|
+
"aria-label": labels.action,
|
|
23980
|
+
"data-testid": testId,
|
|
23981
|
+
onClick: isolateTriggerEvents ? (event) => {
|
|
23982
|
+
event.stopPropagation();
|
|
23983
|
+
} : void 0,
|
|
23984
|
+
onKeyDown: isolateTriggerEvents ? (event) => {
|
|
23985
|
+
event.stopPropagation();
|
|
23986
|
+
} : void 0,
|
|
23987
|
+
onPointerDown: isolateTriggerEvents ? (event) => {
|
|
23988
|
+
event.stopPropagation();
|
|
23989
|
+
} : void 0,
|
|
23990
|
+
onBlur: () => {
|
|
23991
|
+
setIsIconPlaying(false);
|
|
23992
|
+
},
|
|
23993
|
+
onFocus: () => {
|
|
23994
|
+
setIsIconPlaying(true);
|
|
23995
|
+
},
|
|
23996
|
+
onMouseEnter: () => {
|
|
23997
|
+
setIsIconPlaying(true);
|
|
23998
|
+
},
|
|
23999
|
+
onMouseLeave: () => {
|
|
24000
|
+
setIsIconPlaying(false);
|
|
24001
|
+
},
|
|
24002
|
+
className: cn(
|
|
24003
|
+
AgentGUINode_styles_default.composerMenuTrigger,
|
|
24004
|
+
AgentGUINode_styles_default.composerProviderSelect,
|
|
24005
|
+
AgentGUINode_styles_default.composerHandoffTrigger,
|
|
24006
|
+
"w-auto max-w-[180px] [&>svg:last-child]:hidden",
|
|
24007
|
+
triggerClassName
|
|
24013
24008
|
),
|
|
24014
|
-
|
|
24015
|
-
|
|
24016
|
-
|
|
24017
|
-
|
|
24009
|
+
children: /* @__PURE__ */ jsxs26("span", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
24010
|
+
/* @__PURE__ */ jsx36(
|
|
24011
|
+
AgentComposerHandoffIcon,
|
|
24012
|
+
{
|
|
24013
|
+
disabled: menuDisabled,
|
|
24014
|
+
isPlaying: isIconPlaying
|
|
24015
|
+
}
|
|
24016
|
+
),
|
|
24017
|
+
!iconOnly ? /* @__PURE__ */ jsx36("span", { className: "min-w-0 truncate", children: triggerLabel }) : null
|
|
24018
|
+
] })
|
|
24019
|
+
}
|
|
24020
|
+
) }) }),
|
|
24021
|
+
/* @__PURE__ */ jsx36(TooltipContent3, { side: "top", children: labels.tooltip })
|
|
24022
|
+
] }) }),
|
|
24018
24023
|
/* @__PURE__ */ jsx36(
|
|
24019
24024
|
SelectContent2,
|
|
24020
24025
|
{
|
|
@@ -24119,8 +24124,8 @@ function ComposerFooter({
|
|
|
24119
24124
|
return /* @__PURE__ */ jsx37(Fragment10, { children: /* @__PURE__ */ jsxs27("div", { className: AgentGUINode_styles_default.composerFooter, children: [
|
|
24120
24125
|
/* @__PURE__ */ jsxs27("div", { className: composerStyles.footerGroup, children: [
|
|
24121
24126
|
/* @__PURE__ */ jsxs27("div", { className: "inline-flex shrink-0 items-center gap-1", children: [
|
|
24122
|
-
previewMode ? /* @__PURE__ */ jsx37(
|
|
24123
|
-
/* @__PURE__ */ jsx37(
|
|
24127
|
+
previewMode ? /* @__PURE__ */ jsx37(TooltipProvider4, { delayDuration: 120, children: /* @__PURE__ */ jsxs27(Tooltip4, { children: [
|
|
24128
|
+
/* @__PURE__ */ jsx37(TooltipTrigger4, { asChild: true, children: /* @__PURE__ */ jsx37(
|
|
24124
24129
|
"button",
|
|
24125
24130
|
{
|
|
24126
24131
|
type: "button",
|
|
@@ -24139,7 +24144,7 @@ function ComposerFooter({
|
|
|
24139
24144
|
)
|
|
24140
24145
|
}
|
|
24141
24146
|
) }),
|
|
24142
|
-
/* @__PURE__ */ jsx37(
|
|
24147
|
+
/* @__PURE__ */ jsx37(TooltipContent4, { side: "top", children: labels.addContent })
|
|
24143
24148
|
] }) }) : /* @__PURE__ */ jsx37(
|
|
24144
24149
|
Select3,
|
|
24145
24150
|
{
|
|
@@ -24156,30 +24161,32 @@ function ComposerFooter({
|
|
|
24156
24161
|
void handleWorkspaceReferencePicker();
|
|
24157
24162
|
}
|
|
24158
24163
|
},
|
|
24159
|
-
children: /* @__PURE__ */ jsx37(
|
|
24160
|
-
|
|
24161
|
-
|
|
24162
|
-
|
|
24163
|
-
|
|
24164
|
-
|
|
24165
|
-
|
|
24166
|
-
|
|
24167
|
-
|
|
24168
|
-
|
|
24169
|
-
|
|
24170
|
-
|
|
24171
|
-
|
|
24172
|
-
|
|
24173
|
-
|
|
24174
|
-
|
|
24175
|
-
|
|
24176
|
-
|
|
24177
|
-
|
|
24178
|
-
|
|
24164
|
+
children: /* @__PURE__ */ jsx37(TooltipProvider4, { delayDuration: 120, children: /* @__PURE__ */ jsxs27(Tooltip4, { children: [
|
|
24165
|
+
/* @__PURE__ */ jsx37(TooltipTrigger4, { asChild: true, children: /* @__PURE__ */ jsx37("span", { className: "inline-flex", children: /* @__PURE__ */ jsx37(
|
|
24166
|
+
SelectTrigger3,
|
|
24167
|
+
{
|
|
24168
|
+
size: "sm",
|
|
24169
|
+
"aria-label": labels.referenceWorkspaceFiles,
|
|
24170
|
+
className: cn(
|
|
24171
|
+
AgentGUINode_styles_default.composerMenuTrigger,
|
|
24172
|
+
AgentGUINode_styles_default.composerReferenceTrigger,
|
|
24173
|
+
"group w-auto justify-center text-[var(--agent-gui-text-secondary)] [&>svg:last-child]:hidden"
|
|
24174
|
+
),
|
|
24175
|
+
children: /* @__PURE__ */ jsx37(
|
|
24176
|
+
AgentComposerMaskIcon,
|
|
24177
|
+
{
|
|
24178
|
+
iconUrl: add_lined_default,
|
|
24179
|
+
marker: "reference-add"
|
|
24180
|
+
}
|
|
24181
|
+
)
|
|
24182
|
+
}
|
|
24183
|
+
) }) }),
|
|
24184
|
+
/* @__PURE__ */ jsx37(TooltipContent4, { side: "top", children: labels.addContent })
|
|
24185
|
+
] }) })
|
|
24179
24186
|
}
|
|
24180
24187
|
),
|
|
24181
|
-
/* @__PURE__ */ jsx37(
|
|
24182
|
-
/* @__PURE__ */ jsx37(
|
|
24188
|
+
/* @__PURE__ */ jsx37(TooltipProvider4, { delayDuration: 120, children: /* @__PURE__ */ jsxs27(Tooltip4, { children: [
|
|
24189
|
+
/* @__PURE__ */ jsx37(TooltipTrigger4, { asChild: true, children: /* @__PURE__ */ jsx37(
|
|
24183
24190
|
"button",
|
|
24184
24191
|
{
|
|
24185
24192
|
type: "button",
|
|
@@ -24211,7 +24218,7 @@ function ComposerFooter({
|
|
|
24211
24218
|
)
|
|
24212
24219
|
}
|
|
24213
24220
|
) }),
|
|
24214
|
-
/* @__PURE__ */ jsx37(
|
|
24221
|
+
/* @__PURE__ */ jsx37(TooltipContent4, { side: "top", children: labels.mentionPalette })
|
|
24215
24222
|
] }) })
|
|
24216
24223
|
] }),
|
|
24217
24224
|
showHandoffSelect ? /* @__PURE__ */ jsx37(
|
|
@@ -24540,7 +24547,6 @@ function AgentComposerView(input) {
|
|
|
24540
24547
|
selectFileMention
|
|
24541
24548
|
} = input.mentionActions;
|
|
24542
24549
|
const {
|
|
24543
|
-
addDraftFiles,
|
|
24544
24550
|
clearGoalModeBadge,
|
|
24545
24551
|
expandDraftLargeTextToPrompt,
|
|
24546
24552
|
handleDraftChange,
|
|
@@ -24791,8 +24797,8 @@ function AgentComposerView(input) {
|
|
|
24791
24797
|
onPromptImagesUnsupported,
|
|
24792
24798
|
onPasteImages: handlePastedImages,
|
|
24793
24799
|
onPasteLargeText: handlePastedLargeText,
|
|
24794
|
-
onPasteFiles: input.
|
|
24795
|
-
onDropFiles: input.
|
|
24800
|
+
onPasteFiles: input.externalPromptEntriesSupported ? input.addExternalPromptEntries : void 0,
|
|
24801
|
+
onDropFiles: input.externalPromptEntriesSupported ? input.addExternalPromptEntries : void 0
|
|
24796
24802
|
}
|
|
24797
24803
|
),
|
|
24798
24804
|
!isHeroLayout ? composerActionButton : null
|
|
@@ -25012,10 +25018,10 @@ function AgentComposerView(input) {
|
|
|
25012
25018
|
{
|
|
25013
25019
|
className: AgentGUINode_styles_default.composerPromptTips,
|
|
25014
25020
|
"data-testid": "agent-gui-prompt-tips",
|
|
25015
|
-
children: !previewMode && input.isPromptTipOverflowing && promptTipNode ? /* @__PURE__ */ jsx38(
|
|
25016
|
-
/* @__PURE__ */ jsx38(
|
|
25021
|
+
children: !previewMode && input.isPromptTipOverflowing && promptTipNode ? /* @__PURE__ */ jsx38(TooltipProvider5, { delayDuration: 0, children: /* @__PURE__ */ jsxs28(Tooltip5, { children: [
|
|
25022
|
+
/* @__PURE__ */ jsx38(TooltipTrigger5, { asChild: true, children: promptTipNode }),
|
|
25017
25023
|
/* @__PURE__ */ jsx38(
|
|
25018
|
-
|
|
25024
|
+
TooltipContent5,
|
|
25019
25025
|
{
|
|
25020
25026
|
align: "end",
|
|
25021
25027
|
className: AgentGUINode_styles_default.composerPromptTipTooltip,
|
|
@@ -25095,6 +25101,58 @@ var INITIAL_AGENT_MENTION_SEARCH_STATE = {
|
|
|
25095
25101
|
error: null
|
|
25096
25102
|
};
|
|
25097
25103
|
|
|
25104
|
+
// agent-gui/agentGuiNode/model/agentExternalPromptEntries.ts
|
|
25105
|
+
function resolveAgentExternalPromptEntries(files, resolver) {
|
|
25106
|
+
if (!resolver) return files.map(preparedEntry);
|
|
25107
|
+
let resolved;
|
|
25108
|
+
try {
|
|
25109
|
+
resolved = resolver(files);
|
|
25110
|
+
} catch {
|
|
25111
|
+
return files.map(preparedEntry);
|
|
25112
|
+
}
|
|
25113
|
+
const resultByIndex = /* @__PURE__ */ new Map();
|
|
25114
|
+
for (const result of resolved) {
|
|
25115
|
+
if (!Number.isInteger(result.sourceIndex) || result.sourceIndex < 0 || result.sourceIndex >= files.length || resultByIndex.has(result.sourceIndex)) {
|
|
25116
|
+
return files.map(preparedEntry);
|
|
25117
|
+
}
|
|
25118
|
+
if (result.disposition === "reference" && !result.reference.path.trim()) {
|
|
25119
|
+
return files.map(preparedEntry);
|
|
25120
|
+
}
|
|
25121
|
+
resultByIndex.set(result.sourceIndex, result);
|
|
25122
|
+
}
|
|
25123
|
+
if (resultByIndex.size !== files.length) return files.map(preparedEntry);
|
|
25124
|
+
return files.map((file, sourceIndex) => {
|
|
25125
|
+
const result = resultByIndex.get(sourceIndex);
|
|
25126
|
+
return result.disposition === "reference" ? {
|
|
25127
|
+
disposition: "reference",
|
|
25128
|
+
reference: result.reference,
|
|
25129
|
+
sourceIndex
|
|
25130
|
+
} : preparedEntry(file, sourceIndex);
|
|
25131
|
+
});
|
|
25132
|
+
}
|
|
25133
|
+
function groupAgentExternalPromptEntryInsertions(entries) {
|
|
25134
|
+
const insertions = [];
|
|
25135
|
+
for (const entry of entries) {
|
|
25136
|
+
if (entry.disposition === "reference") {
|
|
25137
|
+
insertions.push({
|
|
25138
|
+
disposition: "reference",
|
|
25139
|
+
reference: entry.reference
|
|
25140
|
+
});
|
|
25141
|
+
continue;
|
|
25142
|
+
}
|
|
25143
|
+
const previous = insertions.at(-1);
|
|
25144
|
+
if (previous?.disposition === "prepare") {
|
|
25145
|
+
previous.files.push(entry.file);
|
|
25146
|
+
} else {
|
|
25147
|
+
insertions.push({ disposition: "prepare", files: [entry.file] });
|
|
25148
|
+
}
|
|
25149
|
+
}
|
|
25150
|
+
return insertions;
|
|
25151
|
+
}
|
|
25152
|
+
function preparedEntry(file, sourceIndex) {
|
|
25153
|
+
return { disposition: "prepare", file, sourceIndex };
|
|
25154
|
+
}
|
|
25155
|
+
|
|
25098
25156
|
// agent-gui/agentGuiNode/AgentComposer.tsx
|
|
25099
25157
|
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
25100
25158
|
var DOCK_COMPOSER_INPUT_MIN_HEIGHT2 = 56;
|
|
@@ -25159,6 +25217,7 @@ function AgentComposer(props) {
|
|
|
25159
25217
|
onSlashStatusOpen,
|
|
25160
25218
|
onLinkAction,
|
|
25161
25219
|
onRequestWorkspaceReferences = null,
|
|
25220
|
+
resolveExternalPromptEntries = null,
|
|
25162
25221
|
prepareExternalPromptFiles = null,
|
|
25163
25222
|
promptAssetLimit = null,
|
|
25164
25223
|
onRequestGitBranches = null,
|
|
@@ -25176,6 +25235,9 @@ function AgentComposer(props) {
|
|
|
25176
25235
|
const promptFilesSupported = Boolean(
|
|
25177
25236
|
canUploadAttachment && prepareExternalPromptFiles
|
|
25178
25237
|
);
|
|
25238
|
+
const externalPromptEntriesSupported = Boolean(
|
|
25239
|
+
resolveExternalPromptEntries || promptFilesSupported
|
|
25240
|
+
);
|
|
25179
25241
|
const pastedTextStagingSupported = Boolean(
|
|
25180
25242
|
canUploadAttachment && agentActivityRuntime?.stagePastedText
|
|
25181
25243
|
);
|
|
@@ -25444,6 +25506,26 @@ function AgentComposer(props) {
|
|
|
25444
25506
|
onLinkAction
|
|
25445
25507
|
});
|
|
25446
25508
|
const { addDraftFiles, addDraftImages } = attachments;
|
|
25509
|
+
const addExternalPromptEntries = useCallback42(
|
|
25510
|
+
(files) => {
|
|
25511
|
+
const entries = resolveAgentExternalPromptEntries(
|
|
25512
|
+
files,
|
|
25513
|
+
resolveExternalPromptEntries
|
|
25514
|
+
);
|
|
25515
|
+
for (const insertion of groupAgentExternalPromptEntryInsertions(
|
|
25516
|
+
entries
|
|
25517
|
+
)) {
|
|
25518
|
+
if (insertion.disposition === "prepare") {
|
|
25519
|
+
addDraftFiles(insertion.files);
|
|
25520
|
+
} else {
|
|
25521
|
+
editorHandleRef.current?.insertWorkspaceReferences([
|
|
25522
|
+
insertion.reference
|
|
25523
|
+
]);
|
|
25524
|
+
}
|
|
25525
|
+
}
|
|
25526
|
+
},
|
|
25527
|
+
[addDraftFiles, editorHandleRef, resolveExternalPromptEntries]
|
|
25528
|
+
);
|
|
25447
25529
|
const providerState = useComposerProviderTargets({
|
|
25448
25530
|
layoutMode,
|
|
25449
25531
|
previewMode,
|
|
@@ -25479,10 +25561,10 @@ function AgentComposer(props) {
|
|
|
25479
25561
|
lastComposerFocusRequestRef,
|
|
25480
25562
|
isActive,
|
|
25481
25563
|
composerFocusRequestSequence,
|
|
25482
|
-
promptFilesSupported,
|
|
25564
|
+
promptFilesSupported: externalPromptEntriesSupported,
|
|
25483
25565
|
promptImagesSupported: canUploadAttachment && promptImagesSupported,
|
|
25484
25566
|
addDraftImages,
|
|
25485
|
-
addDraftFiles,
|
|
25567
|
+
addDraftFiles: addExternalPromptEntries,
|
|
25486
25568
|
onPromptImagesUnsupported
|
|
25487
25569
|
});
|
|
25488
25570
|
const { fileDropOverlayActive, fileDropOverlayHost } = focusAndDrop;
|
|
@@ -25564,7 +25646,8 @@ function AgentComposer(props) {
|
|
|
25564
25646
|
promptTipRef,
|
|
25565
25647
|
editorHandleRef,
|
|
25566
25648
|
mentionControllerRef,
|
|
25567
|
-
|
|
25649
|
+
externalPromptEntriesSupported,
|
|
25650
|
+
addExternalPromptEntries,
|
|
25568
25651
|
onDismissProjectMenuAutoFocus: restoreComposerCaretAfterProjectMenu,
|
|
25569
25652
|
paletteDraftPrompt,
|
|
25570
25653
|
showFileMentionPalette,
|
|
@@ -25955,7 +26038,7 @@ import {
|
|
|
25955
26038
|
// shared/agentEnv/agentTargetSetupController.tsx
|
|
25956
26039
|
import {
|
|
25957
26040
|
createContext,
|
|
25958
|
-
useCallback as
|
|
26041
|
+
useCallback as useCallback43,
|
|
25959
26042
|
useContext,
|
|
25960
26043
|
useMemo as useMemo30,
|
|
25961
26044
|
useRef as useRef34
|
|
@@ -26028,7 +26111,7 @@ function useCreateAgentTargetSetupController(agentTarget) {
|
|
|
26028
26111
|
() => enabled ? hostApi?.agentTargetSetup?.watch({ agentTargetId }) ?? null : null,
|
|
26029
26112
|
[agentTargetId, enabled, hostApi?.agentTargetSetup]
|
|
26030
26113
|
);
|
|
26031
|
-
const showNotification =
|
|
26114
|
+
const showNotification = useCallback43(
|
|
26032
26115
|
(notification) => showTargetSetupFailureNotification({
|
|
26033
26116
|
hostToast: hostApi?.toast,
|
|
26034
26117
|
notification,
|
|
@@ -26036,7 +26119,7 @@ function useCreateAgentTargetSetupController(agentTarget) {
|
|
|
26036
26119
|
}),
|
|
26037
26120
|
[hostApi?.toast, t]
|
|
26038
26121
|
);
|
|
26039
|
-
const logCommandError =
|
|
26122
|
+
const logCommandError = useCallback43(
|
|
26040
26123
|
(command, error) => {
|
|
26041
26124
|
hostApi?.debug?.logRuntimeDiagnostics({
|
|
26042
26125
|
agentTargetId,
|
|
@@ -27479,7 +27562,7 @@ function AgentGUIProviderManagerDialog({
|
|
|
27479
27562
|
}
|
|
27480
27563
|
|
|
27481
27564
|
// agent-gui/agentGuiNode/view/useAgentGUIProviderRailPreferences.ts
|
|
27482
|
-
import { useCallback as
|
|
27565
|
+
import { useCallback as useCallback44, useEffect as useEffect29, useState as useState26 } from "react";
|
|
27483
27566
|
function readAgentGUIProviderRailPreferences(storageKey) {
|
|
27484
27567
|
return parseAgentGUIProviderRailPreferences(
|
|
27485
27568
|
globalThis.localStorage?.getItem(storageKey)
|
|
@@ -27512,7 +27595,7 @@ function useAgentGUIProviderRailPreferences() {
|
|
|
27512
27595
|
);
|
|
27513
27596
|
};
|
|
27514
27597
|
}, [storageKey]);
|
|
27515
|
-
const persistPreferences =
|
|
27598
|
+
const persistPreferences = useCallback44(
|
|
27516
27599
|
(nextPreferences) => {
|
|
27517
27600
|
setPreferences(nextPreferences);
|
|
27518
27601
|
globalThis.localStorage?.setItem(
|
|
@@ -27622,7 +27705,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
27622
27705
|
} = useAgentGUIProviderRailPreferences();
|
|
27623
27706
|
const [dragState, setDragState] = useState27(null);
|
|
27624
27707
|
const dragStateRef = useRef36(null);
|
|
27625
|
-
const setProviderRailDragState =
|
|
27708
|
+
const setProviderRailDragState = useCallback45(
|
|
27626
27709
|
(nextDragState) => {
|
|
27627
27710
|
dragStateRef.current = nextDragState;
|
|
27628
27711
|
setDragState(nextDragState);
|
|
@@ -27686,11 +27769,11 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
27686
27769
|
[effectiveHiddenTargetIds, providerTiles]
|
|
27687
27770
|
);
|
|
27688
27771
|
const allTileSelected = conversationFilter.kind === "all";
|
|
27689
|
-
const selectAllProviders =
|
|
27772
|
+
const selectAllProviders = useCallback45(() => {
|
|
27690
27773
|
onUpdateConversationFilter({ kind: "all" });
|
|
27691
27774
|
onRequestComposerFocus();
|
|
27692
27775
|
}, [onRequestComposerFocus, onUpdateConversationFilter]);
|
|
27693
|
-
const selectAgentTargetTile =
|
|
27776
|
+
const selectAgentTargetTile = useCallback45(
|
|
27694
27777
|
(target) => {
|
|
27695
27778
|
const agentTargetId = target.agentTargetId?.trim() ?? "";
|
|
27696
27779
|
if (!agentTargetId) {
|
|
@@ -27704,10 +27787,10 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
27704
27787
|
},
|
|
27705
27788
|
[onRequestComposerFocus, onSelectConversationFilterTarget]
|
|
27706
27789
|
);
|
|
27707
|
-
const clearProviderRailDragState =
|
|
27790
|
+
const clearProviderRailDragState = useCallback45(() => {
|
|
27708
27791
|
setProviderRailDragState(null);
|
|
27709
27792
|
}, [setProviderRailDragState]);
|
|
27710
|
-
const handleProviderRailDragStart =
|
|
27793
|
+
const handleProviderRailDragStart = useCallback45(
|
|
27711
27794
|
(event, target) => {
|
|
27712
27795
|
if (previewMode || agentTargetsLoading) {
|
|
27713
27796
|
event.preventDefault();
|
|
@@ -27723,7 +27806,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
27723
27806
|
},
|
|
27724
27807
|
[previewMode, agentTargetsLoading, setProviderRailDragState]
|
|
27725
27808
|
);
|
|
27726
|
-
const handleProviderRailDragOver =
|
|
27809
|
+
const handleProviderRailDragOver = useCallback45(
|
|
27727
27810
|
(event, target) => {
|
|
27728
27811
|
if (previewMode || agentTargetsLoading || !dragState) {
|
|
27729
27812
|
return;
|
|
@@ -27755,7 +27838,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
27755
27838
|
},
|
|
27756
27839
|
[dragState, previewMode, agentTargetsLoading, setProviderRailDragState]
|
|
27757
27840
|
);
|
|
27758
|
-
const commitProviderRailDragDrop =
|
|
27841
|
+
const commitProviderRailDragDrop = useCallback45(
|
|
27759
27842
|
(event) => {
|
|
27760
27843
|
const fallbackDraggedTargetId = event.dataTransfer.getData("text/plain").trim();
|
|
27761
27844
|
const activeDragState = dragStateRef.current ?? dragState ?? (fallbackDraggedTargetId ? {
|
|
@@ -27884,7 +27967,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
27884
27967
|
onUpdateConversationFilter({ kind: "all" });
|
|
27885
27968
|
}
|
|
27886
27969
|
};
|
|
27887
|
-
const handleProviderRailContainerDragOver =
|
|
27970
|
+
const handleProviderRailContainerDragOver = useCallback45(
|
|
27888
27971
|
(event) => {
|
|
27889
27972
|
const activeDragState = dragStateRef.current ?? dragState;
|
|
27890
27973
|
if (!activeDragState || previewMode || agentTargetsLoading) {
|
|
@@ -28081,9 +28164,9 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
28081
28164
|
if (previewMode) {
|
|
28082
28165
|
return tile;
|
|
28083
28166
|
}
|
|
28084
|
-
return /* @__PURE__ */ jsxs35(
|
|
28085
|
-
/* @__PURE__ */ jsx47(
|
|
28086
|
-
/* @__PURE__ */ jsx47(
|
|
28167
|
+
return /* @__PURE__ */ jsxs35(Tooltip6, { children: [
|
|
28168
|
+
/* @__PURE__ */ jsx47(TooltipTrigger6, { asChild: true, children: tile }),
|
|
28169
|
+
/* @__PURE__ */ jsx47(TooltipContent6, { side: "right", sideOffset: -4, children: label })
|
|
28087
28170
|
] }, `${target.provider}:${target.targetId}:tooltip`);
|
|
28088
28171
|
})
|
|
28089
28172
|
]
|
|
@@ -28840,7 +28923,7 @@ function reduceAgentGUIConversationRailViewState(state, action) {
|
|
|
28840
28923
|
}
|
|
28841
28924
|
|
|
28842
28925
|
// agent-gui/agentGuiNode/controller/useAgentGUIProjectDrag.ts
|
|
28843
|
-
import { useCallback as
|
|
28926
|
+
import { useCallback as useCallback46, useState as useState28 } from "react";
|
|
28844
28927
|
var PROJECT_DRAG_SCROLL_EDGE_PX = 40;
|
|
28845
28928
|
function projectDragAutoScrollDelta(clientY, bounds) {
|
|
28846
28929
|
if (clientY < bounds.top + PROJECT_DRAG_SCROLL_EDGE_PX) {
|
|
@@ -28868,14 +28951,14 @@ function useAgentGUIProjectDrag(input) {
|
|
|
28868
28951
|
image: null,
|
|
28869
28952
|
viewport: null
|
|
28870
28953
|
}));
|
|
28871
|
-
const stopAutoScroll =
|
|
28954
|
+
const stopAutoScroll = useCallback46(() => {
|
|
28872
28955
|
if (runtime.frame !== null) {
|
|
28873
28956
|
window.cancelAnimationFrame(runtime.frame);
|
|
28874
28957
|
runtime.frame = null;
|
|
28875
28958
|
}
|
|
28876
28959
|
runtime.clientY = null;
|
|
28877
28960
|
}, [runtime]);
|
|
28878
|
-
const clear =
|
|
28961
|
+
const clear = useCallback46(() => {
|
|
28879
28962
|
stopAutoScroll();
|
|
28880
28963
|
runtime.image?.remove();
|
|
28881
28964
|
runtime.image = null;
|
|
@@ -28884,7 +28967,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
28884
28967
|
runtime.viewport = null;
|
|
28885
28968
|
setDragState(null);
|
|
28886
28969
|
}, [runtime, stopAutoScroll]);
|
|
28887
|
-
const runAutoScroll =
|
|
28970
|
+
const runAutoScroll = useCallback46(() => {
|
|
28888
28971
|
runtime.frame = null;
|
|
28889
28972
|
const viewport = runtime.viewport ?? input.scrollViewportRef.current;
|
|
28890
28973
|
if (!runtime.active || !viewport || runtime.clientY === null) return;
|
|
@@ -28895,7 +28978,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
28895
28978
|
runtime.frame = window.requestAnimationFrame(runAutoScroll);
|
|
28896
28979
|
}
|
|
28897
28980
|
}, [input.scrollViewportRef, runtime]);
|
|
28898
|
-
const trackPosition =
|
|
28981
|
+
const trackPosition = useCallback46(
|
|
28899
28982
|
(clientY) => {
|
|
28900
28983
|
if (!runtime.active) return;
|
|
28901
28984
|
runtime.clientY = clientY;
|
|
@@ -28905,7 +28988,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
28905
28988
|
},
|
|
28906
28989
|
[runAutoScroll, runtime]
|
|
28907
28990
|
);
|
|
28908
|
-
const start =
|
|
28991
|
+
const start = useCallback46(
|
|
28909
28992
|
(section, event) => {
|
|
28910
28993
|
const projectId = section.project?.id?.trim() ?? "";
|
|
28911
28994
|
if (input.disabled || isMovePending || !projectId) {
|
|
@@ -28946,7 +29029,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
28946
29029
|
},
|
|
28947
29030
|
[input.disabled, isMovePending, runtime]
|
|
28948
29031
|
);
|
|
28949
|
-
const updateTarget =
|
|
29032
|
+
const updateTarget = useCallback46(
|
|
28950
29033
|
(section, edge, event) => {
|
|
28951
29034
|
const targetId = section.project?.id?.trim() ?? "";
|
|
28952
29035
|
const currentDragState = runtime.dragState;
|
|
@@ -28986,7 +29069,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
28986
29069
|
},
|
|
28987
29070
|
[input.userProjects, runtime, trackPosition]
|
|
28988
29071
|
);
|
|
28989
|
-
const drop =
|
|
29072
|
+
const drop = useCallback46(
|
|
28990
29073
|
async (event) => {
|
|
28991
29074
|
const currentDragState = runtime.dragState;
|
|
28992
29075
|
if (!currentDragState || !runtime.active) return;
|
|
@@ -29006,7 +29089,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
29006
29089
|
},
|
|
29007
29090
|
[clear, input.onMoveProject, runtime]
|
|
29008
29091
|
);
|
|
29009
|
-
const keepValidDropTarget =
|
|
29092
|
+
const keepValidDropTarget = useCallback46(
|
|
29010
29093
|
(event) => {
|
|
29011
29094
|
if (!runtime.active || !runtime.dragState?.canDrop) return;
|
|
29012
29095
|
event.preventDefault();
|
|
@@ -29014,7 +29097,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
29014
29097
|
},
|
|
29015
29098
|
[runtime]
|
|
29016
29099
|
);
|
|
29017
|
-
const installGlobalListeners =
|
|
29100
|
+
const installGlobalListeners = useCallback46(() => {
|
|
29018
29101
|
const clearOnGlobalEnd = () => clear();
|
|
29019
29102
|
const trackGlobalPosition = (event) => trackPosition(event.clientY);
|
|
29020
29103
|
document.addEventListener("dragend", clearOnGlobalEnd, true);
|
|
@@ -29040,10 +29123,10 @@ function useAgentGUIProjectDrag(input) {
|
|
|
29040
29123
|
}
|
|
29041
29124
|
|
|
29042
29125
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailSection.tsx
|
|
29043
|
-
import { memo as memo7, useCallback as
|
|
29126
|
+
import { memo as memo7, useCallback as useCallback50 } from "react";
|
|
29044
29127
|
|
|
29045
29128
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailItem.tsx
|
|
29046
|
-
import { memo as memo5, useCallback as
|
|
29129
|
+
import { memo as memo5, useCallback as useCallback48, useMemo as useMemo34 } from "react";
|
|
29047
29130
|
import { ExternalLink as ExternalLink3 } from "lucide-react";
|
|
29048
29131
|
import { IssueIcon, NewWorkspaceLinedIcon as NewWorkspaceLinedIcon2, cn as cn7 } from "@tutti-os/ui-system";
|
|
29049
29132
|
import { WorkspaceUserProjectSelect as WorkspaceUserProjectSelect2 } from "@tutti-os/workspace-user-project/ui";
|
|
@@ -29280,7 +29363,7 @@ function AgentGUIConversationRailRelativeTime({
|
|
|
29280
29363
|
// agent-gui/agentGuiNode/view/AgentGUIConversationActionsMenu.tsx
|
|
29281
29364
|
import {
|
|
29282
29365
|
Fragment as Fragment14,
|
|
29283
|
-
useCallback as
|
|
29366
|
+
useCallback as useCallback47,
|
|
29284
29367
|
useMemo as useMemo33,
|
|
29285
29368
|
useRef as useRef37,
|
|
29286
29369
|
useState as useState29
|
|
@@ -29308,372 +29391,6 @@ import {
|
|
|
29308
29391
|
import { BareIconButton } from "@tutti-os/ui-system/components";
|
|
29309
29392
|
import { resolveWorkspaceImageMimeType } from "@tutti-os/workspace-file-manager/services";
|
|
29310
29393
|
|
|
29311
|
-
// agent-gui/agentGuiNode/model/agentConversationCopy.ts
|
|
29312
|
-
var COPY_PAGE_SIZE = 200;
|
|
29313
|
-
var MAX_COPY_PAGES = 1e3;
|
|
29314
|
-
var AGENT_CONVERSATION_COPY_MAX_EMBEDDED_IMAGE_BYTES = 2 * 1024 * 1024;
|
|
29315
|
-
async function loadCompleteAgentConversationMessages(input) {
|
|
29316
|
-
const messagesById = /* @__PURE__ */ new Map();
|
|
29317
|
-
let beforeVersion;
|
|
29318
|
-
for (let pageIndex = 0; pageIndex < MAX_COPY_PAGES; pageIndex += 1) {
|
|
29319
|
-
const page = await input.runtime.listSessionMessages({
|
|
29320
|
-
agentSessionId: input.agentSessionId,
|
|
29321
|
-
...beforeVersion === void 0 ? {} : { beforeVersion },
|
|
29322
|
-
cache: false,
|
|
29323
|
-
limit: COPY_PAGE_SIZE,
|
|
29324
|
-
order: "desc",
|
|
29325
|
-
workspaceId: input.workspaceId
|
|
29326
|
-
});
|
|
29327
|
-
for (const message of page.messages) {
|
|
29328
|
-
const key = message.messageId.trim() || `${message.version}`;
|
|
29329
|
-
const existing = messagesById.get(key);
|
|
29330
|
-
if (!existing || message.version >= existing.version) {
|
|
29331
|
-
messagesById.set(key, message);
|
|
29332
|
-
}
|
|
29333
|
-
}
|
|
29334
|
-
if (!page.hasMore) {
|
|
29335
|
-
return [...messagesById.values()].sort(compareMessagesAscending);
|
|
29336
|
-
}
|
|
29337
|
-
const nextBeforeVersion = minimumPositiveVersion(page.messages);
|
|
29338
|
-
if (nextBeforeVersion === null || beforeVersion !== void 0 && nextBeforeVersion >= beforeVersion) {
|
|
29339
|
-
throw new Error("Conversation message pagination did not advance.");
|
|
29340
|
-
}
|
|
29341
|
-
beforeVersion = nextBeforeVersion;
|
|
29342
|
-
}
|
|
29343
|
-
throw new Error("Conversation message pagination exceeded the safety limit.");
|
|
29344
|
-
}
|
|
29345
|
-
async function serializeAgentConversationForClipboard(input) {
|
|
29346
|
-
const context = {
|
|
29347
|
-
labels: input.labels,
|
|
29348
|
-
readAttachment: input.readAttachment,
|
|
29349
|
-
readLocalImage: input.readLocalImage,
|
|
29350
|
-
stats: { omittedImages: 0 }
|
|
29351
|
-
};
|
|
29352
|
-
const kept = [];
|
|
29353
|
-
for (const message of [...input.messages].sort(compareMessagesAscending)) {
|
|
29354
|
-
if (isSystemNoticeMessage(message)) {
|
|
29355
|
-
continue;
|
|
29356
|
-
}
|
|
29357
|
-
if (isToolMessage(message)) {
|
|
29358
|
-
const body2 = await serializeImagesOnly(message.payload ?? {}, context);
|
|
29359
|
-
if (body2.plain) {
|
|
29360
|
-
kept.push({ body: body2, isToolImage: true, role: "assistant" });
|
|
29361
|
-
}
|
|
29362
|
-
continue;
|
|
29363
|
-
}
|
|
29364
|
-
const role = keptMessageRole(message);
|
|
29365
|
-
if (!role) {
|
|
29366
|
-
continue;
|
|
29367
|
-
}
|
|
29368
|
-
const body = await serializeMessageContent(message.payload ?? {}, context);
|
|
29369
|
-
if (body.plain) {
|
|
29370
|
-
kept.push({ body, role });
|
|
29371
|
-
}
|
|
29372
|
-
}
|
|
29373
|
-
const markdownBlocks = [`# ${singleLine(input.title)}`];
|
|
29374
|
-
const hydratedBlocks = [`# ${singleLine(input.title)}`];
|
|
29375
|
-
const pushBlock = (plain, hydrated) => {
|
|
29376
|
-
markdownBlocks.push(plain);
|
|
29377
|
-
hydratedBlocks.push(hydrated);
|
|
29378
|
-
};
|
|
29379
|
-
let index = 0;
|
|
29380
|
-
while (index < kept.length) {
|
|
29381
|
-
const entry = kept[index];
|
|
29382
|
-
if (entry.role === "user") {
|
|
29383
|
-
pushBlock(
|
|
29384
|
-
blockquoteMarkdown(entry.body.plain),
|
|
29385
|
-
blockquoteMarkdown(entry.body.hydrated)
|
|
29386
|
-
);
|
|
29387
|
-
index += 1;
|
|
29388
|
-
continue;
|
|
29389
|
-
}
|
|
29390
|
-
let last = index;
|
|
29391
|
-
while (last + 1 < kept.length && kept[last + 1].role === "assistant") {
|
|
29392
|
-
last += 1;
|
|
29393
|
-
}
|
|
29394
|
-
const run = kept.slice(index, last + 1);
|
|
29395
|
-
const textEntries = run.filter((item) => !item.isToolImage);
|
|
29396
|
-
const interim = textEntries.slice(0, -1);
|
|
29397
|
-
const finalText = textEntries.at(-1);
|
|
29398
|
-
if (interim.length > 0) {
|
|
29399
|
-
const summary = input.labels.previousMessages.replace(
|
|
29400
|
-
"{{count}}",
|
|
29401
|
-
`${interim.length}`
|
|
29402
|
-
);
|
|
29403
|
-
const detailsBlock = (side) => [
|
|
29404
|
-
`<details><summary>${summary}</summary>`,
|
|
29405
|
-
...interim.map((item) => blockquoteMarkdown(item.body[side])),
|
|
29406
|
-
"</details>"
|
|
29407
|
-
].join("\n\n");
|
|
29408
|
-
pushBlock(detailsBlock("plain"), detailsBlock("hydrated"));
|
|
29409
|
-
}
|
|
29410
|
-
for (const item of run) {
|
|
29411
|
-
if (item.isToolImage || item === finalText) {
|
|
29412
|
-
pushBlock(item.body.plain, item.body.hydrated);
|
|
29413
|
-
}
|
|
29414
|
-
}
|
|
29415
|
-
index = last + 1;
|
|
29416
|
-
}
|
|
29417
|
-
return {
|
|
29418
|
-
hydratedMarkdown: hydratedBlocks.join("\n\n").trim(),
|
|
29419
|
-
markdown: markdownBlocks.join("\n\n").trim(),
|
|
29420
|
-
omittedImages: context.stats.omittedImages
|
|
29421
|
-
};
|
|
29422
|
-
}
|
|
29423
|
-
function sameBody(value) {
|
|
29424
|
-
return { hydrated: value, plain: value };
|
|
29425
|
-
}
|
|
29426
|
-
function joinBodies(bodies) {
|
|
29427
|
-
return {
|
|
29428
|
-
hydrated: bodies.map((body) => body.hydrated).filter(Boolean).join("\n\n").trim(),
|
|
29429
|
-
plain: bodies.map((body) => body.plain).filter(Boolean).join("\n\n").trim()
|
|
29430
|
-
};
|
|
29431
|
-
}
|
|
29432
|
-
function keptMessageRole(message) {
|
|
29433
|
-
const role = normalizedRole(message.role);
|
|
29434
|
-
if (role === "user") {
|
|
29435
|
-
return "user";
|
|
29436
|
-
}
|
|
29437
|
-
if (role === "assistant" || role === "agent") {
|
|
29438
|
-
return "assistant";
|
|
29439
|
-
}
|
|
29440
|
-
return null;
|
|
29441
|
-
}
|
|
29442
|
-
function blockquoteMarkdown(value) {
|
|
29443
|
-
const quoted = value.replace(
|
|
29444
|
-
/\n(.?)/g,
|
|
29445
|
-
(_match, next) => next ? `
|
|
29446
|
-
> ${next}` : "\n>"
|
|
29447
|
-
);
|
|
29448
|
-
return `> ${quoted}`;
|
|
29449
|
-
}
|
|
29450
|
-
async function serializeMessageContent(payload, context) {
|
|
29451
|
-
const content = payload.content;
|
|
29452
|
-
if (Array.isArray(content)) {
|
|
29453
|
-
const blocks = await Promise.all(
|
|
29454
|
-
content.map((block) => serializeContentValue(block, context))
|
|
29455
|
-
);
|
|
29456
|
-
const serialized = joinBodies(blocks);
|
|
29457
|
-
if (serialized.plain) {
|
|
29458
|
-
return serialized;
|
|
29459
|
-
}
|
|
29460
|
-
} else if (typeof content === "string" && content.trim()) {
|
|
29461
|
-
return sameBody(content.trim());
|
|
29462
|
-
}
|
|
29463
|
-
return sameBody(
|
|
29464
|
-
firstString2(
|
|
29465
|
-
payload.displayPrompt,
|
|
29466
|
-
payload.text,
|
|
29467
|
-
payload.detail,
|
|
29468
|
-
payload.title,
|
|
29469
|
-
payload.summary
|
|
29470
|
-
) ?? ""
|
|
29471
|
-
);
|
|
29472
|
-
}
|
|
29473
|
-
async function serializeContentValue(value, context) {
|
|
29474
|
-
if (typeof value === "string") {
|
|
29475
|
-
return sameBody(value.trim());
|
|
29476
|
-
}
|
|
29477
|
-
if (!isRecord3(value)) {
|
|
29478
|
-
return sameBody("");
|
|
29479
|
-
}
|
|
29480
|
-
if (value.type === "content" && value.content !== void 0) {
|
|
29481
|
-
return serializeContentValue(value.content, context);
|
|
29482
|
-
}
|
|
29483
|
-
const block = value;
|
|
29484
|
-
switch (block.type) {
|
|
29485
|
-
case "text":
|
|
29486
|
-
return sameBody(typeof block.text === "string" ? block.text.trim() : "");
|
|
29487
|
-
case "image":
|
|
29488
|
-
return serializeImageBlock(block, context);
|
|
29489
|
-
case "file":
|
|
29490
|
-
return sameBody(serializeFileBlock(block, context.labels));
|
|
29491
|
-
case "mention":
|
|
29492
|
-
return sameBody(serializeMentionBlock(block, context.labels));
|
|
29493
|
-
case "skill":
|
|
29494
|
-
return sameBody(serializeSkillBlock(block));
|
|
29495
|
-
default: {
|
|
29496
|
-
const nested = await Promise.all(
|
|
29497
|
-
[value.content, value.output, value.result].filter((candidate) => candidate !== void 0).map((candidate) => serializeContentValue(candidate, context))
|
|
29498
|
-
);
|
|
29499
|
-
return joinBodies(nested);
|
|
29500
|
-
}
|
|
29501
|
-
}
|
|
29502
|
-
}
|
|
29503
|
-
async function serializeImagesOnly(value, context) {
|
|
29504
|
-
if (Array.isArray(value)) {
|
|
29505
|
-
const nested = await Promise.all(
|
|
29506
|
-
value.map((item) => serializeImagesOnly(item, context))
|
|
29507
|
-
);
|
|
29508
|
-
return joinBodies(nested);
|
|
29509
|
-
}
|
|
29510
|
-
if (!isRecord3(value)) {
|
|
29511
|
-
return sameBody("");
|
|
29512
|
-
}
|
|
29513
|
-
if (value.type === "content" && value.content !== void 0) {
|
|
29514
|
-
return serializeImagesOnly(value.content, context);
|
|
29515
|
-
}
|
|
29516
|
-
const block = value;
|
|
29517
|
-
switch (block.type) {
|
|
29518
|
-
case "image":
|
|
29519
|
-
return serializeImageBlock(block, context);
|
|
29520
|
-
case "text":
|
|
29521
|
-
case "file":
|
|
29522
|
-
case "mention":
|
|
29523
|
-
case "skill":
|
|
29524
|
-
return sameBody("");
|
|
29525
|
-
default: {
|
|
29526
|
-
const nested = await Promise.all(
|
|
29527
|
-
[value.content, value.output, value.result].filter((candidate) => candidate !== void 0).map((candidate) => serializeImagesOnly(candidate, context))
|
|
29528
|
-
);
|
|
29529
|
-
return joinBodies(nested);
|
|
29530
|
-
}
|
|
29531
|
-
}
|
|
29532
|
-
}
|
|
29533
|
-
async function serializeImageBlock(block, context) {
|
|
29534
|
-
const attachmentId = firstString2(block.attachmentId);
|
|
29535
|
-
const blockMimeType = firstString2(block.mimeType);
|
|
29536
|
-
const name = firstString2(block.name) ?? context.labels.image;
|
|
29537
|
-
const source = firstString2(block.url, block.uri, block.path, block.hostPath);
|
|
29538
|
-
const inlineData = typeof block.data === "string" && block.data.trim() ? block.data.trim() : null;
|
|
29539
|
-
const isDataSource = source?.startsWith("data:") ?? false;
|
|
29540
|
-
const plain = source && !isDataSource ? imageLinkMarkdown(name, source) : attachmentId ? imageLinkMarkdown(name, `attachment:${attachmentId}`) : `**${name}**`;
|
|
29541
|
-
let hydrated = plain;
|
|
29542
|
-
if (source && isDataSource) {
|
|
29543
|
-
const payload = source.slice(source.indexOf(",") + 1);
|
|
29544
|
-
if (base64BinaryByteSize(payload) <= AGENT_CONVERSATION_COPY_MAX_EMBEDDED_IMAGE_BYTES) {
|
|
29545
|
-
hydrated = imageLinkMarkdown(name, source);
|
|
29546
|
-
} else {
|
|
29547
|
-
context.stats.omittedImages += 1;
|
|
29548
|
-
}
|
|
29549
|
-
} else if (source) {
|
|
29550
|
-
const localPath = localImagePathFromSource(source);
|
|
29551
|
-
if (localPath && context.readLocalImage) {
|
|
29552
|
-
try {
|
|
29553
|
-
const attachment = await context.readLocalImage({
|
|
29554
|
-
mimeType: blockMimeType,
|
|
29555
|
-
path: localPath
|
|
29556
|
-
});
|
|
29557
|
-
hydrated = embedWithinLimit(name, attachment, plain, context);
|
|
29558
|
-
} catch {
|
|
29559
|
-
context.stats.omittedImages += 1;
|
|
29560
|
-
}
|
|
29561
|
-
}
|
|
29562
|
-
} else if (inlineData) {
|
|
29563
|
-
const dataUri = inlineData.startsWith("data:") ? inlineData : `data:${blockMimeType ?? "image/png"};base64,${inlineData}`;
|
|
29564
|
-
const payload = dataUri.slice(dataUri.indexOf(",") + 1);
|
|
29565
|
-
if (base64BinaryByteSize(payload) <= AGENT_CONVERSATION_COPY_MAX_EMBEDDED_IMAGE_BYTES) {
|
|
29566
|
-
hydrated = imageLinkMarkdown(name, dataUri);
|
|
29567
|
-
} else {
|
|
29568
|
-
context.stats.omittedImages += 1;
|
|
29569
|
-
}
|
|
29570
|
-
} else if (attachmentId && context.readAttachment) {
|
|
29571
|
-
try {
|
|
29572
|
-
const attachment = await context.readAttachment(attachmentId);
|
|
29573
|
-
hydrated = embedWithinLimit(name, attachment, plain, context);
|
|
29574
|
-
} catch {
|
|
29575
|
-
context.stats.omittedImages += 1;
|
|
29576
|
-
}
|
|
29577
|
-
}
|
|
29578
|
-
return { hydrated, plain };
|
|
29579
|
-
}
|
|
29580
|
-
function embedWithinLimit(name, attachment, fallback, context) {
|
|
29581
|
-
if (base64BinaryByteSize(attachment.data) > AGENT_CONVERSATION_COPY_MAX_EMBEDDED_IMAGE_BYTES) {
|
|
29582
|
-
context.stats.omittedImages += 1;
|
|
29583
|
-
return fallback;
|
|
29584
|
-
}
|
|
29585
|
-
return imageLinkMarkdown(
|
|
29586
|
-
name,
|
|
29587
|
-
`data:${attachment.mimeType};base64,${attachment.data}`
|
|
29588
|
-
);
|
|
29589
|
-
}
|
|
29590
|
-
function imageLinkMarkdown(name, target) {
|
|
29591
|
-
return `}>)`;
|
|
29592
|
-
}
|
|
29593
|
-
function base64BinaryByteSize(value) {
|
|
29594
|
-
const trimmed = value.trim();
|
|
29595
|
-
const padding = trimmed.endsWith("==") ? 2 : trimmed.endsWith("=") ? 1 : 0;
|
|
29596
|
-
return Math.max(0, Math.floor(trimmed.length * 3 / 4) - padding);
|
|
29597
|
-
}
|
|
29598
|
-
function localImagePathFromSource(source) {
|
|
29599
|
-
const trimmed = source.trim();
|
|
29600
|
-
if (isLocalImagePath(trimmed)) {
|
|
29601
|
-
return trimmed;
|
|
29602
|
-
}
|
|
29603
|
-
if (!/^file:\/\//i.test(trimmed)) {
|
|
29604
|
-
return null;
|
|
29605
|
-
}
|
|
29606
|
-
try {
|
|
29607
|
-
const pathname = decodeURIComponent(new URL(trimmed).pathname);
|
|
29608
|
-
return /^\/[a-zA-Z]:[\\/]/.test(pathname) ? pathname.slice(1) : pathname;
|
|
29609
|
-
} catch {
|
|
29610
|
-
return null;
|
|
29611
|
-
}
|
|
29612
|
-
}
|
|
29613
|
-
function serializeFileBlock(block, labels) {
|
|
29614
|
-
const source = firstString2(block.uri, block.path, block.hostPath, block.url);
|
|
29615
|
-
const name = firstString2(block.name) ?? source ?? labels.file;
|
|
29616
|
-
return source ? `[${escapeMarkdownLabel(name)}](<${escapeMarkdownTarget(source)}>)` : `**${labels.file}:** ${escapeMarkdownLabel(name)}`;
|
|
29617
|
-
}
|
|
29618
|
-
function serializeMentionBlock(block, labels) {
|
|
29619
|
-
const text = firstString2(block.text, block.name);
|
|
29620
|
-
if (text) {
|
|
29621
|
-
return text.startsWith(labels.mentionPrefix) ? text : `${labels.mentionPrefix}${text}`;
|
|
29622
|
-
}
|
|
29623
|
-
return firstString2(block.uri, block.path) ?? "";
|
|
29624
|
-
}
|
|
29625
|
-
function serializeSkillBlock(block) {
|
|
29626
|
-
const name = firstString2(block.name, block.text);
|
|
29627
|
-
return name ? name.startsWith("/") ? name : `/${name}` : "";
|
|
29628
|
-
}
|
|
29629
|
-
function isSystemNoticeMessage(message) {
|
|
29630
|
-
return firstString2(message.payload.kind) === "agent_system_notice";
|
|
29631
|
-
}
|
|
29632
|
-
function isToolMessage(message) {
|
|
29633
|
-
const kind = message.kind.trim().toLowerCase();
|
|
29634
|
-
return kind.includes("tool") || kind.includes("call") || firstString2(message.payload.callType, message.payload.toolName) !== null;
|
|
29635
|
-
}
|
|
29636
|
-
function compareMessagesAscending(left, right) {
|
|
29637
|
-
const leftSequence = left.sequence ?? 0;
|
|
29638
|
-
const rightSequence = right.sequence ?? 0;
|
|
29639
|
-
if (leftSequence > 0 && rightSequence > 0 && leftSequence !== rightSequence) {
|
|
29640
|
-
return leftSequence - rightSequence;
|
|
29641
|
-
}
|
|
29642
|
-
return left.occurredAtUnixMs - right.occurredAtUnixMs || left.version - right.version || left.messageId.localeCompare(right.messageId);
|
|
29643
|
-
}
|
|
29644
|
-
function minimumPositiveVersion(messages) {
|
|
29645
|
-
let minimum = Number.POSITIVE_INFINITY;
|
|
29646
|
-
for (const message of messages) {
|
|
29647
|
-
if (Number.isFinite(message.version) && message.version > 0) {
|
|
29648
|
-
minimum = Math.min(minimum, message.version);
|
|
29649
|
-
}
|
|
29650
|
-
}
|
|
29651
|
-
return Number.isFinite(minimum) ? minimum : null;
|
|
29652
|
-
}
|
|
29653
|
-
function normalizedRole(role) {
|
|
29654
|
-
return role.trim().toLowerCase();
|
|
29655
|
-
}
|
|
29656
|
-
function firstString2(...values) {
|
|
29657
|
-
for (const value of values) {
|
|
29658
|
-
if (typeof value === "string" && value.trim()) {
|
|
29659
|
-
return value.trim();
|
|
29660
|
-
}
|
|
29661
|
-
}
|
|
29662
|
-
return null;
|
|
29663
|
-
}
|
|
29664
|
-
function singleLine(value) {
|
|
29665
|
-
return value.trim().replace(/\s+/g, " ");
|
|
29666
|
-
}
|
|
29667
|
-
function escapeMarkdownLabel(value) {
|
|
29668
|
-
return value.replaceAll("\\", "\\\\").replaceAll("[", "\\[").replaceAll("]", "\\]");
|
|
29669
|
-
}
|
|
29670
|
-
function escapeMarkdownTarget(value) {
|
|
29671
|
-
return value.replace(/>/g, "%3E");
|
|
29672
|
-
}
|
|
29673
|
-
function isRecord3(value) {
|
|
29674
|
-
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
29675
|
-
}
|
|
29676
|
-
|
|
29677
29394
|
// agent-gui/agentGuiNode/model/agentConversationCopyHtml.ts
|
|
29678
29395
|
import { createElement } from "react";
|
|
29679
29396
|
import { renderToStaticMarkup } from "react-dom/server";
|
|
@@ -29730,7 +29447,7 @@ async function readWorkspaceImageAsAttachment(readFile, input) {
|
|
|
29730
29447
|
}
|
|
29731
29448
|
function useAgentGUIClipboardWriter(labels) {
|
|
29732
29449
|
const agentHostApi = useOptionalAgentHostApi();
|
|
29733
|
-
return
|
|
29450
|
+
return useCallback47(
|
|
29734
29451
|
(value, toastHandle) => {
|
|
29735
29452
|
const payload = typeof value === "string" ? { text: value } : value;
|
|
29736
29453
|
const clipboard = agentHostApi?.clipboard;
|
|
@@ -29766,7 +29483,7 @@ function useAgentGUIConversationCopyAction(labels) {
|
|
|
29766
29483
|
const agentHostApi = useOptionalAgentHostApi();
|
|
29767
29484
|
const agentActivityRuntime = useOptionalAgentActivityRuntime();
|
|
29768
29485
|
const writeClipboardValue = useAgentGUIClipboardWriter(labels);
|
|
29769
|
-
return
|
|
29486
|
+
return useCallback47(
|
|
29770
29487
|
(action, { conversation, uiLanguage, workspaceId }) => {
|
|
29771
29488
|
if (action === "copy-reference") {
|
|
29772
29489
|
writeClipboardValue(
|
|
@@ -29861,7 +29578,7 @@ function useConversationActionGroups({
|
|
|
29861
29578
|
const copyConversationValue = useAgentGUIConversationCopyAction(labels);
|
|
29862
29579
|
const [resetKey, setResetKey] = useState29(0);
|
|
29863
29580
|
const pendingActionRef = useRef37(false);
|
|
29864
|
-
const run =
|
|
29581
|
+
const run = useCallback47(
|
|
29865
29582
|
(action) => {
|
|
29866
29583
|
if (pendingActionRef.current) {
|
|
29867
29584
|
return;
|
|
@@ -30110,13 +29827,13 @@ var AgentGUIConversationRailItem = memo5(
|
|
|
30110
29827
|
workspaceId,
|
|
30111
29828
|
agentTargets
|
|
30112
29829
|
);
|
|
30113
|
-
const setItemElement =
|
|
29830
|
+
const setItemElement = useCallback48(
|
|
30114
29831
|
(element) => {
|
|
30115
29832
|
registerItemElement(item.id, element);
|
|
30116
29833
|
},
|
|
30117
29834
|
[item.id, registerItemElement]
|
|
30118
29835
|
);
|
|
30119
|
-
const handleMouseLeave =
|
|
29836
|
+
const handleMouseLeave = useCallback48(() => {
|
|
30120
29837
|
if (isPendingDeleteConversation && !isRailInteractionLocked()) {
|
|
30121
29838
|
onCancelDeleteConversation();
|
|
30122
29839
|
}
|
|
@@ -30412,16 +30129,16 @@ function AgentGUIProjectRailHeader({
|
|
|
30412
30129
|
}
|
|
30413
30130
|
|
|
30414
30131
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailSectionHeader.tsx
|
|
30415
|
-
import { forwardRef as forwardRef5, memo as memo6, useCallback as
|
|
30132
|
+
import { forwardRef as forwardRef5, memo as memo6, useCallback as useCallback49, useState as useState30 } from "react";
|
|
30416
30133
|
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
30417
30134
|
import {
|
|
30418
30135
|
DropdownMenu as DropdownMenu5,
|
|
30419
30136
|
DropdownMenuContent as DropdownMenuContent5,
|
|
30420
30137
|
DropdownMenuItem as DropdownMenuItem4,
|
|
30421
30138
|
DropdownMenuTrigger as DropdownMenuTrigger5,
|
|
30422
|
-
Tooltip as
|
|
30423
|
-
TooltipContent as
|
|
30424
|
-
TooltipTrigger as
|
|
30139
|
+
Tooltip as Tooltip7,
|
|
30140
|
+
TooltipContent as TooltipContent7,
|
|
30141
|
+
TooltipTrigger as TooltipTrigger7
|
|
30425
30142
|
} from "@tutti-os/ui-system";
|
|
30426
30143
|
import {
|
|
30427
30144
|
BareIconButton as BareIconButton3
|
|
@@ -30581,10 +30298,10 @@ var CreateAction = memo6(function CreateAction2({
|
|
|
30581
30298
|
if (previewMode) {
|
|
30582
30299
|
return /* @__PURE__ */ jsx57("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: button });
|
|
30583
30300
|
}
|
|
30584
|
-
return /* @__PURE__ */ jsxs40(
|
|
30585
|
-
/* @__PURE__ */ jsx57(
|
|
30301
|
+
return /* @__PURE__ */ jsxs40(Tooltip7, { children: [
|
|
30302
|
+
/* @__PURE__ */ jsx57(TooltipTrigger7, { asChild: true, children: /* @__PURE__ */ jsx57("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: button }) }),
|
|
30586
30303
|
/* @__PURE__ */ jsx57(
|
|
30587
|
-
|
|
30304
|
+
TooltipContent7,
|
|
30588
30305
|
{
|
|
30589
30306
|
side: "top",
|
|
30590
30307
|
sideOffset: 6,
|
|
@@ -30620,10 +30337,10 @@ function ProjectMenuTrigger({
|
|
|
30620
30337
|
if (previewMode) {
|
|
30621
30338
|
return /* @__PURE__ */ jsx57(DropdownMenuTrigger5, { asChild: true, children: /* @__PURE__ */ jsx57("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx57(ProjectMenuButton, { accessibleName }) }) });
|
|
30622
30339
|
}
|
|
30623
|
-
return /* @__PURE__ */ jsxs40(
|
|
30624
|
-
/* @__PURE__ */ jsx57(
|
|
30340
|
+
return /* @__PURE__ */ jsxs40(Tooltip7, { children: [
|
|
30341
|
+
/* @__PURE__ */ jsx57(TooltipTrigger7, { asChild: true, children: /* @__PURE__ */ jsx57("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx57(DropdownMenuTrigger5, { asChild: true, children: /* @__PURE__ */ jsx57(ProjectMenuButton, { accessibleName }) }) }) }),
|
|
30625
30342
|
/* @__PURE__ */ jsx57(
|
|
30626
|
-
|
|
30343
|
+
TooltipContent7,
|
|
30627
30344
|
{
|
|
30628
30345
|
side: "right",
|
|
30629
30346
|
sideOffset: 6,
|
|
@@ -30736,8 +30453,8 @@ function ConversationMenuTrigger({
|
|
|
30736
30453
|
}
|
|
30737
30454
|
) }) });
|
|
30738
30455
|
}
|
|
30739
|
-
return /* @__PURE__ */ jsxs40(
|
|
30740
|
-
/* @__PURE__ */ jsx57(
|
|
30456
|
+
return /* @__PURE__ */ jsxs40(Tooltip7, { children: [
|
|
30457
|
+
/* @__PURE__ */ jsx57(TooltipTrigger7, { asChild: true, children: /* @__PURE__ */ jsx57("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx57(DropdownMenuTrigger5, { asChild: true, children: /* @__PURE__ */ jsx57(
|
|
30741
30458
|
BareIconButton3,
|
|
30742
30459
|
{
|
|
30743
30460
|
className: AgentGUINode_styles_default.conversationSectionMoreButton,
|
|
@@ -30747,7 +30464,7 @@ function ConversationMenuTrigger({
|
|
|
30747
30464
|
}
|
|
30748
30465
|
) }) }) }),
|
|
30749
30466
|
/* @__PURE__ */ jsx57(
|
|
30750
|
-
|
|
30467
|
+
TooltipContent7,
|
|
30751
30468
|
{
|
|
30752
30469
|
side: "right",
|
|
30753
30470
|
sideOffset: 6,
|
|
@@ -30824,7 +30541,7 @@ var AgentGUIConversationRailSectionHeader = memo6(
|
|
|
30824
30541
|
"use memo";
|
|
30825
30542
|
const [projectMenuOpen, setProjectMenuOpen] = useState30(false);
|
|
30826
30543
|
const [conversationMenuOpen, setConversationMenuOpen] = useState30(false);
|
|
30827
|
-
const handleProjectMenuOpenChange =
|
|
30544
|
+
const handleProjectMenuOpenChange = useCallback49(
|
|
30828
30545
|
(open) => {
|
|
30829
30546
|
setProjectMenuOpen(open);
|
|
30830
30547
|
onProjectMenuOpenChange(open);
|
|
@@ -30976,7 +30693,7 @@ var AgentGUIConversationRailSection = memo7(
|
|
|
30976
30693
|
const visibleCountTowardTotal = visiblePageableIds.size + (activeConversationCountsTowardTotal && activeConversation && visibleItems.some((item) => item.id === activeConversation.id) && !visiblePageableIds.has(activeConversation.id) ? 1 : 0);
|
|
30977
30694
|
const canShowMore = !isSectionCollapsed && visibleCountTowardTotal < sectionTotalCount && (visibleItemCount < pageableItems.length || sectionHasMore);
|
|
30978
30695
|
const canShowLess = !isSectionCollapsed && visibleItemCount > AGENT_GUI_CONVERSATION_RAIL_SECTION_PAGE_SIZE;
|
|
30979
|
-
const showMoreConversations =
|
|
30696
|
+
const showMoreConversations = useCallback50(() => {
|
|
30980
30697
|
if (isRailInteractionLocked()) return;
|
|
30981
30698
|
if (visibleItemCount >= pageableItems.length && sectionHasMore) {
|
|
30982
30699
|
onLoadMoreConversations(section);
|
|
@@ -31003,7 +30720,7 @@ var AgentGUIConversationRailSection = memo7(
|
|
|
31003
30720
|
visibleItemCount,
|
|
31004
30721
|
visibleItemLimit
|
|
31005
30722
|
]);
|
|
31006
|
-
const showLessConversations =
|
|
30723
|
+
const showLessConversations = useCallback50(() => {
|
|
31007
30724
|
if (isRailInteractionLocked()) return;
|
|
31008
30725
|
onVisibleItemLimitChange(
|
|
31009
30726
|
section.id,
|
|
@@ -31215,7 +30932,7 @@ function AgentGUIProjectActionConfirmationDialog(props) {
|
|
|
31215
30932
|
}
|
|
31216
30933
|
|
|
31217
30934
|
// agent-gui/agentGuiNode/view/useAgentGUIConversationRailViewState.ts
|
|
31218
|
-
import { useCallback as
|
|
30935
|
+
import { useCallback as useCallback51, useLayoutEffect as useLayoutEffect6, useReducer, useRef as useRef38 } from "react";
|
|
31219
30936
|
function applyRailScrollNavigation(input) {
|
|
31220
30937
|
const activeConversationId = input.activeConversationId?.trim() || null;
|
|
31221
30938
|
const current = input.current.navigationKey === input.navigationKey ? input.current : {
|
|
@@ -31315,7 +31032,7 @@ function useAgentGUIConversationRailViewState(input) {
|
|
|
31315
31032
|
navigationKey,
|
|
31316
31033
|
searchActive
|
|
31317
31034
|
]);
|
|
31318
|
-
const registerConversationItemElement =
|
|
31035
|
+
const registerConversationItemElement = useCallback51(
|
|
31319
31036
|
(itemId, element) => {
|
|
31320
31037
|
if (element) {
|
|
31321
31038
|
conversationItemElementsRef.current.set(itemId, element);
|
|
@@ -31355,14 +31072,14 @@ function useAgentGUIConversationRailViewState(input) {
|
|
|
31355
31072
|
}
|
|
31356
31073
|
|
|
31357
31074
|
// agent-gui/agentGuiNode/view/useAgentGUIProjectMenuState.ts
|
|
31358
|
-
import { useCallback as
|
|
31075
|
+
import { useCallback as useCallback52, useState as useState31 } from "react";
|
|
31359
31076
|
function useAgentGUIProjectMenuState(isRailInteractionLocked, isUserProjectMutationPending) {
|
|
31360
31077
|
const [openSectionId, setOpenSectionId] = useState31(null);
|
|
31361
|
-
const isProjectActionLocked =
|
|
31078
|
+
const isProjectActionLocked = useCallback52(
|
|
31362
31079
|
() => isRailInteractionLocked() || isUserProjectMutationPending,
|
|
31363
31080
|
[isRailInteractionLocked, isUserProjectMutationPending]
|
|
31364
31081
|
);
|
|
31365
|
-
const onProjectMenuOpenChange =
|
|
31082
|
+
const onProjectMenuOpenChange = useCallback52(
|
|
31366
31083
|
(sectionId, open) => {
|
|
31367
31084
|
setOpenSectionId(
|
|
31368
31085
|
(current) => open ? sectionId : current === sectionId ? null : current
|
|
@@ -33097,7 +32814,7 @@ var AgentGUIConversationRailController = memo9(
|
|
|
33097
32814
|
// agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
|
|
33098
32815
|
import {
|
|
33099
32816
|
memo as memo12,
|
|
33100
|
-
useCallback as
|
|
32817
|
+
useCallback as useCallback54,
|
|
33101
32818
|
useEffect as useEffect34,
|
|
33102
32819
|
useMemo as useMemo38,
|
|
33103
32820
|
useRef as useRef43,
|
|
@@ -33723,7 +33440,7 @@ function setTimelineScrollTopWithUserTransition(element, top) {
|
|
|
33723
33440
|
|
|
33724
33441
|
// agent-gui/agentGuiNode/view/useAgentGUIDetailScroll.ts
|
|
33725
33442
|
import {
|
|
33726
|
-
useCallback as
|
|
33443
|
+
useCallback as useCallback53,
|
|
33727
33444
|
useEffect as useEffect33,
|
|
33728
33445
|
useLayoutEffect as useLayoutEffect7,
|
|
33729
33446
|
useRef as useRef42,
|
|
@@ -34031,7 +33748,7 @@ function useAgentGUIDetailScroll(input) {
|
|
|
34031
33748
|
viewModel.detail.hasOlderMessages,
|
|
34032
33749
|
viewModel.detail.isLoadingOlderMessages
|
|
34033
33750
|
]);
|
|
34034
|
-
const scrollTimelineToBottom =
|
|
33751
|
+
const scrollTimelineToBottom = useCallback53(() => {
|
|
34035
33752
|
const timeline = timelineRef.current;
|
|
34036
33753
|
const activeConversationId = timelineConversationId;
|
|
34037
33754
|
if (!timeline || !activeConversationId) {
|
|
@@ -34734,6 +34451,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34734
34451
|
onCapabilitySettingsRequest,
|
|
34735
34452
|
onAgentProviderLogin,
|
|
34736
34453
|
onRequestWorkspaceReferences,
|
|
34454
|
+
resolveExternalPromptEntries = null,
|
|
34737
34455
|
prepareExternalPromptFiles = null,
|
|
34738
34456
|
promptAssetLimit = null,
|
|
34739
34457
|
selectProjectDirectory,
|
|
@@ -34788,7 +34506,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34788
34506
|
slashStatusLimitsUnavailable,
|
|
34789
34507
|
viewModel
|
|
34790
34508
|
});
|
|
34791
|
-
const handleInterruptCurrentTurn =
|
|
34509
|
+
const handleInterruptCurrentTurn = useCallback54(() => {
|
|
34792
34510
|
actions.interruptCurrentTurn(labels.noRunningResponse);
|
|
34793
34511
|
}, [actions.interruptCurrentTurn, labels.noRunningResponse]);
|
|
34794
34512
|
const submitApprovalOption = useStableEventCallback(
|
|
@@ -34808,14 +34526,14 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34808
34526
|
const selectHomeComposerAgentTarget = useStableEventCallback(
|
|
34809
34527
|
actions.selectHomeComposerAgentTarget
|
|
34810
34528
|
);
|
|
34811
|
-
const selectHomeComposerAgentTargetAndFocus =
|
|
34529
|
+
const selectHomeComposerAgentTargetAndFocus = useCallback54(
|
|
34812
34530
|
(input) => {
|
|
34813
34531
|
selectHomeComposerAgentTarget(input);
|
|
34814
34532
|
onRequestComposerFocus();
|
|
34815
34533
|
},
|
|
34816
34534
|
[onRequestComposerFocus, selectHomeComposerAgentTarget]
|
|
34817
34535
|
);
|
|
34818
|
-
const handleSelectHomeSuggestion =
|
|
34536
|
+
const handleSelectHomeSuggestion = useCallback54(
|
|
34819
34537
|
(prompt) => {
|
|
34820
34538
|
updateDraftContent(
|
|
34821
34539
|
updateAgentComposerDraft(viewModel.composer.draftContent, { prompt })
|
|
@@ -34823,7 +34541,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34823
34541
|
},
|
|
34824
34542
|
[updateDraftContent, viewModel.composer.draftContent]
|
|
34825
34543
|
);
|
|
34826
|
-
const handleHomeSuggestionAction =
|
|
34544
|
+
const handleHomeSuggestionAction = useCallback54(
|
|
34827
34545
|
(action) => {
|
|
34828
34546
|
if (action === "import-session") {
|
|
34829
34547
|
window.dispatchEvent(
|
|
@@ -34838,7 +34556,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34838
34556
|
const submitGuidancePrompt = useStableEventCallback(
|
|
34839
34557
|
actions.submitGuidancePrompt
|
|
34840
34558
|
);
|
|
34841
|
-
const requestSubmittedPromptScrollToBottom =
|
|
34559
|
+
const requestSubmittedPromptScrollToBottom = useCallback54(() => {
|
|
34842
34560
|
const activeConversationId = viewModel.rail.activeConversationId;
|
|
34843
34561
|
if (!activeConversationId) {
|
|
34844
34562
|
return;
|
|
@@ -34846,7 +34564,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34846
34564
|
submittedPromptScrollConversationRef.current = activeConversationId;
|
|
34847
34565
|
pendingPrependScrollAnchorRef.current = null;
|
|
34848
34566
|
}, [viewModel.rail.activeConversationId]);
|
|
34849
|
-
const submitPromptAndScrollToBottom =
|
|
34567
|
+
const submitPromptAndScrollToBottom = useCallback54(
|
|
34850
34568
|
(content, displayPrompt, options) => {
|
|
34851
34569
|
requestSubmittedPromptScrollToBottom();
|
|
34852
34570
|
if (displayPrompt === void 0) {
|
|
@@ -34857,7 +34575,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34857
34575
|
},
|
|
34858
34576
|
[requestSubmittedPromptScrollToBottom, submitPrompt]
|
|
34859
34577
|
);
|
|
34860
|
-
const submitGuidancePromptAndScrollToBottom =
|
|
34578
|
+
const submitGuidancePromptAndScrollToBottom = useCallback54(
|
|
34861
34579
|
(content, displayPrompt) => {
|
|
34862
34580
|
requestSubmittedPromptScrollToBottom();
|
|
34863
34581
|
if (displayPrompt === void 0) {
|
|
@@ -34888,7 +34606,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34888
34606
|
);
|
|
34889
34607
|
const stableRequestGitBranches = useOptionalStableEventCallback(onRequestGitBranches);
|
|
34890
34608
|
const authLogin = useOptionalStableEventCallback(onAgentProviderLogin);
|
|
34891
|
-
const submitBottomDockInteractivePrompt =
|
|
34609
|
+
const submitBottomDockInteractivePrompt = useCallback54(
|
|
34892
34610
|
(input) => {
|
|
34893
34611
|
submitInteractivePrompt(input);
|
|
34894
34612
|
setBottomDockDismissedPromptRequestId(input.requestId);
|
|
@@ -34994,6 +34712,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34994
34712
|
onLinkAction: stableLinkAction,
|
|
34995
34713
|
onHandoffConversation: stableHandoffConversation,
|
|
34996
34714
|
onRequestWorkspaceReferences: stableRequestWorkspaceReferences,
|
|
34715
|
+
resolveExternalPromptEntries,
|
|
34997
34716
|
prepareExternalPromptFiles,
|
|
34998
34717
|
promptAssetLimit,
|
|
34999
34718
|
selectProjectDirectory: stableSelectProjectDirectory,
|
|
@@ -35031,6 +34750,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
35031
34750
|
editQueuedPrompt,
|
|
35032
34751
|
onCapabilitySettingsRequest,
|
|
35033
34752
|
removeQueuedPrompt,
|
|
34753
|
+
resolveExternalPromptEntries,
|
|
35034
34754
|
prepareExternalPromptFiles,
|
|
35035
34755
|
promptAssetLimit,
|
|
35036
34756
|
sendQueuedPromptNext,
|
|
@@ -35226,7 +34946,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
35226
34946
|
});
|
|
35227
34947
|
|
|
35228
34948
|
// agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
|
|
35229
|
-
import { memo as memo13, useCallback as
|
|
34949
|
+
import { memo as memo13, useCallback as useCallback55, useEffect as useEffect35, useRef as useRef44, useState as useState39 } from "react";
|
|
35230
34950
|
import { ConfirmationDialog as ConfirmationDialog3, Input as Input2 } from "@tutti-os/ui-system";
|
|
35231
34951
|
import { jsx as jsx69, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
35232
34952
|
var AgentGUIRenameConversationDialog = memo13(
|
|
@@ -35264,12 +34984,12 @@ var AgentGUIRenameConversationDialog = memo13(
|
|
|
35264
34984
|
}, 0);
|
|
35265
34985
|
return () => window.clearTimeout(timer);
|
|
35266
34986
|
}, [open, conversation?.id]);
|
|
35267
|
-
const closeRenameDialog =
|
|
34987
|
+
const closeRenameDialog = useCallback55(() => {
|
|
35268
34988
|
if (!isSavingRef.current) {
|
|
35269
34989
|
onOpenChange(false);
|
|
35270
34990
|
}
|
|
35271
34991
|
}, [onOpenChange]);
|
|
35272
|
-
const confirmRename =
|
|
34992
|
+
const confirmRename = useCallback55(() => {
|
|
35273
34993
|
if (!conversation || isSavingRef.current || !trimmedTitle) {
|
|
35274
34994
|
return;
|
|
35275
34995
|
}
|
|
@@ -35471,7 +35191,7 @@ function AgentGUIReferencePickerSurface({
|
|
|
35471
35191
|
}
|
|
35472
35192
|
|
|
35473
35193
|
// agent-gui/agentGuiNode/view/AgentTargetSetupRoot.tsx
|
|
35474
|
-
import { useCallback as
|
|
35194
|
+
import { useCallback as useCallback56, useMemo as useMemo39 } from "react";
|
|
35475
35195
|
import { jsx as jsx71, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
35476
35196
|
function useAgentTargetSetupRoot(input) {
|
|
35477
35197
|
const { preferences } = useAgentGUIProviderRailPreferences();
|
|
@@ -35489,7 +35209,7 @@ function useAgentTargetSetupRoot(input) {
|
|
|
35489
35209
|
);
|
|
35490
35210
|
const targetRuntimeSetupVisible = effectiveSelectedTarget.ref.setupKind === "target_runtime";
|
|
35491
35211
|
const environmentSetupVisible = targetRuntimeSetupVisible || !!resolveAgentGUIProviderCatalogIdentity(input.environmentProvider ?? "");
|
|
35492
|
-
const openAgentEnvSetup =
|
|
35212
|
+
const openAgentEnvSetup = useCallback56(() => {
|
|
35493
35213
|
if (targetRuntimeSetupVisible) {
|
|
35494
35214
|
controller.setDialogOpen(true);
|
|
35495
35215
|
return;
|
|
@@ -35530,7 +35250,7 @@ function AgentTargetSetupRoot({
|
|
|
35530
35250
|
}
|
|
35531
35251
|
|
|
35532
35252
|
// agent-gui/agentGuiNode/view/useAgentGUIWorkspaceReferencePicker.ts
|
|
35533
|
-
import { useCallback as
|
|
35253
|
+
import { useCallback as useCallback57, useMemo as useMemo40, useRef as useRef45, useState as useState40 } from "react";
|
|
35534
35254
|
import { createRichTextMentionHref } from "@tutti-os/ui-rich-text/core";
|
|
35535
35255
|
function useAgentGUIWorkspaceReferencePicker(input) {
|
|
35536
35256
|
const {
|
|
@@ -35551,11 +35271,11 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
35551
35271
|
[]
|
|
35552
35272
|
);
|
|
35553
35273
|
const hostLocalFileSourceId = "host-local-file";
|
|
35554
|
-
const isWorkspaceReferencePickerNodeSelectable =
|
|
35274
|
+
const isWorkspaceReferencePickerNodeSelectable = useCallback57(
|
|
35555
35275
|
(node) => node.ref.sourceId !== hostLocalFileSourceId || node.kind === "file",
|
|
35556
35276
|
[hostLocalFileSourceId]
|
|
35557
35277
|
);
|
|
35558
|
-
const requestWorkspaceReferences =
|
|
35278
|
+
const requestWorkspaceReferences = useCallback57(
|
|
35559
35279
|
async (entity) => {
|
|
35560
35280
|
if (previewMode) {
|
|
35561
35281
|
return emptyReferencePickResult;
|
|
@@ -35587,13 +35307,13 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
35587
35307
|
workspaceFileReferenceCopy
|
|
35588
35308
|
]
|
|
35589
35309
|
);
|
|
35590
|
-
const closeWorkspaceReferencePicker =
|
|
35310
|
+
const closeWorkspaceReferencePicker = useCallback57(() => {
|
|
35591
35311
|
workspaceReferencePickerResolverRef.current?.(emptyReferencePickResult);
|
|
35592
35312
|
workspaceReferencePickerResolverRef.current = null;
|
|
35593
35313
|
setWorkspaceReferencePickerOpen(false);
|
|
35594
35314
|
setWorkspaceReferencePickerTarget(null);
|
|
35595
35315
|
}, [emptyReferencePickResult]);
|
|
35596
|
-
const settleReferencePicker =
|
|
35316
|
+
const settleReferencePicker = useCallback57(
|
|
35597
35317
|
(result, addedFiles) => {
|
|
35598
35318
|
workspaceReferencePickerResolverRef.current?.(result);
|
|
35599
35319
|
workspaceReferencePickerResolverRef.current = null;
|
|
@@ -35605,13 +35325,13 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
35605
35325
|
},
|
|
35606
35326
|
[onWorkspaceFileReferencesAdded]
|
|
35607
35327
|
);
|
|
35608
|
-
const confirmWorkspaceReferencePicker =
|
|
35328
|
+
const confirmWorkspaceReferencePicker = useCallback57(
|
|
35609
35329
|
(refs) => {
|
|
35610
35330
|
settleReferencePicker({ files: refs, mentionItems: [] }, refs);
|
|
35611
35331
|
},
|
|
35612
35332
|
[settleReferencePicker]
|
|
35613
35333
|
);
|
|
35614
|
-
const confirmWorkspaceReferenceBundles =
|
|
35334
|
+
const confirmWorkspaceReferenceBundles = useCallback57(
|
|
35615
35335
|
(result) => {
|
|
35616
35336
|
const workspaceRefs = result.files.filter(
|
|
35617
35337
|
(ref) => ref.sourceId !== hostLocalFileSourceId
|
|
@@ -35908,7 +35628,7 @@ function useAgentGUINodeEngagement(input) {
|
|
|
35908
35628
|
}
|
|
35909
35629
|
|
|
35910
35630
|
// agent-gui/agentGuiNode/view/useAgentGUIExternalRequests.ts
|
|
35911
|
-
import { useCallback as
|
|
35631
|
+
import { useCallback as useCallback58, useEffect as useEffect37, useRef as useRef48 } from "react";
|
|
35912
35632
|
function resolveSessionActionConversation(viewModel, agentSessionId) {
|
|
35913
35633
|
const active = viewModel.rail.activeConversation;
|
|
35914
35634
|
if (!agentSessionId) {
|
|
@@ -35935,7 +35655,7 @@ function useAgentGUIExternalRequests(input) {
|
|
|
35935
35655
|
} = input;
|
|
35936
35656
|
const agentHostApi = useOptionalAgentHostApi();
|
|
35937
35657
|
const railInteractionLockProbeRef = useRef48(null);
|
|
35938
|
-
const registerRailInteractionLockProbe =
|
|
35658
|
+
const registerRailInteractionLockProbe = useCallback58(
|
|
35939
35659
|
(probe) => {
|
|
35940
35660
|
railInteractionLockProbeRef.current = probe;
|
|
35941
35661
|
},
|
|
@@ -36033,6 +35753,7 @@ function AgentGUINodeView({
|
|
|
36033
35753
|
detailMinWidthPx,
|
|
36034
35754
|
uiLanguage,
|
|
36035
35755
|
onWorkspaceFileReferencesAdded,
|
|
35756
|
+
resolveExternalPromptEntries = null,
|
|
36036
35757
|
prepareExternalPromptFiles = null,
|
|
36037
35758
|
promptAssetLimit = null,
|
|
36038
35759
|
onConversationRailWidthChanged,
|
|
@@ -36124,10 +35845,10 @@ function AgentGUINodeView({
|
|
|
36124
35845
|
);
|
|
36125
35846
|
const openProjectFiles = useOptionalStableEventCallback(onLinkAction);
|
|
36126
35847
|
const detailComposerFocusRequestSequence = localComposerFocusRequestSequence === 0 ? composerFocusRequestSequence : (composerFocusRequestSequence ?? 0) + localComposerFocusRequestSequence;
|
|
36127
|
-
const requestComposerFocus =
|
|
35848
|
+
const requestComposerFocus = useCallback59(() => {
|
|
36128
35849
|
setLocalComposerFocusRequestSequence((current) => current + 1);
|
|
36129
35850
|
}, []);
|
|
36130
|
-
const requestCreateConversation =
|
|
35851
|
+
const requestCreateConversation = useCallback59(
|
|
36131
35852
|
(options) => {
|
|
36132
35853
|
if (previewMode) {
|
|
36133
35854
|
return;
|
|
@@ -36164,14 +35885,14 @@ function AgentGUINodeView({
|
|
|
36164
35885
|
workspaceAppIcons
|
|
36165
35886
|
]
|
|
36166
35887
|
);
|
|
36167
|
-
const clampConversationRailWidth =
|
|
35888
|
+
const clampConversationRailWidth = useCallback59(
|
|
36168
35889
|
(widthPx) => Math.min(
|
|
36169
35890
|
conversationRailMaxWidthPx,
|
|
36170
35891
|
Math.max(conversationRailMinWidthPx, widthPx)
|
|
36171
35892
|
),
|
|
36172
35893
|
[conversationRailMaxWidthPx, conversationRailMinWidthPx]
|
|
36173
35894
|
);
|
|
36174
|
-
const handleConversationRailResizePointerDown =
|
|
35895
|
+
const handleConversationRailResizePointerDown = useCallback59(
|
|
36175
35896
|
(event) => {
|
|
36176
35897
|
if (previewMode) {
|
|
36177
35898
|
return;
|
|
@@ -36192,7 +35913,7 @@ function AgentGUINodeView({
|
|
|
36192
35913
|
},
|
|
36193
35914
|
[conversationRailCollapsed, conversationRailWidthPx, previewMode]
|
|
36194
35915
|
);
|
|
36195
|
-
const handleConversationRailResizePointerMove =
|
|
35916
|
+
const handleConversationRailResizePointerMove = useCallback59(
|
|
36196
35917
|
(event) => {
|
|
36197
35918
|
if (previewMode) {
|
|
36198
35919
|
return;
|
|
@@ -36215,7 +35936,7 @@ function AgentGUINodeView({
|
|
|
36215
35936
|
},
|
|
36216
35937
|
[clampConversationRailWidth, previewMode]
|
|
36217
35938
|
);
|
|
36218
|
-
const endConversationRailResize =
|
|
35939
|
+
const endConversationRailResize = useCallback59(
|
|
36219
35940
|
(event) => {
|
|
36220
35941
|
const resizeState = railResizeInteractionRef.current;
|
|
36221
35942
|
if (event && resizeState?.pointerId === event.pointerId && event.currentTarget.hasPointerCapture?.(event.pointerId)) {
|
|
@@ -36246,7 +35967,7 @@ function AgentGUINodeView({
|
|
|
36246
35967
|
isRailResizing,
|
|
36247
35968
|
railResizeWidthPx
|
|
36248
35969
|
]);
|
|
36249
|
-
const handleConversationRailResizeKeyDown =
|
|
35970
|
+
const handleConversationRailResizeKeyDown = useCallback59(
|
|
36250
35971
|
(event) => {
|
|
36251
35972
|
if (previewMode) {
|
|
36252
35973
|
return;
|
|
@@ -36313,12 +36034,12 @@ function AgentGUINodeView({
|
|
|
36313
36034
|
openEnvironmentSetup: onAgentEnvPanelOpen,
|
|
36314
36035
|
selectedAgentTarget: viewModel.rail.selectedAgentTarget
|
|
36315
36036
|
});
|
|
36316
|
-
const openAgentSettings =
|
|
36037
|
+
const openAgentSettings = useCallback59(() => {
|
|
36317
36038
|
openWorkspaceSettingsPanel({ section: "agent" });
|
|
36318
36039
|
}, []);
|
|
36319
36040
|
const [renameConversationTarget, setRenameConversationTarget] = useState41(null);
|
|
36320
36041
|
const [renameConversationDialogOpen, setRenameConversationDialogOpen] = useState41(false);
|
|
36321
|
-
const requestRenameConversation =
|
|
36042
|
+
const requestRenameConversation = useCallback59(
|
|
36322
36043
|
(conversation) => {
|
|
36323
36044
|
setRenameConversationTarget(conversation);
|
|
36324
36045
|
setRenameConversationDialogOpen(true);
|
|
@@ -36587,6 +36308,7 @@ function AgentGUINodeView({
|
|
|
36587
36308
|
onCapabilitySettingsRequest,
|
|
36588
36309
|
onAgentProviderLogin,
|
|
36589
36310
|
onRequestWorkspaceReferences: requestWorkspaceReferences,
|
|
36311
|
+
resolveExternalPromptEntries,
|
|
36590
36312
|
prepareExternalPromptFiles,
|
|
36591
36313
|
promptAssetLimit,
|
|
36592
36314
|
selectProjectDirectory,
|
|
@@ -36638,7 +36360,7 @@ function AgentGUINodeView({
|
|
|
36638
36360
|
]
|
|
36639
36361
|
}
|
|
36640
36362
|
) });
|
|
36641
|
-
return previewMode ? content : /* @__PURE__ */ jsx72(
|
|
36363
|
+
return previewMode ? content : /* @__PURE__ */ jsx72(TooltipProvider6, { children: content });
|
|
36642
36364
|
}
|
|
36643
36365
|
|
|
36644
36366
|
// agent-gui/workspaceDesktop/view/desktopDockAgentProbeTooltipModel.ts
|
|
@@ -36812,7 +36534,7 @@ function appendDockProbeUsageLines(probe, lines, isLoadingUsage, t) {
|
|
|
36812
36534
|
// agent-gui/workspaceDesktop/view/AgentProbeInfoPopover.tsx
|
|
36813
36535
|
import { Info as Info2 } from "lucide-react";
|
|
36814
36536
|
import {
|
|
36815
|
-
useCallback as
|
|
36537
|
+
useCallback as useCallback60,
|
|
36816
36538
|
useEffect as useEffect39,
|
|
36817
36539
|
useLayoutEffect as useLayoutEffect9,
|
|
36818
36540
|
useRef as useRef50,
|
|
@@ -36857,20 +36579,20 @@ function AgentProbeInfoPopover({
|
|
|
36857
36579
|
const popoverRef = useRef50(null);
|
|
36858
36580
|
const [isOpen, setIsOpen] = useState42(false);
|
|
36859
36581
|
const [popoverStyle, setPopoverStyle] = useState42(null);
|
|
36860
|
-
const openPopover =
|
|
36582
|
+
const openPopover = useCallback60(() => {
|
|
36861
36583
|
if (!isOpen) {
|
|
36862
36584
|
onOpen?.();
|
|
36863
36585
|
}
|
|
36864
36586
|
setIsOpen(true);
|
|
36865
36587
|
}, [isOpen, onOpen]);
|
|
36866
|
-
const closeIfPointerLeavesPopover =
|
|
36588
|
+
const closeIfPointerLeavesPopover = useCallback60((event) => {
|
|
36867
36589
|
const nextTarget = event.relatedTarget;
|
|
36868
36590
|
if (nextTarget instanceof Node && (anchorRef.current?.contains(nextTarget) || popoverRef.current?.contains(nextTarget))) {
|
|
36869
36591
|
return;
|
|
36870
36592
|
}
|
|
36871
36593
|
setIsOpen(false);
|
|
36872
36594
|
}, []);
|
|
36873
|
-
const updatePopoverPosition =
|
|
36595
|
+
const updatePopoverPosition = useCallback60(() => {
|
|
36874
36596
|
const anchor = anchorRef.current;
|
|
36875
36597
|
if (!anchor) {
|
|
36876
36598
|
return;
|
|
@@ -37060,7 +36782,7 @@ function areAgentGUINodePropsEqual(previous, next) {
|
|
|
37060
36782
|
const pc = previous.hostCapabilities, nc = next.hostCapabilities;
|
|
37061
36783
|
const pa = previous.hostActions, na = next.hostActions;
|
|
37062
36784
|
const ps = previous.renderSlots, ns = next.renderSlots;
|
|
37063
|
-
return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.prepareExternalPromptFiles === nw.prepareExternalPromptFiles && pw.promptAssetLimit === nw.promptAssetLimit && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.sessionAction === nr.sessionAction && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentProbes === nr.agentProbes && pr.onProbeDemandChange === nr.onProbeDemandChange && pr.onProbeRefreshRequest === nr.onProbeRefreshRequest && pc.capabilityMenuState === nc.capabilityMenuState && pc.accountMenuState === nc.accountMenuState && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.handoffAgentTargets === nc.handoffAgentTargets && pc.handoffAgentTargetsLoading === nc.handoffAgentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.mentionService === nc.mentionService && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onAgentEnvPanelOpen === na.onAgentEnvPanelOpen && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
|
|
36785
|
+
return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.resolveExternalPromptEntries === nw.resolveExternalPromptEntries && pw.prepareExternalPromptFiles === nw.prepareExternalPromptFiles && pw.promptAssetLimit === nw.promptAssetLimit && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.sessionAction === nr.sessionAction && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentProbes === nr.agentProbes && pr.onProbeDemandChange === nr.onProbeDemandChange && pr.onProbeRefreshRequest === nr.onProbeRefreshRequest && pc.capabilityMenuState === nc.capabilityMenuState && pc.accountMenuState === nc.accountMenuState && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.handoffAgentTargets === nc.handoffAgentTargets && pc.handoffAgentTargetsLoading === nc.handoffAgentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.mentionService === nc.mentionService && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onAgentEnvPanelOpen === na.onAgentEnvPanelOpen && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
|
|
37064
36786
|
}
|
|
37065
36787
|
|
|
37066
36788
|
// agent-gui/agentGuiNode/AgentGUIMentionServiceBoundary.tsx
|
|
@@ -38114,6 +37836,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38114
37836
|
fileReferenceAdapter: workspaceFileReferenceAdapter = null,
|
|
38115
37837
|
onRequestGitBranches = null,
|
|
38116
37838
|
selectProjectDirectory,
|
|
37839
|
+
resolveExternalPromptEntries = null,
|
|
38117
37840
|
prepareExternalPromptFiles = null,
|
|
38118
37841
|
promptAssetLimit = null,
|
|
38119
37842
|
referenceSourceAggregator = null,
|
|
@@ -38208,13 +37931,13 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38208
37931
|
() => typeof i18n?.t === "function" ? createWorkspaceFileManagerI18nRuntime(i18n) : null,
|
|
38209
37932
|
[i18n]
|
|
38210
37933
|
);
|
|
38211
|
-
const handleLinkAction =
|
|
37934
|
+
const handleLinkAction = useCallback61(
|
|
38212
37935
|
(action) => {
|
|
38213
37936
|
onLinkAction?.(action);
|
|
38214
37937
|
},
|
|
38215
37938
|
[onLinkAction]
|
|
38216
37939
|
);
|
|
38217
|
-
const handleAgentProviderLogin =
|
|
37940
|
+
const handleAgentProviderLogin = useCallback61(
|
|
38218
37941
|
(provider) => {
|
|
38219
37942
|
const resolvedProvider = normalizeAgentGUIProviderIdentity(provider);
|
|
38220
37943
|
onAgentProviderLogin?.(
|
|
@@ -38223,7 +37946,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38223
37946
|
},
|
|
38224
37947
|
[onAgentProviderLogin, state.provider]
|
|
38225
37948
|
);
|
|
38226
|
-
const handleWorkspaceFileReferencesAdded =
|
|
37949
|
+
const handleWorkspaceFileReferencesAdded = useCallback61(
|
|
38227
37950
|
(references) => {
|
|
38228
37951
|
onWorkspaceFileReferencesAdded?.({
|
|
38229
37952
|
provider: state.provider,
|
|
@@ -38232,7 +37955,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38232
37955
|
},
|
|
38233
37956
|
[onWorkspaceFileReferencesAdded, state.provider]
|
|
38234
37957
|
);
|
|
38235
|
-
const handleDataChange =
|
|
37958
|
+
const handleDataChange = useCallback61(
|
|
38236
37959
|
(updater) => {
|
|
38237
37960
|
if (previewMode) {
|
|
38238
37961
|
return;
|
|
@@ -38241,7 +37964,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38241
37964
|
},
|
|
38242
37965
|
[onUpdateNode, previewMode]
|
|
38243
37966
|
);
|
|
38244
|
-
const handleConversationRailWidthChanged =
|
|
37967
|
+
const handleConversationRailWidthChanged = useCallback61(
|
|
38245
37968
|
(widthPx) => {
|
|
38246
37969
|
if (previewMode) {
|
|
38247
37970
|
return;
|
|
@@ -38273,7 +37996,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38273
37996
|
}),
|
|
38274
37997
|
[]
|
|
38275
37998
|
);
|
|
38276
|
-
const toggleConversationRailCollapsed =
|
|
37999
|
+
const toggleConversationRailCollapsed = useCallback61(() => {
|
|
38277
38000
|
if (previewMode) {
|
|
38278
38001
|
return;
|
|
38279
38002
|
}
|
|
@@ -38282,7 +38005,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38282
38005
|
conversationRailCollapsed: current.conversationRailCollapsed !== true
|
|
38283
38006
|
}));
|
|
38284
38007
|
}, [onUpdateNode, previewMode]);
|
|
38285
|
-
const handleConversationRailToggle =
|
|
38008
|
+
const handleConversationRailToggle = useCallback61(() => {
|
|
38286
38009
|
if (previewMode) {
|
|
38287
38010
|
return;
|
|
38288
38011
|
}
|
|
@@ -38343,7 +38066,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38343
38066
|
onRememberComposerDefaults,
|
|
38344
38067
|
onShowMessage
|
|
38345
38068
|
});
|
|
38346
|
-
const handleCreateConversation =
|
|
38069
|
+
const handleCreateConversation = useCallback61(
|
|
38347
38070
|
(...args) => {
|
|
38348
38071
|
if (!previewMode) {
|
|
38349
38072
|
onUpdateNode(
|
|
@@ -38468,13 +38191,13 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38468
38191
|
previewMode,
|
|
38469
38192
|
railStatusProvider
|
|
38470
38193
|
]);
|
|
38471
|
-
const handleAgentProbeInfoOpen =
|
|
38194
|
+
const handleAgentProbeInfoOpen = useCallback61(() => {
|
|
38472
38195
|
if (previewMode || !onAgentProbeRefreshRequest) {
|
|
38473
38196
|
return;
|
|
38474
38197
|
}
|
|
38475
38198
|
onAgentProbeRefreshRequest(activeProbeProvider, `agent-gui:${nodeId}`);
|
|
38476
38199
|
}, [activeProbeProvider, nodeId, onAgentProbeRefreshRequest, previewMode]);
|
|
38477
|
-
const handleAgentConfigMenuOpen =
|
|
38200
|
+
const handleAgentConfigMenuOpen = useCallback61(() => {
|
|
38478
38201
|
if (previewMode || !onAgentProbeRefreshRequest) {
|
|
38479
38202
|
return;
|
|
38480
38203
|
}
|
|
@@ -38489,7 +38212,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38489
38212
|
previewMode,
|
|
38490
38213
|
railStatusProvider
|
|
38491
38214
|
]);
|
|
38492
|
-
const handleAgentUsageRefresh =
|
|
38215
|
+
const handleAgentUsageRefresh = useCallback61(() => {
|
|
38493
38216
|
if (previewMode || !onAgentProbeRefreshRequest) {
|
|
38494
38217
|
return;
|
|
38495
38218
|
}
|
|
@@ -38613,6 +38336,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38613
38336
|
detailMinWidthPx: AGENT_GUI_DETAIL_MIN_WIDTH_PX,
|
|
38614
38337
|
uiLanguage: locale,
|
|
38615
38338
|
onWorkspaceFileReferencesAdded: onWorkspaceFileReferencesAdded ? handleWorkspaceFileReferencesAdded : void 0,
|
|
38339
|
+
resolveExternalPromptEntries,
|
|
38616
38340
|
prepareExternalPromptFiles,
|
|
38617
38341
|
promptAssetLimit,
|
|
38618
38342
|
onConversationRailWidthChanged: handleConversationRailWidthChanged,
|
|
@@ -38718,7 +38442,7 @@ var AgentGUI = memo15(function AgentGUI2({
|
|
|
38718
38442
|
children: /* @__PURE__ */ jsx76(AgentGUINode, { ...nodeProps })
|
|
38719
38443
|
}
|
|
38720
38444
|
) });
|
|
38721
|
-
return props.frame.previewMode ? content : /* @__PURE__ */ jsx76(
|
|
38445
|
+
return props.frame.previewMode ? content : /* @__PURE__ */ jsx76(TooltipProvider7, { delayDuration: 120, skipDelayDuration: 0, children: content });
|
|
38722
38446
|
});
|
|
38723
38447
|
|
|
38724
38448
|
export {
|
|
@@ -38732,4 +38456,4 @@ export {
|
|
|
38732
38456
|
AgentHandoffMenu,
|
|
38733
38457
|
AgentGUI
|
|
38734
38458
|
};
|
|
38735
|
-
//# sourceMappingURL=chunk-
|
|
38459
|
+
//# sourceMappingURL=chunk-LWXHBRDO.js.map
|