@tutti-os/agent-gui 0.0.146 → 0.0.147

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -183,7 +183,7 @@ import { memo as memo15, useMemo as useMemo45 } from "react";
183
183
  import { TooltipProvider as TooltipProvider7 } from "@tutti-os/ui-system";
184
184
 
185
185
  // agent-gui/agentGuiNode/AgentGUINode.tsx
186
- import { memo as memo14, useCallback as useCallback60, useEffect as useEffect40, useMemo as useMemo44, useRef as useRef51 } from "react";
186
+ import { memo as memo14, useCallback as useCallback61, useEffect as useEffect40, useMemo as useMemo44, useRef as useRef51 } from "react";
187
187
  import { createWorkspaceUserProjectI18nRuntime } from "@tutti-os/workspace-user-project/i18n";
188
188
  import { createWorkspaceFileManagerI18nRuntime } from "@tutti-os/workspace-file-manager";
189
189
  import { useReferenceProvenanceFilterCatalog } from "@tutti-os/workspace-file-reference/react";
@@ -13314,7 +13314,7 @@ function useAgentGUINodeController({
13314
13314
 
13315
13315
  // agent-gui/agentGuiNode/AgentGUINodeView.tsx
13316
13316
  import {
13317
- useCallback as useCallback58,
13317
+ useCallback as useCallback59,
13318
13318
  useEffect as useEffect38,
13319
13319
  useMemo as useMemo41,
13320
13320
  useRef as useRef49,
@@ -14249,7 +14249,7 @@ function AgentGUIConfigMenu({
14249
14249
  // agent-gui/agentGuiNode/view/AgentGUIProviderRail.tsx
14250
14250
  import {
14251
14251
  memo as memo4,
14252
- useCallback as useCallback44,
14252
+ useCallback as useCallback45,
14253
14253
  useMemo as useMemo32,
14254
14254
  useRef as useRef36,
14255
14255
  useState as useState27
@@ -16181,7 +16181,7 @@ function AgentSessionChrome({
16181
16181
  }
16182
16182
 
16183
16183
  // agent-gui/agentGuiNode/AgentComposer.tsx
16184
- import { useEffect as useEffect28, useRef as useRef33, useState as useState23 } from "react";
16184
+ import { useCallback as useCallback42, useEffect as useEffect28, useRef as useRef33, useState as useState23 } from "react";
16185
16185
  import { repairMentionPaletteHighlight } from "@tutti-os/ui-rich-text/at-panel";
16186
16186
 
16187
16187
  // agent-gui/agentGuiNode/AgentSlashStatusPanel.tsx
@@ -24547,7 +24547,6 @@ function AgentComposerView(input) {
24547
24547
  selectFileMention
24548
24548
  } = input.mentionActions;
24549
24549
  const {
24550
- addDraftFiles,
24551
24550
  clearGoalModeBadge,
24552
24551
  expandDraftLargeTextToPrompt,
24553
24552
  handleDraftChange,
@@ -24798,8 +24797,8 @@ function AgentComposerView(input) {
24798
24797
  onPromptImagesUnsupported,
24799
24798
  onPasteImages: handlePastedImages,
24800
24799
  onPasteLargeText: handlePastedLargeText,
24801
- onPasteFiles: input.promptFilesSupported ? addDraftFiles : void 0,
24802
- onDropFiles: input.promptFilesSupported ? addDraftFiles : void 0
24800
+ onPasteFiles: input.externalPromptEntriesSupported ? input.addExternalPromptEntries : void 0,
24801
+ onDropFiles: input.externalPromptEntriesSupported ? input.addExternalPromptEntries : void 0
24803
24802
  }
24804
24803
  ),
24805
24804
  !isHeroLayout ? composerActionButton : null
@@ -25102,6 +25101,58 @@ var INITIAL_AGENT_MENTION_SEARCH_STATE = {
25102
25101
  error: null
25103
25102
  };
25104
25103
 
25104
+ // agent-gui/agentGuiNode/model/agentExternalPromptEntries.ts
25105
+ function resolveAgentExternalPromptEntries(files, resolver) {
25106
+ if (!resolver) return files.map(preparedEntry);
25107
+ let resolved;
25108
+ try {
25109
+ resolved = resolver(files);
25110
+ } catch {
25111
+ return files.map(preparedEntry);
25112
+ }
25113
+ const resultByIndex = /* @__PURE__ */ new Map();
25114
+ for (const result of resolved) {
25115
+ if (!Number.isInteger(result.sourceIndex) || result.sourceIndex < 0 || result.sourceIndex >= files.length || resultByIndex.has(result.sourceIndex)) {
25116
+ return files.map(preparedEntry);
25117
+ }
25118
+ if (result.disposition === "reference" && !result.reference.path.trim()) {
25119
+ return files.map(preparedEntry);
25120
+ }
25121
+ resultByIndex.set(result.sourceIndex, result);
25122
+ }
25123
+ if (resultByIndex.size !== files.length) return files.map(preparedEntry);
25124
+ return files.map((file, sourceIndex) => {
25125
+ const result = resultByIndex.get(sourceIndex);
25126
+ return result.disposition === "reference" ? {
25127
+ disposition: "reference",
25128
+ reference: result.reference,
25129
+ sourceIndex
25130
+ } : preparedEntry(file, sourceIndex);
25131
+ });
25132
+ }
25133
+ function groupAgentExternalPromptEntryInsertions(entries) {
25134
+ const insertions = [];
25135
+ for (const entry of entries) {
25136
+ if (entry.disposition === "reference") {
25137
+ insertions.push({
25138
+ disposition: "reference",
25139
+ reference: entry.reference
25140
+ });
25141
+ continue;
25142
+ }
25143
+ const previous = insertions.at(-1);
25144
+ if (previous?.disposition === "prepare") {
25145
+ previous.files.push(entry.file);
25146
+ } else {
25147
+ insertions.push({ disposition: "prepare", files: [entry.file] });
25148
+ }
25149
+ }
25150
+ return insertions;
25151
+ }
25152
+ function preparedEntry(file, sourceIndex) {
25153
+ return { disposition: "prepare", file, sourceIndex };
25154
+ }
25155
+
25105
25156
  // agent-gui/agentGuiNode/AgentComposer.tsx
25106
25157
  import { jsx as jsx39 } from "react/jsx-runtime";
25107
25158
  var DOCK_COMPOSER_INPUT_MIN_HEIGHT2 = 56;
@@ -25166,6 +25217,7 @@ function AgentComposer(props) {
25166
25217
  onSlashStatusOpen,
25167
25218
  onLinkAction,
25168
25219
  onRequestWorkspaceReferences = null,
25220
+ resolveExternalPromptEntries = null,
25169
25221
  prepareExternalPromptFiles = null,
25170
25222
  promptAssetLimit = null,
25171
25223
  onRequestGitBranches = null,
@@ -25183,6 +25235,9 @@ function AgentComposer(props) {
25183
25235
  const promptFilesSupported = Boolean(
25184
25236
  canUploadAttachment && prepareExternalPromptFiles
25185
25237
  );
25238
+ const externalPromptEntriesSupported = Boolean(
25239
+ resolveExternalPromptEntries || promptFilesSupported
25240
+ );
25186
25241
  const pastedTextStagingSupported = Boolean(
25187
25242
  canUploadAttachment && agentActivityRuntime?.stagePastedText
25188
25243
  );
@@ -25451,6 +25506,26 @@ function AgentComposer(props) {
25451
25506
  onLinkAction
25452
25507
  });
25453
25508
  const { addDraftFiles, addDraftImages } = attachments;
25509
+ const addExternalPromptEntries = useCallback42(
25510
+ (files) => {
25511
+ const entries = resolveAgentExternalPromptEntries(
25512
+ files,
25513
+ resolveExternalPromptEntries
25514
+ );
25515
+ for (const insertion of groupAgentExternalPromptEntryInsertions(
25516
+ entries
25517
+ )) {
25518
+ if (insertion.disposition === "prepare") {
25519
+ addDraftFiles(insertion.files);
25520
+ } else {
25521
+ editorHandleRef.current?.insertWorkspaceReferences([
25522
+ insertion.reference
25523
+ ]);
25524
+ }
25525
+ }
25526
+ },
25527
+ [addDraftFiles, editorHandleRef, resolveExternalPromptEntries]
25528
+ );
25454
25529
  const providerState = useComposerProviderTargets({
25455
25530
  layoutMode,
25456
25531
  previewMode,
@@ -25486,10 +25561,10 @@ function AgentComposer(props) {
25486
25561
  lastComposerFocusRequestRef,
25487
25562
  isActive,
25488
25563
  composerFocusRequestSequence,
25489
- promptFilesSupported,
25564
+ promptFilesSupported: externalPromptEntriesSupported,
25490
25565
  promptImagesSupported: canUploadAttachment && promptImagesSupported,
25491
25566
  addDraftImages,
25492
- addDraftFiles,
25567
+ addDraftFiles: addExternalPromptEntries,
25493
25568
  onPromptImagesUnsupported
25494
25569
  });
25495
25570
  const { fileDropOverlayActive, fileDropOverlayHost } = focusAndDrop;
@@ -25571,7 +25646,8 @@ function AgentComposer(props) {
25571
25646
  promptTipRef,
25572
25647
  editorHandleRef,
25573
25648
  mentionControllerRef,
25574
- promptFilesSupported,
25649
+ externalPromptEntriesSupported,
25650
+ addExternalPromptEntries,
25575
25651
  onDismissProjectMenuAutoFocus: restoreComposerCaretAfterProjectMenu,
25576
25652
  paletteDraftPrompt,
25577
25653
  showFileMentionPalette,
@@ -25962,7 +26038,7 @@ import {
25962
26038
  // shared/agentEnv/agentTargetSetupController.tsx
25963
26039
  import {
25964
26040
  createContext,
25965
- useCallback as useCallback42,
26041
+ useCallback as useCallback43,
25966
26042
  useContext,
25967
26043
  useMemo as useMemo30,
25968
26044
  useRef as useRef34
@@ -26035,7 +26111,7 @@ function useCreateAgentTargetSetupController(agentTarget) {
26035
26111
  () => enabled ? hostApi?.agentTargetSetup?.watch({ agentTargetId }) ?? null : null,
26036
26112
  [agentTargetId, enabled, hostApi?.agentTargetSetup]
26037
26113
  );
26038
- const showNotification = useCallback42(
26114
+ const showNotification = useCallback43(
26039
26115
  (notification) => showTargetSetupFailureNotification({
26040
26116
  hostToast: hostApi?.toast,
26041
26117
  notification,
@@ -26043,7 +26119,7 @@ function useCreateAgentTargetSetupController(agentTarget) {
26043
26119
  }),
26044
26120
  [hostApi?.toast, t]
26045
26121
  );
26046
- const logCommandError = useCallback42(
26122
+ const logCommandError = useCallback43(
26047
26123
  (command, error) => {
26048
26124
  hostApi?.debug?.logRuntimeDiagnostics({
26049
26125
  agentTargetId,
@@ -27486,7 +27562,7 @@ function AgentGUIProviderManagerDialog({
27486
27562
  }
27487
27563
 
27488
27564
  // agent-gui/agentGuiNode/view/useAgentGUIProviderRailPreferences.ts
27489
- import { useCallback as useCallback43, useEffect as useEffect29, useState as useState26 } from "react";
27565
+ import { useCallback as useCallback44, useEffect as useEffect29, useState as useState26 } from "react";
27490
27566
  function readAgentGUIProviderRailPreferences(storageKey) {
27491
27567
  return parseAgentGUIProviderRailPreferences(
27492
27568
  globalThis.localStorage?.getItem(storageKey)
@@ -27519,7 +27595,7 @@ function useAgentGUIProviderRailPreferences() {
27519
27595
  );
27520
27596
  };
27521
27597
  }, [storageKey]);
27522
- const persistPreferences = useCallback43(
27598
+ const persistPreferences = useCallback44(
27523
27599
  (nextPreferences) => {
27524
27600
  setPreferences(nextPreferences);
27525
27601
  globalThis.localStorage?.setItem(
@@ -27629,7 +27705,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
27629
27705
  } = useAgentGUIProviderRailPreferences();
27630
27706
  const [dragState, setDragState] = useState27(null);
27631
27707
  const dragStateRef = useRef36(null);
27632
- const setProviderRailDragState = useCallback44(
27708
+ const setProviderRailDragState = useCallback45(
27633
27709
  (nextDragState) => {
27634
27710
  dragStateRef.current = nextDragState;
27635
27711
  setDragState(nextDragState);
@@ -27693,11 +27769,11 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
27693
27769
  [effectiveHiddenTargetIds, providerTiles]
27694
27770
  );
27695
27771
  const allTileSelected = conversationFilter.kind === "all";
27696
- const selectAllProviders = useCallback44(() => {
27772
+ const selectAllProviders = useCallback45(() => {
27697
27773
  onUpdateConversationFilter({ kind: "all" });
27698
27774
  onRequestComposerFocus();
27699
27775
  }, [onRequestComposerFocus, onUpdateConversationFilter]);
27700
- const selectAgentTargetTile = useCallback44(
27776
+ const selectAgentTargetTile = useCallback45(
27701
27777
  (target) => {
27702
27778
  const agentTargetId = target.agentTargetId?.trim() ?? "";
27703
27779
  if (!agentTargetId) {
@@ -27711,10 +27787,10 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
27711
27787
  },
27712
27788
  [onRequestComposerFocus, onSelectConversationFilterTarget]
27713
27789
  );
27714
- const clearProviderRailDragState = useCallback44(() => {
27790
+ const clearProviderRailDragState = useCallback45(() => {
27715
27791
  setProviderRailDragState(null);
27716
27792
  }, [setProviderRailDragState]);
27717
- const handleProviderRailDragStart = useCallback44(
27793
+ const handleProviderRailDragStart = useCallback45(
27718
27794
  (event, target) => {
27719
27795
  if (previewMode || agentTargetsLoading) {
27720
27796
  event.preventDefault();
@@ -27730,7 +27806,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
27730
27806
  },
27731
27807
  [previewMode, agentTargetsLoading, setProviderRailDragState]
27732
27808
  );
27733
- const handleProviderRailDragOver = useCallback44(
27809
+ const handleProviderRailDragOver = useCallback45(
27734
27810
  (event, target) => {
27735
27811
  if (previewMode || agentTargetsLoading || !dragState) {
27736
27812
  return;
@@ -27762,7 +27838,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
27762
27838
  },
27763
27839
  [dragState, previewMode, agentTargetsLoading, setProviderRailDragState]
27764
27840
  );
27765
- const commitProviderRailDragDrop = useCallback44(
27841
+ const commitProviderRailDragDrop = useCallback45(
27766
27842
  (event) => {
27767
27843
  const fallbackDraggedTargetId = event.dataTransfer.getData("text/plain").trim();
27768
27844
  const activeDragState = dragStateRef.current ?? dragState ?? (fallbackDraggedTargetId ? {
@@ -27891,7 +27967,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
27891
27967
  onUpdateConversationFilter({ kind: "all" });
27892
27968
  }
27893
27969
  };
27894
- const handleProviderRailContainerDragOver = useCallback44(
27970
+ const handleProviderRailContainerDragOver = useCallback45(
27895
27971
  (event) => {
27896
27972
  const activeDragState = dragStateRef.current ?? dragState;
27897
27973
  if (!activeDragState || previewMode || agentTargetsLoading) {
@@ -28847,7 +28923,7 @@ function reduceAgentGUIConversationRailViewState(state, action) {
28847
28923
  }
28848
28924
 
28849
28925
  // agent-gui/agentGuiNode/controller/useAgentGUIProjectDrag.ts
28850
- import { useCallback as useCallback45, useState as useState28 } from "react";
28926
+ import { useCallback as useCallback46, useState as useState28 } from "react";
28851
28927
  var PROJECT_DRAG_SCROLL_EDGE_PX = 40;
28852
28928
  function projectDragAutoScrollDelta(clientY, bounds) {
28853
28929
  if (clientY < bounds.top + PROJECT_DRAG_SCROLL_EDGE_PX) {
@@ -28875,14 +28951,14 @@ function useAgentGUIProjectDrag(input) {
28875
28951
  image: null,
28876
28952
  viewport: null
28877
28953
  }));
28878
- const stopAutoScroll = useCallback45(() => {
28954
+ const stopAutoScroll = useCallback46(() => {
28879
28955
  if (runtime.frame !== null) {
28880
28956
  window.cancelAnimationFrame(runtime.frame);
28881
28957
  runtime.frame = null;
28882
28958
  }
28883
28959
  runtime.clientY = null;
28884
28960
  }, [runtime]);
28885
- const clear = useCallback45(() => {
28961
+ const clear = useCallback46(() => {
28886
28962
  stopAutoScroll();
28887
28963
  runtime.image?.remove();
28888
28964
  runtime.image = null;
@@ -28891,7 +28967,7 @@ function useAgentGUIProjectDrag(input) {
28891
28967
  runtime.viewport = null;
28892
28968
  setDragState(null);
28893
28969
  }, [runtime, stopAutoScroll]);
28894
- const runAutoScroll = useCallback45(() => {
28970
+ const runAutoScroll = useCallback46(() => {
28895
28971
  runtime.frame = null;
28896
28972
  const viewport = runtime.viewport ?? input.scrollViewportRef.current;
28897
28973
  if (!runtime.active || !viewport || runtime.clientY === null) return;
@@ -28902,7 +28978,7 @@ function useAgentGUIProjectDrag(input) {
28902
28978
  runtime.frame = window.requestAnimationFrame(runAutoScroll);
28903
28979
  }
28904
28980
  }, [input.scrollViewportRef, runtime]);
28905
- const trackPosition = useCallback45(
28981
+ const trackPosition = useCallback46(
28906
28982
  (clientY) => {
28907
28983
  if (!runtime.active) return;
28908
28984
  runtime.clientY = clientY;
@@ -28912,7 +28988,7 @@ function useAgentGUIProjectDrag(input) {
28912
28988
  },
28913
28989
  [runAutoScroll, runtime]
28914
28990
  );
28915
- const start = useCallback45(
28991
+ const start = useCallback46(
28916
28992
  (section, event) => {
28917
28993
  const projectId = section.project?.id?.trim() ?? "";
28918
28994
  if (input.disabled || isMovePending || !projectId) {
@@ -28953,7 +29029,7 @@ function useAgentGUIProjectDrag(input) {
28953
29029
  },
28954
29030
  [input.disabled, isMovePending, runtime]
28955
29031
  );
28956
- const updateTarget = useCallback45(
29032
+ const updateTarget = useCallback46(
28957
29033
  (section, edge, event) => {
28958
29034
  const targetId = section.project?.id?.trim() ?? "";
28959
29035
  const currentDragState = runtime.dragState;
@@ -28993,7 +29069,7 @@ function useAgentGUIProjectDrag(input) {
28993
29069
  },
28994
29070
  [input.userProjects, runtime, trackPosition]
28995
29071
  );
28996
- const drop = useCallback45(
29072
+ const drop = useCallback46(
28997
29073
  async (event) => {
28998
29074
  const currentDragState = runtime.dragState;
28999
29075
  if (!currentDragState || !runtime.active) return;
@@ -29013,7 +29089,7 @@ function useAgentGUIProjectDrag(input) {
29013
29089
  },
29014
29090
  [clear, input.onMoveProject, runtime]
29015
29091
  );
29016
- const keepValidDropTarget = useCallback45(
29092
+ const keepValidDropTarget = useCallback46(
29017
29093
  (event) => {
29018
29094
  if (!runtime.active || !runtime.dragState?.canDrop) return;
29019
29095
  event.preventDefault();
@@ -29021,7 +29097,7 @@ function useAgentGUIProjectDrag(input) {
29021
29097
  },
29022
29098
  [runtime]
29023
29099
  );
29024
- const installGlobalListeners = useCallback45(() => {
29100
+ const installGlobalListeners = useCallback46(() => {
29025
29101
  const clearOnGlobalEnd = () => clear();
29026
29102
  const trackGlobalPosition = (event) => trackPosition(event.clientY);
29027
29103
  document.addEventListener("dragend", clearOnGlobalEnd, true);
@@ -29047,10 +29123,10 @@ function useAgentGUIProjectDrag(input) {
29047
29123
  }
29048
29124
 
29049
29125
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailSection.tsx
29050
- import { memo as memo7, useCallback as useCallback49 } from "react";
29126
+ import { memo as memo7, useCallback as useCallback50 } from "react";
29051
29127
 
29052
29128
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailItem.tsx
29053
- import { memo as memo5, useCallback as useCallback47, useMemo as useMemo34 } from "react";
29129
+ import { memo as memo5, useCallback as useCallback48, useMemo as useMemo34 } from "react";
29054
29130
  import { ExternalLink as ExternalLink3 } from "lucide-react";
29055
29131
  import { IssueIcon, NewWorkspaceLinedIcon as NewWorkspaceLinedIcon2, cn as cn7 } from "@tutti-os/ui-system";
29056
29132
  import { WorkspaceUserProjectSelect as WorkspaceUserProjectSelect2 } from "@tutti-os/workspace-user-project/ui";
@@ -29287,7 +29363,7 @@ function AgentGUIConversationRailRelativeTime({
29287
29363
  // agent-gui/agentGuiNode/view/AgentGUIConversationActionsMenu.tsx
29288
29364
  import {
29289
29365
  Fragment as Fragment14,
29290
- useCallback as useCallback46,
29366
+ useCallback as useCallback47,
29291
29367
  useMemo as useMemo33,
29292
29368
  useRef as useRef37,
29293
29369
  useState as useState29
@@ -29371,7 +29447,7 @@ async function readWorkspaceImageAsAttachment(readFile, input) {
29371
29447
  }
29372
29448
  function useAgentGUIClipboardWriter(labels) {
29373
29449
  const agentHostApi = useOptionalAgentHostApi();
29374
- return useCallback46(
29450
+ return useCallback47(
29375
29451
  (value, toastHandle) => {
29376
29452
  const payload = typeof value === "string" ? { text: value } : value;
29377
29453
  const clipboard = agentHostApi?.clipboard;
@@ -29407,7 +29483,7 @@ function useAgentGUIConversationCopyAction(labels) {
29407
29483
  const agentHostApi = useOptionalAgentHostApi();
29408
29484
  const agentActivityRuntime = useOptionalAgentActivityRuntime();
29409
29485
  const writeClipboardValue = useAgentGUIClipboardWriter(labels);
29410
- return useCallback46(
29486
+ return useCallback47(
29411
29487
  (action, { conversation, uiLanguage, workspaceId }) => {
29412
29488
  if (action === "copy-reference") {
29413
29489
  writeClipboardValue(
@@ -29502,7 +29578,7 @@ function useConversationActionGroups({
29502
29578
  const copyConversationValue = useAgentGUIConversationCopyAction(labels);
29503
29579
  const [resetKey, setResetKey] = useState29(0);
29504
29580
  const pendingActionRef = useRef37(false);
29505
- const run = useCallback46(
29581
+ const run = useCallback47(
29506
29582
  (action) => {
29507
29583
  if (pendingActionRef.current) {
29508
29584
  return;
@@ -29751,13 +29827,13 @@ var AgentGUIConversationRailItem = memo5(
29751
29827
  workspaceId,
29752
29828
  agentTargets
29753
29829
  );
29754
- const setItemElement = useCallback47(
29830
+ const setItemElement = useCallback48(
29755
29831
  (element) => {
29756
29832
  registerItemElement(item.id, element);
29757
29833
  },
29758
29834
  [item.id, registerItemElement]
29759
29835
  );
29760
- const handleMouseLeave = useCallback47(() => {
29836
+ const handleMouseLeave = useCallback48(() => {
29761
29837
  if (isPendingDeleteConversation && !isRailInteractionLocked()) {
29762
29838
  onCancelDeleteConversation();
29763
29839
  }
@@ -30053,7 +30129,7 @@ function AgentGUIProjectRailHeader({
30053
30129
  }
30054
30130
 
30055
30131
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailSectionHeader.tsx
30056
- import { forwardRef as forwardRef5, memo as memo6, useCallback as useCallback48, useState as useState30 } from "react";
30132
+ import { forwardRef as forwardRef5, memo as memo6, useCallback as useCallback49, useState as useState30 } from "react";
30057
30133
  import { ChevronRight as ChevronRight2 } from "lucide-react";
30058
30134
  import {
30059
30135
  DropdownMenu as DropdownMenu5,
@@ -30465,7 +30541,7 @@ var AgentGUIConversationRailSectionHeader = memo6(
30465
30541
  "use memo";
30466
30542
  const [projectMenuOpen, setProjectMenuOpen] = useState30(false);
30467
30543
  const [conversationMenuOpen, setConversationMenuOpen] = useState30(false);
30468
- const handleProjectMenuOpenChange = useCallback48(
30544
+ const handleProjectMenuOpenChange = useCallback49(
30469
30545
  (open) => {
30470
30546
  setProjectMenuOpen(open);
30471
30547
  onProjectMenuOpenChange(open);
@@ -30617,7 +30693,7 @@ var AgentGUIConversationRailSection = memo7(
30617
30693
  const visibleCountTowardTotal = visiblePageableIds.size + (activeConversationCountsTowardTotal && activeConversation && visibleItems.some((item) => item.id === activeConversation.id) && !visiblePageableIds.has(activeConversation.id) ? 1 : 0);
30618
30694
  const canShowMore = !isSectionCollapsed && visibleCountTowardTotal < sectionTotalCount && (visibleItemCount < pageableItems.length || sectionHasMore);
30619
30695
  const canShowLess = !isSectionCollapsed && visibleItemCount > AGENT_GUI_CONVERSATION_RAIL_SECTION_PAGE_SIZE;
30620
- const showMoreConversations = useCallback49(() => {
30696
+ const showMoreConversations = useCallback50(() => {
30621
30697
  if (isRailInteractionLocked()) return;
30622
30698
  if (visibleItemCount >= pageableItems.length && sectionHasMore) {
30623
30699
  onLoadMoreConversations(section);
@@ -30644,7 +30720,7 @@ var AgentGUIConversationRailSection = memo7(
30644
30720
  visibleItemCount,
30645
30721
  visibleItemLimit
30646
30722
  ]);
30647
- const showLessConversations = useCallback49(() => {
30723
+ const showLessConversations = useCallback50(() => {
30648
30724
  if (isRailInteractionLocked()) return;
30649
30725
  onVisibleItemLimitChange(
30650
30726
  section.id,
@@ -30856,7 +30932,7 @@ function AgentGUIProjectActionConfirmationDialog(props) {
30856
30932
  }
30857
30933
 
30858
30934
  // agent-gui/agentGuiNode/view/useAgentGUIConversationRailViewState.ts
30859
- import { useCallback as useCallback50, useLayoutEffect as useLayoutEffect6, useReducer, useRef as useRef38 } from "react";
30935
+ import { useCallback as useCallback51, useLayoutEffect as useLayoutEffect6, useReducer, useRef as useRef38 } from "react";
30860
30936
  function applyRailScrollNavigation(input) {
30861
30937
  const activeConversationId = input.activeConversationId?.trim() || null;
30862
30938
  const current = input.current.navigationKey === input.navigationKey ? input.current : {
@@ -30956,7 +31032,7 @@ function useAgentGUIConversationRailViewState(input) {
30956
31032
  navigationKey,
30957
31033
  searchActive
30958
31034
  ]);
30959
- const registerConversationItemElement = useCallback50(
31035
+ const registerConversationItemElement = useCallback51(
30960
31036
  (itemId, element) => {
30961
31037
  if (element) {
30962
31038
  conversationItemElementsRef.current.set(itemId, element);
@@ -30996,14 +31072,14 @@ function useAgentGUIConversationRailViewState(input) {
30996
31072
  }
30997
31073
 
30998
31074
  // agent-gui/agentGuiNode/view/useAgentGUIProjectMenuState.ts
30999
- import { useCallback as useCallback51, useState as useState31 } from "react";
31075
+ import { useCallback as useCallback52, useState as useState31 } from "react";
31000
31076
  function useAgentGUIProjectMenuState(isRailInteractionLocked, isUserProjectMutationPending) {
31001
31077
  const [openSectionId, setOpenSectionId] = useState31(null);
31002
- const isProjectActionLocked = useCallback51(
31078
+ const isProjectActionLocked = useCallback52(
31003
31079
  () => isRailInteractionLocked() || isUserProjectMutationPending,
31004
31080
  [isRailInteractionLocked, isUserProjectMutationPending]
31005
31081
  );
31006
- const onProjectMenuOpenChange = useCallback51(
31082
+ const onProjectMenuOpenChange = useCallback52(
31007
31083
  (sectionId, open) => {
31008
31084
  setOpenSectionId(
31009
31085
  (current) => open ? sectionId : current === sectionId ? null : current
@@ -32738,7 +32814,7 @@ var AgentGUIConversationRailController = memo9(
32738
32814
  // agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
32739
32815
  import {
32740
32816
  memo as memo12,
32741
- useCallback as useCallback53,
32817
+ useCallback as useCallback54,
32742
32818
  useEffect as useEffect34,
32743
32819
  useMemo as useMemo38,
32744
32820
  useRef as useRef43,
@@ -33364,7 +33440,7 @@ function setTimelineScrollTopWithUserTransition(element, top) {
33364
33440
 
33365
33441
  // agent-gui/agentGuiNode/view/useAgentGUIDetailScroll.ts
33366
33442
  import {
33367
- useCallback as useCallback52,
33443
+ useCallback as useCallback53,
33368
33444
  useEffect as useEffect33,
33369
33445
  useLayoutEffect as useLayoutEffect7,
33370
33446
  useRef as useRef42,
@@ -33672,7 +33748,7 @@ function useAgentGUIDetailScroll(input) {
33672
33748
  viewModel.detail.hasOlderMessages,
33673
33749
  viewModel.detail.isLoadingOlderMessages
33674
33750
  ]);
33675
- const scrollTimelineToBottom = useCallback52(() => {
33751
+ const scrollTimelineToBottom = useCallback53(() => {
33676
33752
  const timeline = timelineRef.current;
33677
33753
  const activeConversationId = timelineConversationId;
33678
33754
  if (!timeline || !activeConversationId) {
@@ -34375,6 +34451,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34375
34451
  onCapabilitySettingsRequest,
34376
34452
  onAgentProviderLogin,
34377
34453
  onRequestWorkspaceReferences,
34454
+ resolveExternalPromptEntries = null,
34378
34455
  prepareExternalPromptFiles = null,
34379
34456
  promptAssetLimit = null,
34380
34457
  selectProjectDirectory,
@@ -34429,7 +34506,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34429
34506
  slashStatusLimitsUnavailable,
34430
34507
  viewModel
34431
34508
  });
34432
- const handleInterruptCurrentTurn = useCallback53(() => {
34509
+ const handleInterruptCurrentTurn = useCallback54(() => {
34433
34510
  actions.interruptCurrentTurn(labels.noRunningResponse);
34434
34511
  }, [actions.interruptCurrentTurn, labels.noRunningResponse]);
34435
34512
  const submitApprovalOption = useStableEventCallback(
@@ -34449,14 +34526,14 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34449
34526
  const selectHomeComposerAgentTarget = useStableEventCallback(
34450
34527
  actions.selectHomeComposerAgentTarget
34451
34528
  );
34452
- const selectHomeComposerAgentTargetAndFocus = useCallback53(
34529
+ const selectHomeComposerAgentTargetAndFocus = useCallback54(
34453
34530
  (input) => {
34454
34531
  selectHomeComposerAgentTarget(input);
34455
34532
  onRequestComposerFocus();
34456
34533
  },
34457
34534
  [onRequestComposerFocus, selectHomeComposerAgentTarget]
34458
34535
  );
34459
- const handleSelectHomeSuggestion = useCallback53(
34536
+ const handleSelectHomeSuggestion = useCallback54(
34460
34537
  (prompt) => {
34461
34538
  updateDraftContent(
34462
34539
  updateAgentComposerDraft(viewModel.composer.draftContent, { prompt })
@@ -34464,7 +34541,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34464
34541
  },
34465
34542
  [updateDraftContent, viewModel.composer.draftContent]
34466
34543
  );
34467
- const handleHomeSuggestionAction = useCallback53(
34544
+ const handleHomeSuggestionAction = useCallback54(
34468
34545
  (action) => {
34469
34546
  if (action === "import-session") {
34470
34547
  window.dispatchEvent(
@@ -34479,7 +34556,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34479
34556
  const submitGuidancePrompt = useStableEventCallback(
34480
34557
  actions.submitGuidancePrompt
34481
34558
  );
34482
- const requestSubmittedPromptScrollToBottom = useCallback53(() => {
34559
+ const requestSubmittedPromptScrollToBottom = useCallback54(() => {
34483
34560
  const activeConversationId = viewModel.rail.activeConversationId;
34484
34561
  if (!activeConversationId) {
34485
34562
  return;
@@ -34487,7 +34564,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34487
34564
  submittedPromptScrollConversationRef.current = activeConversationId;
34488
34565
  pendingPrependScrollAnchorRef.current = null;
34489
34566
  }, [viewModel.rail.activeConversationId]);
34490
- const submitPromptAndScrollToBottom = useCallback53(
34567
+ const submitPromptAndScrollToBottom = useCallback54(
34491
34568
  (content, displayPrompt, options) => {
34492
34569
  requestSubmittedPromptScrollToBottom();
34493
34570
  if (displayPrompt === void 0) {
@@ -34498,7 +34575,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34498
34575
  },
34499
34576
  [requestSubmittedPromptScrollToBottom, submitPrompt]
34500
34577
  );
34501
- const submitGuidancePromptAndScrollToBottom = useCallback53(
34578
+ const submitGuidancePromptAndScrollToBottom = useCallback54(
34502
34579
  (content, displayPrompt) => {
34503
34580
  requestSubmittedPromptScrollToBottom();
34504
34581
  if (displayPrompt === void 0) {
@@ -34529,7 +34606,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34529
34606
  );
34530
34607
  const stableRequestGitBranches = useOptionalStableEventCallback(onRequestGitBranches);
34531
34608
  const authLogin = useOptionalStableEventCallback(onAgentProviderLogin);
34532
- const submitBottomDockInteractivePrompt = useCallback53(
34609
+ const submitBottomDockInteractivePrompt = useCallback54(
34533
34610
  (input) => {
34534
34611
  submitInteractivePrompt(input);
34535
34612
  setBottomDockDismissedPromptRequestId(input.requestId);
@@ -34635,6 +34712,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34635
34712
  onLinkAction: stableLinkAction,
34636
34713
  onHandoffConversation: stableHandoffConversation,
34637
34714
  onRequestWorkspaceReferences: stableRequestWorkspaceReferences,
34715
+ resolveExternalPromptEntries,
34638
34716
  prepareExternalPromptFiles,
34639
34717
  promptAssetLimit,
34640
34718
  selectProjectDirectory: stableSelectProjectDirectory,
@@ -34672,6 +34750,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34672
34750
  editQueuedPrompt,
34673
34751
  onCapabilitySettingsRequest,
34674
34752
  removeQueuedPrompt,
34753
+ resolveExternalPromptEntries,
34675
34754
  prepareExternalPromptFiles,
34676
34755
  promptAssetLimit,
34677
34756
  sendQueuedPromptNext,
@@ -34867,7 +34946,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
34867
34946
  });
34868
34947
 
34869
34948
  // agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
34870
- import { memo as memo13, useCallback as useCallback54, useEffect as useEffect35, useRef as useRef44, useState as useState39 } from "react";
34949
+ import { memo as memo13, useCallback as useCallback55, useEffect as useEffect35, useRef as useRef44, useState as useState39 } from "react";
34871
34950
  import { ConfirmationDialog as ConfirmationDialog3, Input as Input2 } from "@tutti-os/ui-system";
34872
34951
  import { jsx as jsx69, jsxs as jsxs49 } from "react/jsx-runtime";
34873
34952
  var AgentGUIRenameConversationDialog = memo13(
@@ -34905,12 +34984,12 @@ var AgentGUIRenameConversationDialog = memo13(
34905
34984
  }, 0);
34906
34985
  return () => window.clearTimeout(timer);
34907
34986
  }, [open, conversation?.id]);
34908
- const closeRenameDialog = useCallback54(() => {
34987
+ const closeRenameDialog = useCallback55(() => {
34909
34988
  if (!isSavingRef.current) {
34910
34989
  onOpenChange(false);
34911
34990
  }
34912
34991
  }, [onOpenChange]);
34913
- const confirmRename = useCallback54(() => {
34992
+ const confirmRename = useCallback55(() => {
34914
34993
  if (!conversation || isSavingRef.current || !trimmedTitle) {
34915
34994
  return;
34916
34995
  }
@@ -35112,7 +35191,7 @@ function AgentGUIReferencePickerSurface({
35112
35191
  }
35113
35192
 
35114
35193
  // agent-gui/agentGuiNode/view/AgentTargetSetupRoot.tsx
35115
- import { useCallback as useCallback55, useMemo as useMemo39 } from "react";
35194
+ import { useCallback as useCallback56, useMemo as useMemo39 } from "react";
35116
35195
  import { jsx as jsx71, jsxs as jsxs50 } from "react/jsx-runtime";
35117
35196
  function useAgentTargetSetupRoot(input) {
35118
35197
  const { preferences } = useAgentGUIProviderRailPreferences();
@@ -35130,7 +35209,7 @@ function useAgentTargetSetupRoot(input) {
35130
35209
  );
35131
35210
  const targetRuntimeSetupVisible = effectiveSelectedTarget.ref.setupKind === "target_runtime";
35132
35211
  const environmentSetupVisible = targetRuntimeSetupVisible || !!resolveAgentGUIProviderCatalogIdentity(input.environmentProvider ?? "");
35133
- const openAgentEnvSetup = useCallback55(() => {
35212
+ const openAgentEnvSetup = useCallback56(() => {
35134
35213
  if (targetRuntimeSetupVisible) {
35135
35214
  controller.setDialogOpen(true);
35136
35215
  return;
@@ -35171,7 +35250,7 @@ function AgentTargetSetupRoot({
35171
35250
  }
35172
35251
 
35173
35252
  // agent-gui/agentGuiNode/view/useAgentGUIWorkspaceReferencePicker.ts
35174
- import { useCallback as useCallback56, useMemo as useMemo40, useRef as useRef45, useState as useState40 } from "react";
35253
+ import { useCallback as useCallback57, useMemo as useMemo40, useRef as useRef45, useState as useState40 } from "react";
35175
35254
  import { createRichTextMentionHref } from "@tutti-os/ui-rich-text/core";
35176
35255
  function useAgentGUIWorkspaceReferencePicker(input) {
35177
35256
  const {
@@ -35192,11 +35271,11 @@ function useAgentGUIWorkspaceReferencePicker(input) {
35192
35271
  []
35193
35272
  );
35194
35273
  const hostLocalFileSourceId = "host-local-file";
35195
- const isWorkspaceReferencePickerNodeSelectable = useCallback56(
35274
+ const isWorkspaceReferencePickerNodeSelectable = useCallback57(
35196
35275
  (node) => node.ref.sourceId !== hostLocalFileSourceId || node.kind === "file",
35197
35276
  [hostLocalFileSourceId]
35198
35277
  );
35199
- const requestWorkspaceReferences = useCallback56(
35278
+ const requestWorkspaceReferences = useCallback57(
35200
35279
  async (entity) => {
35201
35280
  if (previewMode) {
35202
35281
  return emptyReferencePickResult;
@@ -35228,13 +35307,13 @@ function useAgentGUIWorkspaceReferencePicker(input) {
35228
35307
  workspaceFileReferenceCopy
35229
35308
  ]
35230
35309
  );
35231
- const closeWorkspaceReferencePicker = useCallback56(() => {
35310
+ const closeWorkspaceReferencePicker = useCallback57(() => {
35232
35311
  workspaceReferencePickerResolverRef.current?.(emptyReferencePickResult);
35233
35312
  workspaceReferencePickerResolverRef.current = null;
35234
35313
  setWorkspaceReferencePickerOpen(false);
35235
35314
  setWorkspaceReferencePickerTarget(null);
35236
35315
  }, [emptyReferencePickResult]);
35237
- const settleReferencePicker = useCallback56(
35316
+ const settleReferencePicker = useCallback57(
35238
35317
  (result, addedFiles) => {
35239
35318
  workspaceReferencePickerResolverRef.current?.(result);
35240
35319
  workspaceReferencePickerResolverRef.current = null;
@@ -35246,13 +35325,13 @@ function useAgentGUIWorkspaceReferencePicker(input) {
35246
35325
  },
35247
35326
  [onWorkspaceFileReferencesAdded]
35248
35327
  );
35249
- const confirmWorkspaceReferencePicker = useCallback56(
35328
+ const confirmWorkspaceReferencePicker = useCallback57(
35250
35329
  (refs) => {
35251
35330
  settleReferencePicker({ files: refs, mentionItems: [] }, refs);
35252
35331
  },
35253
35332
  [settleReferencePicker]
35254
35333
  );
35255
- const confirmWorkspaceReferenceBundles = useCallback56(
35334
+ const confirmWorkspaceReferenceBundles = useCallback57(
35256
35335
  (result) => {
35257
35336
  const workspaceRefs = result.files.filter(
35258
35337
  (ref) => ref.sourceId !== hostLocalFileSourceId
@@ -35549,7 +35628,7 @@ function useAgentGUINodeEngagement(input) {
35549
35628
  }
35550
35629
 
35551
35630
  // agent-gui/agentGuiNode/view/useAgentGUIExternalRequests.ts
35552
- import { useCallback as useCallback57, useEffect as useEffect37, useRef as useRef48 } from "react";
35631
+ import { useCallback as useCallback58, useEffect as useEffect37, useRef as useRef48 } from "react";
35553
35632
  function resolveSessionActionConversation(viewModel, agentSessionId) {
35554
35633
  const active = viewModel.rail.activeConversation;
35555
35634
  if (!agentSessionId) {
@@ -35576,7 +35655,7 @@ function useAgentGUIExternalRequests(input) {
35576
35655
  } = input;
35577
35656
  const agentHostApi = useOptionalAgentHostApi();
35578
35657
  const railInteractionLockProbeRef = useRef48(null);
35579
- const registerRailInteractionLockProbe = useCallback57(
35658
+ const registerRailInteractionLockProbe = useCallback58(
35580
35659
  (probe) => {
35581
35660
  railInteractionLockProbeRef.current = probe;
35582
35661
  },
@@ -35674,6 +35753,7 @@ function AgentGUINodeView({
35674
35753
  detailMinWidthPx,
35675
35754
  uiLanguage,
35676
35755
  onWorkspaceFileReferencesAdded,
35756
+ resolveExternalPromptEntries = null,
35677
35757
  prepareExternalPromptFiles = null,
35678
35758
  promptAssetLimit = null,
35679
35759
  onConversationRailWidthChanged,
@@ -35765,10 +35845,10 @@ function AgentGUINodeView({
35765
35845
  );
35766
35846
  const openProjectFiles = useOptionalStableEventCallback(onLinkAction);
35767
35847
  const detailComposerFocusRequestSequence = localComposerFocusRequestSequence === 0 ? composerFocusRequestSequence : (composerFocusRequestSequence ?? 0) + localComposerFocusRequestSequence;
35768
- const requestComposerFocus = useCallback58(() => {
35848
+ const requestComposerFocus = useCallback59(() => {
35769
35849
  setLocalComposerFocusRequestSequence((current) => current + 1);
35770
35850
  }, []);
35771
- const requestCreateConversation = useCallback58(
35851
+ const requestCreateConversation = useCallback59(
35772
35852
  (options) => {
35773
35853
  if (previewMode) {
35774
35854
  return;
@@ -35805,14 +35885,14 @@ function AgentGUINodeView({
35805
35885
  workspaceAppIcons
35806
35886
  ]
35807
35887
  );
35808
- const clampConversationRailWidth = useCallback58(
35888
+ const clampConversationRailWidth = useCallback59(
35809
35889
  (widthPx) => Math.min(
35810
35890
  conversationRailMaxWidthPx,
35811
35891
  Math.max(conversationRailMinWidthPx, widthPx)
35812
35892
  ),
35813
35893
  [conversationRailMaxWidthPx, conversationRailMinWidthPx]
35814
35894
  );
35815
- const handleConversationRailResizePointerDown = useCallback58(
35895
+ const handleConversationRailResizePointerDown = useCallback59(
35816
35896
  (event) => {
35817
35897
  if (previewMode) {
35818
35898
  return;
@@ -35833,7 +35913,7 @@ function AgentGUINodeView({
35833
35913
  },
35834
35914
  [conversationRailCollapsed, conversationRailWidthPx, previewMode]
35835
35915
  );
35836
- const handleConversationRailResizePointerMove = useCallback58(
35916
+ const handleConversationRailResizePointerMove = useCallback59(
35837
35917
  (event) => {
35838
35918
  if (previewMode) {
35839
35919
  return;
@@ -35856,7 +35936,7 @@ function AgentGUINodeView({
35856
35936
  },
35857
35937
  [clampConversationRailWidth, previewMode]
35858
35938
  );
35859
- const endConversationRailResize = useCallback58(
35939
+ const endConversationRailResize = useCallback59(
35860
35940
  (event) => {
35861
35941
  const resizeState = railResizeInteractionRef.current;
35862
35942
  if (event && resizeState?.pointerId === event.pointerId && event.currentTarget.hasPointerCapture?.(event.pointerId)) {
@@ -35887,7 +35967,7 @@ function AgentGUINodeView({
35887
35967
  isRailResizing,
35888
35968
  railResizeWidthPx
35889
35969
  ]);
35890
- const handleConversationRailResizeKeyDown = useCallback58(
35970
+ const handleConversationRailResizeKeyDown = useCallback59(
35891
35971
  (event) => {
35892
35972
  if (previewMode) {
35893
35973
  return;
@@ -35954,12 +36034,12 @@ function AgentGUINodeView({
35954
36034
  openEnvironmentSetup: onAgentEnvPanelOpen,
35955
36035
  selectedAgentTarget: viewModel.rail.selectedAgentTarget
35956
36036
  });
35957
- const openAgentSettings = useCallback58(() => {
36037
+ const openAgentSettings = useCallback59(() => {
35958
36038
  openWorkspaceSettingsPanel({ section: "agent" });
35959
36039
  }, []);
35960
36040
  const [renameConversationTarget, setRenameConversationTarget] = useState41(null);
35961
36041
  const [renameConversationDialogOpen, setRenameConversationDialogOpen] = useState41(false);
35962
- const requestRenameConversation = useCallback58(
36042
+ const requestRenameConversation = useCallback59(
35963
36043
  (conversation) => {
35964
36044
  setRenameConversationTarget(conversation);
35965
36045
  setRenameConversationDialogOpen(true);
@@ -36228,6 +36308,7 @@ function AgentGUINodeView({
36228
36308
  onCapabilitySettingsRequest,
36229
36309
  onAgentProviderLogin,
36230
36310
  onRequestWorkspaceReferences: requestWorkspaceReferences,
36311
+ resolveExternalPromptEntries,
36231
36312
  prepareExternalPromptFiles,
36232
36313
  promptAssetLimit,
36233
36314
  selectProjectDirectory,
@@ -36453,7 +36534,7 @@ function appendDockProbeUsageLines(probe, lines, isLoadingUsage, t) {
36453
36534
  // agent-gui/workspaceDesktop/view/AgentProbeInfoPopover.tsx
36454
36535
  import { Info as Info2 } from "lucide-react";
36455
36536
  import {
36456
- useCallback as useCallback59,
36537
+ useCallback as useCallback60,
36457
36538
  useEffect as useEffect39,
36458
36539
  useLayoutEffect as useLayoutEffect9,
36459
36540
  useRef as useRef50,
@@ -36498,20 +36579,20 @@ function AgentProbeInfoPopover({
36498
36579
  const popoverRef = useRef50(null);
36499
36580
  const [isOpen, setIsOpen] = useState42(false);
36500
36581
  const [popoverStyle, setPopoverStyle] = useState42(null);
36501
- const openPopover = useCallback59(() => {
36582
+ const openPopover = useCallback60(() => {
36502
36583
  if (!isOpen) {
36503
36584
  onOpen?.();
36504
36585
  }
36505
36586
  setIsOpen(true);
36506
36587
  }, [isOpen, onOpen]);
36507
- const closeIfPointerLeavesPopover = useCallback59((event) => {
36588
+ const closeIfPointerLeavesPopover = useCallback60((event) => {
36508
36589
  const nextTarget = event.relatedTarget;
36509
36590
  if (nextTarget instanceof Node && (anchorRef.current?.contains(nextTarget) || popoverRef.current?.contains(nextTarget))) {
36510
36591
  return;
36511
36592
  }
36512
36593
  setIsOpen(false);
36513
36594
  }, []);
36514
- const updatePopoverPosition = useCallback59(() => {
36595
+ const updatePopoverPosition = useCallback60(() => {
36515
36596
  const anchor = anchorRef.current;
36516
36597
  if (!anchor) {
36517
36598
  return;
@@ -36701,7 +36782,7 @@ function areAgentGUINodePropsEqual(previous, next) {
36701
36782
  const pc = previous.hostCapabilities, nc = next.hostCapabilities;
36702
36783
  const pa = previous.hostActions, na = next.hostActions;
36703
36784
  const ps = previous.renderSlots, ns = next.renderSlots;
36704
- return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.prepareExternalPromptFiles === nw.prepareExternalPromptFiles && pw.promptAssetLimit === nw.promptAssetLimit && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.sessionAction === nr.sessionAction && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentProbes === nr.agentProbes && pr.onProbeDemandChange === nr.onProbeDemandChange && pr.onProbeRefreshRequest === nr.onProbeRefreshRequest && pc.capabilityMenuState === nc.capabilityMenuState && pc.accountMenuState === nc.accountMenuState && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.handoffAgentTargets === nc.handoffAgentTargets && pc.handoffAgentTargetsLoading === nc.handoffAgentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.mentionService === nc.mentionService && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onAgentEnvPanelOpen === na.onAgentEnvPanelOpen && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
36785
+ return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.resolveExternalPromptEntries === nw.resolveExternalPromptEntries && pw.prepareExternalPromptFiles === nw.prepareExternalPromptFiles && pw.promptAssetLimit === nw.promptAssetLimit && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.sessionAction === nr.sessionAction && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentProbes === nr.agentProbes && pr.onProbeDemandChange === nr.onProbeDemandChange && pr.onProbeRefreshRequest === nr.onProbeRefreshRequest && pc.capabilityMenuState === nc.capabilityMenuState && pc.accountMenuState === nc.accountMenuState && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.handoffAgentTargets === nc.handoffAgentTargets && pc.handoffAgentTargetsLoading === nc.handoffAgentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.mentionService === nc.mentionService && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onAgentEnvPanelOpen === na.onAgentEnvPanelOpen && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
36705
36786
  }
36706
36787
 
36707
36788
  // agent-gui/agentGuiNode/AgentGUIMentionServiceBoundary.tsx
@@ -37755,6 +37836,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37755
37836
  fileReferenceAdapter: workspaceFileReferenceAdapter = null,
37756
37837
  onRequestGitBranches = null,
37757
37838
  selectProjectDirectory,
37839
+ resolveExternalPromptEntries = null,
37758
37840
  prepareExternalPromptFiles = null,
37759
37841
  promptAssetLimit = null,
37760
37842
  referenceSourceAggregator = null,
@@ -37849,13 +37931,13 @@ var AgentGUINode = memo14(function AgentGUINode2({
37849
37931
  () => typeof i18n?.t === "function" ? createWorkspaceFileManagerI18nRuntime(i18n) : null,
37850
37932
  [i18n]
37851
37933
  );
37852
- const handleLinkAction = useCallback60(
37934
+ const handleLinkAction = useCallback61(
37853
37935
  (action) => {
37854
37936
  onLinkAction?.(action);
37855
37937
  },
37856
37938
  [onLinkAction]
37857
37939
  );
37858
- const handleAgentProviderLogin = useCallback60(
37940
+ const handleAgentProviderLogin = useCallback61(
37859
37941
  (provider) => {
37860
37942
  const resolvedProvider = normalizeAgentGUIProviderIdentity(provider);
37861
37943
  onAgentProviderLogin?.(
@@ -37864,7 +37946,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37864
37946
  },
37865
37947
  [onAgentProviderLogin, state.provider]
37866
37948
  );
37867
- const handleWorkspaceFileReferencesAdded = useCallback60(
37949
+ const handleWorkspaceFileReferencesAdded = useCallback61(
37868
37950
  (references) => {
37869
37951
  onWorkspaceFileReferencesAdded?.({
37870
37952
  provider: state.provider,
@@ -37873,7 +37955,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37873
37955
  },
37874
37956
  [onWorkspaceFileReferencesAdded, state.provider]
37875
37957
  );
37876
- const handleDataChange = useCallback60(
37958
+ const handleDataChange = useCallback61(
37877
37959
  (updater) => {
37878
37960
  if (previewMode) {
37879
37961
  return;
@@ -37882,7 +37964,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37882
37964
  },
37883
37965
  [onUpdateNode, previewMode]
37884
37966
  );
37885
- const handleConversationRailWidthChanged = useCallback60(
37967
+ const handleConversationRailWidthChanged = useCallback61(
37886
37968
  (widthPx) => {
37887
37969
  if (previewMode) {
37888
37970
  return;
@@ -37914,7 +37996,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37914
37996
  }),
37915
37997
  []
37916
37998
  );
37917
- const toggleConversationRailCollapsed = useCallback60(() => {
37999
+ const toggleConversationRailCollapsed = useCallback61(() => {
37918
38000
  if (previewMode) {
37919
38001
  return;
37920
38002
  }
@@ -37923,7 +38005,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37923
38005
  conversationRailCollapsed: current.conversationRailCollapsed !== true
37924
38006
  }));
37925
38007
  }, [onUpdateNode, previewMode]);
37926
- const handleConversationRailToggle = useCallback60(() => {
38008
+ const handleConversationRailToggle = useCallback61(() => {
37927
38009
  if (previewMode) {
37928
38010
  return;
37929
38011
  }
@@ -37984,7 +38066,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37984
38066
  onRememberComposerDefaults,
37985
38067
  onShowMessage
37986
38068
  });
37987
- const handleCreateConversation = useCallback60(
38069
+ const handleCreateConversation = useCallback61(
37988
38070
  (...args) => {
37989
38071
  if (!previewMode) {
37990
38072
  onUpdateNode(
@@ -38109,13 +38191,13 @@ var AgentGUINode = memo14(function AgentGUINode2({
38109
38191
  previewMode,
38110
38192
  railStatusProvider
38111
38193
  ]);
38112
- const handleAgentProbeInfoOpen = useCallback60(() => {
38194
+ const handleAgentProbeInfoOpen = useCallback61(() => {
38113
38195
  if (previewMode || !onAgentProbeRefreshRequest) {
38114
38196
  return;
38115
38197
  }
38116
38198
  onAgentProbeRefreshRequest(activeProbeProvider, `agent-gui:${nodeId}`);
38117
38199
  }, [activeProbeProvider, nodeId, onAgentProbeRefreshRequest, previewMode]);
38118
- const handleAgentConfigMenuOpen = useCallback60(() => {
38200
+ const handleAgentConfigMenuOpen = useCallback61(() => {
38119
38201
  if (previewMode || !onAgentProbeRefreshRequest) {
38120
38202
  return;
38121
38203
  }
@@ -38130,7 +38212,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
38130
38212
  previewMode,
38131
38213
  railStatusProvider
38132
38214
  ]);
38133
- const handleAgentUsageRefresh = useCallback60(() => {
38215
+ const handleAgentUsageRefresh = useCallback61(() => {
38134
38216
  if (previewMode || !onAgentProbeRefreshRequest) {
38135
38217
  return;
38136
38218
  }
@@ -38254,6 +38336,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
38254
38336
  detailMinWidthPx: AGENT_GUI_DETAIL_MIN_WIDTH_PX,
38255
38337
  uiLanguage: locale,
38256
38338
  onWorkspaceFileReferencesAdded: onWorkspaceFileReferencesAdded ? handleWorkspaceFileReferencesAdded : void 0,
38339
+ resolveExternalPromptEntries,
38257
38340
  prepareExternalPromptFiles,
38258
38341
  promptAssetLimit,
38259
38342
  onConversationRailWidthChanged: handleConversationRailWidthChanged,
@@ -38373,4 +38456,4 @@ export {
38373
38456
  AgentHandoffMenu,
38374
38457
  AgentGUI
38375
38458
  };
38376
- //# sourceMappingURL=chunk-4WSWPMV7.js.map
38459
+ //# sourceMappingURL=chunk-LWXHBRDO.js.map