@tutti-os/agent-gui 0.0.180 → 0.0.182
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-conversation/index.js +3 -3
- package/dist/agent-gui.d.ts +5 -1
- package/dist/agent-gui.js +8 -7
- package/dist/agent-message-center/index.js +3 -3
- package/dist/{chunk-BYWOKSHZ.js → chunk-FO4G2K6B.js} +2 -2
- package/dist/{chunk-V7V7PU7Z.js → chunk-KAF6JPGL.js} +1 -1
- package/dist/chunk-KAF6JPGL.js.map +1 -0
- package/dist/chunk-LB4AGT7B.js +57 -0
- package/dist/chunk-LB4AGT7B.js.map +1 -0
- package/dist/{chunk-XF4D65QH.js → chunk-SOR55JUN.js} +2 -2
- package/dist/{chunk-5WIB6ZUL.js → chunk-SUZQHAFB.js} +3 -3
- package/dist/{chunk-W6UJE2OS.js → chunk-SXYACIJA.js} +2 -2
- package/dist/{chunk-G5JCVOF3.js → chunk-XN65KAE3.js} +344 -249
- package/dist/chunk-XN65KAE3.js.map +1 -0
- package/dist/{chunk-5UVD3YKW.js → chunk-XV2EXX7S.js} +3 -3
- package/dist/context-mention-palette/index.js +3 -3
- package/dist/conversation-rail-runtime.d.ts +356 -0
- package/dist/conversation-rail-runtime.js +12 -0
- package/dist/conversation-rail-runtime.js.map +1 -0
- package/dist/index.d.ts +21 -2
- package/dist/index.js +15 -7
- package/dist/index.js.map +1 -1
- package/dist/mention-search.js +2 -2
- package/package.json +20 -13
- package/dist/chunk-G5JCVOF3.js.map +0 -1
- package/dist/chunk-V7V7PU7Z.js.map +0 -1
- /package/dist/{chunk-BYWOKSHZ.js.map → chunk-FO4G2K6B.js.map} +0 -0
- /package/dist/{chunk-XF4D65QH.js.map → chunk-SOR55JUN.js.map} +0 -0
- /package/dist/{chunk-5WIB6ZUL.js.map → chunk-SUZQHAFB.js.map} +0 -0
- /package/dist/{chunk-W6UJE2OS.js.map → chunk-SXYACIJA.js.map} +0 -0
- /package/dist/{chunk-5UVD3YKW.js.map → chunk-XV2EXX7S.js.map} +0 -0
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
inspectAgentConversationBatchDeletionCapability
|
|
3
|
+
} from "./chunk-LB4AGT7B.js";
|
|
1
4
|
import {
|
|
2
5
|
createWorkspaceQueryCache
|
|
3
6
|
} from "./chunk-A4WCTHWS.js";
|
|
@@ -65,7 +68,7 @@ import {
|
|
|
65
68
|
toLocalShortDateTime,
|
|
66
69
|
updateAgentComposerDraft,
|
|
67
70
|
useProjectedAgentConversation
|
|
68
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-XV2EXX7S.js";
|
|
69
72
|
import {
|
|
70
73
|
agentRichTextContentToPromptText,
|
|
71
74
|
createAgentRichTextInputExtensions,
|
|
@@ -90,7 +93,7 @@ import {
|
|
|
90
93
|
AgentFileMentionPalette,
|
|
91
94
|
agentMentionItemKey,
|
|
92
95
|
isAgentMentionItemDisabled
|
|
93
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-FO4G2K6B.js";
|
|
94
97
|
import {
|
|
95
98
|
normalizeAgentGUIAgents,
|
|
96
99
|
projectAgentGUIAgentsToTargets
|
|
@@ -101,7 +104,7 @@ import {
|
|
|
101
104
|
DEFAULT_AGENT_MENTION_FILTER,
|
|
102
105
|
agentGuiScheduler,
|
|
103
106
|
buildWorkspaceAgentActivityListViewModel
|
|
104
|
-
} from "./chunk-
|
|
107
|
+
} from "./chunk-SOR55JUN.js";
|
|
105
108
|
import {
|
|
106
109
|
AGENT_RICH_TEXT_CARET_ANCHOR,
|
|
107
110
|
agentComposerFileMentionReferences,
|
|
@@ -128,7 +131,7 @@ import {
|
|
|
128
131
|
dispatchAgentPlanPromptAction,
|
|
129
132
|
latestPlanTurnId,
|
|
130
133
|
planImplementationPromptFromPlanTurn
|
|
131
|
-
} from "./chunk-
|
|
134
|
+
} from "./chunk-SUZQHAFB.js";
|
|
132
135
|
import {
|
|
133
136
|
useEngineSelector
|
|
134
137
|
} from "./chunk-EVQ4JY3N.js";
|
|
@@ -138,7 +141,7 @@ import {
|
|
|
138
141
|
blobToBase64,
|
|
139
142
|
normalizeAgentApprovalPurpose,
|
|
140
143
|
resolveWorkspaceLinkAction
|
|
141
|
-
} from "./chunk-
|
|
144
|
+
} from "./chunk-SXYACIJA.js";
|
|
142
145
|
import {
|
|
143
146
|
AgentTargetPresentationProvider,
|
|
144
147
|
cn,
|
|
@@ -156,7 +159,7 @@ import {
|
|
|
156
159
|
useAgentHostApi,
|
|
157
160
|
useOptionalAgentActivityRuntime,
|
|
158
161
|
useOptionalAgentHostApi
|
|
159
|
-
} from "./chunk-
|
|
162
|
+
} from "./chunk-KAF6JPGL.js";
|
|
160
163
|
import {
|
|
161
164
|
MANAGED_AGENT_ICON_FALLBACK_URL,
|
|
162
165
|
MANAGED_AGENT_ICON_URLS,
|
|
@@ -186,7 +189,7 @@ import { memo as memo15, useMemo as useMemo48 } from "react";
|
|
|
186
189
|
import { TooltipProvider as TooltipProvider8 } from "@tutti-os/ui-system";
|
|
187
190
|
|
|
188
191
|
// agent-gui/agentGuiNode/AgentGUINode.tsx
|
|
189
|
-
import { memo as memo14, useCallback as
|
|
192
|
+
import { memo as memo14, useCallback as useCallback65, useMemo as useMemo47, useRef as useRef58 } from "react";
|
|
190
193
|
import { createWorkspaceUserProjectI18nRuntime } from "@tutti-os/workspace-user-project/i18n";
|
|
191
194
|
import { createWorkspaceFileManagerI18nRuntime } from "@tutti-os/workspace-file-manager";
|
|
192
195
|
import { useReferenceProvenanceFilterCatalog } from "@tutti-os/workspace-file-reference/react";
|
|
@@ -5402,6 +5405,34 @@ function reportAgentGUIConversationFilterTargetUnresolved(input) {
|
|
|
5402
5405
|
);
|
|
5403
5406
|
}
|
|
5404
5407
|
}
|
|
5408
|
+
function reportAgentGUIConversationBatchDeletionCapabilityIncomplete(input) {
|
|
5409
|
+
const reportDiagnostic = input.runtime.reportDiagnostic;
|
|
5410
|
+
if (!reportDiagnostic) {
|
|
5411
|
+
return;
|
|
5412
|
+
}
|
|
5413
|
+
const reportFailure = (error) => {
|
|
5414
|
+
console.error(
|
|
5415
|
+
"[agent-gui-conversation-batch-delete-capability]",
|
|
5416
|
+
JSON.stringify({
|
|
5417
|
+
error: normalizeAgentGUIDiagnosticError(error),
|
|
5418
|
+
workspaceId: input.workspaceId
|
|
5419
|
+
})
|
|
5420
|
+
);
|
|
5421
|
+
};
|
|
5422
|
+
try {
|
|
5423
|
+
void Promise.resolve(
|
|
5424
|
+
reportDiagnostic.call(input.runtime, {
|
|
5425
|
+
details: { missingMethods: input.missingMethods },
|
|
5426
|
+
event: "agent.gui.conversation_batch_delete.capability_incomplete",
|
|
5427
|
+
level: "warn",
|
|
5428
|
+
source: "agent-gui",
|
|
5429
|
+
workspaceId: input.workspaceId
|
|
5430
|
+
})
|
|
5431
|
+
).catch(reportFailure);
|
|
5432
|
+
} catch (error) {
|
|
5433
|
+
reportFailure(error);
|
|
5434
|
+
}
|
|
5435
|
+
}
|
|
5405
5436
|
function reportAgentGUIMessagePageDiagnostic(input) {
|
|
5406
5437
|
const reportDiagnostic = input.runtime.reportDiagnostic;
|
|
5407
5438
|
if (!reportDiagnostic) {
|
|
@@ -5738,6 +5769,7 @@ function useAgentGUIActivation({
|
|
|
5738
5769
|
...input.cwd !== void 0 ? { cwd: input.cwd } : {},
|
|
5739
5770
|
expiresAtUnixMs: requestedAtUnixMs + ACTIVATION_EXPIRY_MS,
|
|
5740
5771
|
...input.initialTurnExpected !== void 0 ? { initialTurnExpected: input.initialTurnExpected } : {},
|
|
5772
|
+
...input.initialGoalControl ? { initialGoalControl: { ...input.initialGoalControl } } : {},
|
|
5741
5773
|
...input.railSectionKey?.trim() ? { railSectionKey: input.railSectionKey.trim() } : {},
|
|
5742
5774
|
...input.initialDisplayPrompt ? { initialDisplayPrompt: input.initialDisplayPrompt } : {},
|
|
5743
5775
|
...input.runtimeContent ? { runtimeContent: input.runtimeContent } : {},
|
|
@@ -8891,7 +8923,7 @@ function useAgentGUINewConversationActivation(input) {
|
|
|
8891
8923
|
isConversationStale
|
|
8892
8924
|
} = input;
|
|
8893
8925
|
const startConversation = useCallback15(
|
|
8894
|
-
(initialContentInput, displayPrompt, submitOptions, initialTurnExpected) => {
|
|
8926
|
+
(initialContentInput, displayPrompt, submitOptions, initialTurnExpected, initialGoalControl) => {
|
|
8895
8927
|
const target = selectedAgentTargetRef.current;
|
|
8896
8928
|
const targetData = selectedComposerTargetDataRef.current;
|
|
8897
8929
|
if (target.disabled === true) {
|
|
@@ -8969,6 +9001,7 @@ function useAgentGUINewConversationActivation(input) {
|
|
|
8969
9001
|
...railSectionKey ? { railSectionKey } : {},
|
|
8970
9002
|
initialContent: normalizedInitialContent,
|
|
8971
9003
|
...initialTurnExpected !== void 0 ? { initialTurnExpected } : {},
|
|
9004
|
+
...initialGoalControl ? { initialGoalControl } : {},
|
|
8972
9005
|
initialDisplayPrompt,
|
|
8973
9006
|
runtimeContent: toRuntimeSendContent(normalizedInitialContent),
|
|
8974
9007
|
submitDiagnostics: agentSubmitTraceDiagnostics(submitTrace),
|
|
@@ -9379,6 +9412,7 @@ function useAgentGUIGoalControlActions(input) {
|
|
|
9379
9412
|
workspaceId: input.workspaceId,
|
|
9380
9413
|
agentSessionId,
|
|
9381
9414
|
action,
|
|
9415
|
+
clientSubmitId: optimisticRequestId,
|
|
9382
9416
|
...objective !== void 0 ? { objective } : {}
|
|
9383
9417
|
}).then(() => {
|
|
9384
9418
|
clearOptimisticGoalControl(optimisticRequestId);
|
|
@@ -9746,7 +9780,8 @@ function useAgentGUISubmitInteractionActions(input) {
|
|
|
9746
9780
|
normalizedContent,
|
|
9747
9781
|
displayPromptText,
|
|
9748
9782
|
options,
|
|
9749
|
-
typedGoal ? false : void 0
|
|
9783
|
+
typedGoal ? false : void 0,
|
|
9784
|
+
typedGoal ?? void 0
|
|
9750
9785
|
);
|
|
9751
9786
|
if (activationResult) {
|
|
9752
9787
|
if (typedGoal) {
|
|
@@ -14115,11 +14150,11 @@ function useAgentGUIStatus(input) {
|
|
|
14115
14150
|
|
|
14116
14151
|
// agent-gui/agentGuiNode/AgentGUINodeView.tsx
|
|
14117
14152
|
import {
|
|
14118
|
-
useCallback as
|
|
14153
|
+
useCallback as useCallback63,
|
|
14119
14154
|
useEffect as useEffect38,
|
|
14120
14155
|
useMemo as useMemo44,
|
|
14121
|
-
useRef as
|
|
14122
|
-
useState as
|
|
14156
|
+
useRef as useRef56,
|
|
14157
|
+
useState as useState45
|
|
14123
14158
|
} from "react";
|
|
14124
14159
|
import { TooltipProvider as TooltipProvider7 } from "@tutti-os/ui-system";
|
|
14125
14160
|
|
|
@@ -15023,10 +15058,10 @@ function AgentGUIConfigMenu({
|
|
|
15023
15058
|
// agent-gui/agentGuiNode/view/AgentGUIProviderRail.tsx
|
|
15024
15059
|
import {
|
|
15025
15060
|
memo as memo4,
|
|
15026
|
-
useCallback as
|
|
15061
|
+
useCallback as useCallback48,
|
|
15027
15062
|
useMemo as useMemo35,
|
|
15028
|
-
useRef as
|
|
15029
|
-
useState as
|
|
15063
|
+
useRef as useRef43,
|
|
15064
|
+
useState as useState31
|
|
15030
15065
|
} from "react";
|
|
15031
15066
|
import { Tooltip as Tooltip8, TooltipContent as TooltipContent8, TooltipTrigger as TooltipTrigger8 } from "@tutti-os/ui-system";
|
|
15032
15067
|
|
|
@@ -16951,7 +16986,7 @@ function AgentSessionChrome({
|
|
|
16951
16986
|
}
|
|
16952
16987
|
|
|
16953
16988
|
// agent-gui/agentGuiNode/AgentComposer.tsx
|
|
16954
|
-
import { useCallback as
|
|
16989
|
+
import { useCallback as useCallback45, useEffect as useEffect28, useRef as useRef40, useState as useState27 } from "react";
|
|
16955
16990
|
import { repairMentionPaletteHighlight } from "@tutti-os/ui-rich-text/at-panel";
|
|
16956
16991
|
|
|
16957
16992
|
// agent-gui/agentGuiNode/AgentSlashStatusPanel.tsx
|
|
@@ -17817,6 +17852,7 @@ function hasInlineOverflow(element) {
|
|
|
17817
17852
|
function useComposerLayout({
|
|
17818
17853
|
isHeroLayout,
|
|
17819
17854
|
inputDisabled,
|
|
17855
|
+
projectMissingProbeEnabled,
|
|
17820
17856
|
showFileMentionPalette,
|
|
17821
17857
|
showFloatingCommandMenu,
|
|
17822
17858
|
previewMode,
|
|
@@ -17844,7 +17880,7 @@ function useComposerLayout({
|
|
|
17844
17880
|
const activePromptTip = showPromptTips ? promptTips[0] ?? null : null;
|
|
17845
17881
|
const showHeroProjectSelector = isHeroLayout;
|
|
17846
17882
|
const showProjectRow = isHeroLayout;
|
|
17847
|
-
const showProjectMissingProbe = !showProjectRow && Boolean(composerSettings.projectLocked) && selectedProjectPath !== "" && // Remote runtimes (shared/cloud sandbox) run their cwd off the local
|
|
17883
|
+
const showProjectMissingProbe = projectMissingProbeEnabled && !showProjectRow && Boolean(composerSettings.projectLocked) && selectedProjectPath !== "" && // Remote runtimes (shared/cloud sandbox) run their cwd off the local
|
|
17848
17884
|
// filesystem, so the local existence check would always false-positive.
|
|
17849
17885
|
!composerSettings.projectPathIsRemote;
|
|
17850
17886
|
const activePromptTipId = activePromptTip?.id ?? null;
|
|
@@ -27238,6 +27274,36 @@ function isVersionConflict(error) {
|
|
|
27238
27274
|
return typeof error === "object" && error !== null && "code" in error && error.code === "agent_quick_prompt_conflict" && "reason" in error && error.reason === "agent_quick_prompt_version_conflict";
|
|
27239
27275
|
}
|
|
27240
27276
|
|
|
27277
|
+
// agent-gui/agentGuiNode/composer/useScopedProjectMissingState.ts
|
|
27278
|
+
import { useCallback as useCallback44, useRef as useRef39, useState as useState26 } from "react";
|
|
27279
|
+
function useScopedProjectMissingState(scopeKey) {
|
|
27280
|
+
const identityRef = useRef39({
|
|
27281
|
+
key: scopeKey,
|
|
27282
|
+
revision: 0
|
|
27283
|
+
});
|
|
27284
|
+
if (identityRef.current.key !== scopeKey) {
|
|
27285
|
+
identityRef.current = {
|
|
27286
|
+
key: scopeKey,
|
|
27287
|
+
revision: identityRef.current.revision + 1
|
|
27288
|
+
};
|
|
27289
|
+
}
|
|
27290
|
+
const identity = identityRef.current;
|
|
27291
|
+
const [result, setResult] = useState26({
|
|
27292
|
+
identity,
|
|
27293
|
+
isMissing: false
|
|
27294
|
+
});
|
|
27295
|
+
const reportMissing = useCallback44(
|
|
27296
|
+
(isMissing) => {
|
|
27297
|
+
if (identityRef.current !== identity) {
|
|
27298
|
+
return;
|
|
27299
|
+
}
|
|
27300
|
+
setResult({ identity, isMissing });
|
|
27301
|
+
},
|
|
27302
|
+
[identity]
|
|
27303
|
+
);
|
|
27304
|
+
return [result.identity === identity && result.isMissing, reportMissing];
|
|
27305
|
+
}
|
|
27306
|
+
|
|
27241
27307
|
// agent-gui/agentGuiNode/model/agentExternalPromptEntries.ts
|
|
27242
27308
|
function resolveAgentExternalPromptEntries(files, resolver) {
|
|
27243
27309
|
if (!resolver) return files.map(preparedEntry);
|
|
@@ -27330,6 +27396,7 @@ function AgentComposer(props) {
|
|
|
27330
27396
|
isInterrupting,
|
|
27331
27397
|
isSendingTurn,
|
|
27332
27398
|
isSubmittingPrompt,
|
|
27399
|
+
projectMissingProbeEnabled = true,
|
|
27333
27400
|
uiLanguage = "en",
|
|
27334
27401
|
isActive = true,
|
|
27335
27402
|
previewMode = false,
|
|
@@ -27385,55 +27452,55 @@ function AgentComposer(props) {
|
|
|
27385
27452
|
hadPrefill: agentComposerDraftHasContent(draftContent)
|
|
27386
27453
|
});
|
|
27387
27454
|
};
|
|
27388
|
-
const [isPaletteOpen, setIsPaletteOpen] =
|
|
27389
|
-
const [isReviewPickerOpen, setIsReviewPickerOpen] =
|
|
27390
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
27391
|
-
const [mentionHighlightedKey, setMentionHighlightedKey] =
|
|
27392
|
-
const [shouldCenterMentionHighlight, setShouldCenterMentionHighlight] =
|
|
27455
|
+
const [isPaletteOpen, setIsPaletteOpen] = useState27(true);
|
|
27456
|
+
const [isReviewPickerOpen, setIsReviewPickerOpen] = useState27(false);
|
|
27457
|
+
const [highlightedIndex, setHighlightedIndex] = useState27(0);
|
|
27458
|
+
const [mentionHighlightedKey, setMentionHighlightedKey] = useState27(null);
|
|
27459
|
+
const [shouldCenterMentionHighlight, setShouldCenterMentionHighlight] = useState27(false);
|
|
27393
27460
|
const [
|
|
27394
27461
|
shouldResetMentionHighlightToFilter,
|
|
27395
27462
|
setShouldResetMentionHighlightToFilter
|
|
27396
|
-
] =
|
|
27397
|
-
const [paletteDraftPrompt, setPaletteDraftPrompt] =
|
|
27463
|
+
] = useState27(false);
|
|
27464
|
+
const [paletteDraftPrompt, setPaletteDraftPrompt] = useState27(
|
|
27398
27465
|
goalDraftObjective ?? draftPrompt
|
|
27399
27466
|
);
|
|
27400
|
-
const [fileMentionSuggestion, setFileMentionSuggestion] =
|
|
27401
|
-
const [isSelectedProjectMissing, setIsSelectedProjectMissing] =
|
|
27402
|
-
const [isSlashStatusPanelOpen, setIsSlashStatusPanelOpen] =
|
|
27467
|
+
const [fileMentionSuggestion, setFileMentionSuggestion] = useState27(null);
|
|
27468
|
+
const [isSelectedProjectMissing, setIsSelectedProjectMissing] = useScopedProjectMissingState(draftScopeKey);
|
|
27469
|
+
const [isSlashStatusPanelOpen, setIsSlashStatusPanelOpen] = useState27(false);
|
|
27403
27470
|
const slashStatusAgentSessionId = slashStatus?.agentSessionId ?? null;
|
|
27404
|
-
const previousSlashStatusAgentSessionIdRef =
|
|
27471
|
+
const previousSlashStatusAgentSessionIdRef = useRef40(
|
|
27405
27472
|
slashStatusAgentSessionId
|
|
27406
27473
|
);
|
|
27407
27474
|
const selectedProjectPath = composerSettings.selectedProjectPath?.trim() ?? "";
|
|
27408
27475
|
const selectedProjectSectionKey = composerSettings.selectedProjectSectionKey?.trim() ?? "";
|
|
27409
|
-
const previousSelectedProjectPathRef =
|
|
27410
|
-
const composerRef =
|
|
27411
|
-
const inputShellRef =
|
|
27412
|
-
const promptInputAreaRef =
|
|
27413
|
-
const paletteContentRef =
|
|
27414
|
-
const draftPromptRef =
|
|
27415
|
-
const draftImagesRef =
|
|
27416
|
-
const draftFilesRef =
|
|
27417
|
-
const draftLargeTextsRef =
|
|
27418
|
-
const draftByScopeKeyRef =
|
|
27476
|
+
const previousSelectedProjectPathRef = useRef40(selectedProjectPath);
|
|
27477
|
+
const composerRef = useRef40(null);
|
|
27478
|
+
const inputShellRef = useRef40(null);
|
|
27479
|
+
const promptInputAreaRef = useRef40(null);
|
|
27480
|
+
const paletteContentRef = useRef40(null);
|
|
27481
|
+
const draftPromptRef = useRef40(draftPrompt);
|
|
27482
|
+
const draftImagesRef = useRef40(draftImages);
|
|
27483
|
+
const draftFilesRef = useRef40(draftFiles);
|
|
27484
|
+
const draftLargeTextsRef = useRef40(draftLargeTexts);
|
|
27485
|
+
const draftByScopeKeyRef = useRef40({
|
|
27419
27486
|
[draftScopeKey]: draftContent
|
|
27420
27487
|
});
|
|
27421
27488
|
draftByScopeKeyRef.current[draftScopeKey] = draftContent;
|
|
27422
|
-
const promptTipRef =
|
|
27489
|
+
const promptTipRef = useRef40(null);
|
|
27423
27490
|
const { mentionControllerRef, mentionSearchState } = useAgentMentionSearchController(referenceProvenanceFilter);
|
|
27424
|
-
const editorHandleRef =
|
|
27425
|
-
const wasActiveRef =
|
|
27426
|
-
const lastComposerFocusRequestRef =
|
|
27427
|
-
const autoMentionHighlightedKeyRef =
|
|
27428
|
-
const [isPromptTipOverflowing, setIsPromptTipOverflowing] =
|
|
27429
|
-
const [dockComposerInputHeight, setDockComposerInputHeight] =
|
|
27491
|
+
const editorHandleRef = useRef40(null);
|
|
27492
|
+
const wasActiveRef = useRef40(isActive);
|
|
27493
|
+
const lastComposerFocusRequestRef = useRef40(null);
|
|
27494
|
+
const autoMentionHighlightedKeyRef = useRef40(null);
|
|
27495
|
+
const [isPromptTipOverflowing, setIsPromptTipOverflowing] = useState27(false);
|
|
27496
|
+
const [dockComposerInputHeight, setDockComposerInputHeight] = useState27(
|
|
27430
27497
|
DOCK_COMPOSER_INPUT_MIN_HEIGHT2
|
|
27431
27498
|
);
|
|
27432
|
-
const [dockComposerInputMaxHeight, setDockComposerInputMaxHeight] =
|
|
27499
|
+
const [dockComposerInputMaxHeight, setDockComposerInputMaxHeight] = useState27(
|
|
27433
27500
|
DOCK_COMPOSER_INPUT_MAX_HEIGHT2
|
|
27434
27501
|
);
|
|
27435
|
-
const [dockComposerAttachmentHeight, setDockComposerAttachmentHeight] =
|
|
27436
|
-
const [dockComposerTextHeight, setDockComposerTextHeight] =
|
|
27502
|
+
const [dockComposerAttachmentHeight, setDockComposerAttachmentHeight] = useState27(0);
|
|
27503
|
+
const [dockComposerTextHeight, setDockComposerTextHeight] = useState27(
|
|
27437
27504
|
DOCK_COMPOSER_INPUT_MIN_HEIGHT2
|
|
27438
27505
|
);
|
|
27439
27506
|
const paletteCatalog = useComposerPaletteCatalog({
|
|
@@ -27646,7 +27713,7 @@ function AgentComposer(props) {
|
|
|
27646
27713
|
onLinkAction
|
|
27647
27714
|
});
|
|
27648
27715
|
const { addDraftFiles, addDraftImages } = attachments;
|
|
27649
|
-
const addExternalPromptEntries =
|
|
27716
|
+
const addExternalPromptEntries = useCallback45(
|
|
27650
27717
|
(files) => {
|
|
27651
27718
|
const entries = resolveAgentExternalPromptEntries(
|
|
27652
27719
|
files,
|
|
@@ -27685,11 +27752,11 @@ function AgentComposer(props) {
|
|
|
27685
27752
|
defaultHandoffMenuLabel: labels.handoffConversationMenu
|
|
27686
27753
|
});
|
|
27687
27754
|
const { inputDisabled, isHeroLayout } = providerState;
|
|
27688
|
-
const closeQuickPromptCompetingDisclosure =
|
|
27755
|
+
const closeQuickPromptCompetingDisclosure = useCallback45(() => {
|
|
27689
27756
|
mentionActions.closeFileMentionPalette();
|
|
27690
27757
|
slashActions.closeSlashFloatingMenu();
|
|
27691
27758
|
}, [mentionActions, slashActions]);
|
|
27692
|
-
const insertQuickPrompt =
|
|
27759
|
+
const insertQuickPrompt = useCallback45((content) => {
|
|
27693
27760
|
editorHandleRef.current?.insertPlainTextAtSelection(content);
|
|
27694
27761
|
}, []);
|
|
27695
27762
|
const quickPromptLibrary = useAgentQuickPromptLibrary({
|
|
@@ -27724,6 +27791,7 @@ function AgentComposer(props) {
|
|
|
27724
27791
|
const layout = useComposerLayout({
|
|
27725
27792
|
isHeroLayout,
|
|
27726
27793
|
inputDisabled,
|
|
27794
|
+
projectMissingProbeEnabled,
|
|
27727
27795
|
showFileMentionPalette,
|
|
27728
27796
|
showFloatingCommandMenu,
|
|
27729
27797
|
previewMode,
|
|
@@ -27822,7 +27890,7 @@ function AgentComposer(props) {
|
|
|
27822
27890
|
}
|
|
27823
27891
|
|
|
27824
27892
|
// agent-gui/agentGuiNode/AgentHomeSuggestions.tsx
|
|
27825
|
-
import { memo as memo2, useState as
|
|
27893
|
+
import { memo as memo2, useState as useState28 } from "react";
|
|
27826
27894
|
import { ArrowLeftRight, Code, Compass, Import, Pencil, X as X6 } from "lucide-react";
|
|
27827
27895
|
import { jsx as jsx44, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
27828
27896
|
function TuttiIcon(props) {
|
|
@@ -27933,7 +28001,7 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
|
|
|
27933
28001
|
closeLabel
|
|
27934
28002
|
}) {
|
|
27935
28003
|
"use memo";
|
|
27936
|
-
const [activeCategoryId, setActiveCategoryId] =
|
|
28004
|
+
const [activeCategoryId, setActiveCategoryId] = useState28(null);
|
|
27937
28005
|
if (categories.length === 0) {
|
|
27938
28006
|
return null;
|
|
27939
28007
|
}
|
|
@@ -28208,10 +28276,10 @@ import {
|
|
|
28208
28276
|
// shared/agentEnv/agentTargetSetupController.tsx
|
|
28209
28277
|
import {
|
|
28210
28278
|
createContext,
|
|
28211
|
-
useCallback as
|
|
28279
|
+
useCallback as useCallback46,
|
|
28212
28280
|
useContext,
|
|
28213
28281
|
useMemo as useMemo33,
|
|
28214
|
-
useRef as
|
|
28282
|
+
useRef as useRef41
|
|
28215
28283
|
} from "react";
|
|
28216
28284
|
import { toast as toast2 } from "@tutti-os/ui-system";
|
|
28217
28285
|
|
|
@@ -28281,7 +28349,7 @@ function useCreateAgentTargetSetupController(agentTarget) {
|
|
|
28281
28349
|
() => enabled ? hostApi?.agentTargetSetup?.watch({ agentTargetId }) ?? null : null,
|
|
28282
28350
|
[agentTargetId, enabled, hostApi?.agentTargetSetup]
|
|
28283
28351
|
);
|
|
28284
|
-
const showNotification =
|
|
28352
|
+
const showNotification = useCallback46(
|
|
28285
28353
|
(notification) => showTargetSetupFailureNotification({
|
|
28286
28354
|
hostToast: hostApi?.toast,
|
|
28287
28355
|
notification,
|
|
@@ -28289,7 +28357,7 @@ function useCreateAgentTargetSetupController(agentTarget) {
|
|
|
28289
28357
|
}),
|
|
28290
28358
|
[hostApi?.toast, t]
|
|
28291
28359
|
);
|
|
28292
|
-
const logCommandError =
|
|
28360
|
+
const logCommandError = useCallback46(
|
|
28293
28361
|
(command, error) => {
|
|
28294
28362
|
hostApi?.debug?.logRuntimeDiagnostics({
|
|
28295
28363
|
agentTargetId,
|
|
@@ -28299,7 +28367,7 @@ function useCreateAgentTargetSetupController(agentTarget) {
|
|
|
28299
28367
|
},
|
|
28300
28368
|
[agentTargetId, hostApi?.debug]
|
|
28301
28369
|
);
|
|
28302
|
-
const controllerRef =
|
|
28370
|
+
const controllerRef = useRef41(null);
|
|
28303
28371
|
const targetKey = enabled ? agentTargetId : "";
|
|
28304
28372
|
const controllerEntry = useMemo33(() => {
|
|
28305
28373
|
const previousState = controllerRef.current?.targetKey === targetKey ? controllerRef.current.controller.getSnapshot() : null;
|
|
@@ -29233,8 +29301,8 @@ function EmptyHeroTitle({
|
|
|
29233
29301
|
|
|
29234
29302
|
// agent-gui/agentGuiNode/view/AgentGUIProviderManagerDialog.tsx
|
|
29235
29303
|
import {
|
|
29236
|
-
useRef as
|
|
29237
|
-
useState as
|
|
29304
|
+
useRef as useRef42,
|
|
29305
|
+
useState as useState29
|
|
29238
29306
|
} from "react";
|
|
29239
29307
|
import { CircleMinus, CirclePlus } from "lucide-react";
|
|
29240
29308
|
import {
|
|
@@ -29267,20 +29335,20 @@ function AgentGUIProviderManagerDialog({
|
|
|
29267
29335
|
const disabledTargets = targets.filter(
|
|
29268
29336
|
(target) => hidden.has(target.targetId)
|
|
29269
29337
|
);
|
|
29270
|
-
const [editing, setEditing] =
|
|
29271
|
-
const [dragState, setDragState] =
|
|
29338
|
+
const [editing, setEditing] = useState29(false);
|
|
29339
|
+
const [dragState, setDragState] = useState29(
|
|
29272
29340
|
null
|
|
29273
29341
|
);
|
|
29274
|
-
const [dragOverZone, setDragOverZone] =
|
|
29342
|
+
const [dragOverZone, setDragOverZone] = useState29(
|
|
29275
29343
|
null
|
|
29276
29344
|
);
|
|
29277
|
-
const [dragPreview, setDragPreview] =
|
|
29278
|
-
const dragStateRef =
|
|
29279
|
-
const dragPreviewRef =
|
|
29280
|
-
const [longPressTargetId, setLongPressTargetId] =
|
|
29345
|
+
const [dragPreview, setDragPreview] = useState29(null);
|
|
29346
|
+
const dragStateRef = useRef42(null);
|
|
29347
|
+
const dragPreviewRef = useRef42(null);
|
|
29348
|
+
const [longPressTargetId, setLongPressTargetId] = useState29(
|
|
29281
29349
|
null
|
|
29282
29350
|
);
|
|
29283
|
-
const longPressOriginRef =
|
|
29351
|
+
const longPressOriginRef = useRef42(null);
|
|
29284
29352
|
const finalAvailableAgent = availableTargets.length === 1;
|
|
29285
29353
|
const showRunningAgentBlocked = (targetId) => {
|
|
29286
29354
|
const target = targets.find((candidate) => candidate.targetId === targetId);
|
|
@@ -29737,7 +29805,7 @@ function AgentGUIProviderManagerDialog({
|
|
|
29737
29805
|
}
|
|
29738
29806
|
|
|
29739
29807
|
// agent-gui/agentGuiNode/view/useAgentGUIProviderRailPreferences.ts
|
|
29740
|
-
import { useCallback as
|
|
29808
|
+
import { useCallback as useCallback47, useEffect as useEffect29, useState as useState30 } from "react";
|
|
29741
29809
|
function readAgentGUIProviderRailPreferences(storageKey) {
|
|
29742
29810
|
return parseAgentGUIProviderRailPreferences(
|
|
29743
29811
|
globalThis.localStorage?.getItem(storageKey)
|
|
@@ -29745,7 +29813,7 @@ function readAgentGUIProviderRailPreferences(storageKey) {
|
|
|
29745
29813
|
}
|
|
29746
29814
|
function useAgentGUIProviderRailPreferences() {
|
|
29747
29815
|
const storageKey = agentGUIProviderRailOrderStorageKey();
|
|
29748
|
-
const [preferences, setPreferences] =
|
|
29816
|
+
const [preferences, setPreferences] = useState30(
|
|
29749
29817
|
() => readAgentGUIProviderRailPreferences(storageKey)
|
|
29750
29818
|
);
|
|
29751
29819
|
useEffect29(() => {
|
|
@@ -29770,7 +29838,7 @@ function useAgentGUIProviderRailPreferences() {
|
|
|
29770
29838
|
);
|
|
29771
29839
|
};
|
|
29772
29840
|
}, [storageKey]);
|
|
29773
|
-
const persistPreferences =
|
|
29841
|
+
const persistPreferences = useCallback47(
|
|
29774
29842
|
(nextPreferences) => {
|
|
29775
29843
|
setPreferences(nextPreferences);
|
|
29776
29844
|
globalThis.localStorage?.setItem(
|
|
@@ -29878,9 +29946,9 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
29878
29946
|
persistPreferences: persistProviderRailPreferences,
|
|
29879
29947
|
preferences: providerRailPreferences
|
|
29880
29948
|
} = useAgentGUIProviderRailPreferences();
|
|
29881
|
-
const [dragState, setDragState] =
|
|
29882
|
-
const dragStateRef =
|
|
29883
|
-
const setProviderRailDragState =
|
|
29949
|
+
const [dragState, setDragState] = useState31(null);
|
|
29950
|
+
const dragStateRef = useRef43(null);
|
|
29951
|
+
const setProviderRailDragState = useCallback48(
|
|
29884
29952
|
(nextDragState) => {
|
|
29885
29953
|
dragStateRef.current = nextDragState;
|
|
29886
29954
|
setDragState(nextDragState);
|
|
@@ -29944,11 +30012,11 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
29944
30012
|
[effectiveHiddenTargetIds, providerTiles]
|
|
29945
30013
|
);
|
|
29946
30014
|
const allTileSelected = conversationFilter.kind === "all";
|
|
29947
|
-
const selectAllProviders =
|
|
30015
|
+
const selectAllProviders = useCallback48(() => {
|
|
29948
30016
|
onUpdateConversationFilter({ kind: "all" });
|
|
29949
30017
|
onRequestComposerFocus();
|
|
29950
30018
|
}, [onRequestComposerFocus, onUpdateConversationFilter]);
|
|
29951
|
-
const selectAgentTargetTile =
|
|
30019
|
+
const selectAgentTargetTile = useCallback48(
|
|
29952
30020
|
(target) => {
|
|
29953
30021
|
const agentTargetId = target.agentTargetId?.trim() ?? "";
|
|
29954
30022
|
if (!agentTargetId) {
|
|
@@ -29962,10 +30030,10 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
29962
30030
|
},
|
|
29963
30031
|
[onRequestComposerFocus, onSelectConversationFilterTarget]
|
|
29964
30032
|
);
|
|
29965
|
-
const clearProviderRailDragState =
|
|
30033
|
+
const clearProviderRailDragState = useCallback48(() => {
|
|
29966
30034
|
setProviderRailDragState(null);
|
|
29967
30035
|
}, [setProviderRailDragState]);
|
|
29968
|
-
const handleProviderRailDragStart =
|
|
30036
|
+
const handleProviderRailDragStart = useCallback48(
|
|
29969
30037
|
(event, target) => {
|
|
29970
30038
|
if (previewMode || agentTargetsLoading) {
|
|
29971
30039
|
event.preventDefault();
|
|
@@ -29981,7 +30049,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
29981
30049
|
},
|
|
29982
30050
|
[previewMode, agentTargetsLoading, setProviderRailDragState]
|
|
29983
30051
|
);
|
|
29984
|
-
const handleProviderRailDragOver =
|
|
30052
|
+
const handleProviderRailDragOver = useCallback48(
|
|
29985
30053
|
(event, target) => {
|
|
29986
30054
|
if (previewMode || agentTargetsLoading || !dragState) {
|
|
29987
30055
|
return;
|
|
@@ -30013,7 +30081,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
30013
30081
|
},
|
|
30014
30082
|
[dragState, previewMode, agentTargetsLoading, setProviderRailDragState]
|
|
30015
30083
|
);
|
|
30016
|
-
const commitProviderRailDragDrop =
|
|
30084
|
+
const commitProviderRailDragDrop = useCallback48(
|
|
30017
30085
|
(event) => {
|
|
30018
30086
|
const fallbackDraggedTargetId = event.dataTransfer.getData("text/plain").trim();
|
|
30019
30087
|
const activeDragState = dragStateRef.current ?? dragState ?? (fallbackDraggedTargetId ? {
|
|
@@ -30142,7 +30210,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
30142
30210
|
onUpdateConversationFilter({ kind: "all" });
|
|
30143
30211
|
}
|
|
30144
30212
|
};
|
|
30145
|
-
const handleProviderRailContainerDragOver =
|
|
30213
|
+
const handleProviderRailContainerDragOver = useCallback48(
|
|
30146
30214
|
(event) => {
|
|
30147
30215
|
const activeDragState = dragStateRef.current ?? dragState;
|
|
30148
30216
|
if (!activeDragState || previewMode || agentTargetsLoading) {
|
|
@@ -30352,10 +30420,10 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
|
|
|
30352
30420
|
});
|
|
30353
30421
|
|
|
30354
30422
|
// agent-gui/agentGuiNode/controller/AgentGUIConversationRailController.tsx
|
|
30355
|
-
import { memo as memo9, useState as
|
|
30423
|
+
import { memo as memo9, useState as useState37 } from "react";
|
|
30356
30424
|
|
|
30357
30425
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailPane.tsx
|
|
30358
|
-
import { Fragment as Fragment19, memo as memo8, useEffect as useEffect30, useMemo as useMemo38, useRef as
|
|
30426
|
+
import { Fragment as Fragment19, memo as memo8, useEffect as useEffect30, useMemo as useMemo38, useRef as useRef46, useState as useState36 } from "react";
|
|
30359
30427
|
import { Button as SystemButton } from "@tutti-os/ui-system";
|
|
30360
30428
|
import { ScrollArea as ScrollArea2 } from "@tutti-os/ui-system/components";
|
|
30361
30429
|
import { CreateChatIcon as CreateChatIcon2 } from "@tutti-os/ui-system/icons";
|
|
@@ -31098,7 +31166,7 @@ function reduceAgentGUIConversationRailViewState(state, action) {
|
|
|
31098
31166
|
}
|
|
31099
31167
|
|
|
31100
31168
|
// agent-gui/agentGuiNode/controller/useAgentGUIProjectDrag.ts
|
|
31101
|
-
import { useCallback as
|
|
31169
|
+
import { useCallback as useCallback49, useState as useState32 } from "react";
|
|
31102
31170
|
var PROJECT_DRAG_SCROLL_EDGE_PX = 40;
|
|
31103
31171
|
function projectDragAutoScrollDelta(clientY, bounds) {
|
|
31104
31172
|
if (clientY < bounds.top + PROJECT_DRAG_SCROLL_EDGE_PX) {
|
|
@@ -31116,9 +31184,9 @@ function projectDragAutoScrollDelta(clientY, bounds) {
|
|
|
31116
31184
|
return 0;
|
|
31117
31185
|
}
|
|
31118
31186
|
function useAgentGUIProjectDrag(input) {
|
|
31119
|
-
const [dragState, setDragState] =
|
|
31120
|
-
const [isMovePending, setIsMovePending] =
|
|
31121
|
-
const [runtime] =
|
|
31187
|
+
const [dragState, setDragState] = useState32(null);
|
|
31188
|
+
const [isMovePending, setIsMovePending] = useState32(false);
|
|
31189
|
+
const [runtime] = useState32(() => ({
|
|
31122
31190
|
active: false,
|
|
31123
31191
|
clientY: null,
|
|
31124
31192
|
dragState: null,
|
|
@@ -31126,14 +31194,14 @@ function useAgentGUIProjectDrag(input) {
|
|
|
31126
31194
|
image: null,
|
|
31127
31195
|
viewport: null
|
|
31128
31196
|
}));
|
|
31129
|
-
const stopAutoScroll =
|
|
31197
|
+
const stopAutoScroll = useCallback49(() => {
|
|
31130
31198
|
if (runtime.frame !== null) {
|
|
31131
31199
|
window.cancelAnimationFrame(runtime.frame);
|
|
31132
31200
|
runtime.frame = null;
|
|
31133
31201
|
}
|
|
31134
31202
|
runtime.clientY = null;
|
|
31135
31203
|
}, [runtime]);
|
|
31136
|
-
const clear =
|
|
31204
|
+
const clear = useCallback49(() => {
|
|
31137
31205
|
stopAutoScroll();
|
|
31138
31206
|
runtime.image?.remove();
|
|
31139
31207
|
runtime.image = null;
|
|
@@ -31142,7 +31210,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
31142
31210
|
runtime.viewport = null;
|
|
31143
31211
|
setDragState(null);
|
|
31144
31212
|
}, [runtime, stopAutoScroll]);
|
|
31145
|
-
const runAutoScroll =
|
|
31213
|
+
const runAutoScroll = useCallback49(() => {
|
|
31146
31214
|
runtime.frame = null;
|
|
31147
31215
|
const viewport = runtime.viewport ?? input.scrollViewportRef.current;
|
|
31148
31216
|
if (!runtime.active || !viewport || runtime.clientY === null) return;
|
|
@@ -31153,7 +31221,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
31153
31221
|
runtime.frame = window.requestAnimationFrame(runAutoScroll);
|
|
31154
31222
|
}
|
|
31155
31223
|
}, [input.scrollViewportRef, runtime]);
|
|
31156
|
-
const trackPosition =
|
|
31224
|
+
const trackPosition = useCallback49(
|
|
31157
31225
|
(clientY) => {
|
|
31158
31226
|
if (!runtime.active) return;
|
|
31159
31227
|
runtime.clientY = clientY;
|
|
@@ -31163,7 +31231,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
31163
31231
|
},
|
|
31164
31232
|
[runAutoScroll, runtime]
|
|
31165
31233
|
);
|
|
31166
|
-
const start =
|
|
31234
|
+
const start = useCallback49(
|
|
31167
31235
|
(section, event) => {
|
|
31168
31236
|
const projectId = section.project?.id?.trim() ?? "";
|
|
31169
31237
|
if (input.disabled || isMovePending || !projectId) {
|
|
@@ -31204,7 +31272,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
31204
31272
|
},
|
|
31205
31273
|
[input.disabled, isMovePending, runtime]
|
|
31206
31274
|
);
|
|
31207
|
-
const updateTarget =
|
|
31275
|
+
const updateTarget = useCallback49(
|
|
31208
31276
|
(section, edge, event) => {
|
|
31209
31277
|
const targetId = section.project?.id?.trim() ?? "";
|
|
31210
31278
|
const currentDragState = runtime.dragState;
|
|
@@ -31244,7 +31312,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
31244
31312
|
},
|
|
31245
31313
|
[input.userProjects, runtime, trackPosition]
|
|
31246
31314
|
);
|
|
31247
|
-
const drop =
|
|
31315
|
+
const drop = useCallback49(
|
|
31248
31316
|
async (event) => {
|
|
31249
31317
|
const currentDragState = runtime.dragState;
|
|
31250
31318
|
if (!currentDragState || !runtime.active) return;
|
|
@@ -31264,7 +31332,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
31264
31332
|
},
|
|
31265
31333
|
[clear, input.onMoveProject, runtime]
|
|
31266
31334
|
);
|
|
31267
|
-
const keepValidDropTarget =
|
|
31335
|
+
const keepValidDropTarget = useCallback49(
|
|
31268
31336
|
(event) => {
|
|
31269
31337
|
if (!runtime.active || !runtime.dragState?.canDrop) return;
|
|
31270
31338
|
event.preventDefault();
|
|
@@ -31272,7 +31340,7 @@ function useAgentGUIProjectDrag(input) {
|
|
|
31272
31340
|
},
|
|
31273
31341
|
[runtime]
|
|
31274
31342
|
);
|
|
31275
|
-
const installGlobalListeners =
|
|
31343
|
+
const installGlobalListeners = useCallback49(() => {
|
|
31276
31344
|
const clearOnGlobalEnd = () => clear();
|
|
31277
31345
|
const trackGlobalPosition = (event) => trackPosition(event.clientY);
|
|
31278
31346
|
document.addEventListener("dragend", clearOnGlobalEnd, true);
|
|
@@ -31298,10 +31366,10 @@ function useAgentGUIProjectDrag(input) {
|
|
|
31298
31366
|
}
|
|
31299
31367
|
|
|
31300
31368
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailSection.tsx
|
|
31301
|
-
import { memo as memo7, useCallback as
|
|
31369
|
+
import { memo as memo7, useCallback as useCallback53 } from "react";
|
|
31302
31370
|
|
|
31303
31371
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailItem.tsx
|
|
31304
|
-
import { memo as memo5, useCallback as
|
|
31372
|
+
import { memo as memo5, useCallback as useCallback51, useMemo as useMemo37 } from "react";
|
|
31305
31373
|
import { ExternalLink as ExternalLink3 } from "lucide-react";
|
|
31306
31374
|
import { IssueIcon, NewWorkspaceLinedIcon as NewWorkspaceLinedIcon2, cn as cn7 } from "@tutti-os/ui-system";
|
|
31307
31375
|
import { WorkspaceUserProjectSelect as WorkspaceUserProjectSelect2 } from "@tutti-os/workspace-user-project/ui";
|
|
@@ -31538,10 +31606,10 @@ function AgentGUIConversationRailRelativeTime({
|
|
|
31538
31606
|
// agent-gui/agentGuiNode/view/AgentGUIConversationActionsMenu.tsx
|
|
31539
31607
|
import {
|
|
31540
31608
|
Fragment as Fragment16,
|
|
31541
|
-
useCallback as
|
|
31609
|
+
useCallback as useCallback50,
|
|
31542
31610
|
useMemo as useMemo36,
|
|
31543
|
-
useRef as
|
|
31544
|
-
useState as
|
|
31611
|
+
useRef as useRef44,
|
|
31612
|
+
useState as useState33
|
|
31545
31613
|
} from "react";
|
|
31546
31614
|
import {
|
|
31547
31615
|
AtSign,
|
|
@@ -31622,7 +31690,7 @@ async function readWorkspaceImageAsAttachment(readFile, input) {
|
|
|
31622
31690
|
}
|
|
31623
31691
|
function useAgentGUIClipboardWriter(labels) {
|
|
31624
31692
|
const agentHostApi = useOptionalAgentHostApi();
|
|
31625
|
-
return
|
|
31693
|
+
return useCallback50(
|
|
31626
31694
|
(value, toastHandle) => {
|
|
31627
31695
|
const payload = typeof value === "string" ? { text: value } : value;
|
|
31628
31696
|
const clipboard = agentHostApi?.clipboard;
|
|
@@ -31658,7 +31726,7 @@ function useAgentGUIConversationCopyAction(labels) {
|
|
|
31658
31726
|
const agentHostApi = useOptionalAgentHostApi();
|
|
31659
31727
|
const agentActivityRuntime = useOptionalAgentActivityRuntime();
|
|
31660
31728
|
const writeClipboardValue = useAgentGUIClipboardWriter(labels);
|
|
31661
|
-
return
|
|
31729
|
+
return useCallback50(
|
|
31662
31730
|
(action, { conversation, uiLanguage, workspaceId }) => {
|
|
31663
31731
|
if (action === "copy-reference") {
|
|
31664
31732
|
writeClipboardValue(
|
|
@@ -31751,9 +31819,9 @@ function useConversationActionGroups({
|
|
|
31751
31819
|
const agentHostApi = useOptionalAgentHostApi();
|
|
31752
31820
|
const agentActivityRuntime = useOptionalAgentActivityRuntime();
|
|
31753
31821
|
const copyConversationValue = useAgentGUIConversationCopyAction(labels);
|
|
31754
|
-
const [resetKey, setResetKey] =
|
|
31755
|
-
const pendingActionRef =
|
|
31756
|
-
const run =
|
|
31822
|
+
const [resetKey, setResetKey] = useState33(0);
|
|
31823
|
+
const pendingActionRef = useRef44(false);
|
|
31824
|
+
const run = useCallback50(
|
|
31757
31825
|
(action) => {
|
|
31758
31826
|
if (pendingActionRef.current) {
|
|
31759
31827
|
return;
|
|
@@ -31845,7 +31913,7 @@ function AgentGUIConversationActionsDropdown({
|
|
|
31845
31913
|
menu,
|
|
31846
31914
|
moreSessionActionsLabel
|
|
31847
31915
|
}) {
|
|
31848
|
-
const [open, setOpen] =
|
|
31916
|
+
const [open, setOpen] = useState33(false);
|
|
31849
31917
|
return /* @__PURE__ */ jsxs41(DropdownMenu4, { onOpenChange: setOpen, children: [
|
|
31850
31918
|
/* @__PURE__ */ jsx58(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx58(
|
|
31851
31919
|
BareIconButton2,
|
|
@@ -31875,7 +31943,7 @@ function AgentGUIConversationActionsContextMenu({
|
|
|
31875
31943
|
children,
|
|
31876
31944
|
menu
|
|
31877
31945
|
}) {
|
|
31878
|
-
const [open, setOpen] =
|
|
31946
|
+
const [open, setOpen] = useState33(false);
|
|
31879
31947
|
return /* @__PURE__ */ jsxs41(ContextMenu, { onOpenChange: setOpen, children: [
|
|
31880
31948
|
/* @__PURE__ */ jsx58(ContextMenuTrigger, { asChild: true, children }),
|
|
31881
31949
|
open ? /* @__PURE__ */ jsx58(ContextMenuContent, { className: menuContentClassName, children: /* @__PURE__ */ jsx58(ContextActionGroups, { groups: menu.groups }) }) : null
|
|
@@ -32002,13 +32070,13 @@ var AgentGUIConversationRailItem = memo5(
|
|
|
32002
32070
|
workspaceId,
|
|
32003
32071
|
agentTargets
|
|
32004
32072
|
);
|
|
32005
|
-
const setItemElement =
|
|
32073
|
+
const setItemElement = useCallback51(
|
|
32006
32074
|
(element) => {
|
|
32007
32075
|
registerItemElement(item.id, element);
|
|
32008
32076
|
},
|
|
32009
32077
|
[item.id, registerItemElement]
|
|
32010
32078
|
);
|
|
32011
|
-
const handleMouseLeave =
|
|
32079
|
+
const handleMouseLeave = useCallback51(() => {
|
|
32012
32080
|
if (isPendingDeleteConversation && !isRailInteractionLocked()) {
|
|
32013
32081
|
onCancelDeleteConversation();
|
|
32014
32082
|
}
|
|
@@ -32300,7 +32368,7 @@ function AgentGUIProjectRailHeader({
|
|
|
32300
32368
|
}
|
|
32301
32369
|
|
|
32302
32370
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailSectionHeader.tsx
|
|
32303
|
-
import { forwardRef as forwardRef5, memo as memo6, useCallback as
|
|
32371
|
+
import { forwardRef as forwardRef5, memo as memo6, useCallback as useCallback52, useState as useState34 } from "react";
|
|
32304
32372
|
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
32305
32373
|
import {
|
|
32306
32374
|
DropdownMenu as DropdownMenu5,
|
|
@@ -32714,9 +32782,9 @@ var AgentGUIConversationRailSectionHeader = memo6(
|
|
|
32714
32782
|
sectionLabel
|
|
32715
32783
|
}) {
|
|
32716
32784
|
"use memo";
|
|
32717
|
-
const [projectMenuOpen, setProjectMenuOpen] =
|
|
32718
|
-
const [conversationMenuOpen, setConversationMenuOpen] =
|
|
32719
|
-
const handleProjectMenuOpenChange =
|
|
32785
|
+
const [projectMenuOpen, setProjectMenuOpen] = useState34(false);
|
|
32786
|
+
const [conversationMenuOpen, setConversationMenuOpen] = useState34(false);
|
|
32787
|
+
const handleProjectMenuOpenChange = useCallback52(
|
|
32720
32788
|
(open) => {
|
|
32721
32789
|
setProjectMenuOpen(open);
|
|
32722
32790
|
onProjectMenuOpenChange(open);
|
|
@@ -32868,7 +32936,7 @@ var AgentGUIConversationRailSection = memo7(
|
|
|
32868
32936
|
const visibleCountTowardTotal = visiblePageableIds.size + (activeConversationCountsTowardTotal && activeConversation && visibleItems.some((item) => item.id === activeConversation.id) && !visiblePageableIds.has(activeConversation.id) ? 1 : 0);
|
|
32869
32937
|
const canShowMore = !isSectionCollapsed && visibleCountTowardTotal < sectionTotalCount && (visibleItemCount < pageableItems.length || sectionHasMore);
|
|
32870
32938
|
const canShowLess = !isSectionCollapsed && visibleItemCount > AGENT_GUI_CONVERSATION_RAIL_SECTION_PAGE_SIZE;
|
|
32871
|
-
const showMoreConversations =
|
|
32939
|
+
const showMoreConversations = useCallback53(() => {
|
|
32872
32940
|
if (isRailInteractionLocked()) return;
|
|
32873
32941
|
if (visibleItemCount >= pageableItems.length && sectionHasMore) {
|
|
32874
32942
|
onLoadMoreConversations(section);
|
|
@@ -32895,7 +32963,7 @@ var AgentGUIConversationRailSection = memo7(
|
|
|
32895
32963
|
visibleItemCount,
|
|
32896
32964
|
visibleItemLimit
|
|
32897
32965
|
]);
|
|
32898
|
-
const showLessConversations =
|
|
32966
|
+
const showLessConversations = useCallback53(() => {
|
|
32899
32967
|
if (isRailInteractionLocked()) return;
|
|
32900
32968
|
onVisibleItemLimitChange(
|
|
32901
32969
|
section.id,
|
|
@@ -33107,7 +33175,7 @@ function AgentGUIProjectActionConfirmationDialog(props) {
|
|
|
33107
33175
|
}
|
|
33108
33176
|
|
|
33109
33177
|
// agent-gui/agentGuiNode/view/useAgentGUIConversationRailViewState.ts
|
|
33110
|
-
import { useCallback as
|
|
33178
|
+
import { useCallback as useCallback54, useLayoutEffect as useLayoutEffect6, useReducer, useRef as useRef45 } from "react";
|
|
33111
33179
|
function applyRailScrollNavigation(input) {
|
|
33112
33180
|
const activeConversationId = input.activeConversationId?.trim() || null;
|
|
33113
33181
|
const current = input.current.navigationKey === input.navigationKey ? input.current : {
|
|
@@ -33153,10 +33221,10 @@ function useAgentGUIConversationRailViewState(input) {
|
|
|
33153
33221
|
reduceAgentGUIConversationRailViewState,
|
|
33154
33222
|
/* @__PURE__ */ new Map()
|
|
33155
33223
|
);
|
|
33156
|
-
const conversationListRef =
|
|
33157
|
-
const conversationItemElementsRef =
|
|
33158
|
-
const scrollTopByScopeRef =
|
|
33159
|
-
const navigationRef =
|
|
33224
|
+
const conversationListRef = useRef45(null);
|
|
33225
|
+
const conversationItemElementsRef = useRef45(/* @__PURE__ */ new Map());
|
|
33226
|
+
const scrollTopByScopeRef = useRef45(/* @__PURE__ */ new Map());
|
|
33227
|
+
const navigationRef = useRef45({
|
|
33160
33228
|
handledRevealRevision: 0,
|
|
33161
33229
|
navigationKey: null,
|
|
33162
33230
|
phase: "scope-pending"
|
|
@@ -33206,7 +33274,7 @@ function useAgentGUIConversationRailViewState(input) {
|
|
|
33206
33274
|
navigationKey,
|
|
33207
33275
|
searchActive
|
|
33208
33276
|
]);
|
|
33209
|
-
const registerConversationItemElement =
|
|
33277
|
+
const registerConversationItemElement = useCallback54(
|
|
33210
33278
|
(itemId, element) => {
|
|
33211
33279
|
if (element) {
|
|
33212
33280
|
conversationItemElementsRef.current.set(itemId, element);
|
|
@@ -33246,14 +33314,14 @@ function useAgentGUIConversationRailViewState(input) {
|
|
|
33246
33314
|
}
|
|
33247
33315
|
|
|
33248
33316
|
// agent-gui/agentGuiNode/view/useAgentGUIProjectMenuState.ts
|
|
33249
|
-
import { useCallback as
|
|
33317
|
+
import { useCallback as useCallback55, useState as useState35 } from "react";
|
|
33250
33318
|
function useAgentGUIProjectMenuState(isRailInteractionLocked, isUserProjectMutationPending) {
|
|
33251
|
-
const [openSectionId, setOpenSectionId] =
|
|
33252
|
-
const isProjectActionLocked =
|
|
33319
|
+
const [openSectionId, setOpenSectionId] = useState35(null);
|
|
33320
|
+
const isProjectActionLocked = useCallback55(
|
|
33253
33321
|
() => isRailInteractionLocked() || isUserProjectMutationPending,
|
|
33254
33322
|
[isRailInteractionLocked, isUserProjectMutationPending]
|
|
33255
33323
|
);
|
|
33256
|
-
const onProjectMenuOpenChange =
|
|
33324
|
+
const onProjectMenuOpenChange = useCallback55(
|
|
33257
33325
|
(sectionId, open) => {
|
|
33258
33326
|
setOpenSectionId(
|
|
33259
33327
|
(current) => open ? sectionId : current === sectionId ? null : current
|
|
@@ -33271,7 +33339,7 @@ function useAgentGUIProjectMenuState(isRailInteractionLocked, isUserProjectMutat
|
|
|
33271
33339
|
// agent-gui/agentGuiNode/view/AgentGUIConversationRailPane.tsx
|
|
33272
33340
|
import { jsx as jsx64, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
33273
33341
|
function useDelayedBoolean(value, delayMs) {
|
|
33274
|
-
const [delayedValue, setDelayedValue] =
|
|
33342
|
+
const [delayedValue, setDelayedValue] = useState36(false);
|
|
33275
33343
|
useEffect30(() => {
|
|
33276
33344
|
if (!value) {
|
|
33277
33345
|
setDelayedValue(false);
|
|
@@ -33325,13 +33393,14 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
33325
33393
|
onConversationQueryChange
|
|
33326
33394
|
}) {
|
|
33327
33395
|
"use memo";
|
|
33328
|
-
const [pendingProjectAction, setPendingProjectAction] =
|
|
33329
|
-
const [isRequestingBatchDeletion, setIsRequestingBatchDeletion] =
|
|
33396
|
+
const [pendingProjectAction, setPendingProjectAction] = useState36(null);
|
|
33397
|
+
const [isRequestingBatchDeletion, setIsRequestingBatchDeletion] = useState36(false);
|
|
33330
33398
|
const { railSearch } = railQuery;
|
|
33331
|
-
const railElementRef =
|
|
33332
|
-
const railActiveConversationRef =
|
|
33333
|
-
const groupedConversationsRef =
|
|
33399
|
+
const railElementRef = useRef46(null);
|
|
33400
|
+
const railActiveConversationRef = useRef46([]);
|
|
33401
|
+
const groupedConversationsRef = useRef46(null);
|
|
33334
33402
|
const {
|
|
33403
|
+
batchDeletionAvailable,
|
|
33335
33404
|
loadMoreSectionConversations,
|
|
33336
33405
|
isInteractionLocked,
|
|
33337
33406
|
runtimeSectionsEnabled,
|
|
@@ -33499,7 +33568,7 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
33499
33568
|
const sectionAgentTargetId = conversationFilter.kind === "agentTarget" ? conversationFilter.agentTargetId.trim() : sectionAgentTargetFallbackId?.trim() ?? "";
|
|
33500
33569
|
const requestSectionBatchDeletion = useStableEventCallback(
|
|
33501
33570
|
(section) => {
|
|
33502
|
-
if (isInteractionLocked() || isDeletingProjectConversations || isRequestingBatchDeletion) {
|
|
33571
|
+
if (!batchDeletionAvailable || isInteractionLocked() || isDeletingProjectConversations || isRequestingBatchDeletion) {
|
|
33503
33572
|
return;
|
|
33504
33573
|
}
|
|
33505
33574
|
setIsRequestingBatchDeletion(true);
|
|
@@ -33652,7 +33721,7 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
33652
33721
|
(item) => item.projectionSource !== "pending_activation"
|
|
33653
33722
|
).length + (activeOverlayCountsTowardTotal && !activeOverlayIsCanonical ? 1 : 0);
|
|
33654
33723
|
const sectionHasMore = searchSectionHasMore || !conversationQuery.trim() && sectionPageState?.hasMore === true;
|
|
33655
|
-
const batchDeletionDisabled = hasConversationQuery || section.items.length === 0 && !sectionHasMore || isDeletingProjectConversations || isRequestingBatchDeletion;
|
|
33724
|
+
const batchDeletionDisabled = !batchDeletionAvailable || hasConversationQuery || section.items.length === 0 && !sectionHasMore || isDeletingProjectConversations || isRequestingBatchDeletion;
|
|
33656
33725
|
return /* @__PURE__ */ jsxs45(Fragment19, { children: [
|
|
33657
33726
|
showPinnedProjectHeader ? /* @__PURE__ */ jsx64("div", { className: AgentGUINode_styles_default.pinnedProjectRailHeader, children: labels.sectionPinned }) : null,
|
|
33658
33727
|
showProjectRailHeader ? /* @__PURE__ */ jsx64(
|
|
@@ -33762,7 +33831,7 @@ var AgentGUIConversationRailPane = memo8(
|
|
|
33762
33831
|
);
|
|
33763
33832
|
|
|
33764
33833
|
// agent-gui/agentGuiNode/controller/useAgentGUIConversationRailQuery.ts
|
|
33765
|
-
import { useEffect as useEffect31, useMemo as useMemo39, useRef as
|
|
33834
|
+
import { useEffect as useEffect31, useMemo as useMemo39, useRef as useRef47 } from "react";
|
|
33766
33835
|
|
|
33767
33836
|
// agent-gui/agentGuiNode/controller/agentGuiConversationRailDiagnostics.ts
|
|
33768
33837
|
var CONVERSATION_RAIL_SLOW_DIAGNOSTIC_THRESHOLD_MS = 250;
|
|
@@ -34879,11 +34948,15 @@ function useAgentGUIConversationRailQuery({
|
|
|
34879
34948
|
workspaceId
|
|
34880
34949
|
}) {
|
|
34881
34950
|
const runtime = useAgentActivityRuntime();
|
|
34951
|
+
const batchDeletionCapability = useMemo39(
|
|
34952
|
+
() => inspectAgentConversationBatchDeletionCapability(runtime),
|
|
34953
|
+
[runtime]
|
|
34954
|
+
);
|
|
34882
34955
|
const engine = useMemo39(
|
|
34883
34956
|
() => runtime.getSessionEngine(workspaceId),
|
|
34884
34957
|
[runtime, workspaceId]
|
|
34885
34958
|
);
|
|
34886
|
-
const activeConversationIdRef =
|
|
34959
|
+
const activeConversationIdRef = useRef47(activeConversationId);
|
|
34887
34960
|
activeConversationIdRef.current = activeConversationId;
|
|
34888
34961
|
const controller = useMemo39(
|
|
34889
34962
|
() => new AgentGUIConversationRailQueryController({
|
|
@@ -34895,13 +34968,26 @@ function useAgentGUIConversationRailQuery({
|
|
|
34895
34968
|
[engine, runtime, workspaceId]
|
|
34896
34969
|
);
|
|
34897
34970
|
useEffect31(() => {
|
|
34971
|
+
if (batchDeletionCapability.partial) {
|
|
34972
|
+
reportAgentGUIConversationBatchDeletionCapabilityIncomplete({
|
|
34973
|
+
missingMethods: batchDeletionCapability.missingMethods,
|
|
34974
|
+
runtime,
|
|
34975
|
+
workspaceId
|
|
34976
|
+
});
|
|
34977
|
+
}
|
|
34898
34978
|
const detach = controller.attach();
|
|
34899
34979
|
registerInteractionLockProbe?.(controller.isInteractionLocked);
|
|
34900
34980
|
return () => {
|
|
34901
34981
|
registerInteractionLockProbe?.(null);
|
|
34902
34982
|
detach();
|
|
34903
34983
|
};
|
|
34904
|
-
}, [
|
|
34984
|
+
}, [
|
|
34985
|
+
batchDeletionCapability,
|
|
34986
|
+
controller,
|
|
34987
|
+
registerInteractionLockProbe,
|
|
34988
|
+
runtime,
|
|
34989
|
+
workspaceId
|
|
34990
|
+
]);
|
|
34905
34991
|
useEffect31(() => {
|
|
34906
34992
|
controller.configure({
|
|
34907
34993
|
conversationFilter,
|
|
@@ -34941,6 +35027,7 @@ function useAgentGUIConversationRailQuery({
|
|
|
34941
35027
|
return useMemo39(
|
|
34942
35028
|
() => ({
|
|
34943
35029
|
...querySnapshot,
|
|
35030
|
+
batchDeletionAvailable: !previewMode && batchDeletionCapability.available,
|
|
34944
35031
|
isInteractionLocked: controller.isInteractionLocked,
|
|
34945
35032
|
loadMoreSectionConversations: controller.loadMoreSectionConversations,
|
|
34946
35033
|
railSearch: {
|
|
@@ -34951,7 +35038,13 @@ function useAgentGUIConversationRailQuery({
|
|
|
34951
35038
|
runtimeRailScopeResolved: !querySnapshot.runtimeSectionsEnabled || querySnapshot.runtimeRailResolvedScopeKey === requestedRailScopeKey,
|
|
34952
35039
|
runtimeRailConversations: querySnapshot.runtimeRailConversations
|
|
34953
35040
|
}),
|
|
34954
|
-
[
|
|
35041
|
+
[
|
|
35042
|
+
batchDeletionCapability.available,
|
|
35043
|
+
controller,
|
|
35044
|
+
previewMode,
|
|
35045
|
+
querySnapshot,
|
|
35046
|
+
requestedRailScopeKey
|
|
35047
|
+
]
|
|
34955
35048
|
);
|
|
34956
35049
|
}
|
|
34957
35050
|
function identitySnapshot(snapshot) {
|
|
@@ -34962,7 +35055,7 @@ function identitySnapshot(snapshot) {
|
|
|
34962
35055
|
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
34963
35056
|
var AgentGUIConversationRailController = memo9(
|
|
34964
35057
|
function AgentGUIConversationRailController2(props) {
|
|
34965
|
-
const [conversationQuery, setConversationQuery] =
|
|
35058
|
+
const [conversationQuery, setConversationQuery] = useState37("");
|
|
34966
35059
|
const railQuery = useAgentGUIConversationRailQuery({
|
|
34967
35060
|
activeConversationId: props.activeConversationId,
|
|
34968
35061
|
conversationFilter: props.conversationFilter,
|
|
@@ -34988,16 +35081,16 @@ var AgentGUIConversationRailController = memo9(
|
|
|
34988
35081
|
// agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
|
|
34989
35082
|
import {
|
|
34990
35083
|
memo as memo12,
|
|
34991
|
-
useCallback as
|
|
35084
|
+
useCallback as useCallback57,
|
|
34992
35085
|
useEffect as useEffect34,
|
|
34993
35086
|
useMemo as useMemo41,
|
|
34994
|
-
useRef as
|
|
34995
|
-
useState as
|
|
35087
|
+
useRef as useRef50,
|
|
35088
|
+
useState as useState42
|
|
34996
35089
|
} from "react";
|
|
34997
35090
|
import { ScrollArea as ScrollArea3 } from "@tutti-os/ui-system/components";
|
|
34998
35091
|
|
|
34999
35092
|
// agent-gui/agentGuiNode/view/agentGUIDetailModelHelpers.ts
|
|
35000
|
-
import { useRef as
|
|
35093
|
+
import { useRef as useRef48 } from "react";
|
|
35001
35094
|
function commandAppSource(command) {
|
|
35002
35095
|
if (!command || typeof command !== "object" || !("source" in command)) {
|
|
35003
35096
|
return null;
|
|
@@ -35077,7 +35170,7 @@ function slashStatusesEqual(left, right) {
|
|
|
35077
35170
|
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);
|
|
35078
35171
|
}
|
|
35079
35172
|
function useStableSlashStatus(status) {
|
|
35080
|
-
const statusRef =
|
|
35173
|
+
const statusRef = useRef48(null);
|
|
35081
35174
|
if (statusRef.current === null || !slashStatusesEqual(statusRef.current, status)) {
|
|
35082
35175
|
statusRef.current = status;
|
|
35083
35176
|
}
|
|
@@ -35153,7 +35246,7 @@ import { ChevronsDown } from "lucide-react";
|
|
|
35153
35246
|
import { cn as cn8 } from "@tutti-os/ui-system";
|
|
35154
35247
|
|
|
35155
35248
|
// agent-gui/agentGuiNode/AgentGoalBanner.tsx
|
|
35156
|
-
import { useEffect as useEffect32, useState as
|
|
35249
|
+
import { useEffect as useEffect32, useState as useState38 } from "react";
|
|
35157
35250
|
import { CirclePause, CirclePlay, Pencil as Pencil3, Target as Target3, Trash2 } from "lucide-react";
|
|
35158
35251
|
import { jsx as jsx66, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
35159
35252
|
var RESUMABLE_GOAL_STATUSES = /* @__PURE__ */ new Set([
|
|
@@ -35229,11 +35322,11 @@ function AgentGoalBanner({
|
|
|
35229
35322
|
onClearGoal
|
|
35230
35323
|
}) {
|
|
35231
35324
|
"use memo";
|
|
35232
|
-
const [editDraft, setEditDraft] =
|
|
35325
|
+
const [editDraft, setEditDraft] = useState38(null);
|
|
35233
35326
|
const normalizedStatus = normalizeGoalStatus(status);
|
|
35234
35327
|
const isActive = normalizedStatus === "" || normalizedStatus === "active";
|
|
35235
35328
|
const serverSeconds = optimistic ? null : typeof durationMs === "number" && durationMs >= 0 ? Math.floor(durationMs / 1e3) : isActive ? 0 : null;
|
|
35236
|
-
const [localElapsed, setLocalElapsed] =
|
|
35329
|
+
const [localElapsed, setLocalElapsed] = useState38(0);
|
|
35237
35330
|
useEffect32(() => {
|
|
35238
35331
|
setLocalElapsed(0);
|
|
35239
35332
|
if (!isActive || serverSeconds === null) {
|
|
@@ -35514,7 +35607,7 @@ var AgentGUIBottomDockPane = memo10(function AgentGUIBottomDockPane2({
|
|
|
35514
35607
|
});
|
|
35515
35608
|
|
|
35516
35609
|
// agent-gui/agentGuiNode/view/AgentGUIContentToast.tsx
|
|
35517
|
-
import { useState as
|
|
35610
|
+
import { useState as useState39 } from "react";
|
|
35518
35611
|
import {
|
|
35519
35612
|
ToastProvider,
|
|
35520
35613
|
ToastRoot,
|
|
@@ -35526,7 +35619,7 @@ function AgentGUIContentToast({
|
|
|
35526
35619
|
insetTopPx,
|
|
35527
35620
|
message
|
|
35528
35621
|
}) {
|
|
35529
|
-
const [open, setOpen] =
|
|
35622
|
+
const [open, setOpen] = useState39(true);
|
|
35530
35623
|
return /* @__PURE__ */ jsxs48(ToastProvider, { children: [
|
|
35531
35624
|
/* @__PURE__ */ jsx68(
|
|
35532
35625
|
ToastRoot,
|
|
@@ -35614,11 +35707,11 @@ function setTimelineScrollTopWithUserTransition(element, top) {
|
|
|
35614
35707
|
|
|
35615
35708
|
// agent-gui/agentGuiNode/view/useAgentGUIDetailScroll.ts
|
|
35616
35709
|
import {
|
|
35617
|
-
useCallback as
|
|
35710
|
+
useCallback as useCallback56,
|
|
35618
35711
|
useEffect as useEffect33,
|
|
35619
35712
|
useLayoutEffect as useLayoutEffect7,
|
|
35620
|
-
useRef as
|
|
35621
|
-
useState as
|
|
35713
|
+
useRef as useRef49,
|
|
35714
|
+
useState as useState40
|
|
35622
35715
|
} from "react";
|
|
35623
35716
|
var AGENT_GUI_STICK_TO_BOTTOM_THRESHOLD_PX = 24;
|
|
35624
35717
|
var AGENT_GUI_TOP_HISTORY_PREFETCH_THRESHOLD_PX = 240;
|
|
@@ -35638,11 +35731,11 @@ function useAgentGUIDetailScroll(input) {
|
|
|
35638
35731
|
timelineScrollAnchorRef,
|
|
35639
35732
|
viewModel
|
|
35640
35733
|
} = input;
|
|
35641
|
-
const [isTimelineScrolledToTop, setIsTimelineScrolledToTop] =
|
|
35642
|
-
const [isTimelineScrolledToBottom, setIsTimelineScrolledToBottom] =
|
|
35643
|
-
const bottomLockOwnerRef =
|
|
35644
|
-
const userScrollAwayIntentConversationRef =
|
|
35645
|
-
const lastShowTimelineSkeletonRef =
|
|
35734
|
+
const [isTimelineScrolledToTop, setIsTimelineScrolledToTop] = useState40(true);
|
|
35735
|
+
const [isTimelineScrolledToBottom, setIsTimelineScrolledToBottom] = useState40(true);
|
|
35736
|
+
const bottomLockOwnerRef = useRef49(null);
|
|
35737
|
+
const userScrollAwayIntentConversationRef = useRef49(null);
|
|
35738
|
+
const lastShowTimelineSkeletonRef = useRef49(showTimelineSkeleton);
|
|
35646
35739
|
useLayoutEffect7(() => {
|
|
35647
35740
|
const timelineSkeletonChanged = lastShowTimelineSkeletonRef.current !== showTimelineSkeleton;
|
|
35648
35741
|
lastShowTimelineSkeletonRef.current = showTimelineSkeleton;
|
|
@@ -35958,7 +36051,7 @@ function useAgentGUIDetailScroll(input) {
|
|
|
35958
36051
|
viewModel.detail.hasOlderMessages,
|
|
35959
36052
|
viewModel.detail.isLoadingOlderMessages
|
|
35960
36053
|
]);
|
|
35961
|
-
const scrollTimelineToBottom =
|
|
36054
|
+
const scrollTimelineToBottom = useCallback56(() => {
|
|
35962
36055
|
const timeline = timelineRef.current;
|
|
35963
36056
|
const activeConversationId = timelineConversationId;
|
|
35964
36057
|
if (!timeline || !activeConversationId) {
|
|
@@ -36013,15 +36106,15 @@ function UnavailableChatIcon(props) {
|
|
|
36013
36106
|
}
|
|
36014
36107
|
|
|
36015
36108
|
// agent-gui/agentGuiNode/view/useAgentGUITimelineTransition.ts
|
|
36016
|
-
import { useLayoutEffect as useLayoutEffect8, useState as
|
|
36109
|
+
import { useLayoutEffect as useLayoutEffect8, useState as useState41 } from "react";
|
|
36017
36110
|
var AGENT_GUI_TIMELINE_SKELETON_DELAY_MS = 300;
|
|
36018
36111
|
function useAgentGUITimelineTransition(input) {
|
|
36019
36112
|
const activeConversationId = input.activeConversationId;
|
|
36020
|
-
const [committedTimeline, setCommittedTimeline] =
|
|
36113
|
+
const [committedTimeline, setCommittedTimeline] = useState41(() => ({
|
|
36021
36114
|
conversation: input.conversation,
|
|
36022
36115
|
conversationId: activeConversationId
|
|
36023
36116
|
}));
|
|
36024
|
-
const [revealedSkeletonConversationId, setRevealedSkeletonConversationId] =
|
|
36117
|
+
const [revealedSkeletonConversationId, setRevealedSkeletonConversationId] = useState41(null);
|
|
36025
36118
|
const transitionPending = activeConversationId !== null && input.availability === "loading" && (!input.conversation || input.conversation.rows.length === 0);
|
|
36026
36119
|
useLayoutEffect8(() => {
|
|
36027
36120
|
if (!transitionPending || activeConversationId === null) {
|
|
@@ -36693,16 +36786,16 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
36693
36786
|
renderProviderUnavailableState
|
|
36694
36787
|
}) {
|
|
36695
36788
|
"use memo";
|
|
36696
|
-
const timelineRef =
|
|
36697
|
-
const timelineContentRef =
|
|
36698
|
-
const bottomDockRef =
|
|
36699
|
-
const timelineScrollAnchorRef =
|
|
36700
|
-
const submittedPromptScrollConversationRef =
|
|
36701
|
-
const pendingPrependScrollAnchorRef =
|
|
36789
|
+
const timelineRef = useRef50(null);
|
|
36790
|
+
const timelineContentRef = useRef50(null);
|
|
36791
|
+
const bottomDockRef = useRef50(null);
|
|
36792
|
+
const timelineScrollAnchorRef = useRef50(null);
|
|
36793
|
+
const submittedPromptScrollConversationRef = useRef50(null);
|
|
36794
|
+
const pendingPrependScrollAnchorRef = useRef50(null);
|
|
36702
36795
|
const [
|
|
36703
36796
|
bottomDockDismissedPromptRequestId,
|
|
36704
36797
|
setBottomDockDismissedPromptRequestId
|
|
36705
|
-
] =
|
|
36798
|
+
] = useState42(null);
|
|
36706
36799
|
const {
|
|
36707
36800
|
activePromptRequestId,
|
|
36708
36801
|
bottomDockLiftedPrompt,
|
|
@@ -36740,7 +36833,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
36740
36833
|
viewModel
|
|
36741
36834
|
});
|
|
36742
36835
|
const slashStatus = slashStatusOverride ?? derivedSlashStatus;
|
|
36743
|
-
const handleInterruptCurrentTurn =
|
|
36836
|
+
const handleInterruptCurrentTurn = useCallback57(() => {
|
|
36744
36837
|
actions.interruptCurrentTurn(labels.noRunningResponse);
|
|
36745
36838
|
}, [actions.interruptCurrentTurn, labels.noRunningResponse]);
|
|
36746
36839
|
const submitApprovalOption = useStableEventCallback(
|
|
@@ -36760,14 +36853,14 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
36760
36853
|
const selectHomeComposerAgentTarget = useStableEventCallback(
|
|
36761
36854
|
actions.selectHomeComposerAgentTarget
|
|
36762
36855
|
);
|
|
36763
|
-
const selectHomeComposerAgentTargetAndFocus =
|
|
36856
|
+
const selectHomeComposerAgentTargetAndFocus = useCallback57(
|
|
36764
36857
|
(input) => {
|
|
36765
36858
|
selectHomeComposerAgentTarget(input);
|
|
36766
36859
|
onRequestComposerFocus();
|
|
36767
36860
|
},
|
|
36768
36861
|
[onRequestComposerFocus, selectHomeComposerAgentTarget]
|
|
36769
36862
|
);
|
|
36770
|
-
const handleSelectHomeSuggestion =
|
|
36863
|
+
const handleSelectHomeSuggestion = useCallback57(
|
|
36771
36864
|
(prompt) => {
|
|
36772
36865
|
updateDraftContent(
|
|
36773
36866
|
updateAgentComposerDraft(viewModel.composer.draftContent, { prompt })
|
|
@@ -36775,7 +36868,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
36775
36868
|
},
|
|
36776
36869
|
[updateDraftContent, viewModel.composer.draftContent]
|
|
36777
36870
|
);
|
|
36778
|
-
const handleHomeSuggestionAction =
|
|
36871
|
+
const handleHomeSuggestionAction = useCallback57(
|
|
36779
36872
|
(action) => {
|
|
36780
36873
|
if (action === "import-session") {
|
|
36781
36874
|
window.dispatchEvent(
|
|
@@ -36790,7 +36883,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
36790
36883
|
const submitGuidancePrompt = useStableEventCallback(
|
|
36791
36884
|
actions.submitGuidancePrompt
|
|
36792
36885
|
);
|
|
36793
|
-
const requestSubmittedPromptScrollToBottom =
|
|
36886
|
+
const requestSubmittedPromptScrollToBottom = useCallback57(() => {
|
|
36794
36887
|
const activeConversationId = viewModel.rail.activeConversationId;
|
|
36795
36888
|
if (!activeConversationId) {
|
|
36796
36889
|
return;
|
|
@@ -36798,7 +36891,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
36798
36891
|
submittedPromptScrollConversationRef.current = activeConversationId;
|
|
36799
36892
|
pendingPrependScrollAnchorRef.current = null;
|
|
36800
36893
|
}, [viewModel.rail.activeConversationId]);
|
|
36801
|
-
const submitPromptAndScrollToBottom =
|
|
36894
|
+
const submitPromptAndScrollToBottom = useCallback57(
|
|
36802
36895
|
(content, displayPrompt, options) => {
|
|
36803
36896
|
requestSubmittedPromptScrollToBottom();
|
|
36804
36897
|
if (displayPrompt === void 0) {
|
|
@@ -36809,7 +36902,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
36809
36902
|
},
|
|
36810
36903
|
[requestSubmittedPromptScrollToBottom, submitPrompt]
|
|
36811
36904
|
);
|
|
36812
|
-
const submitGuidancePromptAndScrollToBottom =
|
|
36905
|
+
const submitGuidancePromptAndScrollToBottom = useCallback57(
|
|
36813
36906
|
(content, displayPrompt) => {
|
|
36814
36907
|
requestSubmittedPromptScrollToBottom();
|
|
36815
36908
|
if (displayPrompt === void 0) {
|
|
@@ -36840,7 +36933,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
36840
36933
|
);
|
|
36841
36934
|
const stableRequestGitBranches = useOptionalStableEventCallback(onRequestGitBranches);
|
|
36842
36935
|
const authLogin = useOptionalStableEventCallback(onAgentProviderLogin);
|
|
36843
|
-
const submitBottomDockInteractivePrompt =
|
|
36936
|
+
const submitBottomDockInteractivePrompt = useCallback57(
|
|
36844
36937
|
(input) => {
|
|
36845
36938
|
submitInteractivePrompt(input);
|
|
36846
36939
|
setBottomDockDismissedPromptRequestId(input.requestId);
|
|
@@ -36930,6 +37023,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
36930
37023
|
isInterrupting: viewModel.composer.isInterrupting || viewModel.composer.isCancelPending,
|
|
36931
37024
|
isSendingTurn: isComposerSending,
|
|
36932
37025
|
isSubmittingPrompt: isInteractionPending,
|
|
37026
|
+
projectMissingProbeEnabled: !viewModel.composer.isCreatingConversation,
|
|
36933
37027
|
uiLanguage,
|
|
36934
37028
|
labels: composerLabels,
|
|
36935
37029
|
workspaceUserProjectI18n,
|
|
@@ -37021,6 +37115,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
37021
37115
|
viewModel.composer.drainingQueuedPromptId,
|
|
37022
37116
|
viewModel.detail.hasSentUserMessage,
|
|
37023
37117
|
viewModel.composer.isInterrupting,
|
|
37118
|
+
viewModel.composer.isCreatingConversation,
|
|
37024
37119
|
viewModel.interaction.isRespondingApproval,
|
|
37025
37120
|
viewModel.interaction.isRuntimeBlocked,
|
|
37026
37121
|
viewModel.composer.promptImagesSupported,
|
|
@@ -37189,7 +37284,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
|
|
|
37189
37284
|
});
|
|
37190
37285
|
|
|
37191
37286
|
// agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
|
|
37192
|
-
import { memo as memo13, useCallback as
|
|
37287
|
+
import { memo as memo13, useCallback as useCallback58, useEffect as useEffect35, useRef as useRef51, useState as useState43 } from "react";
|
|
37193
37288
|
import { ConfirmationDialog as ConfirmationDialog4, Input as Input4 } from "@tutti-os/ui-system";
|
|
37194
37289
|
import { jsx as jsx73, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
37195
37290
|
var AgentGUIRenameConversationDialog = memo13(
|
|
@@ -37201,11 +37296,11 @@ var AgentGUIRenameConversationDialog = memo13(
|
|
|
37201
37296
|
onRename
|
|
37202
37297
|
}) {
|
|
37203
37298
|
"use memo";
|
|
37204
|
-
const [title, setTitle] =
|
|
37205
|
-
const [isSaving, setIsSaving] =
|
|
37206
|
-
const isSavingRef =
|
|
37207
|
-
const armedPointerActionRef =
|
|
37208
|
-
const inputRef =
|
|
37299
|
+
const [title, setTitle] = useState43("");
|
|
37300
|
+
const [isSaving, setIsSaving] = useState43(false);
|
|
37301
|
+
const isSavingRef = useRef51(false);
|
|
37302
|
+
const armedPointerActionRef = useRef51(null);
|
|
37303
|
+
const inputRef = useRef51(null);
|
|
37209
37304
|
const trimmedTitle = title.trim();
|
|
37210
37305
|
useEffect35(() => {
|
|
37211
37306
|
if (!open || !conversation) {
|
|
@@ -37227,12 +37322,12 @@ var AgentGUIRenameConversationDialog = memo13(
|
|
|
37227
37322
|
}, 0);
|
|
37228
37323
|
return () => window.clearTimeout(timer);
|
|
37229
37324
|
}, [open, conversation?.id]);
|
|
37230
|
-
const closeRenameDialog =
|
|
37325
|
+
const closeRenameDialog = useCallback58(() => {
|
|
37231
37326
|
if (!isSavingRef.current) {
|
|
37232
37327
|
onOpenChange(false);
|
|
37233
37328
|
}
|
|
37234
37329
|
}, [onOpenChange]);
|
|
37235
|
-
const confirmRename =
|
|
37330
|
+
const confirmRename = useCallback58(() => {
|
|
37236
37331
|
if (!conversation || isSavingRef.current || !trimmedTitle) {
|
|
37237
37332
|
return;
|
|
37238
37333
|
}
|
|
@@ -37427,7 +37522,7 @@ function AgentGUIReferencePickerSurface({
|
|
|
37427
37522
|
}
|
|
37428
37523
|
|
|
37429
37524
|
// agent-gui/agentGuiNode/view/AgentTargetSetupRoot.tsx
|
|
37430
|
-
import { useCallback as
|
|
37525
|
+
import { useCallback as useCallback59, useMemo as useMemo42 } from "react";
|
|
37431
37526
|
import { jsx as jsx75, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
37432
37527
|
function useAgentTargetSetupRoot(input) {
|
|
37433
37528
|
const { preferences } = useAgentGUIProviderRailPreferences();
|
|
@@ -37445,7 +37540,7 @@ function useAgentTargetSetupRoot(input) {
|
|
|
37445
37540
|
);
|
|
37446
37541
|
const targetRuntimeSetupVisible = effectiveSelectedTarget.ref.setupKind === "target_runtime";
|
|
37447
37542
|
const environmentSetupVisible = targetRuntimeSetupVisible || !!resolveAgentGUIProviderCatalogIdentity(input.environmentProvider ?? "");
|
|
37448
|
-
const openAgentEnvSetup =
|
|
37543
|
+
const openAgentEnvSetup = useCallback59(() => {
|
|
37449
37544
|
if (targetRuntimeSetupVisible) {
|
|
37450
37545
|
controller.setDialogOpen(true);
|
|
37451
37546
|
return;
|
|
@@ -37486,7 +37581,7 @@ function AgentTargetSetupRoot({
|
|
|
37486
37581
|
}
|
|
37487
37582
|
|
|
37488
37583
|
// agent-gui/agentGuiNode/view/useAgentGUIWorkspaceReferencePicker.ts
|
|
37489
|
-
import { useCallback as
|
|
37584
|
+
import { useCallback as useCallback60, useMemo as useMemo43, useRef as useRef52, useState as useState44 } from "react";
|
|
37490
37585
|
import { createRichTextMentionHref } from "@tutti-os/ui-rich-text/core";
|
|
37491
37586
|
function useAgentGUIWorkspaceReferencePicker(input) {
|
|
37492
37587
|
const {
|
|
@@ -37500,17 +37595,17 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
37500
37595
|
workspaceFileReferenceAdapter,
|
|
37501
37596
|
workspaceFileReferenceCopy
|
|
37502
37597
|
} = input;
|
|
37503
|
-
const [workspaceReferencePickerOpen, setWorkspaceReferencePickerOpen] =
|
|
37504
|
-
const [workspaceReferencePickerPurpose, setWorkspaceReferencePickerPurpose] =
|
|
37505
|
-
const [workspaceReferencePickerTarget, setWorkspaceReferencePickerTarget] =
|
|
37506
|
-
const workspaceReferencePickerResolverRef =
|
|
37507
|
-
const projectDirectoryPickerResolverRef =
|
|
37598
|
+
const [workspaceReferencePickerOpen, setWorkspaceReferencePickerOpen] = useState44(false);
|
|
37599
|
+
const [workspaceReferencePickerPurpose, setWorkspaceReferencePickerPurpose] = useState44("reference");
|
|
37600
|
+
const [workspaceReferencePickerTarget, setWorkspaceReferencePickerTarget] = useState44(null);
|
|
37601
|
+
const workspaceReferencePickerResolverRef = useRef52(null);
|
|
37602
|
+
const projectDirectoryPickerResolverRef = useRef52(null);
|
|
37508
37603
|
const emptyReferencePickResult = useMemo43(
|
|
37509
37604
|
() => ({ files: [], mentionItems: [] }),
|
|
37510
37605
|
[]
|
|
37511
37606
|
);
|
|
37512
37607
|
const hostLocalFileSourceId = "host-local-file";
|
|
37513
|
-
const isWorkspaceReferencePickerNodeSelectable =
|
|
37608
|
+
const isWorkspaceReferencePickerNodeSelectable = useCallback60(
|
|
37514
37609
|
(node) => {
|
|
37515
37610
|
if (workspaceReferencePickerPurpose === "directory") {
|
|
37516
37611
|
return node.kind === "folder";
|
|
@@ -37519,7 +37614,7 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
37519
37614
|
},
|
|
37520
37615
|
[hostLocalFileSourceId, workspaceReferencePickerPurpose]
|
|
37521
37616
|
);
|
|
37522
|
-
const requestWorkspaceReferences =
|
|
37617
|
+
const requestWorkspaceReferences = useCallback60(
|
|
37523
37618
|
async (entity) => {
|
|
37524
37619
|
if (previewMode) {
|
|
37525
37620
|
return emptyReferencePickResult;
|
|
@@ -37555,7 +37650,7 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
37555
37650
|
workspaceFileReferenceCopy
|
|
37556
37651
|
]
|
|
37557
37652
|
);
|
|
37558
|
-
const requestProjectDirectory =
|
|
37653
|
+
const requestProjectDirectory = useCallback60(async () => {
|
|
37559
37654
|
if (previewMode || !projectDirectorySourceAggregator) {
|
|
37560
37655
|
return null;
|
|
37561
37656
|
}
|
|
@@ -37569,7 +37664,7 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
37569
37664
|
projectDirectoryPickerResolverRef.current = resolve;
|
|
37570
37665
|
});
|
|
37571
37666
|
}, [emptyReferencePickResult, previewMode, projectDirectorySourceAggregator]);
|
|
37572
|
-
const closeWorkspaceReferencePicker =
|
|
37667
|
+
const closeWorkspaceReferencePicker = useCallback60(() => {
|
|
37573
37668
|
workspaceReferencePickerResolverRef.current?.(emptyReferencePickResult);
|
|
37574
37669
|
workspaceReferencePickerResolverRef.current = null;
|
|
37575
37670
|
projectDirectoryPickerResolverRef.current?.(null);
|
|
@@ -37578,7 +37673,7 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
37578
37673
|
setWorkspaceReferencePickerTarget(null);
|
|
37579
37674
|
setWorkspaceReferencePickerPurpose("reference");
|
|
37580
37675
|
}, [emptyReferencePickResult]);
|
|
37581
|
-
const settleReferencePicker =
|
|
37676
|
+
const settleReferencePicker = useCallback60(
|
|
37582
37677
|
(result, addedFiles) => {
|
|
37583
37678
|
workspaceReferencePickerResolverRef.current?.(result);
|
|
37584
37679
|
workspaceReferencePickerResolverRef.current = null;
|
|
@@ -37591,7 +37686,7 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
37591
37686
|
},
|
|
37592
37687
|
[onWorkspaceFileReferencesAdded]
|
|
37593
37688
|
);
|
|
37594
|
-
const confirmWorkspaceReferencePicker =
|
|
37689
|
+
const confirmWorkspaceReferencePicker = useCallback60(
|
|
37595
37690
|
(refs) => {
|
|
37596
37691
|
if (workspaceReferencePickerPurpose === "directory") {
|
|
37597
37692
|
const directory = refs.find((ref) => ref.kind === "folder") ?? null;
|
|
@@ -37608,7 +37703,7 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
37608
37703
|
},
|
|
37609
37704
|
[settleReferencePicker, workspaceReferencePickerPurpose]
|
|
37610
37705
|
);
|
|
37611
|
-
const confirmWorkspaceReferenceBundles =
|
|
37706
|
+
const confirmWorkspaceReferenceBundles = useCallback60(
|
|
37612
37707
|
(result) => {
|
|
37613
37708
|
const workspaceRefs = result.files.filter(
|
|
37614
37709
|
(ref) => ref.sourceId !== hostLocalFileSourceId
|
|
@@ -37660,7 +37755,7 @@ function useAgentGUIWorkspaceReferencePicker(input) {
|
|
|
37660
37755
|
}
|
|
37661
37756
|
|
|
37662
37757
|
// agent-gui/agentGuiNode/engagement/useAgentGUINodeEngagement.ts
|
|
37663
|
-
import { useRef as
|
|
37758
|
+
import { useRef as useRef54 } from "react";
|
|
37664
37759
|
|
|
37665
37760
|
// agent-gui/agentGuiNode/engagement/projectAgentGUIEngagementContext.ts
|
|
37666
37761
|
function projectAgentGUIEngagementContext(viewModel, composerReady) {
|
|
@@ -37692,7 +37787,7 @@ function createAgentGUIEngagementContextKey(input) {
|
|
|
37692
37787
|
}
|
|
37693
37788
|
|
|
37694
37789
|
// agent-gui/agentGuiNode/engagement/useAgentGUIPanelEngagement.ts
|
|
37695
|
-
import { useEffect as useEffect36, useRef as
|
|
37790
|
+
import { useEffect as useEffect36, useRef as useRef53 } from "react";
|
|
37696
37791
|
|
|
37697
37792
|
// agent-gui/agentGuiNode/engagement/AgentGUIPanelEngagementController.ts
|
|
37698
37793
|
var AGENT_GUI_PANEL_EXPOSURE_DWELL_MS = 1e3;
|
|
@@ -37846,10 +37941,10 @@ function documentIsVisible() {
|
|
|
37846
37941
|
|
|
37847
37942
|
// agent-gui/agentGuiNode/engagement/useAgentGUIPanelEngagement.ts
|
|
37848
37943
|
function useAgentGUIPanelEngagement(input) {
|
|
37849
|
-
const inputRef =
|
|
37850
|
-
const controllerRef =
|
|
37851
|
-
const intersectionRatioRef =
|
|
37852
|
-
const engagementRef =
|
|
37944
|
+
const inputRef = useRef53(input);
|
|
37945
|
+
const controllerRef = useRef53(null);
|
|
37946
|
+
const intersectionRatioRef = useRef53(0);
|
|
37947
|
+
const engagementRef = useRef53(null);
|
|
37853
37948
|
inputRef.current = input;
|
|
37854
37949
|
if (!engagementRef.current) {
|
|
37855
37950
|
engagementRef.current = {
|
|
@@ -37889,7 +37984,7 @@ function useAgentGUIPanelEngagement(input) {
|
|
|
37889
37984
|
|
|
37890
37985
|
// agent-gui/agentGuiNode/engagement/useAgentGUINodeEngagement.ts
|
|
37891
37986
|
function useAgentGUINodeEngagement(input) {
|
|
37892
|
-
const layoutElementRef =
|
|
37987
|
+
const layoutElementRef = useRef54(null);
|
|
37893
37988
|
const projected = projectAgentGUIEngagementContext(
|
|
37894
37989
|
input.viewModel,
|
|
37895
37990
|
input.composerReady
|
|
@@ -37908,7 +38003,7 @@ function useAgentGUINodeEngagement(input) {
|
|
|
37908
38003
|
}
|
|
37909
38004
|
|
|
37910
38005
|
// agent-gui/agentGuiNode/view/useAgentGUIConversationRailResizePointerMove.ts
|
|
37911
|
-
import { useCallback as
|
|
38006
|
+
import { useCallback as useCallback61 } from "react";
|
|
37912
38007
|
function useAgentGUIConversationRailResizePointerMove({
|
|
37913
38008
|
clampConversationRailWidth,
|
|
37914
38009
|
layoutElementRef,
|
|
@@ -37920,7 +38015,7 @@ function useAgentGUIConversationRailResizePointerMove({
|
|
|
37920
38015
|
const reportConversationRailLayoutChange = useOptionalStableEventCallback(
|
|
37921
38016
|
onConversationRailLayoutChange
|
|
37922
38017
|
);
|
|
37923
|
-
return
|
|
38018
|
+
return useCallback61(
|
|
37924
38019
|
(event) => {
|
|
37925
38020
|
if (previewMode) return;
|
|
37926
38021
|
const resizeState = railResizeInteractionRef.current;
|
|
@@ -37954,7 +38049,7 @@ function useAgentGUIConversationRailResizePointerMove({
|
|
|
37954
38049
|
}
|
|
37955
38050
|
|
|
37956
38051
|
// agent-gui/agentGuiNode/view/useAgentGUIExternalRequests.ts
|
|
37957
|
-
import { useCallback as
|
|
38052
|
+
import { useCallback as useCallback62, useEffect as useEffect37, useRef as useRef55 } from "react";
|
|
37958
38053
|
function resolveSessionActionConversation(viewModel, agentSessionId) {
|
|
37959
38054
|
const active = viewModel.rail.activeConversation;
|
|
37960
38055
|
if (!agentSessionId) {
|
|
@@ -37980,17 +38075,17 @@ function useAgentGUIExternalRequests(input) {
|
|
|
37980
38075
|
viewModel
|
|
37981
38076
|
} = input;
|
|
37982
38077
|
const agentHostApi = useOptionalAgentHostApi();
|
|
37983
|
-
const railInteractionLockProbeRef =
|
|
37984
|
-
const registerRailInteractionLockProbe =
|
|
38078
|
+
const railInteractionLockProbeRef = useRef55(null);
|
|
38079
|
+
const registerRailInteractionLockProbe = useCallback62(
|
|
37985
38080
|
(probe) => {
|
|
37986
38081
|
railInteractionLockProbeRef.current = probe;
|
|
37987
38082
|
},
|
|
37988
38083
|
[]
|
|
37989
38084
|
);
|
|
37990
|
-
const handledNewConversationRequestSequenceRef =
|
|
38085
|
+
const handledNewConversationRequestSequenceRef = useRef55(
|
|
37991
38086
|
newConversationRequestSequence
|
|
37992
38087
|
);
|
|
37993
|
-
const handledSessionActionRequestSequenceRef =
|
|
38088
|
+
const handledSessionActionRequestSequenceRef = useRef55(
|
|
37994
38089
|
sessionActionRequest?.sequence ?? null
|
|
37995
38090
|
);
|
|
37996
38091
|
const copyConversationValue = useAgentGUIConversationCopyAction(labels);
|
|
@@ -38118,16 +38213,16 @@ function AgentGUINodeView({
|
|
|
38118
38213
|
previewMode,
|
|
38119
38214
|
viewModel
|
|
38120
38215
|
});
|
|
38121
|
-
const [providerManagerOpen, setProviderManagerOpen] =
|
|
38122
|
-
const railResizeInteractionRef =
|
|
38123
|
-
const [isRailResizing, setIsRailResizing] =
|
|
38124
|
-
const [railResizeWidthPx, setRailResizeWidthPx] =
|
|
38216
|
+
const [providerManagerOpen, setProviderManagerOpen] = useState45(false);
|
|
38217
|
+
const railResizeInteractionRef = useRef56(null);
|
|
38218
|
+
const [isRailResizing, setIsRailResizing] = useState45(false);
|
|
38219
|
+
const [railResizeWidthPx, setRailResizeWidthPx] = useState45(
|
|
38125
38220
|
null
|
|
38126
38221
|
);
|
|
38127
38222
|
const [
|
|
38128
38223
|
localComposerFocusRequestSequence,
|
|
38129
38224
|
setLocalComposerFocusRequestSequence
|
|
38130
|
-
] =
|
|
38225
|
+
] = useState45(0);
|
|
38131
38226
|
const {
|
|
38132
38227
|
closeWorkspaceReferencePicker,
|
|
38133
38228
|
confirmWorkspaceReferenceBundles,
|
|
@@ -38184,10 +38279,10 @@ function AgentGUINodeView({
|
|
|
38184
38279
|
);
|
|
38185
38280
|
const openProjectFiles = useOptionalStableEventCallback(onLinkAction);
|
|
38186
38281
|
const detailComposerFocusRequestSequence = localComposerFocusRequestSequence === 0 ? composerFocusRequestSequence : (composerFocusRequestSequence ?? 0) + localComposerFocusRequestSequence;
|
|
38187
|
-
const requestComposerFocus =
|
|
38282
|
+
const requestComposerFocus = useCallback63(() => {
|
|
38188
38283
|
setLocalComposerFocusRequestSequence((current) => current + 1);
|
|
38189
38284
|
}, []);
|
|
38190
|
-
const requestCreateConversation =
|
|
38285
|
+
const requestCreateConversation = useCallback63(
|
|
38191
38286
|
(options) => {
|
|
38192
38287
|
if (previewMode) {
|
|
38193
38288
|
return;
|
|
@@ -38224,7 +38319,7 @@ function AgentGUINodeView({
|
|
|
38224
38319
|
workspaceAppIcons
|
|
38225
38320
|
]
|
|
38226
38321
|
);
|
|
38227
|
-
const clampConversationRailWidth =
|
|
38322
|
+
const clampConversationRailWidth = useCallback63(
|
|
38228
38323
|
(widthPx) => Math.min(
|
|
38229
38324
|
conversationRailMaxWidthPx,
|
|
38230
38325
|
Math.max(conversationRailMinWidthPx, widthPx)
|
|
@@ -38232,7 +38327,7 @@ function AgentGUINodeView({
|
|
|
38232
38327
|
[conversationRailMaxWidthPx, conversationRailMinWidthPx]
|
|
38233
38328
|
);
|
|
38234
38329
|
const providerRailWidthPx = conversationRailCollapsed ? 0 : 52;
|
|
38235
|
-
const handleConversationRailResizePointerDown =
|
|
38330
|
+
const handleConversationRailResizePointerDown = useCallback63(
|
|
38236
38331
|
(event) => {
|
|
38237
38332
|
if (previewMode) {
|
|
38238
38333
|
return;
|
|
@@ -38261,7 +38356,7 @@ function AgentGUINodeView({
|
|
|
38261
38356
|
providerRailWidthPx,
|
|
38262
38357
|
railResizeInteractionRef
|
|
38263
38358
|
});
|
|
38264
|
-
const endConversationRailResize =
|
|
38359
|
+
const endConversationRailResize = useCallback63(
|
|
38265
38360
|
(event) => {
|
|
38266
38361
|
const resizeState = railResizeInteractionRef.current;
|
|
38267
38362
|
if (event && resizeState?.pointerId === event.pointerId && event.currentTarget.hasPointerCapture?.(event.pointerId)) {
|
|
@@ -38292,7 +38387,7 @@ function AgentGUINodeView({
|
|
|
38292
38387
|
isRailResizing,
|
|
38293
38388
|
railResizeWidthPx
|
|
38294
38389
|
]);
|
|
38295
|
-
const handleConversationRailResizeKeyDown =
|
|
38390
|
+
const handleConversationRailResizeKeyDown = useCallback63(
|
|
38296
38391
|
(event) => {
|
|
38297
38392
|
if (previewMode) {
|
|
38298
38393
|
return;
|
|
@@ -38358,16 +38453,16 @@ function AgentGUINodeView({
|
|
|
38358
38453
|
openEnvironmentSetup: onAgentEnvPanelOpen,
|
|
38359
38454
|
selectedAgentTarget: viewModel.rail.selectedAgentTarget
|
|
38360
38455
|
});
|
|
38361
|
-
const openAgentSettings =
|
|
38456
|
+
const openAgentSettings = useCallback63(() => {
|
|
38362
38457
|
openWorkspaceSettingsPanel({
|
|
38363
38458
|
section: "agent",
|
|
38364
38459
|
pane: "agents",
|
|
38365
38460
|
provider: effectiveRailConfigProvider ?? void 0
|
|
38366
38461
|
});
|
|
38367
38462
|
}, [effectiveRailConfigProvider]);
|
|
38368
|
-
const [renameConversationTarget, setRenameConversationTarget] =
|
|
38369
|
-
const [renameConversationDialogOpen, setRenameConversationDialogOpen] =
|
|
38370
|
-
const requestRenameConversation =
|
|
38463
|
+
const [renameConversationTarget, setRenameConversationTarget] = useState45(null);
|
|
38464
|
+
const [renameConversationDialogOpen, setRenameConversationDialogOpen] = useState45(false);
|
|
38465
|
+
const requestRenameConversation = useCallback63(
|
|
38371
38466
|
(conversation) => {
|
|
38372
38467
|
setRenameConversationTarget(conversation);
|
|
38373
38468
|
setRenameConversationDialogOpen(true);
|
|
@@ -38699,11 +38794,11 @@ function AgentGUINodeView({
|
|
|
38699
38794
|
// agent-gui/workspaceDesktop/view/AgentProbeInfoPopover.tsx
|
|
38700
38795
|
import { Info as Info2 } from "lucide-react";
|
|
38701
38796
|
import {
|
|
38702
|
-
useCallback as
|
|
38797
|
+
useCallback as useCallback64,
|
|
38703
38798
|
useEffect as useEffect39,
|
|
38704
38799
|
useLayoutEffect as useLayoutEffect9,
|
|
38705
|
-
useRef as
|
|
38706
|
-
useState as
|
|
38800
|
+
useRef as useRef57,
|
|
38801
|
+
useState as useState46
|
|
38707
38802
|
} from "react";
|
|
38708
38803
|
import { createPortal as createPortal5 } from "react-dom";
|
|
38709
38804
|
import { Fragment as Fragment23, jsx as jsx77, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
@@ -38741,22 +38836,22 @@ function AgentProbeInfoPopover({
|
|
|
38741
38836
|
onClose
|
|
38742
38837
|
}) {
|
|
38743
38838
|
"use memo";
|
|
38744
|
-
const anchorRef =
|
|
38745
|
-
const popoverRef =
|
|
38746
|
-
const [isOpen, setIsOpen] =
|
|
38747
|
-
const [popoverStyle, setPopoverStyle] =
|
|
38748
|
-
const openPopover =
|
|
38839
|
+
const anchorRef = useRef57(null);
|
|
38840
|
+
const popoverRef = useRef57(null);
|
|
38841
|
+
const [isOpen, setIsOpen] = useState46(false);
|
|
38842
|
+
const [popoverStyle, setPopoverStyle] = useState46(null);
|
|
38843
|
+
const openPopover = useCallback64(() => {
|
|
38749
38844
|
if (!isOpen) {
|
|
38750
38845
|
onOpen?.();
|
|
38751
38846
|
}
|
|
38752
38847
|
setIsOpen(true);
|
|
38753
38848
|
}, [isOpen, onOpen]);
|
|
38754
|
-
const closePopover =
|
|
38849
|
+
const closePopover = useCallback64(() => {
|
|
38755
38850
|
if (!isOpen) return;
|
|
38756
38851
|
setIsOpen(false);
|
|
38757
38852
|
onClose?.();
|
|
38758
38853
|
}, [isOpen, onClose]);
|
|
38759
|
-
const closeIfPointerLeavesPopover =
|
|
38854
|
+
const closeIfPointerLeavesPopover = useCallback64(
|
|
38760
38855
|
(event) => {
|
|
38761
38856
|
const nextTarget = event.relatedTarget;
|
|
38762
38857
|
if (nextTarget instanceof Node && (anchorRef.current?.contains(nextTarget) || popoverRef.current?.contains(nextTarget))) {
|
|
@@ -38766,7 +38861,7 @@ function AgentProbeInfoPopover({
|
|
|
38766
38861
|
},
|
|
38767
38862
|
[closePopover]
|
|
38768
38863
|
);
|
|
38769
|
-
const updatePopoverPosition =
|
|
38864
|
+
const updatePopoverPosition = useCallback64(() => {
|
|
38770
38865
|
const anchor = anchorRef.current;
|
|
38771
38866
|
if (!anchor) {
|
|
38772
38867
|
return;
|
|
@@ -40090,7 +40185,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
40090
40185
|
conversationRailAutoCollapseWidthPx = null
|
|
40091
40186
|
} = frame;
|
|
40092
40187
|
const railAutoCollapseWidthPx = conversationRailAutoCollapseWidthPx ?? void 0;
|
|
40093
|
-
const widthRef =
|
|
40188
|
+
const widthRef = useRef58(width);
|
|
40094
40189
|
widthRef.current = width;
|
|
40095
40190
|
const {
|
|
40096
40191
|
composerAppend: composerAppendRequest = null,
|
|
@@ -40162,13 +40257,13 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
40162
40257
|
() => typeof i18n?.t === "function" ? createWorkspaceFileManagerI18nRuntime(i18n) : null,
|
|
40163
40258
|
[i18n]
|
|
40164
40259
|
);
|
|
40165
|
-
const handleLinkAction =
|
|
40260
|
+
const handleLinkAction = useCallback65(
|
|
40166
40261
|
(action) => {
|
|
40167
40262
|
onLinkAction?.(action);
|
|
40168
40263
|
},
|
|
40169
40264
|
[onLinkAction]
|
|
40170
40265
|
);
|
|
40171
|
-
const handleAgentProviderLogin =
|
|
40266
|
+
const handleAgentProviderLogin = useCallback65(
|
|
40172
40267
|
(provider) => {
|
|
40173
40268
|
const resolvedProvider = normalizeAgentGUIProviderIdentity(provider);
|
|
40174
40269
|
onAgentProviderLogin?.(
|
|
@@ -40177,7 +40272,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
40177
40272
|
},
|
|
40178
40273
|
[onAgentProviderLogin, state.provider]
|
|
40179
40274
|
);
|
|
40180
|
-
const handleWorkspaceFileReferencesAdded =
|
|
40275
|
+
const handleWorkspaceFileReferencesAdded = useCallback65(
|
|
40181
40276
|
(references) => {
|
|
40182
40277
|
onWorkspaceFileReferencesAdded?.({
|
|
40183
40278
|
provider: state.provider,
|
|
@@ -40186,7 +40281,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
40186
40281
|
},
|
|
40187
40282
|
[onWorkspaceFileReferencesAdded, state.provider]
|
|
40188
40283
|
);
|
|
40189
|
-
const handleDataChange =
|
|
40284
|
+
const handleDataChange = useCallback65(
|
|
40190
40285
|
(updater) => {
|
|
40191
40286
|
if (previewMode) {
|
|
40192
40287
|
return;
|
|
@@ -40195,7 +40290,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
40195
40290
|
},
|
|
40196
40291
|
[onUpdateNode, previewMode]
|
|
40197
40292
|
);
|
|
40198
|
-
const handleConversationRailWidthChanged =
|
|
40293
|
+
const handleConversationRailWidthChanged = useCallback65(
|
|
40199
40294
|
(widthPx) => {
|
|
40200
40295
|
if (previewMode) {
|
|
40201
40296
|
return;
|
|
@@ -40227,7 +40322,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
40227
40322
|
}),
|
|
40228
40323
|
[]
|
|
40229
40324
|
);
|
|
40230
|
-
const toggleConversationRailCollapsed =
|
|
40325
|
+
const toggleConversationRailCollapsed = useCallback65(() => {
|
|
40231
40326
|
if (previewMode) {
|
|
40232
40327
|
return;
|
|
40233
40328
|
}
|
|
@@ -40236,7 +40331,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
40236
40331
|
conversationRailCollapsed: current.conversationRailCollapsed !== true
|
|
40237
40332
|
}));
|
|
40238
40333
|
}, [onUpdateNode, previewMode]);
|
|
40239
|
-
const handleConversationRailToggle =
|
|
40334
|
+
const handleConversationRailToggle = useCallback65(() => {
|
|
40240
40335
|
if (previewMode) {
|
|
40241
40336
|
return;
|
|
40242
40337
|
}
|
|
@@ -40297,7 +40392,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
|
|
|
40297
40392
|
onRememberComposerDefaults,
|
|
40298
40393
|
onShowMessage
|
|
40299
40394
|
});
|
|
40300
|
-
const handleCreateConversation =
|
|
40395
|
+
const handleCreateConversation = useCallback65(
|
|
40301
40396
|
(...args) => {
|
|
40302
40397
|
if (!previewMode) {
|
|
40303
40398
|
onUpdateNode(
|
|
@@ -40595,4 +40690,4 @@ export {
|
|
|
40595
40690
|
AgentHandoffMenu,
|
|
40596
40691
|
AgentGUI
|
|
40597
40692
|
};
|
|
40598
|
-
//# sourceMappingURL=chunk-
|
|
40693
|
+
//# sourceMappingURL=chunk-XN65KAE3.js.map
|