@tutti-os/agent-gui 0.0.180 → 0.0.182

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