@tutti-os/agent-gui 0.0.140 → 0.0.141

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