@tutti-os/agent-gui 0.0.140 → 0.0.141
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AgentRichTextReadonly-ITYHQCN5.js → AgentRichTextReadonly-QIQCYZAG.js} +3 -3
- package/dist/agent-conversation/index.js +3 -3
- package/dist/agent-gui.d.ts +0 -5
- package/dist/agent-gui.js +7 -7
- package/dist/{chunk-XUFVBZUT.js → chunk-4V3QEPKX.js} +3 -3
- package/dist/{chunk-OXCHXPBD.js → chunk-5ZZMG4ZB.js} +2 -2
- package/dist/{chunk-MMEHSIWJ.js → chunk-LIQWMDME.js} +2 -2
- package/dist/{chunk-AVXN6UMO.js → chunk-N2NZASIS.js} +2 -2
- package/dist/{chunk-WUMJJOK6.js → chunk-O764HQNF.js} +6 -3
- package/dist/chunk-O764HQNF.js.map +1 -0
- package/dist/{chunk-WM63XUAL.js → chunk-TJW5NWWH.js} +2 -2
- package/dist/{chunk-ORPU3AJK.js → chunk-VF5HD6RF.js} +479 -437
- package/dist/chunk-VF5HD6RF.js.map +1 -0
- package/dist/context-mention-palette/index.js +3 -3
- package/dist/index.d.ts +31 -33
- package/dist/index.js +7 -7
- package/dist/mention-search.js +2 -2
- package/dist/workbench/contribution.js +1 -1
- package/dist/workbench/index.js +1 -1
- package/package.json +15 -15
- package/dist/chunk-ORPU3AJK.js.map +0 -1
- package/dist/chunk-WUMJJOK6.js.map +0 -1
- /package/dist/{AgentRichTextReadonly-ITYHQCN5.js.map → AgentRichTextReadonly-QIQCYZAG.js.map} +0 -0
- /package/dist/{chunk-XUFVBZUT.js.map → chunk-4V3QEPKX.js.map} +0 -0
- /package/dist/{chunk-OXCHXPBD.js.map → chunk-5ZZMG4ZB.js.map} +0 -0
- /package/dist/{chunk-MMEHSIWJ.js.map → chunk-LIQWMDME.js.map} +0 -0
- /package/dist/{chunk-AVXN6UMO.js.map → chunk-N2NZASIS.js.map} +0 -0
- /package/dist/{chunk-WM63XUAL.js.map → chunk-TJW5NWWH.js.map} +0 -0
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
resolveAgentGuiSessionProviderFlatIconUrl,
|
|
13
13
|
resolveNextAgentGUIConversationRailWidthPx,
|
|
14
14
|
shouldAutoCollapseAgentGUIConversationRail
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-LIQWMDME.js";
|
|
16
16
|
import {
|
|
17
17
|
AGENT_PROVIDERS,
|
|
18
18
|
AGENT_PROVIDER_LABEL,
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
toLocalShortDateTime,
|
|
64
64
|
updateAgentComposerDraft,
|
|
65
65
|
useProjectedAgentConversation
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-4V3QEPKX.js";
|
|
67
67
|
import {
|
|
68
68
|
agentRichTextContentToPromptText,
|
|
69
69
|
createAgentRichTextInputExtensions,
|
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
plainTextToAgentRichTextInlineContent,
|
|
74
74
|
skillDescriptionForDisplay,
|
|
75
75
|
skillTriggerForPrefix
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-N2NZASIS.js";
|
|
77
77
|
import {
|
|
78
78
|
AgentEnvPanelActionProvider
|
|
79
79
|
} from "./chunk-FM42UN2J.js";
|
|
@@ -85,7 +85,7 @@ import {
|
|
|
85
85
|
AgentFileMentionPalette,
|
|
86
86
|
agentMentionItemKey,
|
|
87
87
|
isAgentMentionItemDisabled
|
|
88
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-TJW5NWWH.js";
|
|
89
89
|
import {
|
|
90
90
|
normalizeAgentGUIAgents,
|
|
91
91
|
projectAgentGUIAgentsToInternalTargets
|
|
@@ -96,7 +96,7 @@ import {
|
|
|
96
96
|
DEFAULT_AGENT_MENTION_FILTER,
|
|
97
97
|
agentGuiScheduler,
|
|
98
98
|
buildWorkspaceAgentActivityListViewModel
|
|
99
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-5ZZMG4ZB.js";
|
|
100
100
|
import {
|
|
101
101
|
isLocalImagePath
|
|
102
102
|
} from "./chunk-JDVP33S5.js";
|
|
@@ -116,7 +116,7 @@ import {
|
|
|
116
116
|
parseMentionItemFromHref,
|
|
117
117
|
remainingAgentComposerPromptAssetSlots,
|
|
118
118
|
updateAgentComposerFileMentions
|
|
119
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-O764HQNF.js";
|
|
120
120
|
import {
|
|
121
121
|
AgentInteractivePromptSurface,
|
|
122
122
|
PLAN_IMPLEMENTATION_ACTION_FEEDBACK,
|
|
@@ -180,11 +180,11 @@ import {
|
|
|
180
180
|
} from "./chunk-QMMWKQOT.js";
|
|
181
181
|
|
|
182
182
|
// AgentGUI.tsx
|
|
183
|
-
import { memo as memo15, useMemo as
|
|
183
|
+
import { memo as memo15, useMemo as useMemo45 } from "react";
|
|
184
184
|
import { TooltipProvider as TooltipProvider6 } from "@tutti-os/ui-system";
|
|
185
185
|
|
|
186
186
|
// agent-gui/agentGuiNode/AgentGUINode.tsx
|
|
187
|
-
import { memo as memo14, useCallback as useCallback60, useEffect as
|
|
187
|
+
import { memo as memo14, useCallback as useCallback60, useEffect as useEffect40, useMemo as useMemo44, useRef as useRef51 } from "react";
|
|
188
188
|
import { createWorkspaceUserProjectI18nRuntime } from "@tutti-os/workspace-user-project/i18n";
|
|
189
189
|
import { createWorkspaceFileManagerI18nRuntime } from "@tutti-os/workspace-file-manager";
|
|
190
190
|
import { useReferenceProvenanceFilterCatalog } from "@tutti-os/workspace-file-reference/react";
|
|
@@ -13316,10 +13316,10 @@ function useAgentGUINodeController({
|
|
|
13316
13316
|
// agent-gui/agentGuiNode/AgentGUINodeView.tsx
|
|
13317
13317
|
import {
|
|
13318
13318
|
useCallback as useCallback58,
|
|
13319
|
-
useEffect as
|
|
13320
|
-
useMemo as
|
|
13321
|
-
useRef as
|
|
13322
|
-
useState as
|
|
13319
|
+
useEffect as useEffect38,
|
|
13320
|
+
useMemo as useMemo41,
|
|
13321
|
+
useRef as useRef49,
|
|
13322
|
+
useState as useState40
|
|
13323
13323
|
} from "react";
|
|
13324
13324
|
import { TooltipProvider as TooltipProvider5 } from "@tutti-os/ui-system";
|
|
13325
13325
|
|
|
@@ -14249,9 +14249,9 @@ function AgentGUIConfigMenu({
|
|
|
14249
14249
|
import {
|
|
14250
14250
|
memo as memo4,
|
|
14251
14251
|
useCallback as useCallback44,
|
|
14252
|
-
useMemo as
|
|
14253
|
-
useRef as
|
|
14254
|
-
useState as
|
|
14252
|
+
useMemo as useMemo32,
|
|
14253
|
+
useRef as useRef36,
|
|
14254
|
+
useState as useState26
|
|
14255
14255
|
} from "react";
|
|
14256
14256
|
import { Tooltip as Tooltip5, TooltipContent as TooltipContent5, TooltipTrigger as TooltipTrigger5 } from "@tutti-os/ui-system";
|
|
14257
14257
|
|
|
@@ -14474,7 +14474,7 @@ function changeAgentGUIProviderManagerVisibility(input) {
|
|
|
14474
14474
|
}
|
|
14475
14475
|
|
|
14476
14476
|
// agent-gui/agentGuiNode/view/AgentGUIEmptyState.tsx
|
|
14477
|
-
import { memo as memo3, useMemo as
|
|
14477
|
+
import { memo as memo3, useMemo as useMemo31 } from "react";
|
|
14478
14478
|
import {
|
|
14479
14479
|
Select as Select4,
|
|
14480
14480
|
SelectContent as SelectContent4,
|
|
@@ -16180,7 +16180,7 @@ function AgentSessionChrome({
|
|
|
16180
16180
|
}
|
|
16181
16181
|
|
|
16182
16182
|
// agent-gui/agentGuiNode/AgentComposer.tsx
|
|
16183
|
-
import { useEffect as
|
|
16183
|
+
import { useEffect as useEffect28, useRef as useRef33, useState as useState22 } from "react";
|
|
16184
16184
|
import { repairMentionPaletteHighlight } from "@tutti-os/ui-rich-text/at-panel";
|
|
16185
16185
|
|
|
16186
16186
|
// agent-gui/agentGuiNode/AgentSlashStatusPanel.tsx
|
|
@@ -17764,7 +17764,6 @@ var DRAFT_IMAGE_PREVIEW_MIN_WIDTH_PX = 56;
|
|
|
17764
17764
|
var DRAFT_IMAGE_PREVIEW_MAX_WIDTH_PX = 180;
|
|
17765
17765
|
var DRAFT_IMAGE_PREVIEW_MIN_RATIO = 0.5;
|
|
17766
17766
|
var DRAFT_IMAGE_PREVIEW_MAX_RATIO = 3;
|
|
17767
|
-
var EMPTY_CONTEXT_MENTION_PROVIDERS = [];
|
|
17768
17767
|
var EMPTY_PROMPT_TIPS = [];
|
|
17769
17768
|
var EMPTY_PROVIDER_SKILLS = [];
|
|
17770
17769
|
var EMPTY_WORKSPACE_APP_ICONS = [];
|
|
@@ -24969,6 +24968,64 @@ function AgentComposerView(input) {
|
|
|
24969
24968
|
);
|
|
24970
24969
|
}
|
|
24971
24970
|
|
|
24971
|
+
// agent-gui/agentGuiNode/composer/useAgentMentionSearchController.ts
|
|
24972
|
+
import { useEffect as useEffect27, useMemo as useMemo29, useRef as useRef32, useState as useState21 } from "react";
|
|
24973
|
+
import { useRichTextMentionService } from "@tutti-os/ui-rich-text/editor";
|
|
24974
|
+
var EMPTY_AGENT_CONTEXT_MENTION_PROVIDERS = [];
|
|
24975
|
+
function useAgentMentionSearchController(referenceProvenanceFilter) {
|
|
24976
|
+
const mentionService = useRichTextMentionService();
|
|
24977
|
+
const contextMentionProviders = useMemo29(
|
|
24978
|
+
() => mentionService?.listProviders().filter(isAgentContextMentionProvider) ?? EMPTY_AGENT_CONTEXT_MENTION_PROVIDERS,
|
|
24979
|
+
[mentionService]
|
|
24980
|
+
);
|
|
24981
|
+
const [mentionSearchState, setMentionSearchState] = useState21(INITIAL_AGENT_MENTION_SEARCH_STATE);
|
|
24982
|
+
const mentionControllerRef = useRef32(
|
|
24983
|
+
null
|
|
24984
|
+
);
|
|
24985
|
+
useEffect27(() => {
|
|
24986
|
+
const controller = new AgentMentionSearchController({
|
|
24987
|
+
contextMentionProviders
|
|
24988
|
+
});
|
|
24989
|
+
controller.setProvenanceCatalog(
|
|
24990
|
+
referenceProvenanceFilter?.snapshot.catalog ?? null
|
|
24991
|
+
);
|
|
24992
|
+
controller.setProvenanceFilter(
|
|
24993
|
+
referenceProvenanceFilter?.snapshot.value ?? null
|
|
24994
|
+
);
|
|
24995
|
+
mentionControllerRef.current = controller;
|
|
24996
|
+
const unsubscribe = controller.subscribe(setMentionSearchState);
|
|
24997
|
+
return () => {
|
|
24998
|
+
unsubscribe();
|
|
24999
|
+
controller.dispose();
|
|
25000
|
+
mentionControllerRef.current = null;
|
|
25001
|
+
};
|
|
25002
|
+
}, [contextMentionProviders]);
|
|
25003
|
+
useEffect27(() => {
|
|
25004
|
+
mentionControllerRef.current?.setProvenanceCatalog(
|
|
25005
|
+
referenceProvenanceFilter?.snapshot.catalog ?? null
|
|
25006
|
+
);
|
|
25007
|
+
mentionControllerRef.current?.setProvenanceFilter(
|
|
25008
|
+
referenceProvenanceFilter?.snapshot.value ?? null
|
|
25009
|
+
);
|
|
25010
|
+
}, [
|
|
25011
|
+
referenceProvenanceFilter?.snapshot.catalog,
|
|
25012
|
+
referenceProvenanceFilter?.snapshot.value
|
|
25013
|
+
]);
|
|
25014
|
+
return { mentionControllerRef, mentionSearchState };
|
|
25015
|
+
}
|
|
25016
|
+
function isAgentContextMentionProvider(provider) {
|
|
25017
|
+
return provider.trigger === "@";
|
|
25018
|
+
}
|
|
25019
|
+
var INITIAL_AGENT_MENTION_SEARCH_STATE = {
|
|
25020
|
+
status: "idle",
|
|
25021
|
+
query: "",
|
|
25022
|
+
mode: "browse",
|
|
25023
|
+
filter: DEFAULT_AGENT_MENTION_FILTER,
|
|
25024
|
+
categories: [],
|
|
25025
|
+
groups: [],
|
|
25026
|
+
error: null
|
|
25027
|
+
};
|
|
25028
|
+
|
|
24972
25029
|
// agent-gui/agentGuiNode/AgentComposer.tsx
|
|
24973
25030
|
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
24974
25031
|
var DOCK_COMPOSER_INPUT_MIN_HEIGHT2 = 56;
|
|
@@ -25036,7 +25093,6 @@ function AgentComposer(props) {
|
|
|
25036
25093
|
prepareExternalPromptFiles = null,
|
|
25037
25094
|
promptAssetLimit = null,
|
|
25038
25095
|
onRequestGitBranches = null,
|
|
25039
|
-
contextMentionProviders = EMPTY_CONTEXT_MENTION_PROVIDERS,
|
|
25040
25096
|
referenceProvenanceFilter = null
|
|
25041
25097
|
} = props;
|
|
25042
25098
|
const draftPrompt = agentComposerDraftPrompt(draftContent);
|
|
@@ -25060,67 +25116,56 @@ function AgentComposer(props) {
|
|
|
25060
25116
|
hadPrefill: agentComposerDraftHasContent(draftContent)
|
|
25061
25117
|
});
|
|
25062
25118
|
};
|
|
25063
|
-
const [isPaletteOpen, setIsPaletteOpen] =
|
|
25064
|
-
const [isReviewPickerOpen, setIsReviewPickerOpen] =
|
|
25065
|
-
const [isHandoffIconPlaying, setIsHandoffIconPlaying] =
|
|
25066
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
25067
|
-
const [mentionHighlightedKey, setMentionHighlightedKey] =
|
|
25068
|
-
const [shouldCenterMentionHighlight, setShouldCenterMentionHighlight] =
|
|
25119
|
+
const [isPaletteOpen, setIsPaletteOpen] = useState22(true);
|
|
25120
|
+
const [isReviewPickerOpen, setIsReviewPickerOpen] = useState22(false);
|
|
25121
|
+
const [isHandoffIconPlaying, setIsHandoffIconPlaying] = useState22(false);
|
|
25122
|
+
const [highlightedIndex, setHighlightedIndex] = useState22(0);
|
|
25123
|
+
const [mentionHighlightedKey, setMentionHighlightedKey] = useState22(null);
|
|
25124
|
+
const [shouldCenterMentionHighlight, setShouldCenterMentionHighlight] = useState22(false);
|
|
25069
25125
|
const [
|
|
25070
25126
|
shouldResetMentionHighlightToFilter,
|
|
25071
25127
|
setShouldResetMentionHighlightToFilter
|
|
25072
|
-
] =
|
|
25073
|
-
const [paletteDraftPrompt, setPaletteDraftPrompt] =
|
|
25128
|
+
] = useState22(false);
|
|
25129
|
+
const [paletteDraftPrompt, setPaletteDraftPrompt] = useState22(
|
|
25074
25130
|
goalDraftObjective ?? draftPrompt
|
|
25075
25131
|
);
|
|
25076
|
-
const [fileMentionSuggestion, setFileMentionSuggestion] =
|
|
25077
|
-
const [isSelectedProjectMissing, setIsSelectedProjectMissing] =
|
|
25078
|
-
const [isSlashStatusPanelOpen, setIsSlashStatusPanelOpen] =
|
|
25132
|
+
const [fileMentionSuggestion, setFileMentionSuggestion] = useState22(null);
|
|
25133
|
+
const [isSelectedProjectMissing, setIsSelectedProjectMissing] = useState22(false);
|
|
25134
|
+
const [isSlashStatusPanelOpen, setIsSlashStatusPanelOpen] = useState22(false);
|
|
25079
25135
|
const slashStatusAgentSessionId = slashStatus?.agentSessionId ?? null;
|
|
25080
|
-
const previousSlashStatusAgentSessionIdRef =
|
|
25136
|
+
const previousSlashStatusAgentSessionIdRef = useRef33(
|
|
25081
25137
|
slashStatusAgentSessionId
|
|
25082
25138
|
);
|
|
25083
25139
|
const selectedProjectPath = composerSettings.selectedProjectPath?.trim() ?? "";
|
|
25084
25140
|
const selectedProjectSectionKey = composerSettings.selectedProjectSectionKey?.trim() ?? "";
|
|
25085
|
-
const previousSelectedProjectPathRef =
|
|
25086
|
-
const
|
|
25087
|
-
|
|
25088
|
-
|
|
25089
|
-
|
|
25090
|
-
|
|
25091
|
-
|
|
25092
|
-
|
|
25093
|
-
|
|
25094
|
-
|
|
25095
|
-
const composerRef = useRef32(null);
|
|
25096
|
-
const inputShellRef = useRef32(null);
|
|
25097
|
-
const promptInputAreaRef = useRef32(null);
|
|
25098
|
-
const paletteContentRef = useRef32(null);
|
|
25099
|
-
const draftPromptRef = useRef32(draftPrompt);
|
|
25100
|
-
const draftImagesRef = useRef32(draftImages);
|
|
25101
|
-
const draftFilesRef = useRef32(draftFiles);
|
|
25102
|
-
const draftLargeTextsRef = useRef32(draftLargeTexts);
|
|
25103
|
-
const draftByScopeKeyRef = useRef32({
|
|
25141
|
+
const previousSelectedProjectPathRef = useRef33(selectedProjectPath);
|
|
25142
|
+
const composerRef = useRef33(null);
|
|
25143
|
+
const inputShellRef = useRef33(null);
|
|
25144
|
+
const promptInputAreaRef = useRef33(null);
|
|
25145
|
+
const paletteContentRef = useRef33(null);
|
|
25146
|
+
const draftPromptRef = useRef33(draftPrompt);
|
|
25147
|
+
const draftImagesRef = useRef33(draftImages);
|
|
25148
|
+
const draftFilesRef = useRef33(draftFiles);
|
|
25149
|
+
const draftLargeTextsRef = useRef33(draftLargeTexts);
|
|
25150
|
+
const draftByScopeKeyRef = useRef33({
|
|
25104
25151
|
[draftScopeKey]: draftContent
|
|
25105
25152
|
});
|
|
25106
25153
|
draftByScopeKeyRef.current[draftScopeKey] = draftContent;
|
|
25107
|
-
const promptTipRef =
|
|
25108
|
-
const mentionControllerRef =
|
|
25109
|
-
|
|
25110
|
-
);
|
|
25111
|
-
const
|
|
25112
|
-
const
|
|
25113
|
-
const
|
|
25114
|
-
const
|
|
25115
|
-
const [isPromptTipOverflowing, setIsPromptTipOverflowing] = useState21(false);
|
|
25116
|
-
const [dockComposerInputHeight, setDockComposerInputHeight] = useState21(
|
|
25154
|
+
const promptTipRef = useRef33(null);
|
|
25155
|
+
const { mentionControllerRef, mentionSearchState } = useAgentMentionSearchController(referenceProvenanceFilter);
|
|
25156
|
+
const editorHandleRef = useRef33(null);
|
|
25157
|
+
const wasActiveRef = useRef33(isActive);
|
|
25158
|
+
const lastComposerFocusRequestRef = useRef33(null);
|
|
25159
|
+
const autoMentionHighlightedKeyRef = useRef33(null);
|
|
25160
|
+
const [isPromptTipOverflowing, setIsPromptTipOverflowing] = useState22(false);
|
|
25161
|
+
const [dockComposerInputHeight, setDockComposerInputHeight] = useState22(
|
|
25117
25162
|
DOCK_COMPOSER_INPUT_MIN_HEIGHT2
|
|
25118
25163
|
);
|
|
25119
|
-
const [dockComposerInputMaxHeight, setDockComposerInputMaxHeight] =
|
|
25164
|
+
const [dockComposerInputMaxHeight, setDockComposerInputMaxHeight] = useState22(
|
|
25120
25165
|
DOCK_COMPOSER_INPUT_MAX_HEIGHT2
|
|
25121
25166
|
);
|
|
25122
|
-
const [dockComposerAttachmentHeight, setDockComposerAttachmentHeight] =
|
|
25123
|
-
const [dockComposerTextHeight, setDockComposerTextHeight] =
|
|
25167
|
+
const [dockComposerAttachmentHeight, setDockComposerAttachmentHeight] = useState22(0);
|
|
25168
|
+
const [dockComposerTextHeight, setDockComposerTextHeight] = useState22(
|
|
25124
25169
|
DOCK_COMPOSER_INPUT_MIN_HEIGHT2
|
|
25125
25170
|
);
|
|
25126
25171
|
const paletteCatalog = useComposerPaletteCatalog({
|
|
@@ -25160,10 +25205,10 @@ function AgentComposer(props) {
|
|
|
25160
25205
|
inputShellRef,
|
|
25161
25206
|
showFileMentionPalette
|
|
25162
25207
|
);
|
|
25163
|
-
|
|
25208
|
+
useEffect28(() => {
|
|
25164
25209
|
setHighlightedIndex(0);
|
|
25165
25210
|
}, [skillQueryMatch?.prefix, skillQueryMatch?.query, slashQuery]);
|
|
25166
|
-
|
|
25211
|
+
useEffect28(() => {
|
|
25167
25212
|
const preferredKey = shouldResetMentionHighlightToFilter && mentionSearchState.mode === "browse" ? `category:${mentionSearchState.filter}` : null;
|
|
25168
25213
|
if (shouldResetMentionHighlightToFilter) {
|
|
25169
25214
|
const nextKey = repairMentionPaletteHighlight({
|
|
@@ -25197,25 +25242,7 @@ function AgentComposer(props) {
|
|
|
25197
25242
|
mentionSearchState,
|
|
25198
25243
|
shouldResetMentionHighlightToFilter
|
|
25199
25244
|
]);
|
|
25200
|
-
|
|
25201
|
-
const controller = new AgentMentionSearchController({
|
|
25202
|
-
contextMentionProviders
|
|
25203
|
-
});
|
|
25204
|
-
controller.setProvenanceCatalog(
|
|
25205
|
-
referenceProvenanceFilter?.snapshot.catalog ?? null
|
|
25206
|
-
);
|
|
25207
|
-
controller.setProvenanceFilter(
|
|
25208
|
-
referenceProvenanceFilter?.snapshot.value ?? null
|
|
25209
|
-
);
|
|
25210
|
-
mentionControllerRef.current = controller;
|
|
25211
|
-
const unsubscribe = controller.subscribe(setMentionSearchState);
|
|
25212
|
-
return () => {
|
|
25213
|
-
unsubscribe();
|
|
25214
|
-
controller.dispose();
|
|
25215
|
-
mentionControllerRef.current = null;
|
|
25216
|
-
};
|
|
25217
|
-
}, [contextMentionProviders]);
|
|
25218
|
-
useEffect27(() => {
|
|
25245
|
+
useEffect28(() => {
|
|
25219
25246
|
draftImagesRef.current = agentComposerDraftImages(draftContent);
|
|
25220
25247
|
draftFilesRef.current = agentComposerDraftFiles(draftContent);
|
|
25221
25248
|
draftLargeTextsRef.current = agentComposerDraftLargeTexts(draftContent);
|
|
@@ -25230,18 +25257,7 @@ function AgentComposer(props) {
|
|
|
25230
25257
|
});
|
|
25231
25258
|
}
|
|
25232
25259
|
}, [draftContent, draftPrompt, goalDraftObjective]);
|
|
25233
|
-
|
|
25234
|
-
mentionControllerRef.current?.setProvenanceCatalog(
|
|
25235
|
-
referenceProvenanceFilter?.snapshot.catalog ?? null
|
|
25236
|
-
);
|
|
25237
|
-
mentionControllerRef.current?.setProvenanceFilter(
|
|
25238
|
-
referenceProvenanceFilter?.snapshot.value ?? null
|
|
25239
|
-
);
|
|
25240
|
-
}, [
|
|
25241
|
-
referenceProvenanceFilter?.snapshot.catalog,
|
|
25242
|
-
referenceProvenanceFilter?.snapshot.value
|
|
25243
|
-
]);
|
|
25244
|
-
useEffect27(() => {
|
|
25260
|
+
useEffect28(() => {
|
|
25245
25261
|
if (previousSlashStatusAgentSessionIdRef.current === slashStatusAgentSessionId) {
|
|
25246
25262
|
return;
|
|
25247
25263
|
}
|
|
@@ -25504,7 +25520,7 @@ function AgentComposer(props) {
|
|
|
25504
25520
|
}
|
|
25505
25521
|
|
|
25506
25522
|
// agent-gui/agentGuiNode/AgentHomeSuggestions.tsx
|
|
25507
|
-
import { memo as memo2, useState as
|
|
25523
|
+
import { memo as memo2, useState as useState23 } from "react";
|
|
25508
25524
|
import { ArrowLeftRight, Code, Compass, Import, Pencil, X as X6 } from "lucide-react";
|
|
25509
25525
|
import { jsx as jsx39, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
25510
25526
|
function TuttiIcon(props) {
|
|
@@ -25615,7 +25631,7 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
|
|
|
25615
25631
|
closeLabel
|
|
25616
25632
|
}) {
|
|
25617
25633
|
"use memo";
|
|
25618
|
-
const [activeCategoryId, setActiveCategoryId] =
|
|
25634
|
+
const [activeCategoryId, setActiveCategoryId] = useState23(null);
|
|
25619
25635
|
if (categories.length === 0) {
|
|
25620
25636
|
return null;
|
|
25621
25637
|
}
|
|
@@ -25875,8 +25891,8 @@ import {
|
|
|
25875
25891
|
createContext,
|
|
25876
25892
|
useCallback as useCallback42,
|
|
25877
25893
|
useContext,
|
|
25878
|
-
useMemo as
|
|
25879
|
-
useRef as
|
|
25894
|
+
useMemo as useMemo30,
|
|
25895
|
+
useRef as useRef34
|
|
25880
25896
|
} from "react";
|
|
25881
25897
|
import { toast as toast2 } from "@tutti-os/ui-system";
|
|
25882
25898
|
|
|
@@ -25933,7 +25949,7 @@ function useCreateAgentTargetSetupController(agentTarget) {
|
|
|
25933
25949
|
const { t } = useTranslation();
|
|
25934
25950
|
const agentTargetId = agentTarget?.agentTargetId?.trim() || agentTarget?.targetId.trim() || "";
|
|
25935
25951
|
const enabled = agentTarget?.ref.setupKind === "target_runtime" && Boolean(hostApi?.agentTargetSetup && agentTargetId);
|
|
25936
|
-
const stableAgentTarget =
|
|
25952
|
+
const stableAgentTarget = useMemo30(
|
|
25937
25953
|
() => agentTarget,
|
|
25938
25954
|
[
|
|
25939
25955
|
agentTargetId,
|
|
@@ -25942,7 +25958,7 @@ function useCreateAgentTargetSetupController(agentTarget) {
|
|
|
25942
25958
|
agentTarget?.ref.setupKind
|
|
25943
25959
|
]
|
|
25944
25960
|
);
|
|
25945
|
-
const watch =
|
|
25961
|
+
const watch = useMemo30(
|
|
25946
25962
|
() => enabled ? hostApi?.agentTargetSetup?.watch({ agentTargetId }) ?? null : null,
|
|
25947
25963
|
[agentTargetId, enabled, hostApi?.agentTargetSetup]
|
|
25948
25964
|
);
|
|
@@ -25964,9 +25980,9 @@ function useCreateAgentTargetSetupController(agentTarget) {
|
|
|
25964
25980
|
},
|
|
25965
25981
|
[agentTargetId, hostApi?.debug]
|
|
25966
25982
|
);
|
|
25967
|
-
const controllerRef =
|
|
25983
|
+
const controllerRef = useRef34(null);
|
|
25968
25984
|
const targetKey = enabled ? agentTargetId : "";
|
|
25969
|
-
const controllerEntry =
|
|
25985
|
+
const controllerEntry = useMemo30(() => {
|
|
25970
25986
|
const previousState = controllerRef.current?.targetKey === targetKey ? controllerRef.current.controller.getSnapshot() : null;
|
|
25971
25987
|
return {
|
|
25972
25988
|
controller: createAgentTargetSetupController({
|
|
@@ -26447,7 +26463,7 @@ var AgentGUIEmptyHomePane = memo3(function AgentGUIEmptyHomePane2({
|
|
|
26447
26463
|
}).fullLabel : runtimeProviderLabel;
|
|
26448
26464
|
const baseLabel = labels.emptyForProvider?.(provider) ?? labels.empty;
|
|
26449
26465
|
const emptyLabel = runtimeProviderLabel ? baseLabel.replace(runtimeProviderLabel, providerLabel) : baseLabel;
|
|
26450
|
-
const avatarPresentations =
|
|
26466
|
+
const avatarPresentations = useMemo31(
|
|
26451
26467
|
() => agentTargets.length ? agentTargets.map(projectAgentGUIAgentTargetAvatar) : selectedAgentTarget ? [projectAgentGUIAgentTargetAvatar(selectedAgentTarget)] : [
|
|
26452
26468
|
createFallbackAgentGUIAgentAvatar({
|
|
26453
26469
|
provider,
|
|
@@ -26893,8 +26909,8 @@ function EmptyHeroTitle({
|
|
|
26893
26909
|
|
|
26894
26910
|
// agent-gui/agentGuiNode/view/AgentGUIProviderManagerDialog.tsx
|
|
26895
26911
|
import {
|
|
26896
|
-
useRef as
|
|
26897
|
-
useState as
|
|
26912
|
+
useRef as useRef35,
|
|
26913
|
+
useState as useState24
|
|
26898
26914
|
} from "react";
|
|
26899
26915
|
import { CircleMinus, CirclePlus } from "lucide-react";
|
|
26900
26916
|
import {
|
|
@@ -26927,20 +26943,20 @@ function AgentGUIProviderManagerDialog({
|
|
|
26927
26943
|
const disabledTargets = targets.filter(
|
|
26928
26944
|
(target) => hidden.has(target.targetId)
|
|
26929
26945
|
);
|
|
26930
|
-
const [editing, setEditing] =
|
|
26931
|
-
const [dragState, setDragState] =
|
|
26946
|
+
const [editing, setEditing] = useState24(false);
|
|
26947
|
+
const [dragState, setDragState] = useState24(
|
|
26932
26948
|
null
|
|
26933
26949
|
);
|
|
26934
|
-
const [dragOverZone, setDragOverZone] =
|
|
26950
|
+
const [dragOverZone, setDragOverZone] = useState24(
|
|
26935
26951
|
null
|
|
26936
26952
|
);
|
|
26937
|
-
const [dragPreview, setDragPreview] =
|
|
26938
|
-
const dragStateRef =
|
|
26939
|
-
const dragPreviewRef =
|
|
26940
|
-
const [longPressTargetId, setLongPressTargetId] =
|
|
26953
|
+
const [dragPreview, setDragPreview] = useState24(null);
|
|
26954
|
+
const dragStateRef = useRef35(null);
|
|
26955
|
+
const dragPreviewRef = useRef35(null);
|
|
26956
|
+
const [longPressTargetId, setLongPressTargetId] = useState24(
|
|
26941
26957
|
null
|
|
26942
26958
|
);
|
|
26943
|
-
const longPressOriginRef =
|
|
26959
|
+
const longPressOriginRef = useRef35(null);
|
|
26944
26960
|
const finalAvailableAgent = availableTargets.length === 1;
|
|
26945
26961
|
const showRunningAgentBlocked = (targetId) => {
|
|
26946
26962
|
const target = targets.find((candidate) => candidate.targetId === targetId);
|
|
@@ -27397,7 +27413,7 @@ function AgentGUIProviderManagerDialog({
|
|
|
27397
27413
|
}
|
|
27398
27414
|
|
|
27399
27415
|
// agent-gui/agentGuiNode/view/useAgentGUIProviderRailPreferences.ts
|
|
27400
|
-
import { useCallback as useCallback43, useEffect as
|
|
27416
|
+
import { useCallback as useCallback43, useEffect as useEffect29, useState as useState25 } from "react";
|
|
27401
27417
|
function readAgentGUIProviderRailPreferences(storageKey) {
|
|
27402
27418
|
return parseAgentGUIProviderRailPreferences(
|
|
27403
27419
|
globalThis.localStorage?.getItem(storageKey)
|
|
@@ -27405,10 +27421,10 @@ function readAgentGUIProviderRailPreferences(storageKey) {
|
|
|
27405
27421
|
}
|
|
27406
27422
|
function useAgentGUIProviderRailPreferences() {
|
|
27407
27423
|
const storageKey = agentGUIProviderRailOrderStorageKey();
|
|
27408
|
-
const [preferences, setPreferences] =
|
|
27424
|
+
const [preferences, setPreferences] = useState25(
|
|
27409
27425
|
() => readAgentGUIProviderRailPreferences(storageKey)
|
|
27410
27426
|
);
|
|
27411
|
-
|
|
27427
|
+
useEffect29(() => {
|
|
27412
27428
|
const refreshPreferences = () => {
|
|
27413
27429
|
setPreferences(readAgentGUIProviderRailPreferences(storageKey));
|
|
27414
27430
|
};
|
|
@@ -27538,8 +27554,8 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
27538
27554
|
persistPreferences: persistProviderRailPreferences,
|
|
27539
27555
|
preferences: providerRailPreferences
|
|
27540
27556
|
} = useAgentGUIProviderRailPreferences();
|
|
27541
|
-
const [dragState, setDragState] =
|
|
27542
|
-
const dragStateRef =
|
|
27557
|
+
const [dragState, setDragState] = useState26(null);
|
|
27558
|
+
const dragStateRef = useRef36(null);
|
|
27543
27559
|
const setProviderRailDragState = useCallback44(
|
|
27544
27560
|
(nextDragState) => {
|
|
27545
27561
|
dragStateRef.current = nextDragState;
|
|
@@ -27547,7 +27563,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
27547
27563
|
},
|
|
27548
27564
|
[]
|
|
27549
27565
|
);
|
|
27550
|
-
const railProviderTargets =
|
|
27566
|
+
const railProviderTargets = useMemo32(
|
|
27551
27567
|
() => agentGUIProviderRailTargets(
|
|
27552
27568
|
agentTargets,
|
|
27553
27569
|
agentTargetsLoading,
|
|
@@ -27556,7 +27572,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
27556
27572
|
),
|
|
27557
27573
|
[comingSoonProviders, providerRailMode, agentTargets, agentTargetsLoading]
|
|
27558
27574
|
);
|
|
27559
|
-
const providerTiles =
|
|
27575
|
+
const providerTiles = useMemo32(() => {
|
|
27560
27576
|
const targets = [...railProviderTargets];
|
|
27561
27577
|
const orderedTargets = providerRailMode === "exact" ? targets : (() => {
|
|
27562
27578
|
const originalIndexByTarget = /* @__PURE__ */ new Map();
|
|
@@ -27596,7 +27612,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
27596
27612
|
agentTargets: providerTiles,
|
|
27597
27613
|
conversations
|
|
27598
27614
|
});
|
|
27599
|
-
const visibleProviderTiles =
|
|
27615
|
+
const visibleProviderTiles = useMemo32(
|
|
27600
27616
|
() => applyAgentGUIProviderRailVisibility(
|
|
27601
27617
|
providerTiles,
|
|
27602
27618
|
effectiveHiddenTargetIds
|
|
@@ -28012,10 +28028,10 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
28012
28028
|
});
|
|
28013
28029
|
|
|
28014
28030
|
// agent-gui/agentGuiNode/controller/AgentGUIConversationRailController.tsx
|
|
28015
|
-
import { memo as memo9, useState as
|
|
28031
|
+
import { memo as memo9, useState as useState32 } from "react";
|
|
28016
28032
|
|
|
28017
28033
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailPane.tsx
|
|
28018
|
-
import { Fragment as Fragment17, memo as memo8, useEffect as
|
|
28034
|
+
import { Fragment as Fragment17, memo as memo8, useEffect as useEffect30, useMemo as useMemo35, useRef as useRef39, useState as useState31 } from "react";
|
|
28019
28035
|
import { Button as SystemButton } from "@tutti-os/ui-system";
|
|
28020
28036
|
import { ScrollArea } from "@tutti-os/ui-system/components";
|
|
28021
28037
|
import { CreateChatIcon as CreateChatIcon2 } from "@tutti-os/ui-system/icons";
|
|
@@ -28758,7 +28774,7 @@ function reduceAgentGUIConversationRailViewState(state, action) {
|
|
|
28758
28774
|
}
|
|
28759
28775
|
|
|
28760
28776
|
// agent-gui/agentGuiNode/controller/useAgentGUIProjectDrag.ts
|
|
28761
|
-
import { useCallback as useCallback45, useState as
|
|
28777
|
+
import { useCallback as useCallback45, useState as useState27 } from "react";
|
|
28762
28778
|
var PROJECT_DRAG_SCROLL_EDGE_PX = 40;
|
|
28763
28779
|
function projectDragAutoScrollDelta(clientY, bounds) {
|
|
28764
28780
|
if (clientY < bounds.top + PROJECT_DRAG_SCROLL_EDGE_PX) {
|
|
@@ -28776,9 +28792,9 @@ function projectDragAutoScrollDelta(clientY, bounds) {
|
|
|
28776
28792
|
return 0;
|
|
28777
28793
|
}
|
|
28778
28794
|
function useAgentGUIProjectDrag(input) {
|
|
28779
|
-
const [dragState, setDragState] =
|
|
28780
|
-
const [isMovePending, setIsMovePending] =
|
|
28781
|
-
const [runtime] =
|
|
28795
|
+
const [dragState, setDragState] = useState27(null);
|
|
28796
|
+
const [isMovePending, setIsMovePending] = useState27(false);
|
|
28797
|
+
const [runtime] = useState27(() => ({
|
|
28782
28798
|
active: false,
|
|
28783
28799
|
clientY: null,
|
|
28784
28800
|
dragState: null,
|
|
@@ -28961,7 +28977,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
28961
28977
|
import { memo as memo7, useCallback as useCallback49 } from "react";
|
|
28962
28978
|
|
|
28963
28979
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailItem.tsx
|
|
28964
|
-
import { memo as memo5, useCallback as useCallback47, useMemo as
|
|
28980
|
+
import { memo as memo5, useCallback as useCallback47, useMemo as useMemo34 } from "react";
|
|
28965
28981
|
import { ExternalLink as ExternalLink3 } from "lucide-react";
|
|
28966
28982
|
import { IssueIcon, NewWorkspaceLinedIcon as NewWorkspaceLinedIcon2, cn as cn7 } from "@tutti-os/ui-system";
|
|
28967
28983
|
import { WorkspaceUserProjectSelect as WorkspaceUserProjectSelect2 } from "@tutti-os/workspace-user-project/ui";
|
|
@@ -29199,9 +29215,9 @@ function AgentGUIConversationRailRelativeTime({
|
|
|
29199
29215
|
import {
|
|
29200
29216
|
Fragment as Fragment14,
|
|
29201
29217
|
useCallback as useCallback46,
|
|
29202
|
-
useMemo as
|
|
29203
|
-
useRef as
|
|
29204
|
-
useState as
|
|
29218
|
+
useMemo as useMemo33,
|
|
29219
|
+
useRef as useRef37,
|
|
29220
|
+
useState as useState28
|
|
29205
29221
|
} from "react";
|
|
29206
29222
|
import {
|
|
29207
29223
|
AtSign,
|
|
@@ -29777,8 +29793,8 @@ function useConversationActionGroups({
|
|
|
29777
29793
|
const agentHostApi = useOptionalAgentHostApi();
|
|
29778
29794
|
const agentActivityRuntime = useOptionalAgentActivityRuntime();
|
|
29779
29795
|
const copyConversationValue = useAgentGUIConversationCopyAction(labels);
|
|
29780
|
-
const [resetKey, setResetKey] =
|
|
29781
|
-
const pendingActionRef =
|
|
29796
|
+
const [resetKey, setResetKey] = useState28(0);
|
|
29797
|
+
const pendingActionRef = useRef37(false);
|
|
29782
29798
|
const run = useCallback46(
|
|
29783
29799
|
(action) => {
|
|
29784
29800
|
if (pendingActionRef.current) {
|
|
@@ -29795,7 +29811,7 @@ function useConversationActionGroups({
|
|
|
29795
29811
|
},
|
|
29796
29812
|
[isInteractionLocked]
|
|
29797
29813
|
);
|
|
29798
|
-
const groups =
|
|
29814
|
+
const groups = useMemo33(() => {
|
|
29799
29815
|
const clipboardUnavailable = typeof agentHostApi?.clipboard?.writeText !== "function";
|
|
29800
29816
|
const copyItem = (action, icon, label, disabled = false) => ({
|
|
29801
29817
|
// copy-reference builds the mention link synchronously from the
|
|
@@ -29871,7 +29887,7 @@ function AgentGUIConversationActionsDropdown({
|
|
|
29871
29887
|
menu,
|
|
29872
29888
|
moreSessionActionsLabel
|
|
29873
29889
|
}) {
|
|
29874
|
-
const [open, setOpen] =
|
|
29890
|
+
const [open, setOpen] = useState28(false);
|
|
29875
29891
|
return /* @__PURE__ */ jsxs37(DropdownMenu4, { onOpenChange: setOpen, children: [
|
|
29876
29892
|
/* @__PURE__ */ jsx53(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx53(
|
|
29877
29893
|
BareIconButton,
|
|
@@ -29901,7 +29917,7 @@ function AgentGUIConversationActionsContextMenu({
|
|
|
29901
29917
|
children,
|
|
29902
29918
|
menu
|
|
29903
29919
|
}) {
|
|
29904
|
-
const [open, setOpen] =
|
|
29920
|
+
const [open, setOpen] = useState28(false);
|
|
29905
29921
|
return /* @__PURE__ */ jsxs37(ContextMenu, { onOpenChange: setOpen, children: [
|
|
29906
29922
|
/* @__PURE__ */ jsx53(ContextMenuTrigger, { asChild: true, children }),
|
|
29907
29923
|
open ? /* @__PURE__ */ jsx53(ContextMenuContent, { className: menuContentClassName, children: /* @__PURE__ */ jsx53(ContextActionGroups, { groups: menu.groups }) }) : null
|
|
@@ -30232,7 +30248,7 @@ function AgentGUIProjectRailHeader({
|
|
|
30232
30248
|
}) {
|
|
30233
30249
|
"use memo";
|
|
30234
30250
|
const agentHostApi = useAgentHostApi();
|
|
30235
|
-
const userProjectApi =
|
|
30251
|
+
const userProjectApi = useMemo34(
|
|
30236
30252
|
() => agentHostApi.userProjects ? {
|
|
30237
30253
|
...agentHostApi.userProjects,
|
|
30238
30254
|
selectDirectory: selectProjectDirectory ?? agentHostApi.workspace.selectDirectory
|
|
@@ -30307,7 +30323,7 @@ function AgentGUIProjectRailHeader({
|
|
|
30307
30323
|
}
|
|
30308
30324
|
|
|
30309
30325
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailSectionHeader.tsx
|
|
30310
|
-
import { forwardRef as forwardRef5, memo as memo6, useCallback as useCallback48, useState as
|
|
30326
|
+
import { forwardRef as forwardRef5, memo as memo6, useCallback as useCallback48, useState as useState29 } from "react";
|
|
30311
30327
|
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
30312
30328
|
import {
|
|
30313
30329
|
DropdownMenu as DropdownMenu5,
|
|
@@ -30717,8 +30733,8 @@ var AgentGUIConversationRailSectionHeader = memo6(
|
|
|
30717
30733
|
sectionLabel
|
|
30718
30734
|
}) {
|
|
30719
30735
|
"use memo";
|
|
30720
|
-
const [projectMenuOpen, setProjectMenuOpen] =
|
|
30721
|
-
const [conversationMenuOpen, setConversationMenuOpen] =
|
|
30736
|
+
const [projectMenuOpen, setProjectMenuOpen] = useState29(false);
|
|
30737
|
+
const [conversationMenuOpen, setConversationMenuOpen] = useState29(false);
|
|
30722
30738
|
const handleProjectMenuOpenChange = useCallback48(
|
|
30723
30739
|
(open) => {
|
|
30724
30740
|
setProjectMenuOpen(open);
|
|
@@ -31110,7 +31126,7 @@ function AgentGUIProjectActionConfirmationDialog(props) {
|
|
|
31110
31126
|
}
|
|
31111
31127
|
|
|
31112
31128
|
// agent-gui/agentGuiNode/view/useAgentGUIConversationRailViewState.ts
|
|
31113
|
-
import { useCallback as useCallback50, useLayoutEffect as useLayoutEffect6, useReducer, useRef as
|
|
31129
|
+
import { useCallback as useCallback50, useLayoutEffect as useLayoutEffect6, useReducer, useRef as useRef38 } from "react";
|
|
31114
31130
|
function applyRailScrollNavigation(input) {
|
|
31115
31131
|
const activeConversationId = input.activeConversationId?.trim() || null;
|
|
31116
31132
|
const current = input.current.navigationKey === input.navigationKey ? input.current : {
|
|
@@ -31156,10 +31172,10 @@ function useAgentGUIConversationRailViewState(input) {
|
|
|
31156
31172
|
reduceAgentGUIConversationRailViewState,
|
|
31157
31173
|
/* @__PURE__ */ new Map()
|
|
31158
31174
|
);
|
|
31159
|
-
const conversationListRef =
|
|
31160
|
-
const conversationItemElementsRef =
|
|
31161
|
-
const scrollTopByScopeRef =
|
|
31162
|
-
const navigationRef =
|
|
31175
|
+
const conversationListRef = useRef38(null);
|
|
31176
|
+
const conversationItemElementsRef = useRef38(/* @__PURE__ */ new Map());
|
|
31177
|
+
const scrollTopByScopeRef = useRef38(/* @__PURE__ */ new Map());
|
|
31178
|
+
const navigationRef = useRef38({
|
|
31163
31179
|
handledRevealRevision: 0,
|
|
31164
31180
|
navigationKey: null,
|
|
31165
31181
|
phase: "scope-pending"
|
|
@@ -31250,9 +31266,9 @@ function useAgentGUIConversationRailViewState(input) {
|
|
|
31250
31266
|
}
|
|
31251
31267
|
|
|
31252
31268
|
// agent-gui/agentGuiNode/view/useAgentGUIProjectMenuState.ts
|
|
31253
|
-
import { useCallback as useCallback51, useState as
|
|
31269
|
+
import { useCallback as useCallback51, useState as useState30 } from "react";
|
|
31254
31270
|
function useAgentGUIProjectMenuState(isRailInteractionLocked, isUserProjectMutationPending) {
|
|
31255
|
-
const [openSectionId, setOpenSectionId] =
|
|
31271
|
+
const [openSectionId, setOpenSectionId] = useState30(null);
|
|
31256
31272
|
const isProjectActionLocked = useCallback51(
|
|
31257
31273
|
() => isRailInteractionLocked() || isUserProjectMutationPending,
|
|
31258
31274
|
[isRailInteractionLocked, isUserProjectMutationPending]
|
|
@@ -31275,8 +31291,8 @@ function useAgentGUIProjectMenuState(isRailInteractionLocked, isUserProjectMutat
|
|
|
31275
31291
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailPane.tsx
|
|
31276
31292
|
import { jsx as jsx59, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
31277
31293
|
function useDelayedBoolean(value, delayMs) {
|
|
31278
|
-
const [delayedValue, setDelayedValue] =
|
|
31279
|
-
|
|
31294
|
+
const [delayedValue, setDelayedValue] = useState31(false);
|
|
31295
|
+
useEffect30(() => {
|
|
31280
31296
|
if (!value) {
|
|
31281
31297
|
setDelayedValue(false);
|
|
31282
31298
|
return;
|
|
@@ -31329,12 +31345,12 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
31329
31345
|
onConversationQueryChange
|
|
31330
31346
|
}) {
|
|
31331
31347
|
"use memo";
|
|
31332
|
-
const [pendingProjectAction, setPendingProjectAction] =
|
|
31333
|
-
const [isRequestingBatchDeletion, setIsRequestingBatchDeletion] =
|
|
31348
|
+
const [pendingProjectAction, setPendingProjectAction] = useState31(null);
|
|
31349
|
+
const [isRequestingBatchDeletion, setIsRequestingBatchDeletion] = useState31(false);
|
|
31334
31350
|
const { railSearch } = railQuery;
|
|
31335
|
-
const railElementRef =
|
|
31336
|
-
const railActiveConversationRef =
|
|
31337
|
-
const groupedConversationsRef =
|
|
31351
|
+
const railElementRef = useRef39(null);
|
|
31352
|
+
const railActiveConversationRef = useRef39([]);
|
|
31353
|
+
const groupedConversationsRef = useRef39(null);
|
|
31338
31354
|
const {
|
|
31339
31355
|
loadMoreSectionConversations,
|
|
31340
31356
|
isInteractionLocked,
|
|
@@ -31402,7 +31418,7 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
31402
31418
|
userProjects
|
|
31403
31419
|
});
|
|
31404
31420
|
const railActiveOverlay = runtimeDisplayProjection.activeOverlay;
|
|
31405
|
-
const displayConversations =
|
|
31421
|
+
const displayConversations = useMemo35(() => {
|
|
31406
31422
|
if (backendSearchActive) {
|
|
31407
31423
|
return backendSearchConversations;
|
|
31408
31424
|
}
|
|
@@ -31423,7 +31439,7 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
31423
31439
|
runtimeRailSections,
|
|
31424
31440
|
runtimeSectionsEnabled
|
|
31425
31441
|
]);
|
|
31426
|
-
const filteredConversationResult =
|
|
31442
|
+
const filteredConversationResult = useMemo35(() => {
|
|
31427
31443
|
const startedAtMs = agentGuiPerfNowMs();
|
|
31428
31444
|
const query = conversationQuery.trim().toLowerCase();
|
|
31429
31445
|
const items = backendSearchActive ? displayConversations : !query ? displayConversations : displayConversations.filter(
|
|
@@ -31441,7 +31457,7 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
31441
31457
|
uiLanguage
|
|
31442
31458
|
]);
|
|
31443
31459
|
const filteredConversations = filteredConversationResult.items;
|
|
31444
|
-
const groupedConversationResult =
|
|
31460
|
+
const groupedConversationResult = useMemo35(() => {
|
|
31445
31461
|
const startedAtMs = agentGuiPerfNowMs();
|
|
31446
31462
|
const query = conversationQuery.trim();
|
|
31447
31463
|
const rawGroups = backendSearchActive ? projectConversationRailSearchSections({
|
|
@@ -31494,7 +31510,7 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
31494
31510
|
sectionAgentTargetFallbackId,
|
|
31495
31511
|
workspaceId
|
|
31496
31512
|
});
|
|
31497
|
-
const groupedConversationIdentityKey =
|
|
31513
|
+
const groupedConversationIdentityKey = useMemo35(
|
|
31498
31514
|
() => `${groupedConversations.map(
|
|
31499
31515
|
(section) => `${section.id}:${section.items.map((item) => item.id).join(",")}`
|
|
31500
31516
|
).join("|")}|active:${railActiveOverlay?.conversation.id ?? ""}`,
|
|
@@ -31559,7 +31575,7 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
31559
31575
|
userProjects
|
|
31560
31576
|
});
|
|
31561
31577
|
const projectDragLocked = projectDragBaseLocked || isProjectMovePending;
|
|
31562
|
-
|
|
31578
|
+
useEffect30(() => {
|
|
31563
31579
|
return installProjectDragGlobalListeners();
|
|
31564
31580
|
}, [installProjectDragGlobalListeners]);
|
|
31565
31581
|
return /* @__PURE__ */ jsxs41(
|
|
@@ -31766,7 +31782,7 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
31766
31782
|
);
|
|
31767
31783
|
|
|
31768
31784
|
// agent-gui/agentGuiNode/controller/useAgentGUIConversationRailQuery.ts
|
|
31769
|
-
import { useEffect as
|
|
31785
|
+
import { useEffect as useEffect31, useMemo as useMemo36, useRef as useRef40 } from "react";
|
|
31770
31786
|
|
|
31771
31787
|
// agent-gui/agentGuiNode/controller/agentGuiConversationRailDiagnostics.ts
|
|
31772
31788
|
var CONVERSATION_RAIL_SLOW_DIAGNOSTIC_THRESHOLD_MS = 250;
|
|
@@ -32883,13 +32899,13 @@ function useAgentGUIConversationRailQuery({
|
|
|
32883
32899
|
workspaceId
|
|
32884
32900
|
}) {
|
|
32885
32901
|
const runtime = useAgentActivityRuntime();
|
|
32886
|
-
const engine =
|
|
32902
|
+
const engine = useMemo36(
|
|
32887
32903
|
() => runtime.getSessionEngine(workspaceId),
|
|
32888
32904
|
[runtime, workspaceId]
|
|
32889
32905
|
);
|
|
32890
|
-
const activeConversationIdRef =
|
|
32906
|
+
const activeConversationIdRef = useRef40(activeConversationId);
|
|
32891
32907
|
activeConversationIdRef.current = activeConversationId;
|
|
32892
|
-
const controller =
|
|
32908
|
+
const controller = useMemo36(
|
|
32893
32909
|
() => new AgentGUIConversationRailQueryController({
|
|
32894
32910
|
engine,
|
|
32895
32911
|
getActiveConversationId: () => activeConversationIdRef.current,
|
|
@@ -32898,7 +32914,7 @@ function useAgentGUIConversationRailQuery({
|
|
|
32898
32914
|
}),
|
|
32899
32915
|
[engine, runtime, workspaceId]
|
|
32900
32916
|
);
|
|
32901
|
-
|
|
32917
|
+
useEffect31(() => {
|
|
32902
32918
|
const detach = controller.attach();
|
|
32903
32919
|
registerInteractionLockProbe?.(controller.isInteractionLocked);
|
|
32904
32920
|
return () => {
|
|
@@ -32906,7 +32922,7 @@ function useAgentGUIConversationRailQuery({
|
|
|
32906
32922
|
detach();
|
|
32907
32923
|
};
|
|
32908
32924
|
}, [controller, registerInteractionLockProbe]);
|
|
32909
|
-
|
|
32925
|
+
useEffect31(() => {
|
|
32910
32926
|
controller.configure({
|
|
32911
32927
|
conversationFilter,
|
|
32912
32928
|
previewMode,
|
|
@@ -32927,7 +32943,7 @@ function useAgentGUIConversationRailQuery({
|
|
|
32927
32943
|
identitySnapshot,
|
|
32928
32944
|
Object.is
|
|
32929
32945
|
);
|
|
32930
|
-
const requestedRailScopeKey =
|
|
32946
|
+
const requestedRailScopeKey = useMemo36(
|
|
32931
32947
|
() => resolveConversationRailQueryScope(workspaceId, {
|
|
32932
32948
|
conversationFilter,
|
|
32933
32949
|
previewMode,
|
|
@@ -32942,7 +32958,7 @@ function useAgentGUIConversationRailQuery({
|
|
|
32942
32958
|
workspaceId
|
|
32943
32959
|
]
|
|
32944
32960
|
);
|
|
32945
|
-
return
|
|
32961
|
+
return useMemo36(
|
|
32946
32962
|
() => ({
|
|
32947
32963
|
...querySnapshot,
|
|
32948
32964
|
isInteractionLocked: controller.isInteractionLocked,
|
|
@@ -32966,7 +32982,7 @@ function identitySnapshot(snapshot) {
|
|
|
32966
32982
|
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
32967
32983
|
var AgentGUIConversationRailController = memo9(
|
|
32968
32984
|
function AgentGUIConversationRailController2(props) {
|
|
32969
|
-
const [conversationQuery, setConversationQuery] =
|
|
32985
|
+
const [conversationQuery, setConversationQuery] = useState32("");
|
|
32970
32986
|
const railQuery = useAgentGUIConversationRailQuery({
|
|
32971
32987
|
activeConversationId: props.activeConversationId,
|
|
32972
32988
|
conversationFilter: props.conversationFilter,
|
|
@@ -32993,15 +33009,15 @@ var AgentGUIConversationRailController = memo9(
|
|
|
32993
33009
|
import {
|
|
32994
33010
|
memo as memo12,
|
|
32995
33011
|
useCallback as useCallback53,
|
|
32996
|
-
useEffect as
|
|
32997
|
-
useMemo as
|
|
32998
|
-
useRef as
|
|
32999
|
-
useState as
|
|
33012
|
+
useEffect as useEffect34,
|
|
33013
|
+
useMemo as useMemo38,
|
|
33014
|
+
useRef as useRef43,
|
|
33015
|
+
useState as useState37
|
|
33000
33016
|
} from "react";
|
|
33001
33017
|
import { ScrollArea as ScrollArea2 } from "@tutti-os/ui-system/components";
|
|
33002
33018
|
|
|
33003
33019
|
// agent-gui/agentGuiNode/view/agentGUIDetailModelHelpers.ts
|
|
33004
|
-
import { useRef as
|
|
33020
|
+
import { useRef as useRef41 } from "react";
|
|
33005
33021
|
function commandAppSource(command) {
|
|
33006
33022
|
if (!command || typeof command !== "object" || !("source" in command)) {
|
|
33007
33023
|
return null;
|
|
@@ -33081,7 +33097,7 @@ function slashStatusesEqual(left, right) {
|
|
|
33081
33097
|
return (left.agentSessionId ?? null) === (right.agentSessionId ?? null) && (left.baseUrl ?? null) === (right.baseUrl ?? null) && (left.contextWindow?.usedTokens ?? null) === (right.contextWindow?.usedTokens ?? null) && (left.contextWindow?.totalTokens ?? null) === (right.contextWindow?.totalTokens ?? null) && slashStatusLimitsEqual(left.limits, right.limits) && Boolean(left.limitsLoading) === Boolean(right.limitsLoading) && Boolean(left.limitsUnavailable) === Boolean(right.limitsUnavailable);
|
|
33082
33098
|
}
|
|
33083
33099
|
function useStableSlashStatus(status) {
|
|
33084
|
-
const statusRef =
|
|
33100
|
+
const statusRef = useRef41(null);
|
|
33085
33101
|
if (statusRef.current === null || !slashStatusesEqual(statusRef.current, status)) {
|
|
33086
33102
|
statusRef.current = status;
|
|
33087
33103
|
}
|
|
@@ -33157,7 +33173,7 @@ import { ChevronsDown } from "lucide-react";
|
|
|
33157
33173
|
import { cn as cn8 } from "@tutti-os/ui-system";
|
|
33158
33174
|
|
|
33159
33175
|
// agent-gui/agentGuiNode/AgentGoalBanner.tsx
|
|
33160
|
-
import { useEffect as
|
|
33176
|
+
import { useEffect as useEffect32, useState as useState33 } from "react";
|
|
33161
33177
|
import { CirclePause, CirclePlay, Pencil as Pencil3, Target as Target3, Trash2 } from "lucide-react";
|
|
33162
33178
|
import { jsx as jsx61, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
33163
33179
|
var RESUMABLE_GOAL_STATUSES = /* @__PURE__ */ new Set([
|
|
@@ -33233,12 +33249,12 @@ function AgentGoalBanner({
|
|
|
33233
33249
|
onClearGoal
|
|
33234
33250
|
}) {
|
|
33235
33251
|
"use memo";
|
|
33236
|
-
const [editDraft, setEditDraft] =
|
|
33252
|
+
const [editDraft, setEditDraft] = useState33(null);
|
|
33237
33253
|
const normalizedStatus = normalizeGoalStatus(status);
|
|
33238
33254
|
const isActive = normalizedStatus === "" || normalizedStatus === "active";
|
|
33239
33255
|
const serverSeconds = optimistic ? null : typeof durationMs === "number" && durationMs >= 0 ? Math.floor(durationMs / 1e3) : isActive ? 0 : null;
|
|
33240
|
-
const [localElapsed, setLocalElapsed] =
|
|
33241
|
-
|
|
33256
|
+
const [localElapsed, setLocalElapsed] = useState33(0);
|
|
33257
|
+
useEffect32(() => {
|
|
33242
33258
|
setLocalElapsed(0);
|
|
33243
33259
|
if (!isActive || serverSeconds === null) {
|
|
33244
33260
|
return;
|
|
@@ -33518,7 +33534,7 @@ var AgentGUIBottomDockPane = memo10(function AgentGUIBottomDockPane2({
|
|
|
33518
33534
|
});
|
|
33519
33535
|
|
|
33520
33536
|
// agent-gui/agentGuiNode/view/AgentGUIContentToast.tsx
|
|
33521
|
-
import { useState as
|
|
33537
|
+
import { useState as useState34 } from "react";
|
|
33522
33538
|
import {
|
|
33523
33539
|
ToastProvider,
|
|
33524
33540
|
ToastRoot,
|
|
@@ -33530,7 +33546,7 @@ function AgentGUIContentToast({
|
|
|
33530
33546
|
insetTopPx,
|
|
33531
33547
|
message
|
|
33532
33548
|
}) {
|
|
33533
|
-
const [open, setOpen] =
|
|
33549
|
+
const [open, setOpen] = useState34(true);
|
|
33534
33550
|
return /* @__PURE__ */ jsxs44(ToastProvider, { children: [
|
|
33535
33551
|
/* @__PURE__ */ jsx63(
|
|
33536
33552
|
ToastRoot,
|
|
@@ -33619,10 +33635,10 @@ function setTimelineScrollTopWithUserTransition(element, top) {
|
|
|
33619
33635
|
// agent-gui/agentGuiNode/view/useAgentGUIDetailScroll.ts
|
|
33620
33636
|
import {
|
|
33621
33637
|
useCallback as useCallback52,
|
|
33622
|
-
useEffect as
|
|
33638
|
+
useEffect as useEffect33,
|
|
33623
33639
|
useLayoutEffect as useLayoutEffect7,
|
|
33624
|
-
useRef as
|
|
33625
|
-
useState as
|
|
33640
|
+
useRef as useRef42,
|
|
33641
|
+
useState as useState35
|
|
33626
33642
|
} from "react";
|
|
33627
33643
|
var AGENT_GUI_STICK_TO_BOTTOM_THRESHOLD_PX = 24;
|
|
33628
33644
|
var AGENT_GUI_TOP_HISTORY_PREFETCH_THRESHOLD_PX = 240;
|
|
@@ -33641,10 +33657,10 @@ function useAgentGUIDetailScroll(input) {
|
|
|
33641
33657
|
timelineScrollAnchorRef,
|
|
33642
33658
|
viewModel
|
|
33643
33659
|
} = input;
|
|
33644
|
-
const [isTimelineScrolledToTop, setIsTimelineScrolledToTop] =
|
|
33645
|
-
const [isTimelineScrolledToBottom, setIsTimelineScrolledToBottom] =
|
|
33646
|
-
const bottomLockOwnerRef =
|
|
33647
|
-
const userScrollAwayIntentConversationRef =
|
|
33660
|
+
const [isTimelineScrolledToTop, setIsTimelineScrolledToTop] = useState35(true);
|
|
33661
|
+
const [isTimelineScrolledToBottom, setIsTimelineScrolledToBottom] = useState35(true);
|
|
33662
|
+
const bottomLockOwnerRef = useRef42(null);
|
|
33663
|
+
const userScrollAwayIntentConversationRef = useRef42(null);
|
|
33648
33664
|
useLayoutEffect7(() => {
|
|
33649
33665
|
const timeline = timelineRef.current;
|
|
33650
33666
|
if (!timeline) {
|
|
@@ -33850,7 +33866,7 @@ function useAgentGUIDetailScroll(input) {
|
|
|
33850
33866
|
timelineConversationId,
|
|
33851
33867
|
viewModel.rail.activeConversationId
|
|
33852
33868
|
]);
|
|
33853
|
-
|
|
33869
|
+
useEffect33(() => {
|
|
33854
33870
|
const timeline = timelineRef.current;
|
|
33855
33871
|
const activeConversationId = timelineConversationId;
|
|
33856
33872
|
if (!timeline || !activeConversationId) {
|
|
@@ -33961,7 +33977,7 @@ function useAgentGUIDetailScroll(input) {
|
|
|
33961
33977
|
}
|
|
33962
33978
|
|
|
33963
33979
|
// agent-gui/agentGuiNode/view/useAgentGUIDetailModel.tsx
|
|
33964
|
-
import { useMemo as
|
|
33980
|
+
import { useMemo as useMemo37 } from "react";
|
|
33965
33981
|
|
|
33966
33982
|
// app/renderer/components/icons/UnavailableChatIcon.tsx
|
|
33967
33983
|
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
@@ -33981,15 +33997,15 @@ function UnavailableChatIcon(props) {
|
|
|
33981
33997
|
}
|
|
33982
33998
|
|
|
33983
33999
|
// agent-gui/agentGuiNode/view/useAgentGUITimelineTransition.ts
|
|
33984
|
-
import { useLayoutEffect as useLayoutEffect8, useState as
|
|
34000
|
+
import { useLayoutEffect as useLayoutEffect8, useState as useState36 } from "react";
|
|
33985
34001
|
var AGENT_GUI_TIMELINE_SKELETON_DELAY_MS = 300;
|
|
33986
34002
|
function useAgentGUITimelineTransition(input) {
|
|
33987
34003
|
const activeConversationId = input.activeConversationId;
|
|
33988
|
-
const [committedTimeline, setCommittedTimeline] =
|
|
34004
|
+
const [committedTimeline, setCommittedTimeline] = useState36(() => ({
|
|
33989
34005
|
conversation: input.conversation,
|
|
33990
34006
|
conversationId: activeConversationId
|
|
33991
34007
|
}));
|
|
33992
|
-
const [revealedSkeletonConversationId, setRevealedSkeletonConversationId] =
|
|
34008
|
+
const [revealedSkeletonConversationId, setRevealedSkeletonConversationId] = useState36(null);
|
|
33993
34009
|
const transitionPending = activeConversationId !== null && input.availability === "loading" && (!input.conversation || input.conversation.rows.length === 0);
|
|
33994
34010
|
useLayoutEffect8(() => {
|
|
33995
34011
|
if (!transitionPending || activeConversationId === null) {
|
|
@@ -34055,11 +34071,11 @@ function useAgentGUIDetailModel(input) {
|
|
|
34055
34071
|
const emptyProviderReadinessGate = !hasActiveConversation ? selectedAgentTargetComingSoon ? { status: "coming_soon" } : viewModel.readiness.providerReadinessGate : null;
|
|
34056
34072
|
const activePrompt = viewModel.interaction.pendingInteractivePrompt ?? viewModel.interaction.pendingApproval;
|
|
34057
34073
|
const activePromptRequestId = activePrompt?.requestId ?? null;
|
|
34058
|
-
const sessionChrome =
|
|
34074
|
+
const sessionChrome = useMemo37(
|
|
34059
34075
|
() => ({ ...viewModel.interaction.sessionChrome, approval: null }),
|
|
34060
34076
|
[viewModel.interaction.sessionChrome]
|
|
34061
34077
|
);
|
|
34062
|
-
const rawSlashStatus =
|
|
34078
|
+
const rawSlashStatus = useMemo37(
|
|
34063
34079
|
() => resolveSlashStatus({
|
|
34064
34080
|
rawState: viewModel.interaction.sessionChrome.rawState,
|
|
34065
34081
|
limits: slashStatusLimits,
|
|
@@ -34076,7 +34092,7 @@ function useAgentGUIDetailModel(input) {
|
|
|
34076
34092
|
]
|
|
34077
34093
|
);
|
|
34078
34094
|
const slashStatus = useStableSlashStatus(rawSlashStatus);
|
|
34079
|
-
const displayedInlineNotice =
|
|
34095
|
+
const displayedInlineNotice = useMemo37(() => {
|
|
34080
34096
|
const inlineNotice = viewModel.interaction.inlineNotice;
|
|
34081
34097
|
const inlineNoticeMessage = inlineNotice?.message.trim() ?? "";
|
|
34082
34098
|
if (!inlineNotice || inlineNoticeMessage === "") {
|
|
@@ -34100,7 +34116,7 @@ function useAgentGUIDetailModel(input) {
|
|
|
34100
34116
|
viewModel.readiness.activeLiveState,
|
|
34101
34117
|
viewModel.interaction.inlineNotice
|
|
34102
34118
|
]);
|
|
34103
|
-
const inlineNoticeChrome =
|
|
34119
|
+
const inlineNoticeChrome = useMemo37(() => {
|
|
34104
34120
|
if (!displayedInlineNotice) {
|
|
34105
34121
|
return null;
|
|
34106
34122
|
}
|
|
@@ -34152,7 +34168,7 @@ function useAgentGUIDetailModel(input) {
|
|
|
34152
34168
|
isSubmitting: viewModel.composer.isSubmitting,
|
|
34153
34169
|
isUnavailable: viewModel.readiness.activeLiveState === "failed"
|
|
34154
34170
|
});
|
|
34155
|
-
const conversationFlowLabels =
|
|
34171
|
+
const conversationFlowLabels = useMemo37(
|
|
34156
34172
|
() => ({
|
|
34157
34173
|
thinkingLabel: labels.thinkingLabel,
|
|
34158
34174
|
toolCallsLabel: labels.toolCallsLabel,
|
|
@@ -34168,7 +34184,7 @@ function useAgentGUIDetailModel(input) {
|
|
|
34168
34184
|
labels.userMessageLocator
|
|
34169
34185
|
]
|
|
34170
34186
|
);
|
|
34171
|
-
const conversationFlowEmpty =
|
|
34187
|
+
const conversationFlowEmpty = useMemo37(
|
|
34172
34188
|
() => showUnavailableChatEmpty ? /* @__PURE__ */ jsxs46(
|
|
34173
34189
|
"div",
|
|
34174
34190
|
{
|
|
@@ -34182,7 +34198,7 @@ function useAgentGUIDetailModel(input) {
|
|
|
34182
34198
|
) : /* @__PURE__ */ jsx66(Fragment19, {}),
|
|
34183
34199
|
[labels.conversationUnavailable, showUnavailableChatEmpty]
|
|
34184
34200
|
);
|
|
34185
|
-
const chromeLabels =
|
|
34201
|
+
const chromeLabels = useMemo37(
|
|
34186
34202
|
() => ({
|
|
34187
34203
|
approvalRequired: labels.approvalRequired,
|
|
34188
34204
|
authRequired: labels.authRequired,
|
|
@@ -34203,7 +34219,7 @@ function useAgentGUIDetailModel(input) {
|
|
|
34203
34219
|
viewModel.composer.isCancelPending
|
|
34204
34220
|
]
|
|
34205
34221
|
);
|
|
34206
|
-
const goalBannerLabels =
|
|
34222
|
+
const goalBannerLabels = useMemo37(
|
|
34207
34223
|
() => ({
|
|
34208
34224
|
titleActive: labels.goalTitleActive,
|
|
34209
34225
|
titlePaused: labels.goalTitlePaused,
|
|
@@ -34233,7 +34249,7 @@ function useAgentGUIDetailModel(input) {
|
|
|
34233
34249
|
labels.goalClearAction
|
|
34234
34250
|
]
|
|
34235
34251
|
);
|
|
34236
|
-
const interactivePromptLabels =
|
|
34252
|
+
const interactivePromptLabels = useMemo37(
|
|
34237
34253
|
() => ({
|
|
34238
34254
|
approvalLead: labels.approvalRequired,
|
|
34239
34255
|
fileChangeApprovalLead: labels.fileChangeApprovalRequired,
|
|
@@ -34273,7 +34289,7 @@ function useAgentGUIDetailModel(input) {
|
|
|
34273
34289
|
labels.planImplementationSkip
|
|
34274
34290
|
]
|
|
34275
34291
|
);
|
|
34276
|
-
const composerLabels =
|
|
34292
|
+
const composerLabels = useMemo37(
|
|
34277
34293
|
() => ({
|
|
34278
34294
|
send: labels.send,
|
|
34279
34295
|
modelLabel: labels.modelLabel,
|
|
@@ -34634,20 +34650,19 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34634
34650
|
selectProjectDirectory,
|
|
34635
34651
|
onRequestGitBranches,
|
|
34636
34652
|
onRequestComposerFocus,
|
|
34637
|
-
contextMentionProviders,
|
|
34638
34653
|
workspaceAppIcons = EMPTY_WORKSPACE_APP_ICONS4,
|
|
34639
34654
|
renderProviderUnavailableState
|
|
34640
34655
|
}) {
|
|
34641
34656
|
"use memo";
|
|
34642
|
-
const timelineRef =
|
|
34643
|
-
const bottomDockRef =
|
|
34644
|
-
const timelineScrollAnchorRef =
|
|
34645
|
-
const submittedPromptScrollConversationRef =
|
|
34646
|
-
const pendingPrependScrollAnchorRef =
|
|
34657
|
+
const timelineRef = useRef43(null);
|
|
34658
|
+
const bottomDockRef = useRef43(null);
|
|
34659
|
+
const timelineScrollAnchorRef = useRef43(null);
|
|
34660
|
+
const submittedPromptScrollConversationRef = useRef43(null);
|
|
34661
|
+
const pendingPrependScrollAnchorRef = useRef43(null);
|
|
34647
34662
|
const [
|
|
34648
34663
|
bottomDockDismissedPromptRequestId,
|
|
34649
34664
|
setBottomDockDismissedPromptRequestId
|
|
34650
|
-
] =
|
|
34665
|
+
] = useState37(null);
|
|
34651
34666
|
const {
|
|
34652
34667
|
activePromptRequestId,
|
|
34653
34668
|
bottomDockLiftedPrompt,
|
|
@@ -34821,7 +34836,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34821
34836
|
)
|
|
34822
34837
|
}) : void 0
|
|
34823
34838
|
);
|
|
34824
|
-
const bottomDockComposerProps =
|
|
34839
|
+
const bottomDockComposerProps = useMemo38(
|
|
34825
34840
|
() => ({
|
|
34826
34841
|
workspaceId: viewModel.shell.workspaceId,
|
|
34827
34842
|
workspacePath: viewModel.shell.workspacePath,
|
|
@@ -34893,8 +34908,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34893
34908
|
prepareExternalPromptFiles,
|
|
34894
34909
|
promptAssetLimit,
|
|
34895
34910
|
selectProjectDirectory: stableSelectProjectDirectory,
|
|
34896
|
-
onRequestGitBranches: stableRequestGitBranches
|
|
34897
|
-
contextMentionProviders
|
|
34911
|
+
onRequestGitBranches: stableRequestGitBranches
|
|
34898
34912
|
}),
|
|
34899
34913
|
[
|
|
34900
34914
|
canQueueWhileBusy,
|
|
@@ -34927,7 +34941,6 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34927
34941
|
composerActivePrompt,
|
|
34928
34942
|
editQueuedPrompt,
|
|
34929
34943
|
onCapabilitySettingsRequest,
|
|
34930
|
-
contextMentionProviders,
|
|
34931
34944
|
removeQueuedPrompt,
|
|
34932
34945
|
prepareExternalPromptFiles,
|
|
34933
34946
|
promptAssetLimit,
|
|
@@ -34973,7 +34986,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34973
34986
|
selectHomeComposerAgentTargetAndFocus
|
|
34974
34987
|
]
|
|
34975
34988
|
);
|
|
34976
|
-
const emptyHeroComposerProps =
|
|
34989
|
+
const emptyHeroComposerProps = useMemo38(
|
|
34977
34990
|
() => ({
|
|
34978
34991
|
...bottomDockComposerProps,
|
|
34979
34992
|
layoutMode: "hero"
|
|
@@ -34995,7 +35008,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
34995
35008
|
viewModel.composer.drainingQueuedPromptId ?? "",
|
|
34996
35009
|
viewModel.interaction.isRespondingApproval ? "1" : "0"
|
|
34997
35010
|
].join("|");
|
|
34998
|
-
|
|
35011
|
+
useEffect34(() => {
|
|
34999
35012
|
setBottomDockDismissedPromptRequestId(null);
|
|
35000
35013
|
}, [activePromptRequestId]);
|
|
35001
35014
|
const {
|
|
@@ -35124,7 +35137,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
35124
35137
|
});
|
|
35125
35138
|
|
|
35126
35139
|
// agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
|
|
35127
|
-
import { memo as memo13, useCallback as useCallback54, useEffect as
|
|
35140
|
+
import { memo as memo13, useCallback as useCallback54, useEffect as useEffect35, useRef as useRef44, useState as useState38 } from "react";
|
|
35128
35141
|
import { ConfirmationDialog as ConfirmationDialog3, Input as Input2 } from "@tutti-os/ui-system";
|
|
35129
35142
|
import { jsx as jsx68, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
35130
35143
|
var AgentGUIRenameConversationDialog = memo13(
|
|
@@ -35136,13 +35149,13 @@ var AgentGUIRenameConversationDialog = memo13(
|
|
|
35136
35149
|
onRename
|
|
35137
35150
|
}) {
|
|
35138
35151
|
"use memo";
|
|
35139
|
-
const [title, setTitle] =
|
|
35140
|
-
const [isSaving, setIsSaving] =
|
|
35141
|
-
const isSavingRef =
|
|
35142
|
-
const armedPointerActionRef =
|
|
35143
|
-
const inputRef =
|
|
35152
|
+
const [title, setTitle] = useState38("");
|
|
35153
|
+
const [isSaving, setIsSaving] = useState38(false);
|
|
35154
|
+
const isSavingRef = useRef44(false);
|
|
35155
|
+
const armedPointerActionRef = useRef44(null);
|
|
35156
|
+
const inputRef = useRef44(null);
|
|
35144
35157
|
const trimmedTitle = title.trim();
|
|
35145
|
-
|
|
35158
|
+
useEffect35(() => {
|
|
35146
35159
|
if (!open || !conversation) {
|
|
35147
35160
|
isSavingRef.current = false;
|
|
35148
35161
|
armedPointerActionRef.current = null;
|
|
@@ -35152,7 +35165,7 @@ var AgentGUIRenameConversationDialog = memo13(
|
|
|
35152
35165
|
}
|
|
35153
35166
|
setTitle(conversation.title);
|
|
35154
35167
|
}, [conversation, open]);
|
|
35155
|
-
|
|
35168
|
+
useEffect35(() => {
|
|
35156
35169
|
if (!open) {
|
|
35157
35170
|
return;
|
|
35158
35171
|
}
|
|
@@ -35369,11 +35382,11 @@ function AgentGUIReferencePickerSurface({
|
|
|
35369
35382
|
}
|
|
35370
35383
|
|
|
35371
35384
|
// agent-gui/agentGuiNode/view/AgentTargetSetupRoot.tsx
|
|
35372
|
-
import { useCallback as useCallback55, useMemo as
|
|
35385
|
+
import { useCallback as useCallback55, useMemo as useMemo39 } from "react";
|
|
35373
35386
|
import { jsx as jsx70, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
35374
35387
|
function useAgentTargetSetupRoot(input) {
|
|
35375
35388
|
const { preferences } = useAgentGUIProviderRailPreferences();
|
|
35376
|
-
const homeTargetProjection =
|
|
35389
|
+
const homeTargetProjection = useMemo39(
|
|
35377
35390
|
() => projectAgentGUIManagedHomeTargets({
|
|
35378
35391
|
agentTargets: input.agentTargets,
|
|
35379
35392
|
preferences,
|
|
@@ -35428,7 +35441,7 @@ function AgentTargetSetupRoot({
|
|
|
35428
35441
|
}
|
|
35429
35442
|
|
|
35430
35443
|
// agent-gui/agentGuiNode/view/useAgentGUIWorkspaceReferencePicker.ts
|
|
35431
|
-
import { useCallback as useCallback56, useMemo as
|
|
35444
|
+
import { useCallback as useCallback56, useMemo as useMemo40, useRef as useRef45, useState as useState39 } from "react";
|
|
35432
35445
|
import { createRichTextMentionHref } from "@tutti-os/ui-rich-text/core";
|
|
35433
35446
|
function useAgentGUIWorkspaceReferencePicker(input) {
|
|
35434
35447
|
const {
|
|
@@ -35441,10 +35454,10 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
35441
35454
|
workspaceFileReferenceAdapter,
|
|
35442
35455
|
workspaceFileReferenceCopy
|
|
35443
35456
|
} = input;
|
|
35444
|
-
const [workspaceReferencePickerOpen, setWorkspaceReferencePickerOpen] =
|
|
35445
|
-
const [workspaceReferencePickerTarget, setWorkspaceReferencePickerTarget] =
|
|
35446
|
-
const workspaceReferencePickerResolverRef =
|
|
35447
|
-
const emptyReferencePickResult =
|
|
35457
|
+
const [workspaceReferencePickerOpen, setWorkspaceReferencePickerOpen] = useState39(false);
|
|
35458
|
+
const [workspaceReferencePickerTarget, setWorkspaceReferencePickerTarget] = useState39(null);
|
|
35459
|
+
const workspaceReferencePickerResolverRef = useRef45(null);
|
|
35460
|
+
const emptyReferencePickResult = useMemo40(
|
|
35448
35461
|
() => ({ files: [], mentionItems: [] }),
|
|
35449
35462
|
[]
|
|
35450
35463
|
);
|
|
@@ -35558,7 +35571,7 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
35558
35571
|
}
|
|
35559
35572
|
|
|
35560
35573
|
// agent-gui/agentGuiNode/engagement/useAgentGUINodeEngagement.ts
|
|
35561
|
-
import { useRef as
|
|
35574
|
+
import { useRef as useRef47 } from "react";
|
|
35562
35575
|
|
|
35563
35576
|
// agent-gui/agentGuiNode/engagement/projectAgentGUIEngagementContext.ts
|
|
35564
35577
|
function projectAgentGUIEngagementContext(viewModel, composerReady) {
|
|
@@ -35590,7 +35603,7 @@ function createAgentGUIEngagementContextKey(input) {
|
|
|
35590
35603
|
}
|
|
35591
35604
|
|
|
35592
35605
|
// agent-gui/agentGuiNode/engagement/useAgentGUIPanelEngagement.ts
|
|
35593
|
-
import { useEffect as
|
|
35606
|
+
import { useEffect as useEffect36, useRef as useRef46 } from "react";
|
|
35594
35607
|
|
|
35595
35608
|
// agent-gui/agentGuiNode/engagement/AgentGUIPanelEngagementController.ts
|
|
35596
35609
|
var AGENT_GUI_PANEL_EXPOSURE_DWELL_MS = 1e3;
|
|
@@ -35744,10 +35757,10 @@ function documentIsVisible() {
|
|
|
35744
35757
|
|
|
35745
35758
|
// agent-gui/agentGuiNode/engagement/useAgentGUIPanelEngagement.ts
|
|
35746
35759
|
function useAgentGUIPanelEngagement(input) {
|
|
35747
|
-
const inputRef =
|
|
35748
|
-
const controllerRef =
|
|
35749
|
-
const intersectionRatioRef =
|
|
35750
|
-
const engagementRef =
|
|
35760
|
+
const inputRef = useRef46(input);
|
|
35761
|
+
const controllerRef = useRef46(null);
|
|
35762
|
+
const intersectionRatioRef = useRef46(0);
|
|
35763
|
+
const engagementRef = useRef46(null);
|
|
35751
35764
|
inputRef.current = input;
|
|
35752
35765
|
if (!engagementRef.current) {
|
|
35753
35766
|
engagementRef.current = {
|
|
@@ -35760,7 +35773,7 @@ function useAgentGUIPanelEngagement(input) {
|
|
|
35760
35773
|
};
|
|
35761
35774
|
}
|
|
35762
35775
|
const engagementEnabled = Boolean(input.onEvent) && !input.previewMode;
|
|
35763
|
-
|
|
35776
|
+
useEffect36(() => {
|
|
35764
35777
|
const element = input.elementRef.current;
|
|
35765
35778
|
if (!engagementEnabled || !element) return void 0;
|
|
35766
35779
|
const controller = new AgentGUIPanelEngagementController({
|
|
@@ -35787,7 +35800,7 @@ function useAgentGUIPanelEngagement(input) {
|
|
|
35787
35800
|
|
|
35788
35801
|
// agent-gui/agentGuiNode/engagement/useAgentGUINodeEngagement.ts
|
|
35789
35802
|
function useAgentGUINodeEngagement(input) {
|
|
35790
|
-
const layoutElementRef =
|
|
35803
|
+
const layoutElementRef = useRef47(null);
|
|
35791
35804
|
const projected = projectAgentGUIEngagementContext(
|
|
35792
35805
|
input.viewModel,
|
|
35793
35806
|
input.composerReady
|
|
@@ -35806,7 +35819,7 @@ function useAgentGUINodeEngagement(input) {
|
|
|
35806
35819
|
}
|
|
35807
35820
|
|
|
35808
35821
|
// agent-gui/agentGuiNode/view/useAgentGUIExternalRequests.ts
|
|
35809
|
-
import { useCallback as useCallback57, useEffect as
|
|
35822
|
+
import { useCallback as useCallback57, useEffect as useEffect37, useRef as useRef48 } from "react";
|
|
35810
35823
|
function resolveSessionActionConversation(viewModel, agentSessionId) {
|
|
35811
35824
|
const active = viewModel.rail.activeConversation;
|
|
35812
35825
|
if (!agentSessionId) {
|
|
@@ -35832,21 +35845,21 @@ function useAgentGUIExternalRequests(input) {
|
|
|
35832
35845
|
viewModel
|
|
35833
35846
|
} = input;
|
|
35834
35847
|
const agentHostApi = useOptionalAgentHostApi();
|
|
35835
|
-
const railInteractionLockProbeRef =
|
|
35848
|
+
const railInteractionLockProbeRef = useRef48(null);
|
|
35836
35849
|
const registerRailInteractionLockProbe = useCallback57(
|
|
35837
35850
|
(probe) => {
|
|
35838
35851
|
railInteractionLockProbeRef.current = probe;
|
|
35839
35852
|
},
|
|
35840
35853
|
[]
|
|
35841
35854
|
);
|
|
35842
|
-
const handledNewConversationRequestSequenceRef =
|
|
35855
|
+
const handledNewConversationRequestSequenceRef = useRef48(
|
|
35843
35856
|
newConversationRequestSequence
|
|
35844
35857
|
);
|
|
35845
|
-
const handledSessionActionRequestSequenceRef =
|
|
35858
|
+
const handledSessionActionRequestSequenceRef = useRef48(
|
|
35846
35859
|
sessionActionRequest?.sequence ?? null
|
|
35847
35860
|
);
|
|
35848
35861
|
const copyConversationValue = useAgentGUIConversationCopyAction(labels);
|
|
35849
|
-
|
|
35862
|
+
useEffect37(() => {
|
|
35850
35863
|
if (newConversationRequestSequence !== null && handledNewConversationRequestSequenceRef.current !== newConversationRequestSequence) {
|
|
35851
35864
|
handledNewConversationRequestSequenceRef.current = newConversationRequestSequence;
|
|
35852
35865
|
if (!createConversationDisabled) {
|
|
@@ -35943,7 +35956,6 @@ function AgentGUINodeView({
|
|
|
35943
35956
|
selectProjectDirectory,
|
|
35944
35957
|
workspaceFileReferenceCopy = null,
|
|
35945
35958
|
onRequestGitBranches = null,
|
|
35946
|
-
contextMentionProviders,
|
|
35947
35959
|
referenceSourceAggregator = null,
|
|
35948
35960
|
resolveWorkspaceReferenceEntryIconUrl,
|
|
35949
35961
|
resolveMentionReferenceTarget = null,
|
|
@@ -35962,16 +35974,16 @@ function AgentGUINodeView({
|
|
|
35962
35974
|
previewMode,
|
|
35963
35975
|
viewModel
|
|
35964
35976
|
});
|
|
35965
|
-
const [providerManagerOpen, setProviderManagerOpen] =
|
|
35966
|
-
const railResizeInteractionRef =
|
|
35967
|
-
const [isRailResizing, setIsRailResizing] =
|
|
35968
|
-
const [railResizeWidthPx, setRailResizeWidthPx] =
|
|
35977
|
+
const [providerManagerOpen, setProviderManagerOpen] = useState40(false);
|
|
35978
|
+
const railResizeInteractionRef = useRef49(null);
|
|
35979
|
+
const [isRailResizing, setIsRailResizing] = useState40(false);
|
|
35980
|
+
const [railResizeWidthPx, setRailResizeWidthPx] = useState40(
|
|
35969
35981
|
null
|
|
35970
35982
|
);
|
|
35971
35983
|
const [
|
|
35972
35984
|
localComposerFocusRequestSequence,
|
|
35973
35985
|
setLocalComposerFocusRequestSequence
|
|
35974
|
-
] =
|
|
35986
|
+
] = useState40(0);
|
|
35975
35987
|
const {
|
|
35976
35988
|
closeWorkspaceReferencePicker,
|
|
35977
35989
|
confirmWorkspaceReferenceBundles,
|
|
@@ -36051,7 +36063,7 @@ function AgentGUINodeView({
|
|
|
36051
36063
|
viewModel.composer.composerSettings.selectedProjectPath
|
|
36052
36064
|
]
|
|
36053
36065
|
);
|
|
36054
|
-
const effectiveWorkspaceAppIcons =
|
|
36066
|
+
const effectiveWorkspaceAppIcons = useMemo41(
|
|
36055
36067
|
() => mergeWorkspaceAppIconsFromCommands({
|
|
36056
36068
|
commands: viewModel.composer.availableCommands,
|
|
36057
36069
|
workspaceAppIcons,
|
|
@@ -36132,7 +36144,7 @@ function AgentGUINodeView({
|
|
|
36132
36144
|
},
|
|
36133
36145
|
[onConversationRailWidthChanged]
|
|
36134
36146
|
);
|
|
36135
|
-
|
|
36147
|
+
useEffect38(() => {
|
|
36136
36148
|
if (isRailResizing || railResizeWidthPx === null) {
|
|
36137
36149
|
return;
|
|
36138
36150
|
}
|
|
@@ -36184,7 +36196,7 @@ function AgentGUINodeView({
|
|
|
36184
36196
|
const effectiveRailConfigProvider = railConfigProvider === void 0 ? viewModel.shell.data.provider : railConfigProvider;
|
|
36185
36197
|
const effectiveRailSlashStatusLimits = railSlashStatusLimits ?? slashStatusLimits;
|
|
36186
36198
|
const shouldShowProviderRailConfigButton = viewModel.rail.conversationFilter.kind === "all" || viewModel.rail.selectedAgentTarget?.disabled !== true;
|
|
36187
|
-
const effectiveProviderAuthAccountLabel =
|
|
36199
|
+
const effectiveProviderAuthAccountLabel = useMemo41(() => {
|
|
36188
36200
|
const provider = (effectiveRailConfigProvider ?? viewModel.shell.data.provider)?.trim() ?? "";
|
|
36189
36201
|
if (!provider) {
|
|
36190
36202
|
return null;
|
|
@@ -36215,8 +36227,8 @@ function AgentGUINodeView({
|
|
|
36215
36227
|
const openAgentSettings = useCallback58(() => {
|
|
36216
36228
|
openWorkspaceSettingsPanel({ section: "agent" });
|
|
36217
36229
|
}, []);
|
|
36218
|
-
const [renameConversationTarget, setRenameConversationTarget] =
|
|
36219
|
-
const [renameConversationDialogOpen, setRenameConversationDialogOpen] =
|
|
36230
|
+
const [renameConversationTarget, setRenameConversationTarget] = useState40(null);
|
|
36231
|
+
const [renameConversationDialogOpen, setRenameConversationDialogOpen] = useState40(false);
|
|
36220
36232
|
const requestRenameConversation = useCallback58(
|
|
36221
36233
|
(conversation) => {
|
|
36222
36234
|
setRenameConversationTarget(conversation);
|
|
@@ -36235,7 +36247,7 @@ function AgentGUINodeView({
|
|
|
36235
36247
|
uiLanguage,
|
|
36236
36248
|
viewModel
|
|
36237
36249
|
});
|
|
36238
|
-
const conversationRailStoreState =
|
|
36250
|
+
const conversationRailStoreState = useMemo41(
|
|
36239
36251
|
() => ({
|
|
36240
36252
|
activeConversation: viewModel.rail.activeConversation,
|
|
36241
36253
|
activeConversationId: viewModel.rail.activeConversationId,
|
|
@@ -36315,7 +36327,7 @@ function AgentGUINodeView({
|
|
|
36315
36327
|
const targetPresentationKey = agentTargetPresentationKey(
|
|
36316
36328
|
viewModel.rail.agentTargets
|
|
36317
36329
|
);
|
|
36318
|
-
const agentTargetPresentations =
|
|
36330
|
+
const agentTargetPresentations = useMemo41(
|
|
36319
36331
|
() => projectAgentTargetPresentations({
|
|
36320
36332
|
agentTargets: viewModel.rail.agentTargets,
|
|
36321
36333
|
workspaceId: viewModel.shell.workspaceId
|
|
@@ -36491,7 +36503,6 @@ function AgentGUINodeView({
|
|
|
36491
36503
|
selectProjectDirectory,
|
|
36492
36504
|
onRequestGitBranches,
|
|
36493
36505
|
onRequestComposerFocus: requestComposerFocus,
|
|
36494
|
-
contextMentionProviders,
|
|
36495
36506
|
workspaceAppIcons: effectiveWorkspaceAppIcons,
|
|
36496
36507
|
workspaceUserProjectI18n,
|
|
36497
36508
|
renderProviderUnavailableState,
|
|
@@ -36713,10 +36724,10 @@ function appendDockProbeUsageLines(probe, lines, isLoadingUsage, t) {
|
|
|
36713
36724
|
import { Info as Info2 } from "lucide-react";
|
|
36714
36725
|
import {
|
|
36715
36726
|
useCallback as useCallback59,
|
|
36716
|
-
useEffect as
|
|
36727
|
+
useEffect as useEffect39,
|
|
36717
36728
|
useLayoutEffect as useLayoutEffect9,
|
|
36718
|
-
useRef as
|
|
36719
|
-
useState as
|
|
36729
|
+
useRef as useRef50,
|
|
36730
|
+
useState as useState41
|
|
36720
36731
|
} from "react";
|
|
36721
36732
|
import { createPortal as createPortal5 } from "react-dom";
|
|
36722
36733
|
import { Fragment as Fragment21, jsx as jsx72, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
@@ -36753,10 +36764,10 @@ function AgentProbeInfoPopover({
|
|
|
36753
36764
|
onOpen
|
|
36754
36765
|
}) {
|
|
36755
36766
|
"use memo";
|
|
36756
|
-
const anchorRef =
|
|
36757
|
-
const popoverRef =
|
|
36758
|
-
const [isOpen, setIsOpen] =
|
|
36759
|
-
const [popoverStyle, setPopoverStyle] =
|
|
36767
|
+
const anchorRef = useRef50(null);
|
|
36768
|
+
const popoverRef = useRef50(null);
|
|
36769
|
+
const [isOpen, setIsOpen] = useState41(false);
|
|
36770
|
+
const [popoverStyle, setPopoverStyle] = useState41(null);
|
|
36760
36771
|
const openPopover = useCallback59(() => {
|
|
36761
36772
|
if (!isOpen) {
|
|
36762
36773
|
onOpen?.();
|
|
@@ -36796,7 +36807,7 @@ function AgentProbeInfoPopover({
|
|
|
36796
36807
|
maxWidth: availableWidth
|
|
36797
36808
|
});
|
|
36798
36809
|
}, []);
|
|
36799
|
-
|
|
36810
|
+
useEffect39(() => {
|
|
36800
36811
|
if (!isOpen) {
|
|
36801
36812
|
return;
|
|
36802
36813
|
}
|
|
@@ -36960,34 +36971,74 @@ function areAgentGUINodePropsEqual(previous, next) {
|
|
|
36960
36971
|
const pc = previous.hostCapabilities, nc = next.hostCapabilities;
|
|
36961
36972
|
const pa = previous.hostActions, na = next.hostActions;
|
|
36962
36973
|
const ps = previous.renderSlots, ns = next.renderSlots;
|
|
36963
|
-
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.
|
|
36974
|
+
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;
|
|
36964
36975
|
}
|
|
36965
36976
|
|
|
36966
36977
|
// agent-gui/agentGuiNode/AgentGUIMentionServiceBoundary.tsx
|
|
36978
|
+
import { useMemo as useMemo42 } from "react";
|
|
36967
36979
|
import {
|
|
36968
36980
|
RichTextMentionServiceProvider,
|
|
36969
|
-
|
|
36970
|
-
useRichTextMentionService
|
|
36981
|
+
useRichTextMentionService as useRichTextMentionService2
|
|
36971
36982
|
} from "@tutti-os/ui-rich-text/editor";
|
|
36983
|
+
|
|
36984
|
+
// agent-gui/agentGuiNode/composeAgentGUIMentionService.ts
|
|
36985
|
+
function composeAgentGUIMentionService(input) {
|
|
36986
|
+
const { inheritedService, surfaceService } = input;
|
|
36987
|
+
const inheritedProviderIds = new Set(
|
|
36988
|
+
inheritedService.listProviders().map((provider) => provider.id)
|
|
36989
|
+
);
|
|
36990
|
+
const serviceForIdentity = (identity) => inheritedProviderIds.has(identity.providerId) ? inheritedService : surfaceService;
|
|
36991
|
+
return {
|
|
36992
|
+
listProviders: () => surfaceService.listProviders(),
|
|
36993
|
+
getProvider: (providerId) => surfaceService.getProvider(providerId),
|
|
36994
|
+
listTriggerConfigs: () => surfaceService.listTriggerConfigs(),
|
|
36995
|
+
query: (queryInput) => surfaceService.query(queryInput),
|
|
36996
|
+
resolve: (identity) => serviceForIdentity(identity).resolve(identity),
|
|
36997
|
+
getSnapshot: (identity) => serviceForIdentity(identity).getSnapshot(identity),
|
|
36998
|
+
invalidate(selector) {
|
|
36999
|
+
inheritedService.invalidate(selector);
|
|
37000
|
+
surfaceService.invalidate(selector);
|
|
37001
|
+
},
|
|
37002
|
+
subscribe(listener, identity) {
|
|
37003
|
+
if (identity) {
|
|
37004
|
+
return serviceForIdentity(identity).subscribe(listener, identity);
|
|
37005
|
+
}
|
|
37006
|
+
const unsubscribeInherited = inheritedService.subscribe(listener);
|
|
37007
|
+
const unsubscribeSurface = surfaceService.subscribe(listener);
|
|
37008
|
+
return () => {
|
|
37009
|
+
unsubscribeInherited();
|
|
37010
|
+
unsubscribeSurface();
|
|
37011
|
+
};
|
|
37012
|
+
},
|
|
37013
|
+
// The boundary does not own either service. Their creators retain disposal
|
|
37014
|
+
// authority so composing a view cannot tear down workspace subscriptions.
|
|
37015
|
+
dispose() {
|
|
37016
|
+
}
|
|
37017
|
+
};
|
|
37018
|
+
}
|
|
37019
|
+
|
|
37020
|
+
// agent-gui/agentGuiNode/AgentGUIMentionServiceBoundary.tsx
|
|
36972
37021
|
import { jsx as jsx73 } from "react/jsx-runtime";
|
|
36973
37022
|
function AgentGUIMentionServiceBoundary({
|
|
36974
37023
|
children,
|
|
36975
|
-
legacyProviders,
|
|
36976
37024
|
service
|
|
36977
37025
|
}) {
|
|
36978
|
-
const inheritedService =
|
|
36979
|
-
const effectiveService =
|
|
36980
|
-
|
|
36981
|
-
|
|
36982
|
-
|
|
36983
|
-
|
|
37026
|
+
const inheritedService = useRichTextMentionService2();
|
|
37027
|
+
const effectiveService = useMemo42(
|
|
37028
|
+
() => service && inheritedService && service !== inheritedService ? composeAgentGUIMentionService({
|
|
37029
|
+
inheritedService,
|
|
37030
|
+
surfaceService: service
|
|
37031
|
+
}) : service,
|
|
37032
|
+
[inheritedService, service]
|
|
37033
|
+
);
|
|
37034
|
+
if (!effectiveService || effectiveService === inheritedService) {
|
|
36984
37035
|
return children;
|
|
36985
37036
|
}
|
|
36986
|
-
return
|
|
37037
|
+
return /* @__PURE__ */ jsx73(RichTextMentionServiceProvider, { service: effectiveService, children });
|
|
36987
37038
|
}
|
|
36988
37039
|
|
|
36989
37040
|
// agent-gui/agentGuiNode/AgentGUINode.labels.ts
|
|
36990
|
-
import { useMemo as
|
|
37041
|
+
import { useMemo as useMemo43 } from "react";
|
|
36991
37042
|
|
|
36992
37043
|
// agent-gui/agentGuiNode/model/agentHomeSuggestions.ts
|
|
36993
37044
|
import { createRichTextMentionHref as createRichTextMentionHref2 } from "@tutti-os/ui-rich-text/core";
|
|
@@ -37171,7 +37222,7 @@ function agentGUIProviderManagerLabels(t) {
|
|
|
37171
37222
|
|
|
37172
37223
|
// agent-gui/agentGuiNode/AgentGUINode.labels.ts
|
|
37173
37224
|
function useAgentGUIConversationRailLabels(t) {
|
|
37174
|
-
return
|
|
37225
|
+
return useMemo43(() => agentGUIConversationRailLabels(t), [t]);
|
|
37175
37226
|
}
|
|
37176
37227
|
var workspaceFileReferenceLocaleKeyByPickerKey = {
|
|
37177
37228
|
"actions.cancel": "common.cancel",
|
|
@@ -37221,7 +37272,7 @@ function useAgentGUIViewLabels(input) {
|
|
|
37221
37272
|
workspaceAppIcons,
|
|
37222
37273
|
workspaceId
|
|
37223
37274
|
} = input;
|
|
37224
|
-
return
|
|
37275
|
+
return useMemo43(
|
|
37225
37276
|
() => ({
|
|
37226
37277
|
initialPlaceholder: t("agentHost.agentGui.initialPlaceholder", {
|
|
37227
37278
|
provider: displayProviderLabel
|
|
@@ -37853,7 +37904,7 @@ function useAgentGUIViewLabels(input) {
|
|
|
37853
37904
|
);
|
|
37854
37905
|
}
|
|
37855
37906
|
function useAgentGUIWorkspaceFileReferenceCopy(t) {
|
|
37856
|
-
return
|
|
37907
|
+
return useMemo43(
|
|
37857
37908
|
() => ({
|
|
37858
37909
|
t(key, values) {
|
|
37859
37910
|
const localeKey = workspaceFileReferenceLocaleKeyByPickerKey[key];
|
|
@@ -37996,7 +38047,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
37996
38047
|
conversationRailAutoCollapseWidthPx = null
|
|
37997
38048
|
} = frame;
|
|
37998
38049
|
const railAutoCollapseWidthPx = conversationRailAutoCollapseWidthPx ?? void 0;
|
|
37999
|
-
const widthRef =
|
|
38050
|
+
const widthRef = useRef51(width);
|
|
38000
38051
|
widthRef.current = width;
|
|
38001
38052
|
const {
|
|
38002
38053
|
composerAppend: composerAppendRequest = null,
|
|
@@ -38022,7 +38073,6 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38022
38073
|
providerReadinessGates = null,
|
|
38023
38074
|
defaultAgentTargetId = null,
|
|
38024
38075
|
providerAuthAccountLabels,
|
|
38025
|
-
contextMentionProviders,
|
|
38026
38076
|
mentionService,
|
|
38027
38077
|
workspaceAppIcons,
|
|
38028
38078
|
disabledHomeSuggestions,
|
|
@@ -38061,11 +38111,11 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38061
38111
|
sidebarFooter: renderSidebarFooter
|
|
38062
38112
|
} = renderSlots;
|
|
38063
38113
|
const { i18n, locale, t } = useTranslation();
|
|
38064
|
-
const workspaceUserProjectI18n =
|
|
38114
|
+
const workspaceUserProjectI18n = useMemo44(
|
|
38065
38115
|
() => createWorkspaceUserProjectI18nRuntime(i18n),
|
|
38066
38116
|
[i18n]
|
|
38067
38117
|
);
|
|
38068
|
-
const workspaceFileManagerI18n =
|
|
38118
|
+
const workspaceFileManagerI18n = useMemo44(
|
|
38069
38119
|
() => typeof i18n?.t === "function" ? createWorkspaceFileManagerI18nRuntime(i18n) : null,
|
|
38070
38120
|
[i18n]
|
|
38071
38121
|
);
|
|
@@ -38127,7 +38177,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38127
38177
|
const isConversationRailManuallyCollapsed = state.conversationRailCollapsed === true;
|
|
38128
38178
|
const isConversationRailAutoCollapsed = shouldAutoCollapseAgentGUIConversationRail(width, railAutoCollapseWidthPx);
|
|
38129
38179
|
const isConversationRailCollapsed = isConversationRailManuallyCollapsed || isConversationRailAutoCollapsed;
|
|
38130
|
-
const minSize =
|
|
38180
|
+
const minSize = useMemo44(
|
|
38131
38181
|
() => ({
|
|
38132
38182
|
...resolveCanonicalNodeMinSize("agentGui"),
|
|
38133
38183
|
width: AGENT_GUI_COLLAPSED_MIN_WIDTH_PX
|
|
@@ -38218,7 +38268,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38218
38268
|
},
|
|
38219
38269
|
[actions, onUpdateNode, previewMode]
|
|
38220
38270
|
);
|
|
38221
|
-
const viewActions =
|
|
38271
|
+
const viewActions = useMemo44(
|
|
38222
38272
|
() => ({
|
|
38223
38273
|
...actions,
|
|
38224
38274
|
createConversation: handleCreateConversation
|
|
@@ -38241,21 +38291,21 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38241
38291
|
const workspaceFileReferenceCopy = useAgentGUIWorkspaceFileReferenceCopy(t);
|
|
38242
38292
|
const windowTitle = title;
|
|
38243
38293
|
const activeProbeProvider = activeProvider;
|
|
38244
|
-
const railStatusProvider =
|
|
38294
|
+
const railStatusProvider = useMemo44(
|
|
38245
38295
|
() => resolveAgentGUIRailStatusProvider({
|
|
38246
38296
|
conversationFilter: viewModel.rail.conversationFilter,
|
|
38247
38297
|
agentTargets: viewModel.rail.agentTargets
|
|
38248
38298
|
}),
|
|
38249
38299
|
[viewModel.rail.conversationFilter, viewModel.rail.agentTargets]
|
|
38250
38300
|
);
|
|
38251
|
-
const activeAgentProbe =
|
|
38301
|
+
const activeAgentProbe = useMemo44(
|
|
38252
38302
|
() => findWorkspaceAgentProbeForDockProvider(
|
|
38253
38303
|
workspaceAgentProbes?.snapshot ?? null,
|
|
38254
38304
|
activeProbeProvider
|
|
38255
38305
|
),
|
|
38256
38306
|
[activeProbeProvider, workspaceAgentProbes?.snapshot]
|
|
38257
38307
|
);
|
|
38258
|
-
const railAgentProbe =
|
|
38308
|
+
const railAgentProbe = useMemo44(
|
|
38259
38309
|
() => railStatusProvider ? findWorkspaceAgentProbeForDockProvider(
|
|
38260
38310
|
workspaceAgentProbes?.snapshot ?? null,
|
|
38261
38311
|
railStatusProvider
|
|
@@ -38264,7 +38314,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38264
38314
|
);
|
|
38265
38315
|
const canonicalSlashStatusQuotas = viewModel.detail.usage?.quotas ?? EMPTY_SLASH_STATUS_QUOTAS;
|
|
38266
38316
|
const slashStatusQuotaSource = canonicalSlashStatusQuotas.length > 0 ? canonicalSlashStatusQuotas : activeAgentProbe?.usage?.quotas && activeAgentProbe.usage.quotas.length > 0 ? activeAgentProbe.usage.quotas : EMPTY_SLASH_STATUS_QUOTAS;
|
|
38267
|
-
const slashStatusLimits =
|
|
38317
|
+
const slashStatusLimits = useMemo44(
|
|
38268
38318
|
() => slashStatusLimitsFromQuotas(
|
|
38269
38319
|
slashStatusQuotaSource,
|
|
38270
38320
|
viewModel.composer.composerSettings.selectedModelValue ?? viewModel.composer.composerSettings.draftSettings.model,
|
|
@@ -38279,7 +38329,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38279
38329
|
);
|
|
38280
38330
|
const slashStatusLimitsUnavailable = slashStatusLimits.length === 0 && canonicalSlashStatusQuotas.length === 0 && !(workspaceAgentProbes?.isLoadingUsage ?? false) && (Boolean(activeAgentProbe?.usage) || Boolean(activeAgentProbe?.lastError));
|
|
38281
38331
|
const railSlashStatusQuotaSource = railStatusProvider && railAgentProbe?.usage?.quotas && railAgentProbe.usage.quotas.length > 0 ? railAgentProbe.usage.quotas : EMPTY_SLASH_STATUS_QUOTAS;
|
|
38282
|
-
const railSlashStatusLimits =
|
|
38332
|
+
const railSlashStatusLimits = useMemo44(
|
|
38283
38333
|
() => slashStatusLimitsFromQuotas(railSlashStatusQuotaSource, null, t),
|
|
38284
38334
|
[railSlashStatusQuotaSource, t]
|
|
38285
38335
|
);
|
|
@@ -38287,7 +38337,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38287
38337
|
const slashStatusUsageCapturedAtUnixMs = slashStatusUsageProbe?.usage?.capturedAtUnixMs ?? null;
|
|
38288
38338
|
const slashStatusUsageDidFail = workspaceAgentProbes?.usageLoadFailed ?? false;
|
|
38289
38339
|
const slashStatusUsageAttempted = Boolean(slashStatusUsageProbe?.usage) || Boolean(slashStatusUsageProbe?.lastError);
|
|
38290
|
-
const agentProbeLines =
|
|
38340
|
+
const agentProbeLines = useMemo44(() => {
|
|
38291
38341
|
return buildDockAgentProbeTooltipLines(
|
|
38292
38342
|
activeAgentProbe,
|
|
38293
38343
|
workspaceAgentProbes?.isLoadingAvailability ?? false,
|
|
@@ -38303,7 +38353,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38303
38353
|
workspaceAgentProbes?.isLoadingUsage,
|
|
38304
38354
|
t
|
|
38305
38355
|
]);
|
|
38306
|
-
|
|
38356
|
+
useEffect40(() => {
|
|
38307
38357
|
if (previewMode || !onAgentProbeDemandChange) {
|
|
38308
38358
|
return;
|
|
38309
38359
|
}
|
|
@@ -38313,7 +38363,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38313
38363
|
onAgentProbeDemandChange(null, probeSourceId);
|
|
38314
38364
|
};
|
|
38315
38365
|
}, [activeProbeProvider, nodeId, onAgentProbeDemandChange, previewMode]);
|
|
38316
|
-
|
|
38366
|
+
useEffect40(() => {
|
|
38317
38367
|
if (previewMode || !onAgentProbeDemandChange || !railStatusProvider || railStatusProvider === activeProbeProvider) {
|
|
38318
38368
|
return;
|
|
38319
38369
|
}
|
|
@@ -38365,146 +38415,138 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
38365
38415
|
previewMode,
|
|
38366
38416
|
railStatusProvider
|
|
38367
38417
|
]);
|
|
38368
|
-
return /* @__PURE__ */ jsx74(
|
|
38369
|
-
|
|
38418
|
+
return /* @__PURE__ */ jsx74(AgentGUIMentionServiceBoundary, { service: mentionService, children: /* @__PURE__ */ jsx74(
|
|
38419
|
+
WorkspaceNodeWindow,
|
|
38370
38420
|
{
|
|
38371
|
-
|
|
38372
|
-
|
|
38373
|
-
|
|
38374
|
-
|
|
38375
|
-
|
|
38376
|
-
|
|
38377
|
-
|
|
38378
|
-
|
|
38379
|
-
|
|
38380
|
-
|
|
38381
|
-
|
|
38382
|
-
|
|
38383
|
-
|
|
38384
|
-
|
|
38385
|
-
|
|
38386
|
-
|
|
38387
|
-
|
|
38388
|
-
|
|
38389
|
-
|
|
38390
|
-
|
|
38391
|
-
|
|
38392
|
-
|
|
38393
|
-
|
|
38394
|
-
|
|
38395
|
-
|
|
38396
|
-
|
|
38397
|
-
|
|
38398
|
-
),
|
|
38399
|
-
|
|
38400
|
-
|
|
38421
|
+
nodeId,
|
|
38422
|
+
kind: "agentGui",
|
|
38423
|
+
title: windowTitle,
|
|
38424
|
+
titleIcon: null,
|
|
38425
|
+
position,
|
|
38426
|
+
width,
|
|
38427
|
+
height,
|
|
38428
|
+
desktopSize,
|
|
38429
|
+
minSize,
|
|
38430
|
+
appearance: embedded ? "embedded" : "window",
|
|
38431
|
+
className: "size-full bg-transparent",
|
|
38432
|
+
bodyClassName: `${AgentGUINode_styles_default.shell} nodrag size-full min-h-0 min-w-0 !bg-transparent p-0`,
|
|
38433
|
+
hideHeader: embedded,
|
|
38434
|
+
titleAccessory: /* @__PURE__ */ jsxs52("span", { className: "inline-flex flex-none items-center gap-1", children: [
|
|
38435
|
+
/* @__PURE__ */ jsx74(
|
|
38436
|
+
AgentProbeInfoPopover,
|
|
38437
|
+
{
|
|
38438
|
+
lines: agentProbeLines,
|
|
38439
|
+
testId: "agent-gui-window-agent-info",
|
|
38440
|
+
className: AgentGUINode_styles_default.windowAgentInfo,
|
|
38441
|
+
onOpen: handleAgentProbeInfoOpen
|
|
38442
|
+
}
|
|
38443
|
+
),
|
|
38444
|
+
/* @__PURE__ */ jsx74(
|
|
38445
|
+
CanvasNodeGhostIconButton,
|
|
38446
|
+
{
|
|
38447
|
+
"aria-label": isConversationRailCollapsed ? t("agentHost.agentGui.expandConversationRail") : t("agentHost.agentGui.collapseConversationRail"),
|
|
38448
|
+
title: isConversationRailCollapsed ? t("agentHost.agentGui.expandConversationRail") : t("agentHost.agentGui.collapseConversationRail"),
|
|
38449
|
+
"data-testid": "agent-gui-toggle-conversation-rail",
|
|
38450
|
+
"data-agent-gui-conversation-rail-collapsed": isConversationRailCollapsed ? "true" : "false",
|
|
38451
|
+
"data-agent-gui-conversation-rail-auto-collapsed": isConversationRailAutoCollapsed ? "true" : "false",
|
|
38452
|
+
onClick: (event) => {
|
|
38453
|
+
event.stopPropagation();
|
|
38454
|
+
handleConversationRailToggle();
|
|
38455
|
+
},
|
|
38456
|
+
children: /* @__PURE__ */ jsx74(
|
|
38457
|
+
CanvasNodePanelLinedIcon,
|
|
38401
38458
|
{
|
|
38402
|
-
|
|
38403
|
-
|
|
38404
|
-
"
|
|
38405
|
-
"data-agent-gui-conversation-rail-collapsed": isConversationRailCollapsed ? "true" : "false",
|
|
38406
|
-
"data-agent-gui-conversation-rail-auto-collapsed": isConversationRailAutoCollapsed ? "true" : "false",
|
|
38407
|
-
onClick: (event) => {
|
|
38408
|
-
event.stopPropagation();
|
|
38409
|
-
handleConversationRailToggle();
|
|
38410
|
-
},
|
|
38411
|
-
children: /* @__PURE__ */ jsx74(
|
|
38412
|
-
CanvasNodePanelLinedIcon,
|
|
38413
|
-
{
|
|
38414
|
-
width: 18,
|
|
38415
|
-
height: 18,
|
|
38416
|
-
"aria-hidden": "true"
|
|
38417
|
-
}
|
|
38418
|
-
)
|
|
38459
|
+
width: 18,
|
|
38460
|
+
height: 18,
|
|
38461
|
+
"aria-hidden": "true"
|
|
38419
38462
|
}
|
|
38420
38463
|
)
|
|
38421
|
-
] }),
|
|
38422
|
-
onClose,
|
|
38423
|
-
onResize,
|
|
38424
|
-
isMaximized,
|
|
38425
|
-
isMuted,
|
|
38426
|
-
hideMaximizeButton: true,
|
|
38427
|
-
onMinimize,
|
|
38428
|
-
onToggleMaximize,
|
|
38429
|
-
children: (renderFrame) => {
|
|
38430
|
-
const renderedWidth = renderFrame.size.width;
|
|
38431
|
-
const isRenderedConversationRailCollapsed = isConversationRailCollapsed || shouldAutoCollapseAgentGUIConversationRail(
|
|
38432
|
-
renderedWidth,
|
|
38433
|
-
railAutoCollapseWidthPx
|
|
38434
|
-
);
|
|
38435
|
-
return /* @__PURE__ */ jsx74(
|
|
38436
|
-
AgentGUINodeView,
|
|
38437
|
-
{
|
|
38438
|
-
viewModel,
|
|
38439
|
-
renderSidebarFooter,
|
|
38440
|
-
renderProviderRailEmpty,
|
|
38441
|
-
renderProviderUnavailableState,
|
|
38442
|
-
providerRailAllPresentation,
|
|
38443
|
-
actions: viewActions,
|
|
38444
|
-
isActive,
|
|
38445
|
-
isVisible,
|
|
38446
|
-
onEngagementEvent,
|
|
38447
|
-
composerFocusRequestSequence,
|
|
38448
|
-
newConversationRequestSequence,
|
|
38449
|
-
sessionActionRequest,
|
|
38450
|
-
slashStatusLimits,
|
|
38451
|
-
slashStatusLimitsLoading: workspaceAgentProbes?.isLoadingUsage ?? false,
|
|
38452
|
-
slashStatusLimitsUnavailable,
|
|
38453
|
-
railConfigProvider: railStatusProvider,
|
|
38454
|
-
railSlashStatusLimits,
|
|
38455
|
-
slashStatusUsageCapturedAtUnixMs,
|
|
38456
|
-
slashStatusUsageDidFail,
|
|
38457
|
-
slashStatusUsageAttempted,
|
|
38458
|
-
providerAuthAccountLabels,
|
|
38459
|
-
onAgentConfigMenuOpen: handleAgentConfigMenuOpen,
|
|
38460
|
-
onAgentUsageRefresh: handleAgentUsageRefresh,
|
|
38461
|
-
onSlashStatusOpen: handleAgentProbeInfoOpen,
|
|
38462
|
-
previewMode,
|
|
38463
|
-
onLinkAction: handleLinkAction,
|
|
38464
|
-
onHandoffConversation,
|
|
38465
|
-
capabilityMenuState,
|
|
38466
|
-
onCapabilitySettingsRequest,
|
|
38467
|
-
onAgentProviderLogin: onAgentProviderLogin ? handleAgentProviderLogin : void 0,
|
|
38468
|
-
onAgentEnvPanelOpen,
|
|
38469
|
-
accountMenuState,
|
|
38470
|
-
conversationRailCollapsed: isRenderedConversationRailCollapsed,
|
|
38471
|
-
conversationRailWidthPx: clampAgentGUIConversationRailWidthPx(
|
|
38472
|
-
state.conversationRailWidthPx,
|
|
38473
|
-
renderedWidth
|
|
38474
|
-
),
|
|
38475
|
-
conversationRailMinWidthPx: AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,
|
|
38476
|
-
conversationRailMaxWidthPx: resolveAgentGUIConversationRailMaxWidthPx(
|
|
38477
|
-
renderedWidth
|
|
38478
|
-
),
|
|
38479
|
-
detailMinWidthPx: AGENT_GUI_DETAIL_MIN_WIDTH_PX,
|
|
38480
|
-
uiLanguage: locale,
|
|
38481
|
-
onWorkspaceFileReferencesAdded: onWorkspaceFileReferencesAdded ? handleWorkspaceFileReferencesAdded : void 0,
|
|
38482
|
-
prepareExternalPromptFiles,
|
|
38483
|
-
promptAssetLimit,
|
|
38484
|
-
onConversationRailWidthChanged: handleConversationRailWidthChanged,
|
|
38485
|
-
labels,
|
|
38486
|
-
conversationRailLabels,
|
|
38487
|
-
workspaceUserProjectI18n,
|
|
38488
|
-
workspaceFileManagerCopy: workspaceFileManagerI18n,
|
|
38489
|
-
workspaceFileReferenceAdapter,
|
|
38490
|
-
onOpenConversationWindow,
|
|
38491
|
-
onRequestGitBranches,
|
|
38492
|
-
selectProjectDirectory,
|
|
38493
|
-
referenceSourceAggregator,
|
|
38494
|
-
resolveWorkspaceReferenceEntryIconUrl,
|
|
38495
|
-
resolveMentionReferenceTarget,
|
|
38496
|
-
resolveWorkspaceReferenceInitialTarget,
|
|
38497
|
-
workspaceFileReferenceCopy,
|
|
38498
|
-
contextMentionProviders,
|
|
38499
|
-
workspaceAppIcons,
|
|
38500
|
-
referenceProvenanceFilter
|
|
38501
|
-
}
|
|
38502
|
-
);
|
|
38503
38464
|
}
|
|
38504
|
-
|
|
38505
|
-
)
|
|
38465
|
+
)
|
|
38466
|
+
] }),
|
|
38467
|
+
onClose,
|
|
38468
|
+
onResize,
|
|
38469
|
+
isMaximized,
|
|
38470
|
+
isMuted,
|
|
38471
|
+
hideMaximizeButton: true,
|
|
38472
|
+
onMinimize,
|
|
38473
|
+
onToggleMaximize,
|
|
38474
|
+
children: (renderFrame) => {
|
|
38475
|
+
const renderedWidth = renderFrame.size.width;
|
|
38476
|
+
const isRenderedConversationRailCollapsed = isConversationRailCollapsed || shouldAutoCollapseAgentGUIConversationRail(
|
|
38477
|
+
renderedWidth,
|
|
38478
|
+
railAutoCollapseWidthPx
|
|
38479
|
+
);
|
|
38480
|
+
return /* @__PURE__ */ jsx74(
|
|
38481
|
+
AgentGUINodeView,
|
|
38482
|
+
{
|
|
38483
|
+
viewModel,
|
|
38484
|
+
renderSidebarFooter,
|
|
38485
|
+
renderProviderRailEmpty,
|
|
38486
|
+
renderProviderUnavailableState,
|
|
38487
|
+
providerRailAllPresentation,
|
|
38488
|
+
actions: viewActions,
|
|
38489
|
+
isActive,
|
|
38490
|
+
isVisible,
|
|
38491
|
+
onEngagementEvent,
|
|
38492
|
+
composerFocusRequestSequence,
|
|
38493
|
+
newConversationRequestSequence,
|
|
38494
|
+
sessionActionRequest,
|
|
38495
|
+
slashStatusLimits,
|
|
38496
|
+
slashStatusLimitsLoading: workspaceAgentProbes?.isLoadingUsage ?? false,
|
|
38497
|
+
slashStatusLimitsUnavailable,
|
|
38498
|
+
railConfigProvider: railStatusProvider,
|
|
38499
|
+
railSlashStatusLimits,
|
|
38500
|
+
slashStatusUsageCapturedAtUnixMs,
|
|
38501
|
+
slashStatusUsageDidFail,
|
|
38502
|
+
slashStatusUsageAttempted,
|
|
38503
|
+
providerAuthAccountLabels,
|
|
38504
|
+
onAgentConfigMenuOpen: handleAgentConfigMenuOpen,
|
|
38505
|
+
onAgentUsageRefresh: handleAgentUsageRefresh,
|
|
38506
|
+
onSlashStatusOpen: handleAgentProbeInfoOpen,
|
|
38507
|
+
previewMode,
|
|
38508
|
+
onLinkAction: handleLinkAction,
|
|
38509
|
+
onHandoffConversation,
|
|
38510
|
+
capabilityMenuState,
|
|
38511
|
+
onCapabilitySettingsRequest,
|
|
38512
|
+
onAgentProviderLogin: onAgentProviderLogin ? handleAgentProviderLogin : void 0,
|
|
38513
|
+
onAgentEnvPanelOpen,
|
|
38514
|
+
accountMenuState,
|
|
38515
|
+
conversationRailCollapsed: isRenderedConversationRailCollapsed,
|
|
38516
|
+
conversationRailWidthPx: clampAgentGUIConversationRailWidthPx(
|
|
38517
|
+
state.conversationRailWidthPx,
|
|
38518
|
+
renderedWidth
|
|
38519
|
+
),
|
|
38520
|
+
conversationRailMinWidthPx: AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,
|
|
38521
|
+
conversationRailMaxWidthPx: resolveAgentGUIConversationRailMaxWidthPx(
|
|
38522
|
+
renderedWidth
|
|
38523
|
+
),
|
|
38524
|
+
detailMinWidthPx: AGENT_GUI_DETAIL_MIN_WIDTH_PX,
|
|
38525
|
+
uiLanguage: locale,
|
|
38526
|
+
onWorkspaceFileReferencesAdded: onWorkspaceFileReferencesAdded ? handleWorkspaceFileReferencesAdded : void 0,
|
|
38527
|
+
prepareExternalPromptFiles,
|
|
38528
|
+
promptAssetLimit,
|
|
38529
|
+
onConversationRailWidthChanged: handleConversationRailWidthChanged,
|
|
38530
|
+
labels,
|
|
38531
|
+
conversationRailLabels,
|
|
38532
|
+
workspaceUserProjectI18n,
|
|
38533
|
+
workspaceFileManagerCopy: workspaceFileManagerI18n,
|
|
38534
|
+
workspaceFileReferenceAdapter,
|
|
38535
|
+
onOpenConversationWindow,
|
|
38536
|
+
onRequestGitBranches,
|
|
38537
|
+
selectProjectDirectory,
|
|
38538
|
+
referenceSourceAggregator,
|
|
38539
|
+
resolveWorkspaceReferenceEntryIconUrl,
|
|
38540
|
+
resolveMentionReferenceTarget,
|
|
38541
|
+
resolveWorkspaceReferenceInitialTarget,
|
|
38542
|
+
workspaceFileReferenceCopy,
|
|
38543
|
+
workspaceAppIcons,
|
|
38544
|
+
referenceProvenanceFilter
|
|
38545
|
+
}
|
|
38546
|
+
);
|
|
38547
|
+
}
|
|
38506
38548
|
}
|
|
38507
|
-
);
|
|
38549
|
+
) });
|
|
38508
38550
|
}, areAgentGUINodePropsEqual);
|
|
38509
38551
|
|
|
38510
38552
|
// AgentGUI.tsx
|
|
@@ -38521,16 +38563,16 @@ var AgentGUI = memo15(function AgentGUI2({
|
|
|
38521
38563
|
locale,
|
|
38522
38564
|
...props
|
|
38523
38565
|
}) {
|
|
38524
|
-
const normalizedAgents =
|
|
38566
|
+
const normalizedAgents = useMemo45(
|
|
38525
38567
|
() => normalizeAgentGUIAgents(agentDirectory.agents),
|
|
38526
38568
|
[agentDirectory.agents]
|
|
38527
38569
|
);
|
|
38528
|
-
const agentTargets =
|
|
38570
|
+
const agentTargets = useMemo45(
|
|
38529
38571
|
() => projectAgentGUIAgentsToInternalTargets(normalizedAgents),
|
|
38530
38572
|
[normalizedAgents]
|
|
38531
38573
|
);
|
|
38532
38574
|
const effectiveHandoffAgentDirectory = handoffAgentDirectory ?? agentDirectory;
|
|
38533
|
-
const normalizedHandoffAgents =
|
|
38575
|
+
const normalizedHandoffAgents = useMemo45(
|
|
38534
38576
|
() => effectiveHandoffAgentDirectory.agents === agentDirectory.agents ? normalizedAgents : normalizeAgentGUIAgents(effectiveHandoffAgentDirectory.agents),
|
|
38535
38577
|
[
|
|
38536
38578
|
agentDirectory.agents,
|
|
@@ -38538,13 +38580,13 @@ var AgentGUI = memo15(function AgentGUI2({
|
|
|
38538
38580
|
normalizedAgents
|
|
38539
38581
|
]
|
|
38540
38582
|
);
|
|
38541
|
-
const handoffAgentTargets =
|
|
38583
|
+
const handoffAgentTargets = useMemo45(
|
|
38542
38584
|
() => normalizedHandoffAgents === normalizedAgents ? agentTargets : projectAgentGUIAgentsToInternalTargets(normalizedHandoffAgents),
|
|
38543
38585
|
[agentTargets, normalizedAgents, normalizedHandoffAgents]
|
|
38544
38586
|
);
|
|
38545
38587
|
const hostCapabilities = props.hostCapabilities;
|
|
38546
38588
|
const renderSlots = props.renderSlots;
|
|
38547
|
-
const nodeHostCapabilities =
|
|
38589
|
+
const nodeHostCapabilities = useMemo45(
|
|
38548
38590
|
() => ({
|
|
38549
38591
|
...hostCapabilities,
|
|
38550
38592
|
agentTargets,
|
|
@@ -38567,7 +38609,7 @@ var AgentGUI = memo15(function AgentGUI2({
|
|
|
38567
38609
|
hostCapabilities
|
|
38568
38610
|
]
|
|
38569
38611
|
);
|
|
38570
|
-
const nodeRenderSlots =
|
|
38612
|
+
const nodeRenderSlots = useMemo45(
|
|
38571
38613
|
() => ({
|
|
38572
38614
|
...renderSlots,
|
|
38573
38615
|
providerRailEmpty: renderAgentsEmpty
|
|
@@ -38600,4 +38642,4 @@ export {
|
|
|
38600
38642
|
resolveAgentGUIAgentTarget,
|
|
38601
38643
|
AgentGUI
|
|
38602
38644
|
};
|
|
38603
|
-
//# sourceMappingURL=chunk-
|
|
38645
|
+
//# sourceMappingURL=chunk-VF5HD6RF.js.map
|