@tutti-os/agent-gui 0.0.98 → 0.0.100

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 (95) hide show
  1. package/dist/{AgentGUI-Bkk2TRS0.d.ts → AgentGUI-DgBjACOL.d.ts} +12 -3
  2. package/dist/agent-conversation/index.d.ts +4 -4
  3. package/dist/agent-conversation/index.js +8 -9
  4. package/dist/agent-conversation/index.js.map +1 -1
  5. package/dist/agent-gui.d.ts +5 -4
  6. package/dist/agent-gui.js +19 -19
  7. package/dist/agent-message-center/index.d.ts +4 -6
  8. package/dist/agent-message-center/index.js +13 -52
  9. package/dist/agent-message-center/index.js.map +1 -1
  10. package/dist/agent-title-text.js +1 -1
  11. package/dist/{agentConversationVM-C335TR6S.d.ts → agentConversationVM-BzHZhwFP.d.ts} +1 -1
  12. package/dist/{agentGuiNodeTypes-DAsluxjv.d.ts → agentGuiNodeTypes-C-wBSM-Y.d.ts} +19 -4
  13. package/dist/app/renderer/agentactivity.css +141 -36
  14. package/dist/chunk-2RQM7PJN.js +16 -0
  15. package/dist/chunk-2RQM7PJN.js.map +1 -0
  16. package/dist/{chunk-FSKGEGGX.js → chunk-4E3QCW6L.js} +17 -3
  17. package/dist/chunk-4E3QCW6L.js.map +1 -0
  18. package/dist/{chunk-63BE6RGM.js → chunk-4YCCATI4.js} +14 -374
  19. package/dist/chunk-4YCCATI4.js.map +1 -0
  20. package/dist/{chunk-IYEXLOUE.js → chunk-4YVKAPKW.js} +5 -8
  21. package/dist/chunk-4YVKAPKW.js.map +1 -0
  22. package/dist/{chunk-7O4D4KOE.js → chunk-BQJOYTW2.js} +939 -751
  23. package/dist/chunk-BQJOYTW2.js.map +1 -0
  24. package/dist/{chunk-MRRICFWA.js → chunk-D7HMQLBO.js} +159 -55
  25. package/dist/chunk-D7HMQLBO.js.map +1 -0
  26. package/dist/{chunk-OTRZBTFQ.js → chunk-DWUVRWXD.js} +2 -2
  27. package/dist/{chunk-RHTZAODZ.js → chunk-E5AD46HP.js} +2 -2
  28. package/dist/{chunk-3NOJFKDV.js → chunk-EUW6VPIK.js} +414 -49
  29. package/dist/chunk-EUW6VPIK.js.map +1 -0
  30. package/dist/{chunk-Y35GDLP2.js → chunk-F5UR6EJG.js} +2 -17
  31. package/dist/chunk-F5UR6EJG.js.map +1 -0
  32. package/dist/{chunk-J7ZYAUPC.js → chunk-FAE7CXZO.js} +8 -6
  33. package/dist/chunk-FAE7CXZO.js.map +1 -0
  34. package/dist/{chunk-CPUEPDF7.js → chunk-GCW57WYQ.js} +646 -595
  35. package/dist/chunk-GCW57WYQ.js.map +1 -0
  36. package/dist/{chunk-7M77BK6K.js → chunk-JWHPVETQ.js} +154 -147
  37. package/dist/chunk-JWHPVETQ.js.map +1 -0
  38. package/dist/{chunk-4ROALW3K.js → chunk-KAV2WHTG.js} +82 -61
  39. package/dist/chunk-KAV2WHTG.js.map +1 -0
  40. package/dist/{chunk-T6PEJFRP.js → chunk-MES7BQWI.js} +378 -369
  41. package/dist/chunk-MES7BQWI.js.map +1 -0
  42. package/dist/chunk-MIJXEELH.js +96 -0
  43. package/dist/chunk-MIJXEELH.js.map +1 -0
  44. package/dist/{chunk-QWGJ5TEG.js → chunk-QY22OBJS.js} +28 -30
  45. package/dist/chunk-QY22OBJS.js.map +1 -0
  46. package/dist/{chunk-MASXZENX.js → chunk-UESYITH6.js} +21 -2
  47. package/dist/chunk-UESYITH6.js.map +1 -0
  48. package/dist/{chunk-SPZJCTBV.js → chunk-XFRY2WWB.js} +348 -322
  49. package/dist/chunk-XFRY2WWB.js.map +1 -0
  50. package/dist/context-mention-palette/index.d.ts +5 -1
  51. package/dist/context-mention-palette/index.js +10 -11
  52. package/dist/contribution-CTVBPN0R.d.ts +119 -0
  53. package/dist/i18n/index.d.ts +16 -2
  54. package/dist/i18n/index.js +2 -2
  55. package/dist/index.d.ts +8 -7
  56. package/dist/index.js +21 -20
  57. package/dist/index.js.map +1 -1
  58. package/dist/mention-search.d.ts +18 -6
  59. package/dist/mention-search.js +8 -9
  60. package/dist/workbench/contribution.d.ts +6 -107
  61. package/dist/workbench/contribution.js +7 -3
  62. package/dist/workbench/index.d.ts +6 -4
  63. package/dist/workbench/index.js +27 -21
  64. package/dist/workbench/launch.d.ts +13 -5
  65. package/dist/workbench/launch.js +1 -1
  66. package/dist/workbench/sessionTitle.d.ts +5 -7
  67. package/dist/workbench/sessionTitle.js +3 -4
  68. package/dist/workbench/state.js +3 -1
  69. package/dist/workspace-agent-generated-files.d.ts +8 -13
  70. package/dist/workspace-agent-generated-files.js +6 -21
  71. package/dist/{workspaceAgentActivityListTypes-C7gPWYiA.d.ts → workspaceAgentActivityListTypes-DZfS_HgG.d.ts} +3 -26
  72. package/package.json +12 -12
  73. package/dist/chunk-3NOJFKDV.js.map +0 -1
  74. package/dist/chunk-4ROALW3K.js.map +0 -1
  75. package/dist/chunk-63BE6RGM.js.map +0 -1
  76. package/dist/chunk-7M77BK6K.js.map +0 -1
  77. package/dist/chunk-7O4D4KOE.js.map +0 -1
  78. package/dist/chunk-CPUEPDF7.js.map +0 -1
  79. package/dist/chunk-FSKGEGGX.js.map +0 -1
  80. package/dist/chunk-GAD6Y3BF.js +0 -88
  81. package/dist/chunk-GAD6Y3BF.js.map +0 -1
  82. package/dist/chunk-GCBDIQDX.js +0 -22
  83. package/dist/chunk-GCBDIQDX.js.map +0 -1
  84. package/dist/chunk-IYEXLOUE.js.map +0 -1
  85. package/dist/chunk-J7ZYAUPC.js.map +0 -1
  86. package/dist/chunk-MASXZENX.js.map +0 -1
  87. package/dist/chunk-MRRICFWA.js.map +0 -1
  88. package/dist/chunk-QWGJ5TEG.js.map +0 -1
  89. package/dist/chunk-SPZJCTBV.js.map +0 -1
  90. package/dist/chunk-T6PEJFRP.js.map +0 -1
  91. package/dist/chunk-Y35GDLP2.js.map +0 -1
  92. package/dist/chunk-Y5M6Q6WX.js +0 -25
  93. package/dist/chunk-Y5M6Q6WX.js.map +0 -1
  94. /package/dist/{chunk-OTRZBTFQ.js.map → chunk-DWUVRWXD.js.map} +0 -0
  95. /package/dist/{chunk-RHTZAODZ.js.map → chunk-E5AD46HP.js.map} +0 -0
@@ -9,10 +9,11 @@ import {
9
9
  resolveAgentGuiSessionProviderFlatIconUrl,
10
10
  resolveNextAgentGUIConversationRailWidthPx,
11
11
  shouldAutoCollapseAgentGUIConversationRail
12
- } from "./chunk-MRRICFWA.js";
12
+ } from "./chunk-D7HMQLBO.js";
13
13
  import {
14
14
  AGENT_PROVIDERS,
15
15
  AGENT_PROVIDER_LABEL,
16
+ deriveAgentGUIOptimisticConversationTitle,
16
17
  isAgentGUIProviderUnresolved,
17
18
  normalizeAgentGUIProviderIdentity,
18
19
  resolveAgentGUIConversationDisplayTitle,
@@ -20,7 +21,7 @@ import {
20
21
  resolveAgentGUIExplicitConversationTitle,
21
22
  resolveAgentGUIProviderDisplayLabel,
22
23
  resolveAgentGUIProviderIdentity
23
- } from "./chunk-4ROALW3K.js";
24
+ } from "./chunk-KAV2WHTG.js";
24
25
  import {
25
26
  resolveAgentGuiWorkbenchProviderLabel
26
27
  } from "./chunk-L3GMMGRS.js";
@@ -64,14 +65,14 @@ import {
64
65
  toLocalShortDateTime,
65
66
  updateAgentComposerDraft,
66
67
  useProjectedAgentConversation
67
- } from "./chunk-7M77BK6K.js";
68
+ } from "./chunk-JWHPVETQ.js";
68
69
  import {
69
70
  openAgentEnvPanel
70
71
  } from "./chunk-7BXWPI4F.js";
71
72
  import {
72
73
  AgentFileMentionPalette,
73
74
  agentMentionItemKey
74
- } from "./chunk-J7ZYAUPC.js";
75
+ } from "./chunk-FAE7CXZO.js";
75
76
  import {
76
77
  normalizeAgentGUIAgents,
77
78
  projectAgentGUIAgentsToInternalTargets
@@ -79,11 +80,10 @@ import {
79
80
  import {
80
81
  AGENT_MENTION_FILTER_TAB_ORDER,
81
82
  AgentMentionSearchController,
82
- DEFAULT_AGENT_MENTION_FILTER
83
- } from "./chunk-3NOJFKDV.js";
84
- import {
83
+ DEFAULT_AGENT_MENTION_FILTER,
84
+ agentGuiScheduler,
85
85
  buildWorkspaceAgentActivityListViewModel
86
- } from "./chunk-63BE6RGM.js";
86
+ } from "./chunk-EUW6VPIK.js";
87
87
  import {
88
88
  AGENT_RICH_TEXT_CARET_ANCHOR,
89
89
  createAgentSessionMarkdownLink,
@@ -93,7 +93,7 @@ import {
93
93
  mentionItemToAttrs,
94
94
  normalizeAgentSessionMentionTitle,
95
95
  parseMentionItemFromHref
96
- } from "./chunk-CPUEPDF7.js";
96
+ } from "./chunk-GCW57WYQ.js";
97
97
  import {
98
98
  AgentInteractivePromptSurface,
99
99
  PLAN_IMPLEMENTATION_ACTION_FEEDBACK,
@@ -102,9 +102,11 @@ import {
102
102
  approvalOptionDisplayLabel,
103
103
  dispatchAgentPlanPromptAction,
104
104
  latestPlanTurnId,
105
- planImplementationPromptFromPlanTurn,
105
+ planImplementationPromptFromPlanTurn
106
+ } from "./chunk-XFRY2WWB.js";
107
+ import {
106
108
  useEngineSelector
107
- } from "./chunk-SPZJCTBV.js";
109
+ } from "./chunk-2RQM7PJN.js";
108
110
  import {
109
111
  AgentMessageMarkdown,
110
112
  AgentTargetPresentationProvider,
@@ -113,7 +115,7 @@ import {
113
115
  resolveAgentTargetPresentation,
114
116
  resolveWorkspaceLinkAction,
115
117
  useAgentTargetPresentations
116
- } from "./chunk-T6PEJFRP.js";
118
+ } from "./chunk-MES7BQWI.js";
117
119
  import {
118
120
  resolveWorkspaceAgentSessionSortTimeUnixMs
119
121
  } from "./chunk-YMXYBG7U.js";
@@ -128,7 +130,7 @@ import {
128
130
  useAgentHostApi,
129
131
  useOptionalAgentActivityRuntime,
130
132
  useOptionalAgentHostApi
131
- } from "./chunk-MASXZENX.js";
133
+ } from "./chunk-UESYITH6.js";
132
134
  import {
133
135
  normalizeManagedAgentProvider
134
136
  } from "./chunk-H6IQ63DQ.js";
@@ -136,7 +138,7 @@ import {
136
138
  AgentGuiI18nProvider,
137
139
  translate,
138
140
  useTranslation
139
- } from "./chunk-RHTZAODZ.js";
141
+ } from "./chunk-E5AD46HP.js";
140
142
  import {
141
143
  migratedAgentGUIProviderIdentityCatalog,
142
144
  resolveAgentGUIProviderCatalogIdentity,
@@ -149,12 +151,13 @@ import {
149
151
 
150
152
  // AgentGUI.tsx
151
153
  import { memo as memo15 } from "react";
152
- import { TooltipProvider as TooltipProvider5 } from "@tutti-os/ui-system";
154
+ import { TooltipProvider as TooltipProvider6 } from "@tutti-os/ui-system";
153
155
 
154
156
  // agent-gui/agentGuiNode/AgentGUINode.tsx
155
157
  import { memo as memo14, useCallback as useCallback50, useEffect as useEffect39, useMemo as useMemo39 } from "react";
156
158
  import { createWorkspaceUserProjectI18nRuntime } from "@tutti-os/workspace-user-project/i18n";
157
159
  import { createWorkspaceFileManagerI18nRuntime } from "@tutti-os/workspace-file-manager";
160
+ import { useReferenceProvenanceFilterCatalog } from "@tutti-os/workspace-file-reference/react";
158
161
 
159
162
  // utils/workspaceNodeSizing.ts
160
163
  var MIN_SIZE_BY_KIND = {
@@ -2355,12 +2358,6 @@ function timelineSessionFromItems(timelineItems, conversation) {
2355
2358
  pinnedAtUnixMs: conversation?.pinnedAtUnixMs ?? null
2356
2359
  });
2357
2360
  }
2358
- function firstUserMessageTitleFromTimelineItems(timelineItems) {
2359
- const userMessage = [...timelineItems].filter(
2360
- (item) => timelineItemRole(item) === "user" && timelineItemText(item).length > 0
2361
- ).sort(compareTimelineItemsAscending)[0];
2362
- return userMessage ? timelineItemText(userMessage) : "";
2363
- }
2364
2361
  function workspaceAgentMessagesFromTimelineItems(timelineItems) {
2365
2362
  return timelineItems.map((item, index) => {
2366
2363
  const messageId = item.eventId || `${item.agentSessionId}:${item.id}:${index}`;
@@ -2406,21 +2403,6 @@ function timelineItemRole(item) {
2406
2403
  }
2407
2404
  return null;
2408
2405
  }
2409
- function timelineItemText(item) {
2410
- const payloadDisplayPrompt = typeof item.payload?.displayPrompt === "string" ? item.payload.displayPrompt : "";
2411
- const payloadContent = typeof item.payload?.content === "string" ? item.payload.content : "";
2412
- const payloadText = typeof item.payload?.text === "string" ? item.payload.text : "";
2413
- return (payloadDisplayPrompt || payloadText || item.content || payloadContent).replace(/\s+/g, " ").trim();
2414
- }
2415
- function compareTimelineItemsAscending(left, right) {
2416
- const leftTime = left.occurredAtUnixMs ?? left.createdAtUnixMs ?? 0;
2417
- const rightTime = right.occurredAtUnixMs ?? right.createdAtUnixMs ?? 0;
2418
- const timeDiff = leftTime - rightTime;
2419
- if (timeDiff !== 0) {
2420
- return timeDiff;
2421
- }
2422
- return left.id - right.id || left.eventId.localeCompare(right.eventId);
2423
- }
2424
2406
 
2425
2407
  // agent-gui/agentGuiNode/model/agentGuiTimelineMerge.ts
2426
2408
  function mergeTimelineItems(left, right) {
@@ -2637,8 +2619,7 @@ function conversationSummaryFromAgentSession(session, options = {}) {
2637
2619
  sessionProvider: session.provider
2638
2620
  });
2639
2621
  const { title, titleFallback } = resolveAgentGUIConversationTitle(
2640
- session.title,
2641
- provider
2622
+ session.title
2642
2623
  );
2643
2624
  return {
2644
2625
  id: session.agentSessionId.trim(),
@@ -2678,22 +2659,6 @@ function applyAgentGUIConversationProjects(conversations, userProjects = [], opt
2678
2659
  });
2679
2660
  return changed ? next : conversations;
2680
2661
  }
2681
- function resolveAgentGUIConversationTitleFromTimelineItems({
2682
- timelineItems,
2683
- conversation
2684
- }) {
2685
- if (resolveAgentGUIExplicitConversationTitle(conversation) !== null) {
2686
- return null;
2687
- }
2688
- const userMessageTitle = firstUserMessageTitleFromTimelineItems(timelineItems);
2689
- if (!userMessageTitle) {
2690
- return null;
2691
- }
2692
- return resolveAgentGUIConversationTitle(
2693
- userMessageTitle,
2694
- conversation.provider
2695
- );
2696
- }
2697
2662
  function resolveConversationProject(session, projectResolver) {
2698
2663
  if (isExternalImportNoProjectSession(session)) {
2699
2664
  return null;
@@ -4469,11 +4434,6 @@ function windowHasTurnMissingUserPrompt(messages, newestPagedVersion) {
4469
4434
  }
4470
4435
  return [...pagedTurnIds].some((turnId) => !turnIdsWithUserPrompt.has(turnId));
4471
4436
  }
4472
- function sessionHasRenderableMessages(input) {
4473
- const normalized = input.agentSessionId.trim();
4474
- if (!normalized) return false;
4475
- return (input.snapshotMessagesById[normalized]?.length ?? 0) > 0;
4476
- }
4477
4437
  function useAgentConversationMessagePaging(input) {
4478
4438
  const inputRef = useRef3(input);
4479
4439
  inputRef.current = input;
@@ -5597,7 +5557,8 @@ function useAgentGUIActivation({
5597
5557
  ...sharedIntent,
5598
5558
  agentTargetId,
5599
5559
  clientSubmitId,
5600
- mode: "new"
5560
+ mode: "new",
5561
+ ...input.optimisticTitle ? { optimisticTitle: input.optimisticTitle } : {}
5601
5562
  });
5602
5563
  } else {
5603
5564
  engine.dispatch({
@@ -5822,13 +5783,13 @@ function useAgentConversationSelection(input) {
5822
5783
  if (!normalized) return;
5823
5784
  const current = inputRef.current;
5824
5785
  const previous = current.selection.getActiveSessionId();
5825
- const hasRenderableMessages = current.detail.hasRenderableMessages(normalized);
5786
+ const detailHydrated = current.detail.isHydrated(normalized);
5826
5787
  const activationPending = current.activation.isPending(normalized);
5827
5788
  current.selection.setComposerHome(false);
5828
5789
  if (previous && previous !== normalized)
5829
5790
  current.activation.forget(previous);
5830
5791
  if (previous !== normalized) {
5831
- if (hasRenderableMessages || activationPending) {
5792
+ if (detailHydrated || activationPending) {
5832
5793
  current.detail.setLoading(false);
5833
5794
  } else {
5834
5795
  current.detail.markPending(normalized);
@@ -5841,7 +5802,7 @@ function useAgentConversationSelection(input) {
5841
5802
  if (!activationPending) {
5842
5803
  current.detail.reload(normalized, {
5843
5804
  reloadConversations,
5844
- reloadDetail: previous === normalized || !hasRenderableMessages
5805
+ reloadDetail: previous === normalized || !detailHydrated
5845
5806
  });
5846
5807
  }
5847
5808
  persistActiveConversation(normalized);
@@ -5990,6 +5951,7 @@ function useAgentGUIConversationRouting(input) {
5990
5951
 
5991
5952
  // agent-gui/agentGuiNode/controller/useAgentGUIConversationSelectionController.ts
5992
5953
  import {
5954
+ selectEngineSessionDetailHydrated,
5993
5955
  selectLatestActivationForSession
5994
5956
  } from "@tutti-os/agent-activity-core";
5995
5957
  import { useEffect as useEffect4 } from "react";
@@ -6003,7 +5965,6 @@ function useAgentGUIConversationSelectionController(input) {
6003
5965
  activeConversationIdRef,
6004
5966
  activePendingActivation,
6005
5967
  agentActivityRuntime,
6006
- agentActivitySnapshotRef,
6007
5968
  attentionReadRecordsBySessionId,
6008
5969
  conversationIdsRef,
6009
5970
  conversationListQuery,
@@ -6128,10 +6089,10 @@ function useAgentGUIConversationSelectionController(input) {
6128
6089
  contains: (agentSessionId) => conversationIdsRef.current.has(agentSessionId)
6129
6090
  },
6130
6091
  detail: {
6131
- hasRenderableMessages: (agentSessionId) => sessionHasRenderableMessages({
6132
- agentSessionId,
6133
- snapshotMessagesById: agentActivitySnapshotRef.current.sessionMessagesById
6134
- }),
6092
+ isHydrated: (agentSessionId) => selectEngineSessionDetailHydrated(
6093
+ sessionEngine.getSnapshot(),
6094
+ agentSessionId
6095
+ ),
6135
6096
  markPending: markSelectedConversationDetailPending,
6136
6097
  reload: (agentSessionId, options) => reloadSelectedConversationRef.current(agentSessionId, options),
6137
6098
  setLoading: setIsLoadingMessages
@@ -6206,8 +6167,7 @@ function projectCanonicalAgentGUIConversationSummaries(sessions) {
6206
6167
  sessionProvider: item.session.provider
6207
6168
  });
6208
6169
  const { title, titleFallback } = resolveAgentGUIConversationTitle(
6209
- item.session.title,
6210
- provider
6170
+ item.session.title
6211
6171
  );
6212
6172
  const canonicalUpdatedAtUnixMs = item.session.updatedAtUnixMs ?? item.session.createdAtUnixMs ?? 0;
6213
6173
  return {
@@ -6264,8 +6224,7 @@ function useAgentGuiConversationList(engine, query, agentTargets = []) {
6264
6224
  sessionProvider: target?.provider ?? query.provider
6265
6225
  });
6266
6226
  const { title, titleFallback } = resolveAgentGUIConversationTitle(
6267
- activation.title ?? "",
6268
- provider
6227
+ activation.optimisticTitle ?? activation.title ?? ""
6269
6228
  );
6270
6229
  return {
6271
6230
  agentTargetId: activation.agentTargetId,
@@ -6290,15 +6249,13 @@ function useAgentGuiConversationList(engine, query, agentTargets = []) {
6290
6249
  const canonicalUpdatedAtUnixMs = conversation.updatedAtUnixMs;
6291
6250
  const activation = latestNewActivationBySessionId.get(conversation.id);
6292
6251
  const activationIsNewer = activation !== void 0 && activation.requestedAtUnixMs > canonicalUpdatedAtUnixMs;
6293
- const activationIsPending = activation?.status === "requested" || activation?.status === "uncertain";
6294
- const { title, titleFallback } = resolveAgentGUIConversationTitle(
6295
- activationIsNewer && activation.title ? activation.title : conversation.title,
6296
- conversation.provider
6297
- );
6252
+ const optimisticTitle = activation?.optimisticTitle?.trim() ?? "";
6253
+ const shouldUseOptimisticTitle = conversation.title.trim().length === 0 && optimisticTitle.length > 0;
6254
+ const projectedTitle = shouldUseOptimisticTitle ? optimisticTitle : activationIsNewer && activation?.title ? activation.title : conversation.title;
6255
+ const { title, titleFallback } = resolveAgentGUIConversationTitle(projectedTitle);
6298
6256
  return {
6299
6257
  ...conversation,
6300
6258
  sortTimeUnixMs: activationIsNewer ? activation.requestedAtUnixMs : conversation.sortTimeUnixMs,
6301
- status: activationIsPending ? "working" : conversation.status,
6302
6259
  title,
6303
6260
  titleFallback,
6304
6261
  updatedAtUnixMs: activationIsNewer ? activation.requestedAtUnixMs : canonicalUpdatedAtUnixMs
@@ -6345,7 +6302,6 @@ function consumerSessionsEqual(left, right) {
6345
6302
  // agent-gui/agentGuiNode/controller/useAgentGUIConversationListState.ts
6346
6303
  function useAgentGUIConversationListState({
6347
6304
  agentActivityRuntimeOrigin,
6348
- agentActivitySnapshot,
6349
6305
  currentUserId,
6350
6306
  data,
6351
6307
  normalizedProviderTargets,
@@ -6389,27 +6345,14 @@ function useAgentGUIConversationListState({
6389
6345
  );
6390
6346
  const conversations = useMemo6(() => {
6391
6347
  return canonicalConversations.map((conversation) => {
6392
- const projectedTitle = resolveAgentGUIConversationTitleFromTimelineItems({
6393
- conversation,
6394
- timelineItems: projectAgentGUIMessagesToTimelineItems(
6395
- agentActivitySnapshot.sessionMessagesById[conversation.id] ?? []
6396
- )
6397
- });
6398
6348
  const attention = attentionReadState.recordsBySessionId[conversation.id];
6399
- return projectedTitle || attention ? {
6349
+ return attention ? {
6400
6350
  ...conversation,
6401
- ...projectedTitle ?? {},
6402
- ...attention ? {
6403
- hasUnreadCompletion: attention.isUnread,
6404
- unreadCompletionKey: attention.completionKey
6405
- } : {}
6351
+ hasUnreadCompletion: attention.isUnread,
6352
+ unreadCompletionKey: attention.completionKey
6406
6353
  } : conversation;
6407
6354
  });
6408
- }, [
6409
- agentActivitySnapshot.sessionMessagesById,
6410
- attentionReadState.recordsBySessionId,
6411
- canonicalConversations
6412
- ]);
6355
+ }, [attentionReadState.recordsBySessionId, canonicalConversations]);
6413
6356
  return {
6414
6357
  attentionReadState,
6415
6358
  conversationFilter,
@@ -7224,7 +7167,7 @@ function useAgentGUIContinueConversation(input) {
7224
7167
  userProfilesByUserId: current.accountProfilesByUserId,
7225
7168
  provider: activeConversation.provider,
7226
7169
  agentTargetId: activeConversation.agentTargetId,
7227
- conversationTitle: resolveAgentGUIExplicitConversationTitle(activeConversation) ?? translate("agentHost.workspaceAgentsUntitledTask"),
7170
+ conversationTitle: resolveAgentGUIExplicitConversationTitle(activeConversation) ?? translate("agentHost.workspaceAgentsUntitledConversation"),
7228
7171
  existingDraftPrompt: agentComposerDraftPrompt(sourceDraft)
7229
7172
  });
7230
7173
  reportAgentGUIActiveConversationCleared({
@@ -7263,6 +7206,7 @@ function useAgentGUIContinueConversation(input) {
7263
7206
  import {
7264
7207
  useCallback as useCallback10
7265
7208
  } from "react";
7209
+ import { flushSync } from "react-dom";
7266
7210
  function useAgentGUIConversationBatchDeletion(input) {
7267
7211
  const {
7268
7212
  isDeletingProjectConversations,
@@ -7283,7 +7227,6 @@ function useAgentGUIConversationBatchDeletion(input) {
7283
7227
  removeConversations,
7284
7228
  workspaceId,
7285
7229
  setIsDeletingProjectConversations,
7286
- setAgentSessionViewMessagesLoading,
7287
7230
  agentActivityRuntime,
7288
7231
  dataRef,
7289
7232
  agentHostApi
@@ -7312,31 +7255,15 @@ function useAgentGUIConversationBatchDeletion(input) {
7312
7255
  type: "queue/sessionCleaned"
7313
7256
  });
7314
7257
  }
7315
- const nextConversations = conversationsRef.current.filter(
7316
- (conversation) => !targetIds.has(conversation.id)
7317
- );
7318
- const currentActiveId = activeConversationIdRef.current;
7319
- if (currentActiveId && targetIds.has(currentActiveId)) {
7320
- const nextActive = nextConversations[0]?.id ?? null;
7321
- if (nextActive) {
7322
- markSelectedConversationDetailPending(nextActive);
7323
- setIntent({ tag: "active", id: nextActive });
7324
- } else {
7325
- setIsLoadingMessages(false);
7326
- setIntent({ tag: "home" });
7327
- }
7328
- activeConversationIdRef.current = nextActive;
7329
- setActiveConversationId(nextActive);
7330
- persistActiveConversation(nextActive);
7331
- }
7332
7258
  removeConversations([...targetIds]);
7333
7259
  },
7334
7260
  [
7335
- markSelectedConversationDetailPending,
7336
- persistActiveConversation,
7261
+ deleteAgentSessionView,
7262
+ removeConversations,
7337
7263
  sessionEngine,
7338
7264
  sessionViewRef,
7339
- removeConversations
7265
+ setDraftByScopeKey,
7266
+ submittedDraftSnapshotsRef
7340
7267
  ]
7341
7268
  );
7342
7269
  const confirmDeleteProjectConversations = useCallback10(
@@ -7399,11 +7326,23 @@ function useAgentGUIConversationBatchDeletion(input) {
7399
7326
  setListError(null);
7400
7327
  const activeDeletedConversationId = activeConversationIdRef.current;
7401
7328
  if (activeDeletedConversationId && targetIds.has(activeDeletedConversationId)) {
7402
- setIsLoadingMessages(true);
7403
- setAgentSessionViewMessagesLoading(
7404
- sessionViewRef(activeDeletedConversationId),
7405
- true
7406
- );
7329
+ const nextActive = conversationsRef.current.find(
7330
+ (conversation) => !targetIds.has(conversation.id)
7331
+ )?.id ?? null;
7332
+ if (nextActive) {
7333
+ markSelectedConversationDetailPending(nextActive);
7334
+ }
7335
+ activeConversationIdRef.current = nextActive;
7336
+ flushSync(() => {
7337
+ if (nextActive) {
7338
+ setIntent({ tag: "active", id: nextActive });
7339
+ } else {
7340
+ setIsLoadingMessages(false);
7341
+ setIntent({ tag: "home" });
7342
+ }
7343
+ setActiveConversationId(nextActive);
7344
+ });
7345
+ persistActiveConversation(nextActive);
7407
7346
  }
7408
7347
  void deleteSessionsBatch({
7409
7348
  sessionIds: [...targetIds],
@@ -7426,23 +7365,26 @@ function useAgentGUIConversationBatchDeletion(input) {
7426
7365
  });
7427
7366
  setListError(message);
7428
7367
  showAgentGUIControllerErrorToast(agentHostApi.toast, message);
7429
- if (activeDeletedConversationId && activeConversationIdRef.current === activeDeletedConversationId) {
7430
- setIsLoadingMessages(false);
7431
- setAgentSessionViewMessagesLoading(
7432
- sessionViewRef(activeDeletedConversationId),
7433
- false
7434
- );
7435
- }
7436
7368
  }).finally(() => {
7437
7369
  setIsDeletingProjectConversations(false);
7438
7370
  });
7439
7371
  },
7440
7372
  [
7373
+ activeConversationIdRef,
7441
7374
  agentActivityRuntime,
7375
+ agentHostApi.toast,
7376
+ conversationsRef,
7377
+ dataRef,
7442
7378
  finalizeConversationBatchDeletion,
7443
7379
  isDeletingProjectConversations,
7444
- sessionViewRef,
7445
- agentHostApi.toast,
7380
+ markSelectedConversationDetailPending,
7381
+ persistActiveConversation,
7382
+ setActiveConversationId,
7383
+ setDetailError,
7384
+ setIntent,
7385
+ setIsDeletingProjectConversations,
7386
+ setIsLoadingMessages,
7387
+ setListError,
7446
7388
  workspaceId
7447
7389
  ]
7448
7390
  );
@@ -7456,6 +7398,7 @@ function useAgentGUIConversationBatchDeletion(input) {
7456
7398
  import {
7457
7399
  useCallback as useCallback11
7458
7400
  } from "react";
7401
+ import { flushSync as flushSync2 } from "react-dom";
7459
7402
  function useAgentGUIConversationDeletion(input) {
7460
7403
  const {
7461
7404
  isDeletingConversation,
@@ -7466,7 +7409,6 @@ function useAgentGUIConversationDeletion(input) {
7466
7409
  setIsDeletingConversation,
7467
7410
  activeConversationIdRef,
7468
7411
  setIsLoadingMessages,
7469
- setAgentSessionViewMessagesLoading,
7470
7412
  sessionViewRef,
7471
7413
  activation,
7472
7414
  agentActivityRuntime,
@@ -7481,7 +7423,6 @@ function useAgentGUIConversationDeletion(input) {
7481
7423
  persistActiveConversation,
7482
7424
  removeConversations,
7483
7425
  agentHostApi,
7484
- conversationListQuery,
7485
7426
  workspaceId
7486
7427
  } = input;
7487
7428
  const requestDeleteConversation = useCallback11(
@@ -7515,8 +7456,28 @@ function useAgentGUIConversationDeletion(input) {
7515
7456
  setIsDeletingConversation(true);
7516
7457
  setDetailError(null);
7517
7458
  if (activeConversationIdRef.current === target.id) {
7518
- setIsLoadingMessages(true);
7519
- setAgentSessionViewMessagesLoading(sessionViewRef(target.id), true);
7459
+ const currentConversations = conversationsRef.current;
7460
+ const targetIndex = currentConversations.findIndex(
7461
+ (conversation) => conversation.id === target.id
7462
+ );
7463
+ const nextConversations = currentConversations.filter(
7464
+ (conversation) => conversation.id !== target.id
7465
+ );
7466
+ const nextActive = nextConversations[Math.max(0, targetIndex)]?.id ?? nextConversations[Math.max(0, targetIndex - 1)]?.id ?? null;
7467
+ if (nextActive) {
7468
+ markSelectedConversationDetailPending(nextActive);
7469
+ }
7470
+ activeConversationIdRef.current = nextActive;
7471
+ flushSync2(() => {
7472
+ if (nextActive) {
7473
+ setIntent({ tag: "active", id: nextActive });
7474
+ } else {
7475
+ setIsLoadingMessages(false);
7476
+ setIntent({ tag: "home" });
7477
+ }
7478
+ setActiveConversationId(nextActive);
7479
+ });
7480
+ persistActiveConversation(nextActive);
7520
7481
  }
7521
7482
  void activation.unactivate(target.id).then(
7522
7483
  () => agentActivityRuntime.deleteSession({
@@ -7542,26 +7503,6 @@ function useAgentGUIConversationDeletion(input) {
7542
7503
  type: "queue/sessionCleaned"
7543
7504
  });
7544
7505
  deleteAgentSessionView(sessionViewRef(target.id));
7545
- const currentConversations = conversationsRef.current;
7546
- const targetIndex = currentConversations.findIndex(
7547
- (conversation) => conversation.id === target.id
7548
- );
7549
- const nextConversations = currentConversations.filter(
7550
- (conversation) => conversation.id !== target.id
7551
- );
7552
- if (activeConversationIdRef.current === target.id) {
7553
- const nextActive = nextConversations[Math.max(0, targetIndex)]?.id ?? nextConversations[Math.max(0, targetIndex - 1)]?.id ?? null;
7554
- if (nextActive) {
7555
- markSelectedConversationDetailPending(nextActive);
7556
- setIntent({ tag: "active", id: nextActive });
7557
- } else {
7558
- setIsLoadingMessages(false);
7559
- setIntent({ tag: "home" });
7560
- }
7561
- activeConversationIdRef.current = nextActive;
7562
- setActiveConversationId(nextActive);
7563
- persistActiveConversation(nextActive);
7564
- }
7565
7506
  removeConversations([target.id]);
7566
7507
  setPendingDeleteConversation(null);
7567
7508
  }).catch((error) => {
@@ -7575,26 +7516,32 @@ function useAgentGUIConversationDeletion(input) {
7575
7516
  workspaceId
7576
7517
  });
7577
7518
  showAgentGUIControllerErrorToast(agentHostApi.toast, message);
7578
- if (activeConversationIdRef.current === target.id) {
7579
- setIsLoadingMessages(false);
7580
- setAgentSessionViewMessagesLoading(sessionViewRef(target.id), false);
7581
- }
7582
7519
  }).finally(() => {
7583
7520
  setIsDeletingConversation(false);
7584
7521
  });
7585
7522
  }, [
7586
7523
  activation,
7587
- conversationListQuery,
7524
+ activeConversationIdRef,
7525
+ agentActivityRuntime,
7526
+ agentHostApi.toast,
7527
+ conversationsRef,
7528
+ deleteAgentSessionView,
7588
7529
  isDeletingConversation,
7589
- pendingDeleteConversation,
7590
7530
  markSelectedConversationDetailPending,
7531
+ pendingDeleteConversation,
7591
7532
  persistActiveConversation,
7592
- workspaceId,
7593
- sessionViewRef,
7594
- agentActivityRuntime,
7595
- agentHostApi.toast,
7533
+ removeConversations,
7596
7534
  sessionEngine,
7597
- removeConversations
7535
+ sessionViewRef,
7536
+ setActiveConversationId,
7537
+ setDetailError,
7538
+ setDraftByScopeKey,
7539
+ setIntent,
7540
+ setIsDeletingConversation,
7541
+ setIsLoadingMessages,
7542
+ setPendingDeleteConversation,
7543
+ submittedDraftSnapshotsRef,
7544
+ workspaceId
7598
7545
  ]);
7599
7546
  return {
7600
7547
  requestDeleteConversation,
@@ -7993,7 +7940,7 @@ function useAgentGUINewConversationActivation(input) {
7993
7940
  isConversationStale
7994
7941
  } = input;
7995
7942
  const startConversation = useCallback14(
7996
- (initialContentInput, displayPrompt) => {
7943
+ (initialContentInput, displayPrompt, submitOptions) => {
7997
7944
  const target = selectedAgentTargetRef.current;
7998
7945
  const targetData = selectedComposerTargetDataRef.current;
7999
7946
  if (target.disabled === true) {
@@ -8009,7 +7956,6 @@ function useAgentGUINewConversationActivation(input) {
8009
7956
  ) : textPromptContent(normalizeOptionalPrompt(initialContentInput));
8010
7957
  const initialDisplayPrompt = displayPrompt && displayPrompt.trim() ? displayPrompt : void 0;
8011
7958
  const normalizedInitialPrompt = initialDisplayPrompt ?? agentPromptContentDisplayText(normalizedInitialContent);
8012
- const initialConversationTitle = normalizedInitialPrompt || AGENT_PROVIDER_LABEL[targetData.provider] || targetData.provider;
8013
7959
  isCreatingConversationRef.current = true;
8014
7960
  setDetailError(null);
8015
7961
  const provider = targetData.provider;
@@ -8053,7 +7999,14 @@ function useAgentGUINewConversationActivation(input) {
8053
7999
  lastActiveModelByProviderRef.current[provider]
8054
8000
  ) : null;
8055
8001
  const settings = sanitizeComposerSettingsForTarget({
8056
- settings: inheritedModel === null ? initialSettings : { ...initialSettings, model: inheritedModel },
8002
+ settings: inheritedModel === null ? {
8003
+ ...initialSettings,
8004
+ ...submitOptions?.requiredSettingsPatch
8005
+ } : {
8006
+ ...initialSettings,
8007
+ model: inheritedModel,
8008
+ ...submitOptions?.requiredSettingsPatch
8009
+ },
8057
8010
  target: targetData,
8058
8011
  options: snapshotComposerOptions
8059
8012
  });
@@ -8092,8 +8045,10 @@ function useAgentGUINewConversationActivation(input) {
8092
8045
  initialDisplayPrompt,
8093
8046
  runtimeContent: toRuntimeSendContent(normalizedInitialContent),
8094
8047
  submitDiagnostics: agentSubmitTraceDiagnostics(submitTrace),
8095
- title: initialConversationTitle,
8096
- settings
8048
+ settings,
8049
+ optimisticTitle: deriveAgentGUIOptimisticConversationTitle(
8050
+ normalizedInitialPrompt
8051
+ )
8097
8052
  });
8098
8053
  if (requestId === null) return null;
8099
8054
  activeConversationIdRef.current = agentSessionId;
@@ -8480,6 +8435,11 @@ function useAgentGUISubmitInteractionActions(input) {
8480
8435
  ...displayPrompt && displayPrompt.trim() ? { displayPrompt } : {},
8481
8436
  submitDiagnostics: agentSubmitTraceDiagnostics(submitTrace),
8482
8437
  requestedAtUnixMs: submittedAtUnixMs,
8438
+ ...options?.requiredSettingsPatch ? {
8439
+ requiredSettingsPatch: {
8440
+ ...options.requiredSettingsPatch
8441
+ }
8442
+ } : {},
8483
8443
  ...options?.immediate === true ? { routing: "immediate" } : options?.sendNow === true ? { routing: "send_now" } : {},
8484
8444
  runtimeContent: toRuntimeSendContent(normalizedContent),
8485
8445
  type: "submit/requested",
@@ -8572,6 +8532,7 @@ function useAgentGUISubmitInteractionActions(input) {
8572
8532
  return;
8573
8533
  }
8574
8534
  executePrompt(agentSessionId, normalizedContent, displayPromptText, {
8535
+ requiredSettingsPatch: options?.requiredSettingsPatch,
8575
8536
  sendNow: options?.sendNow === true,
8576
8537
  sourceScopeKey: options?.sourceScopeKey,
8577
8538
  trackDraft: options?.trackDraft === true
@@ -8620,7 +8581,7 @@ function useAgentGUISubmitInteractionActions(input) {
8620
8581
  ]
8621
8582
  );
8622
8583
  const submitPrompt = useCallback17(
8623
- (content, displayPrompt) => {
8584
+ (content, displayPrompt, options) => {
8624
8585
  if (previewMode) {
8625
8586
  return;
8626
8587
  }
@@ -8669,6 +8630,7 @@ function useAgentGUISubmitInteractionActions(input) {
8669
8630
  normalizedContent,
8670
8631
  displayPromptText,
8671
8632
  {
8633
+ requiredSettingsPatch: options?.requiredSettingsPatch,
8672
8634
  sourceScopeKey: resolveAgentComposerDraftScopeKey({}),
8673
8635
  trackDraft: true
8674
8636
  }
@@ -8682,7 +8644,8 @@ function useAgentGUISubmitInteractionActions(input) {
8682
8644
  );
8683
8645
  const activationResult = startConversation(
8684
8646
  normalizedContent,
8685
- displayPromptText
8647
+ displayPromptText,
8648
+ options
8686
8649
  );
8687
8650
  if (activationResult) {
8688
8651
  draftByScopeKeyRef.current = clearSubmittedAgentGUIHomeDraft({
@@ -8704,7 +8667,10 @@ function useAgentGUISubmitInteractionActions(input) {
8704
8667
  agentSessionId,
8705
8668
  normalizedContent,
8706
8669
  displayPromptText,
8707
- { trackDraft: true }
8670
+ {
8671
+ requiredSettingsPatch: options?.requiredSettingsPatch,
8672
+ trackDraft: true
8673
+ }
8708
8674
  );
8709
8675
  },
8710
8676
  [
@@ -9030,30 +8996,45 @@ function useAgentGUIViewModel(candidate) {
9030
8996
  // agent-gui/agentGuiNode/controller/useAgentGUIComposerPresentation.ts
9031
8997
  import { useEffect as useEffect8, useMemo as useMemo9 } from "react";
9032
8998
 
9033
- // agent-gui/agentGuiNode/model/agentBrowserUseSubmit.ts
9034
- var TUTTI_BROWSER_USE_SUBMIT_PREFIX = "Use the injected browser-use skill and only the tutti browser CLI. Do not use any other browser skill, CDP scripts, or direct browser automation.";
9035
- function parseTuttiBrowserUseInvocation(draft) {
9036
- const match = /^(\s*)([$/])(browser|浏览器)(?:\s+([\s\S]*))?$/.exec(draft);
8999
+ // agent-gui/agentGuiNode/model/agentCapabilityUseSubmit.ts
9000
+ var AGENT_CAPABILITY_USE_CONFIG = {
9001
+ browserUse: {
9002
+ aliases: ["browser", "\u6D4F\u89C8\u5668"],
9003
+ commandName: "browser",
9004
+ submitPrefix: "Use the injected browser-use skill and only the tutti browser CLI. Do not use any other browser skill, CDP scripts, or direct browser automation."
9005
+ },
9006
+ computerUse: {
9007
+ aliases: ["computer", "\u7535\u8111"],
9008
+ commandName: "computer",
9009
+ submitPrefix: "Use the injected computer-use skill and only the tutti computer CLI. Do not use any other computer-use skill, accessibility script, or direct desktop automation."
9010
+ }
9011
+ };
9012
+ function parseAgentCapabilityUseInvocation(draft, capability) {
9013
+ const match = /^(\s*)[$/]([^\s]+)(?:\s+([\s\S]*))?$/.exec(draft);
9037
9014
  if (!match) {
9038
9015
  return null;
9039
9016
  }
9040
- const commandName = (match[3] ?? "").trim();
9041
- if (!commandName) {
9017
+ const commandName = (match[2] ?? "").trim().toLowerCase();
9018
+ const config = AGENT_CAPABILITY_USE_CONFIG[capability];
9019
+ if (!config.aliases.includes(commandName)) {
9042
9020
  return null;
9043
9021
  }
9044
9022
  return {
9045
9023
  commandName,
9046
- args: match[4] ?? ""
9024
+ args: match[3] ?? ""
9047
9025
  };
9048
9026
  }
9049
- function buildTuttiBrowserUseSubmitPrompt(args) {
9027
+ function buildAgentCapabilityUseSubmitPrompt(capability, args) {
9028
+ const config = AGENT_CAPABILITY_USE_CONFIG[capability];
9050
9029
  const trimmedArgs = args.trim();
9051
- if (!trimmedArgs) {
9052
- return TUTTI_BROWSER_USE_SUBMIT_PREFIX;
9053
- }
9054
- return `${TUTTI_BROWSER_USE_SUBMIT_PREFIX}
9030
+ return trimmedArgs ? `${config.submitPrefix}
9055
9031
 
9056
- ${trimmedArgs}`;
9032
+ ${trimmedArgs}` : config.submitPrefix;
9033
+ }
9034
+ function agentCapabilityUseDisplayPrompt(capability, args) {
9035
+ const commandName = AGENT_CAPABILITY_USE_CONFIG[capability].commandName;
9036
+ const trimmedArgs = args.trim();
9037
+ return trimmedArgs ? `/${commandName} ${trimmedArgs}` : `/${commandName}`;
9057
9038
  }
9058
9039
 
9059
9040
  // agent-gui/agentGuiNode/model/agentComposerTriggerQueries.ts
@@ -9323,37 +9304,28 @@ function resolveSlashCommandSelectionEffect({
9323
9304
  draft: draftForSlashCommand(command, currentDraft)
9324
9305
  };
9325
9306
  }
9326
- function resolveTuttiBrowserUseSubmitEffect(input) {
9327
- if (!input.browserSupported) {
9328
- return null;
9329
- }
9330
- const invocation = parseTuttiBrowserUseInvocation(input.draft);
9331
- if (!invocation) {
9332
- return null;
9333
- }
9334
- const command = input.commands.find(
9335
- (candidate) => slashCommandMatchesInvocation(candidate, invocation.commandName)
9336
- );
9337
- if (!command || !isBrowserUseCapability(command)) {
9338
- return null;
9339
- }
9340
- return {
9341
- kind: "submitPrompt",
9342
- prompt: buildTuttiBrowserUseSubmitPrompt(invocation.args),
9343
- displayPrompt: browserUseDisplayPrompt(invocation),
9344
- enableBrowserUse: true
9345
- };
9346
- }
9347
- function browserUseDisplayPrompt({ args }) {
9348
- const trimmedArgs = args.trim();
9349
- return trimmedArgs ? `/browser ${trimmedArgs}` : "/browser";
9350
- }
9351
9307
  function resolveSlashCommandSubmitEffect({
9308
+ browserSupported = false,
9309
+ computerSupported = false,
9352
9310
  provider: _provider,
9353
9311
  policy,
9354
9312
  commands,
9355
9313
  draft
9356
9314
  }) {
9315
+ for (const [capability, supported] of [
9316
+ ["browserUse", browserSupported],
9317
+ ["computerUse", computerSupported]
9318
+ ]) {
9319
+ const capabilityEffect = resolveCapabilitySubmitEffect({
9320
+ capability,
9321
+ commands,
9322
+ draft,
9323
+ supported
9324
+ });
9325
+ if (capabilityEffect) {
9326
+ return capabilityEffect;
9327
+ }
9328
+ }
9357
9329
  const invocation = parseSlashCommandInvocation(draft);
9358
9330
  if (!invocation) {
9359
9331
  return null;
@@ -9364,7 +9336,7 @@ function resolveSlashCommandSubmitEffect({
9364
9336
  if (!command) {
9365
9337
  return null;
9366
9338
  }
9367
- if (isBrowserUseCapability(command)) {
9339
+ if (isAgentSlashCommandCapability(command)) {
9368
9340
  return null;
9369
9341
  }
9370
9342
  const commandName = normalizedCommandName(command);
@@ -9391,6 +9363,32 @@ function resolveSlashCommandSubmitEffect({
9391
9363
  }
9392
9364
  return null;
9393
9365
  }
9366
+ function resolveCapabilitySubmitEffect({
9367
+ capability,
9368
+ commands,
9369
+ draft,
9370
+ supported
9371
+ }) {
9372
+ if (!supported) {
9373
+ return null;
9374
+ }
9375
+ const invocation = parseAgentCapabilityUseInvocation(draft, capability);
9376
+ if (!invocation) {
9377
+ return null;
9378
+ }
9379
+ const command = commands.find(
9380
+ (candidate) => slashCommandMatchesInvocation(candidate, invocation.commandName)
9381
+ );
9382
+ if (!command || !isCapabilityCommand(command, capability)) {
9383
+ return null;
9384
+ }
9385
+ return {
9386
+ kind: "submitPrompt",
9387
+ prompt: buildAgentCapabilityUseSubmitPrompt(capability, invocation.args),
9388
+ displayPrompt: agentCapabilityUseDisplayPrompt(capability, invocation.args),
9389
+ requiredSettingsPatch: { [capability]: true }
9390
+ };
9391
+ }
9394
9392
  function isLocalTogglePlanCommand(commandName, policy) {
9395
9393
  return providerSlashPolicy(policy)?.localPlanCommands.has(
9396
9394
  commandName.trim().toLowerCase()
@@ -9443,6 +9441,12 @@ function isBrowserUseCapability(command) {
9443
9441
  function isComputerUseCapability(command) {
9444
9442
  return "kind" in command && command.kind === "capability" && command.capability === "computerUse";
9445
9443
  }
9444
+ function isCapabilityCommand(command, capability) {
9445
+ return "kind" in command && command.kind === "capability" && command.capability === capability;
9446
+ }
9447
+ function isAgentSlashCommandCapability(command) {
9448
+ return "kind" in command && command.kind === "capability";
9449
+ }
9446
9450
  function slashCommandMatchesInvocation(command, commandName) {
9447
9451
  const normalizedInvocation = commandName.trim().toLowerCase();
9448
9452
  if (normalizedCommandName(command) === normalizedInvocation) {
@@ -10051,7 +10055,6 @@ function useAgentGUIConversationPresentation(input) {
10051
10055
  );
10052
10056
  }
10053
10057
  if (!input.activeConversationId) return stabilize(null);
10054
- const providerLabel = AGENT_PROVIDER_LABEL[input.data.provider] ?? input.data.provider ?? translate("sidebar.fallbackAgentLabel");
10055
10058
  const fallbackStatus = input.isSubmitting || input.isCreatingConversation || Object.prototype.hasOwnProperty.call(
10056
10059
  input.draftByScopeKey,
10057
10060
  resolveAgentComposerDraftScopeKey({
@@ -10067,8 +10070,8 @@ function useAgentGUIConversationPresentation(input) {
10067
10070
  id: input.activeConversationId,
10068
10071
  userId: input.currentUserId?.trim() || void 0,
10069
10072
  provider: input.data.provider,
10070
- title: providerLabel,
10071
- titleFallback: null,
10073
+ title: "",
10074
+ titleFallback: "untitled-conversation",
10072
10075
  status: activityBusyStatus ?? fallbackStatus,
10073
10076
  cwd: input.workspacePath,
10074
10077
  project: resolveAgentGUIConversationProject(
@@ -10893,6 +10896,8 @@ import {
10893
10896
  selectEnginePromptQueueError,
10894
10897
  selectEngineSession as selectEngineSession3,
10895
10898
  selectEngineSessionDeleted,
10899
+ selectEngineSessionDetailHydrated as selectEngineSessionDetailHydrated2,
10900
+ selectEngineSessionDetailLoading,
10896
10901
  selectEngineSessionError,
10897
10902
  selectEngineSessionIsRespondingToInteraction,
10898
10903
  selectEngineSessionReconcile as selectEngineSessionReconcile2,
@@ -10960,8 +10965,13 @@ function useAgentGUISessionEngineState(input) {
10960
10965
  sessionEngine,
10961
10966
  (state) => selectEngineSessionReconcile2(state, activeConversationId)
10962
10967
  );
10963
- const activeSessionReconcilePending = Boolean(
10964
- activeSessionReconcile?.inFlightCommandId || activeSessionReconcile?.pendingMessages || activeSessionReconcile?.pendingState
10968
+ const activeSessionDetailLoading = useEngineSelector(
10969
+ sessionEngine,
10970
+ (state) => selectEngineSessionDetailLoading(state, activeConversationId)
10971
+ );
10972
+ const activeSessionDetailHydrated = useEngineSelector(
10973
+ sessionEngine,
10974
+ (state) => selectEngineSessionDetailHydrated2(state, activeConversationId)
10965
10975
  );
10966
10976
  const activeEngineSessionDeleted = useEngineSelector(
10967
10977
  sessionEngine,
@@ -11061,8 +11071,8 @@ function useAgentGUISessionEngineState(input) {
11061
11071
  activeQueuedPromptSnapshot
11062
11072
  ),
11063
11073
  activeSessionState,
11064
- activeSessionReconcilePending,
11065
- activeSessionReconcileError: activeSessionReconcile?.errorMessage ?? null,
11074
+ activeSessionDetailLoading,
11075
+ activeSessionReconcileError: activeSessionDetailHydrated ? null : activeSessionReconcile?.errorMessage ?? null,
11066
11076
  isCreatingConversation,
11067
11077
  hasUnconfirmedSubmit,
11068
11078
  isRespondingToInteraction,
@@ -11567,7 +11577,6 @@ function useAgentGUINodeController({
11567
11577
  } = localState;
11568
11578
  const conversationList = useAgentGUIConversationListState({
11569
11579
  agentActivityRuntimeOrigin,
11570
- agentActivitySnapshot,
11571
11580
  currentUserId,
11572
11581
  data,
11573
11582
  normalizedProviderTargets,
@@ -11781,7 +11790,6 @@ function useAgentGUINodeController({
11781
11790
  activeConversationIdRef,
11782
11791
  activePendingActivation,
11783
11792
  agentActivityRuntime,
11784
- agentActivitySnapshotRef,
11785
11793
  attentionReadRecordsBySessionId: attentionReadState.recordsBySessionId,
11786
11794
  conversationIdsRef,
11787
11795
  conversationListQuery,
@@ -11937,7 +11945,7 @@ function useAgentGUINodeController({
11937
11945
  updateComposerSettingsRef,
11938
11946
  workspaceId
11939
11947
  });
11940
- const isLoadingMessages = localState.isLoadingMessages || sessionEngineState.activeSessionReconcilePending;
11948
+ const isLoadingMessages = localState.isLoadingMessages || sessionEngineState.activeSessionDetailLoading;
11941
11949
  const detailAvailability = activeConversationId === null ? "ready" : sessionEngineState.activeEngineSessionDeleted ? "not_found" : isLoadingMessages ? "loading" : sessionEngineState.activeSessionReconcileError || localState.detailError ? "error" : "ready";
11942
11950
  return useAgentGUIViewAssembly({
11943
11951
  ...providerCatalogSelection,
@@ -12000,11 +12008,7 @@ import {
12000
12008
  useRef as useRef41,
12001
12009
  useState as useState34
12002
12010
  } from "react";
12003
- import {
12004
- ReferenceSourcePicker,
12005
- WorkspaceFileReferencePicker
12006
- } from "@tutti-os/workspace-file-reference/ui";
12007
- import { TooltipProvider as TooltipProvider4 } from "@tutti-os/ui-system";
12011
+ import { TooltipProvider as TooltipProvider5 } from "@tutti-os/ui-system";
12008
12012
 
12009
12013
  // shared/workspaceSettingsPanel/workspaceSettingsPanelStore.ts
12010
12014
  import { useSnapshot } from "valtio";
@@ -12290,7 +12294,7 @@ function conversationPlainTitle(conversation, labels, uiLanguage) {
12290
12294
  void uiLanguage;
12291
12295
  return resolveAgentGUIConversationDisplayTitle(
12292
12296
  conversation,
12293
- labels.fallbackAgentTitle
12297
+ labels.untitledConversationTitle
12294
12298
  );
12295
12299
  }
12296
12300
 
@@ -12894,7 +12898,7 @@ import {
12894
12898
  useRef as useRef31,
12895
12899
  useState as useState24
12896
12900
  } from "react";
12897
- import { Tooltip as Tooltip5, TooltipContent as TooltipContent5, TooltipTrigger as TooltipTrigger5 } from "@tutti-os/ui-system";
12901
+ import { Tooltip as Tooltip6, TooltipContent as TooltipContent6, TooltipTrigger as TooltipTrigger6 } from "@tutti-os/ui-system";
12898
12902
 
12899
12903
  // agent-gui/agentGuiNode/model/agentGuiProviderRailOrder.ts
12900
12904
  var AGENT_GUI_PROVIDER_RAIL_PREFERENCES_STORAGE_KEY = "agent-gui:provider-rail-preferences";
@@ -14945,7 +14949,7 @@ function AgentSlashStatusPanel({
14945
14949
  }
14946
14950
 
14947
14951
  // agent-gui/agentGuiNode/composer/useComposerDraftAttachments.ts
14948
- import { flushSync } from "react-dom";
14952
+ import { flushSync as flushSync3 } from "react-dom";
14949
14953
  import {
14950
14954
  useCallback as useCallback28,
14951
14955
  useRef as useRef19
@@ -15508,7 +15512,7 @@ ${item.text}` : item.text;
15508
15512
  }
15509
15513
  void onRequestWorkspaceReferences(entity).then((result) => {
15510
15514
  if (result.files.length > 0 || result.mentionItems.length > 0) {
15511
- flushSync(clearActiveFileMentionTrigger);
15515
+ flushSync3(clearActiveFileMentionTrigger);
15512
15516
  }
15513
15517
  return applyReferencePickResult(result);
15514
15518
  });
@@ -15563,9 +15567,10 @@ import {
15563
15567
  var DOCK_COMPOSER_INPUT_MIN_HEIGHT = 56;
15564
15568
  var DOCK_COMPOSER_TEXT_LINE_HEIGHT = 24;
15565
15569
  var DOCK_COMPOSER_MAX_VISIBLE_TEXT_LINES = 3.5;
15566
- var DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT = 26;
15570
+ var DOCK_COMPOSER_INPUT_TEXT_MEASUREMENT_CHROME_HEIGHT = 14;
15571
+ var DOCK_COMPOSER_INPUT_TEXT_MAX_HEIGHT_CHROME = 26;
15567
15572
  var DOCK_COMPOSER_TEXT_VIEWPORT_MAX_HEIGHT = DOCK_COMPOSER_TEXT_LINE_HEIGHT * DOCK_COMPOSER_MAX_VISIBLE_TEXT_LINES;
15568
- var DOCK_COMPOSER_INPUT_MAX_HEIGHT = DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT + DOCK_COMPOSER_TEXT_VIEWPORT_MAX_HEIGHT;
15573
+ var DOCK_COMPOSER_INPUT_MAX_HEIGHT = DOCK_COMPOSER_INPUT_TEXT_MAX_HEIGHT_CHROME + DOCK_COMPOSER_TEXT_VIEWPORT_MAX_HEIGHT;
15569
15574
  var DOCK_COMPOSER_INPUT_BORDER_HEIGHT = 2;
15570
15575
  var DOCK_COMPOSER_INPUT_PADDING_BLOCK_HEIGHT = 24;
15571
15576
  var PROMPT_TIP_CYCLE_STEP_MS = 5200;
@@ -15680,7 +15685,7 @@ function useComposerLayout({
15680
15685
  DOCK_COMPOSER_INPUT_MAX_HEIGHT,
15681
15686
  Math.max(
15682
15687
  DOCK_COMPOSER_INPUT_MIN_HEIGHT,
15683
- editor.scrollHeight + DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT
15688
+ editor.scrollHeight + DOCK_COMPOSER_INPUT_TEXT_MEASUREMENT_CHROME_HEIGHT
15684
15689
  )
15685
15690
  );
15686
15691
  const attachmentChromeHeight = attachmentHeight > 0 ? DOCK_COMPOSER_INPUT_PADDING_BLOCK_HEIGHT : 0;
@@ -16661,13 +16666,15 @@ function useComposerSlashActions(input) {
16661
16666
  (effect) => {
16662
16667
  if (effect.kind === "submitPrompt") {
16663
16668
  clearSlashCommandDraft();
16664
- if (effect.enableBrowserUse && !settingsControlsDisabled) {
16665
- onSettingsChange({ browserUse: true });
16666
- }
16669
+ const submitOptions = effect.requiredSettingsPatch ? { requiredSettingsPatch: effect.requiredSettingsPatch } : void 0;
16667
16670
  if (effect.displayPrompt) {
16668
- onSubmit(textPromptContent(effect.prompt), effect.displayPrompt);
16671
+ onSubmit(
16672
+ textPromptContent(effect.prompt),
16673
+ effect.displayPrompt,
16674
+ submitOptions
16675
+ );
16669
16676
  } else {
16670
- onSubmit(textPromptContent(effect.prompt));
16677
+ onSubmit(textPromptContent(effect.prompt), void 0, submitOptions);
16671
16678
  }
16672
16679
  return;
16673
16680
  }
@@ -16861,20 +16868,13 @@ function useComposerSlashActions(input) {
16861
16868
  return;
16862
16869
  }
16863
16870
  if (options?.guidance !== true) {
16864
- const browserUseEffect = resolveTuttiBrowserUseSubmitEffect({
16871
+ const slashCommandEffect = resolveSlashCommandSubmitEffect({
16865
16872
  browserSupported: Boolean(composerSettings.supportsBrowser),
16873
+ computerSupported: Boolean(composerSettings.supportsComputerUse),
16866
16874
  commands: resolvedSlashCommands,
16867
- draft: nextPrompt
16868
- });
16869
- if (browserUseEffect) {
16870
- executeSlashCommandEffect(browserUseEffect);
16871
- return;
16872
- }
16873
- const slashCommandEffect = resolveSlashCommandSubmitEffect({
16875
+ draft: nextPrompt,
16874
16876
  provider,
16875
- policy: slashCommandPolicy,
16876
- commands: resolvedSlashCommands,
16877
- draft: nextPrompt
16877
+ policy: slashCommandPolicy
16878
16878
  });
16879
16879
  if (slashCommandEffect) {
16880
16880
  executeSlashCommandEffect(slashCommandEffect);
@@ -18216,10 +18216,10 @@ import {
18216
18216
  Popover as Popover3,
18217
18217
  PopoverAnchor as PopoverAnchor2,
18218
18218
  Spinner as Spinner5,
18219
- Tooltip as Tooltip4,
18220
- TooltipContent as TooltipContent4,
18221
- TooltipProvider as TooltipProvider3,
18222
- TooltipTrigger as TooltipTrigger4
18219
+ Tooltip as Tooltip5,
18220
+ TooltipContent as TooltipContent5,
18221
+ TooltipProvider as TooltipProvider4,
18222
+ TooltipTrigger as TooltipTrigger5
18223
18223
  } from "@tutti-os/ui-system";
18224
18224
 
18225
18225
  // agent-gui/agentGuiNode/AgentQueuedPromptPanel.tsx
@@ -18234,8 +18234,14 @@ import {
18234
18234
  DropdownMenu as DropdownMenu2,
18235
18235
  DropdownMenuContent as DropdownMenuContent2,
18236
18236
  DropdownMenuItem,
18237
- DropdownMenuTrigger as DropdownMenuTrigger2
18237
+ DropdownMenuTrigger as DropdownMenuTrigger2,
18238
+ Tooltip as Tooltip2,
18239
+ TooltipContent as TooltipContent2,
18240
+ TooltipProvider as TooltipProvider2,
18241
+ TooltipTrigger as TooltipTrigger2,
18242
+ useTextOverflow
18238
18243
  } from "@tutti-os/ui-system";
18244
+ import { extractPlainTextFromContent } from "@tutti-os/ui-rich-text";
18239
18245
 
18240
18246
  // agent-gui/agentGuiNode/queuedPromptImageLoadOwner.ts
18241
18247
  function queuedPromptImageLoadRequestIdentity(request) {
@@ -18327,6 +18333,7 @@ var QueuedPromptImageLoadOwner = class {
18327
18333
  // agent-gui/agentGuiNode/AgentQueuedPromptPanel.tsx
18328
18334
  import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
18329
18335
  var EMPTY_WORKSPACE_APP_ICONS2 = [];
18336
+ var QUEUED_PROMPT_OVERFLOW_DESCENDANTS = '[data-workspace-agent-markdown="true"], .tsh-agent-object-token__main';
18330
18337
  function queuedPromptImages(queuedPrompt) {
18331
18338
  return agentPromptContentImageBlocks(queuedPrompt.content);
18332
18339
  }
@@ -18438,10 +18445,53 @@ function queuedPromptDisplayText(queuedPrompt) {
18438
18445
  function queuedPromptTitle(queuedPrompt) {
18439
18446
  const prompt = queuedPromptDisplayText(queuedPrompt);
18440
18447
  if (prompt) {
18441
- return prompt;
18448
+ return extractPlainTextFromContent(prompt);
18442
18449
  }
18443
18450
  return queuedPromptImages(queuedPrompt).map((image) => image.name?.trim() ?? "").filter(Boolean).join(", ");
18444
18451
  }
18452
+ function AgentQueuedPromptText({
18453
+ displayText,
18454
+ measurementRef,
18455
+ onLinkClick,
18456
+ title,
18457
+ workspaceAppIcons
18458
+ }) {
18459
+ const { ref: overflowRef, overflowing } = useTextOverflow(
18460
+ displayText,
18461
+ QUEUED_PROMPT_OVERFLOW_DESCENDANTS
18462
+ );
18463
+ const content = /* @__PURE__ */ jsx24(
18464
+ "div",
18465
+ {
18466
+ ref: (element) => {
18467
+ overflowRef.current = element;
18468
+ if (measurementRef) measurementRef.current = element;
18469
+ },
18470
+ className: AgentGUINode_styles_default.composerQueuedPromptText,
18471
+ "data-overflowing": overflowing ? "true" : "false",
18472
+ onClick: (event) => {
18473
+ if (event.target instanceof Element && event.target.closest("a")) {
18474
+ event.stopPropagation();
18475
+ }
18476
+ },
18477
+ children: /* @__PURE__ */ jsx24(
18478
+ AgentMessageMarkdown,
18479
+ {
18480
+ content: displayText,
18481
+ className: "agent-gui-node__composer-queued-prompt-markdown",
18482
+ inline: true,
18483
+ onLinkClick,
18484
+ previewMode: true,
18485
+ workspaceAppIcons
18486
+ }
18487
+ )
18488
+ }
18489
+ );
18490
+ return /* @__PURE__ */ jsx24(TooltipProvider2, { delayDuration: 200, children: /* @__PURE__ */ jsxs17(Tooltip2, { children: [
18491
+ /* @__PURE__ */ jsx24(TooltipTrigger2, { asChild: true, children: content }),
18492
+ overflowing && title ? /* @__PURE__ */ jsx24(TooltipContent2, { className: "max-w-[min(520px,calc(100vw-32px))] whitespace-pre-wrap text-left [overflow-wrap:anywhere]", children: title }) : null
18493
+ ] }) });
18494
+ }
18445
18495
  function AgentQueuedPromptPanel({
18446
18496
  queueStatus = "active",
18447
18497
  queuedPrompts,
@@ -18590,27 +18640,15 @@ function AgentQueuedPromptPanel({
18590
18640
  "data-testid": `agent-gui-composer-queued-prompt-${queuedPrompt.id}`,
18591
18641
  "data-draining": isDraining ? "true" : "false",
18592
18642
  children: [
18593
- /* @__PURE__ */ jsx24("div", { className: AgentGUINode_styles_default.composerQueuedPromptMain, children: /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.composerQueuedPromptBody, title, children: [
18643
+ /* @__PURE__ */ jsx24("div", { className: AgentGUINode_styles_default.composerQueuedPromptMain, children: /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.composerQueuedPromptBody, children: [
18594
18644
  displayText ? /* @__PURE__ */ jsx24(
18595
- "div",
18645
+ AgentQueuedPromptText,
18596
18646
  {
18597
- ref: queuedPrompts.length === 1 ? singlePromptTextRef : void 0,
18598
- className: AgentGUINode_styles_default.composerQueuedPromptText,
18599
- onClick: (event) => {
18600
- if (event.target instanceof Element && event.target.closest("a")) {
18601
- event.stopPropagation();
18602
- }
18603
- },
18604
- children: /* @__PURE__ */ jsx24(
18605
- AgentMessageMarkdown,
18606
- {
18607
- content: displayText,
18608
- className: "agent-gui-node__composer-queued-prompt-markdown",
18609
- inline: true,
18610
- onLinkClick,
18611
- workspaceAppIcons
18612
- }
18613
- )
18647
+ displayText,
18648
+ measurementRef: queuedPrompts.length === 1 ? singlePromptTextRef : void 0,
18649
+ onLinkClick,
18650
+ title,
18651
+ workspaceAppIcons
18614
18652
  }
18615
18653
  ) : null,
18616
18654
  images.length > 0 ? /* @__PURE__ */ jsx24("div", { className: AgentGUINode_styles_default.composerQueuedPromptImages, children: images.slice(0, 3).map((image, index) => {
@@ -18726,9 +18764,9 @@ import {
18726
18764
  SelectContent,
18727
18765
  SelectItem,
18728
18766
  SelectTrigger,
18729
- Tooltip as Tooltip2,
18730
- TooltipContent as TooltipContent2,
18731
- TooltipTrigger as TooltipTrigger2,
18767
+ Tooltip as Tooltip3,
18768
+ TooltipContent as TooltipContent3,
18769
+ TooltipTrigger as TooltipTrigger3,
18732
18770
  cn as cn3
18733
18771
  } from "@tutti-os/ui-system";
18734
18772
 
@@ -19376,9 +19414,9 @@ function AgentPermissionModeDropdown({
19376
19414
  // The trigger is disabled while loading, so pointer events never reach
19377
19415
  // it. Target the tooltip at a focusable wrapper span (Radix's pattern
19378
19416
  // for disabled triggers) so hover/focus reliably surfaces the hint.
19379
- /* @__PURE__ */ jsxs19(Tooltip2, { children: [
19380
- /* @__PURE__ */ jsx26(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx26("span", { className: "inline-flex", tabIndex: 0, children: selectTrigger }) }),
19381
- /* @__PURE__ */ jsx26(TooltipContent2, { side: "top", children: labels.loadingOptions })
19417
+ /* @__PURE__ */ jsxs19(Tooltip3, { children: [
19418
+ /* @__PURE__ */ jsx26(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx26("span", { className: "inline-flex", tabIndex: 0, children: selectTrigger }) }),
19419
+ /* @__PURE__ */ jsx26(TooltipContent3, { side: "top", children: labels.loadingOptions })
19382
19420
  ] })
19383
19421
  ) : selectTrigger,
19384
19422
  isSelectOpen ? /* @__PURE__ */ jsx26(
@@ -19495,9 +19533,9 @@ function ComposerOptionInfoTooltip({
19495
19533
  if (!tooltipsEnabled) {
19496
19534
  return trigger;
19497
19535
  }
19498
- return /* @__PURE__ */ jsxs19(Tooltip2, { children: [
19499
- /* @__PURE__ */ jsx26(TooltipTrigger2, { asChild: true, children: trigger }),
19500
- /* @__PURE__ */ jsx26(TooltipContent2, { side: "right", className: "max-w-[240px] whitespace-normal", children: description })
19536
+ return /* @__PURE__ */ jsxs19(Tooltip3, { children: [
19537
+ /* @__PURE__ */ jsx26(TooltipTrigger3, { asChild: true, children: trigger }),
19538
+ /* @__PURE__ */ jsx26(TooltipContent3, { side: "right", className: "max-w-[240px] whitespace-normal", children: description })
19501
19539
  ] });
19502
19540
  }
19503
19541
  function resolvePermissionModeTriggerTone(value) {
@@ -19578,9 +19616,9 @@ function AgentModelReasoningDropdown({
19578
19616
  // The trigger is disabled while loading, so pointer events never reach
19579
19617
  // it. Target the tooltip at a focusable wrapper span (Radix's pattern
19580
19618
  // for disabled triggers) so hover/focus reliably surfaces the hint.
19581
- /* @__PURE__ */ jsxs19(Tooltip2, { children: [
19582
- /* @__PURE__ */ jsx26(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx26("span", { className: "inline-flex", tabIndex: 0, children: /* @__PURE__ */ jsx26(DropdownMenuTrigger3, { asChild: true, disabled: menuDisabled, children: trigger }) }) }),
19583
- /* @__PURE__ */ jsx26(TooltipContent2, { side: "top", children: labels.loadingOptions })
19619
+ /* @__PURE__ */ jsxs19(Tooltip3, { children: [
19620
+ /* @__PURE__ */ jsx26(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx26("span", { className: "inline-flex", tabIndex: 0, children: /* @__PURE__ */ jsx26(DropdownMenuTrigger3, { asChild: true, disabled: menuDisabled, children: trigger }) }) }),
19621
+ /* @__PURE__ */ jsx26(TooltipContent3, { side: "top", children: labels.loadingOptions })
19584
19622
  ] })
19585
19623
  ) : /* @__PURE__ */ jsx26(DropdownMenuTrigger3, { asChild: true, disabled: menuDisabled, children: trigger }),
19586
19624
  /* @__PURE__ */ jsxs19(
@@ -19783,12 +19821,12 @@ function ComposerModelOptionTooltip({
19783
19821
  if (!tooltipsEnabled || !option.tooltip) {
19784
19822
  return children;
19785
19823
  }
19786
- return /* @__PURE__ */ jsxs19(Tooltip2, { children: [
19787
- /* @__PURE__ */ jsx26(TooltipTrigger2, { asChild: true, children: cloneElement(children, {
19824
+ return /* @__PURE__ */ jsxs19(Tooltip3, { children: [
19825
+ /* @__PURE__ */ jsx26(TooltipTrigger3, { asChild: true, children: cloneElement(children, {
19788
19826
  "data-agent-model-option-tooltip-trigger": "true"
19789
19827
  }) }),
19790
19828
  /* @__PURE__ */ jsxs19(
19791
- TooltipContent2,
19829
+ TooltipContent3,
19792
19830
  {
19793
19831
  side: "right",
19794
19832
  align: "start",
@@ -20374,7 +20412,7 @@ function AgentRichTextEditorSurface({
20374
20412
  "aria-multiline": "true",
20375
20413
  className: cn(
20376
20414
  className,
20377
- "overflow-y-auto whitespace-pre-wrap break-words [&_p]:m-0 [&_p]:min-h-[1.45em]"
20415
+ "overflow-y-auto whitespace-pre-wrap break-words [&_p]:m-0"
20378
20416
  )
20379
20417
  }
20380
20418
  ),
@@ -20694,7 +20732,7 @@ var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
20694
20732
  "aria-multiline": "true",
20695
20733
  class: cn(
20696
20734
  className,
20697
- "overflow-y-auto whitespace-pre-wrap break-words [&_p]:m-0 [&_p]:min-h-[1.45em]"
20735
+ "overflow-y-auto whitespace-pre-wrap break-words [&_p]:m-0"
20698
20736
  )
20699
20737
  },
20700
20738
  clipboardTextSerializer: (slice) => agentRichTextContentToPromptText(slice.content.toJSON()),
@@ -21108,6 +21146,39 @@ function releasePastedAtSuggestionSuppression(ref) {
21108
21146
  }, 0);
21109
21147
  }
21110
21148
 
21149
+ // agent-gui/agentGuiNode/AgentReferenceProvenanceFilterControl.tsx
21150
+ import { ReferenceProvenanceFilterControl } from "@tutti-os/workspace-file-reference/ui";
21151
+ import { jsx as jsx29 } from "react/jsx-runtime";
21152
+ function AgentReferenceProvenanceFilterControl({
21153
+ filter,
21154
+ popoverElevation = "default"
21155
+ }) {
21156
+ return /* @__PURE__ */ jsx29(
21157
+ ReferenceProvenanceFilterControl,
21158
+ {
21159
+ agentOptions: filter.snapshot.catalog.agentOptions,
21160
+ enabledDimensions: filter.snapshot.catalog.enabledDimensions,
21161
+ labels: {
21162
+ allAgents: translate("agentHost.agentGui.provenanceFilterAllAgents"),
21163
+ allMembers: translate("agentHost.agentGui.provenanceFilterAllMembers"),
21164
+ allSources: translate("agentHost.agentGui.provenanceFilterAllSources"),
21165
+ agents: translate("agentHost.agentGui.provenanceFilterAgents"),
21166
+ filteredSources: translate(
21167
+ "agentHost.agentGui.provenanceFilterFilteredSources"
21168
+ ),
21169
+ members: translate("agentHost.agentGui.provenanceFilterMembers"),
21170
+ reset: translate("agentHost.agentGui.provenanceFilterReset")
21171
+ },
21172
+ memberOptions: filter.snapshot.catalog.memberOptions,
21173
+ popoverElevation,
21174
+ value: filter.snapshot.value,
21175
+ onReset: filter.controller.reset,
21176
+ onToggle: filter.controller.toggle,
21177
+ onToggleAll: filter.controller.toggleAll
21178
+ }
21179
+ );
21180
+ }
21181
+
21111
21182
  // agent-gui/agentGuiNode/AgentSlashCommandPalette.tsx
21112
21183
  import { Fragment as Fragment8, useEffect as useEffect25, useRef as useRef26 } from "react";
21113
21184
  import { Spinner as Spinner3 } from "@tutti-os/ui-system";
@@ -21121,10 +21192,10 @@ import {
21121
21192
  Target,
21122
21193
  ZapIcon as ZapIcon2
21123
21194
  } from "lucide-react";
21124
- import { jsx as jsx29, jsxs as jsxs21 } from "react/jsx-runtime";
21195
+ import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
21125
21196
  var paletteStyles = {
21126
- palette: "nodrag agent-gui-node__mention-palette flex h-full min-h-0 flex-col gap-1 overflow-y-auto px-1 pb-1 pt-2 [-webkit-app-region:no-drag]",
21127
- option: "nodrag relative flex min-h-9 w-full min-w-0 cursor-pointer select-none items-center gap-2 overflow-hidden rounded-[6px] border-0 bg-transparent px-2.5 py-2 text-left text-[13px] text-[var(--text-primary)] outline-hidden transition-colors duration-200 [-webkit-app-region:no-drag] hover:bg-[var(--transparency-block)] focus-visible:bg-[var(--transparency-block)] focus-visible:outline-none active:bg-[var(--transparency-active)] data-[highlighted]:bg-[var(--transparency-block)] data-[highlighted]:text-[var(--text-primary)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
21197
+ palette: "nodrag agent-gui-node__mention-palette flex h-full min-h-0 flex-col gap-0.5 overflow-y-auto px-1 pb-1 pt-2 [-webkit-app-region:no-drag]",
21198
+ option: "nodrag relative flex h-7 min-h-7 w-full min-w-0 cursor-pointer select-none items-center gap-2 overflow-hidden rounded-[6px] border-0 bg-transparent px-2.5 py-0 text-left text-[13px] text-[var(--text-primary)] outline-hidden transition-colors duration-200 [-webkit-app-region:no-drag] hover:bg-[var(--transparency-block)] focus-visible:bg-[var(--transparency-block)] focus-visible:outline-none active:bg-[var(--transparency-active)] data-[highlighted]:bg-[var(--transparency-block)] data-[highlighted]:text-[var(--text-primary)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
21128
21199
  icon: "flex w-3 shrink-0 items-center justify-center self-center text-[var(--text-secondary)]",
21129
21200
  copy: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden leading-[16px]",
21130
21201
  name: "flex min-w-0 max-w-[48%] shrink-0 items-center gap-1 overflow-hidden",
@@ -21134,7 +21205,7 @@ var paletteStyles = {
21134
21205
  groupHeader: "select-none px-2.5 pb-0.5 text-[11px] font-normal text-[var(--text-secondary)]",
21135
21206
  groupHeaderFirst: "pt-1.5",
21136
21207
  groupHeaderSeparated: "mt-1 border-t border-[var(--border-1)] pt-2",
21137
- settingsButton: "nodrag ml-1 shrink-0 rounded-[5px] border-0 bg-[var(--transparency-hover)] px-2 py-1 text-[11px] font-semibold leading-[14px] text-[var(--text-secondary)] outline-none transition-colors duration-150 hover:bg-[var(--transparency-active)] hover:text-[var(--text-primary)] focus-visible:ring-2 focus-visible:ring-[var(--agent-gui-focus-ring,var(--border-focus))]",
21208
+ settingsButton: "nodrag ml-1 flex h-5 min-h-5 shrink-0 items-center rounded-[4px] border-0 bg-[var(--transparency-hover)] px-2 py-0 text-[11px] font-semibold leading-[14px] text-[var(--text-secondary)] outline-none transition-colors duration-150 hover:bg-[var(--transparency-active)] hover:text-[var(--text-primary)] focus-visible:ring-2 focus-visible:ring-[var(--agent-gui-focus-ring,var(--border-focus))]",
21138
21209
  loading: "flex min-h-9 w-full items-center gap-2 px-2.5 py-2 text-[11px] text-[var(--text-secondary)]"
21139
21210
  };
21140
21211
  function AgentSlashCommandPalette({
@@ -21180,7 +21251,7 @@ function AgentSlashCommandPalette({
21180
21251
  );
21181
21252
  const capabilityLoadingInsertIndex = capabilitiesLoading ? capabilityLoadingIndex(entries) : -1;
21182
21253
  const capabilityLoadingNode = capabilitiesLoading ? /* @__PURE__ */ jsxs21(Fragment8, { children: [
21183
- !hasCapabilityEntries ? /* @__PURE__ */ jsx29(
21254
+ !hasCapabilityEntries ? /* @__PURE__ */ jsx30(
21184
21255
  "div",
21185
21256
  {
21186
21257
  "aria-hidden": "true",
@@ -21192,8 +21263,8 @@ function AgentSlashCommandPalette({
21192
21263
  }
21193
21264
  ) : null,
21194
21265
  /* @__PURE__ */ jsxs21("div", { "aria-live": "polite", className: paletteStyles.loading, role: "status", children: [
21195
- /* @__PURE__ */ jsx29("span", { "aria-hidden": "true", className: paletteStyles.icon, children: /* @__PURE__ */ jsx29(Spinner3, { size: 12, strokeWidth: 2 }) }),
21196
- /* @__PURE__ */ jsx29("span", { children: capabilitiesLoadingLabel })
21266
+ /* @__PURE__ */ jsx30("span", { "aria-hidden": "true", className: paletteStyles.icon, children: /* @__PURE__ */ jsx30(Spinner3, { size: 12, strokeWidth: 2 }) }),
21267
+ /* @__PURE__ */ jsx30("span", { children: capabilitiesLoadingLabel })
21197
21268
  ] })
21198
21269
  ] }, "capability-loading") : null;
21199
21270
  return /* @__PURE__ */ jsxs21("div", { className: paletteStyles.palette, role: "listbox", "aria-label": label, children: [
@@ -21201,7 +21272,7 @@ function AgentSlashCommandPalette({
21201
21272
  const isHighlighted = index === highlightedIndex;
21202
21273
  const groupType = entryGroupType(entry);
21203
21274
  const entryIcon = slashPaletteEntryIcon(entry);
21204
- const groupHeader = showGroupHeaders && firstEntryIndexByType.get(groupType) === index ? /* @__PURE__ */ jsx29(
21275
+ const groupHeader = showGroupHeaders && firstEntryIndexByType.get(groupType) === index ? /* @__PURE__ */ jsx30(
21205
21276
  "div",
21206
21277
  {
21207
21278
  "aria-hidden": "true",
@@ -21251,15 +21322,15 @@ function AgentSlashCommandPalette({
21251
21322
  onSelectSkill(entry.skill);
21252
21323
  },
21253
21324
  children: [
21254
- entryIcon ? /* @__PURE__ */ jsx29("span", { "aria-hidden": "true", className: paletteStyles.icon, children: entryIcon }) : null,
21325
+ entryIcon ? /* @__PURE__ */ jsx30("span", { "aria-hidden": "true", className: paletteStyles.icon, children: entryIcon }) : null,
21255
21326
  /* @__PURE__ */ jsxs21("span", { className: paletteStyles.copy, children: [
21256
21327
  /* @__PURE__ */ jsxs21("span", { className: paletteStyles.name, children: [
21257
- /* @__PURE__ */ jsx29("span", { className: paletteStyles.primaryName, children: entry.type === "command" ? entry.primaryLabel ?? entry.label : entry.label }),
21258
- entry.type === "command" && entry.secondaryLabel ? /* @__PURE__ */ jsx29("span", { className: paletteStyles.secondaryName, children: entry.secondaryLabel }) : null
21328
+ /* @__PURE__ */ jsx30("span", { className: paletteStyles.primaryName, children: entry.type === "command" ? entry.primaryLabel ?? entry.label : entry.label }),
21329
+ entry.type === "command" && entry.secondaryLabel ? /* @__PURE__ */ jsx30("span", { className: paletteStyles.secondaryName, children: entry.secondaryLabel }) : null
21259
21330
  ] }),
21260
- entry.description ? /* @__PURE__ */ jsx29("span", { className: paletteStyles.descriptionText, children: entry.description }) : null
21331
+ entry.description ? /* @__PURE__ */ jsx30("span", { className: paletteStyles.descriptionText, children: entry.description }) : null
21261
21332
  ] }),
21262
- entry.type === "capability" && entry.settingsLabel && onSelectCapabilitySettings ? /* @__PURE__ */ jsx29(
21333
+ entry.type === "capability" && entry.settingsLabel && onSelectCapabilitySettings ? /* @__PURE__ */ jsx30(
21263
21334
  "button",
21264
21335
  {
21265
21336
  "aria-label": entry.settingsAriaLabel ?? entry.settingsLabel,
@@ -21330,24 +21401,24 @@ function labelForEntryGroupType(groupType, labels) {
21330
21401
  var SLASH_PALETTE_ICON_CLASS = "size-3";
21331
21402
  function slashPaletteEntryIcon(entry) {
21332
21403
  if (entry.type === "capability") {
21333
- return entry.capability.capability === "computerUse" ? /* @__PURE__ */ jsx29(Monitor, { className: SLASH_PALETTE_ICON_CLASS }) : /* @__PURE__ */ jsx29(Globe, { className: SLASH_PALETTE_ICON_CLASS });
21404
+ return entry.capability.capability === "computerUse" ? /* @__PURE__ */ jsx30(Monitor, { className: SLASH_PALETTE_ICON_CLASS }) : /* @__PURE__ */ jsx30(Globe, { className: SLASH_PALETTE_ICON_CLASS });
21334
21405
  }
21335
21406
  if (entry.type !== "command") {
21336
21407
  return null;
21337
21408
  }
21338
21409
  switch (entry.command.name.trim().toLowerCase()) {
21339
21410
  case "compact":
21340
- return /* @__PURE__ */ jsx29(Minimize2, { className: SLASH_PALETTE_ICON_CLASS });
21411
+ return /* @__PURE__ */ jsx30(Minimize2, { className: SLASH_PALETTE_ICON_CLASS });
21341
21412
  case "fast":
21342
- return /* @__PURE__ */ jsx29(ZapIcon2, { className: SLASH_PALETTE_ICON_CLASS });
21413
+ return /* @__PURE__ */ jsx30(ZapIcon2, { className: SLASH_PALETTE_ICON_CLASS });
21343
21414
  case "goal":
21344
- return /* @__PURE__ */ jsx29(Target, { className: SLASH_PALETTE_ICON_CLASS });
21415
+ return /* @__PURE__ */ jsx30(Target, { className: SLASH_PALETTE_ICON_CLASS });
21345
21416
  case "plan":
21346
- return /* @__PURE__ */ jsx29(ListChecks, { className: SLASH_PALETTE_ICON_CLASS });
21417
+ return /* @__PURE__ */ jsx30(ListChecks, { className: SLASH_PALETTE_ICON_CLASS });
21347
21418
  case "review":
21348
- return /* @__PURE__ */ jsx29(Search, { className: SLASH_PALETTE_ICON_CLASS });
21419
+ return /* @__PURE__ */ jsx30(Search, { className: SLASH_PALETTE_ICON_CLASS });
21349
21420
  case "status":
21350
- return /* @__PURE__ */ jsx29(Info, { className: SLASH_PALETTE_ICON_CLASS });
21421
+ return /* @__PURE__ */ jsx30(Info, { className: SLASH_PALETTE_ICON_CLASS });
21351
21422
  default:
21352
21423
  return null;
21353
21424
  }
@@ -21449,7 +21520,7 @@ var AgentReviewBranchController = class {
21449
21520
  };
21450
21521
 
21451
21522
  // agent-gui/agentGuiNode/AgentReviewPickerPanel.tsx
21452
- import { jsx as jsx30, jsxs as jsxs22 } from "react/jsx-runtime";
21523
+ import { jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
21453
21524
  var reviewMenuStyles = {
21454
21525
  panel: "agent-gui-node__slash-status-panel nodrag flex max-h-[280px] flex-col gap-1 overflow-hidden [-webkit-app-region:no-drag]",
21455
21526
  search: "nodrag h-8 w-full shrink-0 rounded-[6px] border-0 bg-transparent px-2.5 text-[11px] leading-4 text-[var(--text-primary)] placeholder:text-[var(--text-secondary)] focus-visible:outline-none [-webkit-app-region:no-drag]",
@@ -21653,7 +21724,7 @@ function AgentReviewPickerPanel({
21653
21724
  role: "dialog",
21654
21725
  "aria-label": labels.title,
21655
21726
  children: [
21656
- /* @__PURE__ */ jsx30(
21727
+ /* @__PURE__ */ jsx31(
21657
21728
  "input",
21658
21729
  {
21659
21730
  ref: searchInputRef,
@@ -21669,15 +21740,15 @@ function AgentReviewPickerPanel({
21669
21740
  onKeyDown: handleKeyDown
21670
21741
  }
21671
21742
  ),
21672
- /* @__PURE__ */ jsx30(
21743
+ /* @__PURE__ */ jsx31(
21673
21744
  "div",
21674
21745
  {
21675
21746
  className: reviewMenuStyles.list,
21676
21747
  role: "listbox",
21677
21748
  "aria-label": labels.title,
21678
- children: entries.length === 0 ? /* @__PURE__ */ jsx30("div", { className: reviewMenuStyles.message, children: emptyMessage }) : entries.map((entry, index) => {
21749
+ children: entries.length === 0 ? /* @__PURE__ */ jsx31("div", { className: reviewMenuStyles.message, children: emptyMessage }) : entries.map((entry, index) => {
21679
21750
  const isHighlighted = index === safeHighlightedIndex;
21680
- return /* @__PURE__ */ jsx30(
21751
+ return /* @__PURE__ */ jsx31(
21681
21752
  "button",
21682
21753
  {
21683
21754
  ref: isHighlighted ? highlightedOptionRef : null,
@@ -21698,8 +21769,8 @@ function AgentReviewPickerPanel({
21698
21769
  }
21699
21770
  },
21700
21771
  children: /* @__PURE__ */ jsxs22("span", { className: reviewMenuStyles.copy, children: [
21701
- /* @__PURE__ */ jsx30("span", { className: reviewMenuStyles.name, children: entry.label }),
21702
- entry.description ? /* @__PURE__ */ jsx30("span", { className: reviewMenuStyles.description, children: entry.description }) : null
21772
+ /* @__PURE__ */ jsx31("span", { className: reviewMenuStyles.name, children: entry.label }),
21773
+ entry.description ? /* @__PURE__ */ jsx31("span", { className: reviewMenuStyles.description, children: entry.description }) : null
21703
21774
  ] })
21704
21775
  },
21705
21776
  entry.key
@@ -21723,7 +21794,7 @@ import {
21723
21794
  useState as useState19
21724
21795
  } from "react";
21725
21796
  import { createPortal as createPortal3 } from "react-dom";
21726
- import { jsx as jsx31 } from "react/jsx-runtime";
21797
+ import { jsx as jsx32 } from "react/jsx-runtime";
21727
21798
  var COMPOSER_MENU_GAP_PX = 8;
21728
21799
  var COMPOSER_MENU_VIEWPORT_PADDING_PX = 8;
21729
21800
  var COMPOSER_MENU_TOP_SAFE_AREA_PX = DESKTOP_WINDOW_TOP_MARGIN;
@@ -21956,7 +22027,7 @@ var ComposerFloatingMenuSurface = forwardRef4(function ComposerFloatingMenuSurfa
21956
22027
  }
21957
22028
  const portalTarget = frame?.portalTarget ?? (anchorRef.current ? resolveComposerMenuPortalTarget(anchorRef.current) : document.body);
21958
22029
  return createPortal3(
21959
- /* @__PURE__ */ jsx31(
22030
+ /* @__PURE__ */ jsx32(
21960
22031
  "div",
21961
22032
  {
21962
22033
  "data-testid": testId,
@@ -21967,7 +22038,7 @@ var ComposerFloatingMenuSurface = forwardRef4(function ComposerFloatingMenuSurfa
21967
22038
  className
21968
22039
  ),
21969
22040
  style,
21970
- children: contentClassName ? /* @__PURE__ */ jsx31("div", { className: contentClassName, children }) : children
22041
+ children: contentClassName ? /* @__PURE__ */ jsx32("div", { className: contentClassName, children }) : children
21971
22042
  }
21972
22043
  ),
21973
22044
  portalTarget
@@ -21977,7 +22048,7 @@ var ComposerFloatingMenuSurface = forwardRef4(function ComposerFloatingMenuSurfa
21977
22048
  // agent-gui/agentGuiNode/composer/ComposerDraftAttachments.tsx
21978
22049
  import { FileText, X as X3 } from "lucide-react";
21979
22050
  import { Spinner as Spinner4 } from "@tutti-os/ui-system";
21980
- import { Fragment as Fragment9, jsx as jsx32, jsxs as jsxs23 } from "react/jsx-runtime";
22051
+ import { Fragment as Fragment9, jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
21981
22052
  function ComposerDraftAttachments({
21982
22053
  draftImages,
21983
22054
  draftFiles: visibleDraftFiles,
@@ -21990,12 +22061,12 @@ function ComposerDraftAttachments({
21990
22061
  }) {
21991
22062
  const labels = { removeMention: removeLabel };
21992
22063
  return /* @__PURE__ */ jsxs23(Fragment9, { children: [
21993
- draftImages.length > 0 ? /* @__PURE__ */ jsx32(
22064
+ draftImages.length > 0 ? /* @__PURE__ */ jsx33(
21994
22065
  "div",
21995
22066
  {
21996
22067
  className: "mb-2 flex w-full max-w-full flex-wrap items-start gap-2",
21997
22068
  "data-testid": "agent-gui-composer-image-drafts",
21998
- children: draftImages.map((image) => /* @__PURE__ */ jsx32(
22069
+ children: draftImages.map((image) => /* @__PURE__ */ jsx33(
21999
22070
  AgentComposerDraftImagePreview,
22000
22071
  {
22001
22072
  image,
@@ -22044,7 +22115,7 @@ function ComposerDraftAttachments({
22044
22115
  title: item.uploadError ?? (canRestore ? restoreLabel : preview),
22045
22116
  onClick: () => expandDraftLargeTextToPrompt(item.id),
22046
22117
  children: [
22047
- /* @__PURE__ */ jsx32("span", { className: "flex size-9 shrink-0 items-center justify-center rounded-[8px] bg-[var(--transparency-hover)] text-[var(--text-secondary)]", children: item.uploading ? /* @__PURE__ */ jsx32(
22118
+ /* @__PURE__ */ jsx33("span", { className: "flex size-9 shrink-0 items-center justify-center rounded-[8px] bg-[var(--transparency-hover)] text-[var(--text-secondary)]", children: item.uploading ? /* @__PURE__ */ jsx33(
22048
22119
  Spinner4,
22049
22120
  {
22050
22121
  size: 16,
@@ -22052,15 +22123,15 @@ function ComposerDraftAttachments({
22052
22123
  trackColor: "var(--transparency-hover)",
22053
22124
  testId: "agent-gui-composer-large-text-upload-spinner"
22054
22125
  }
22055
- ) : /* @__PURE__ */ jsx32(FileText, { size: 16, strokeWidth: 2, "aria-hidden": true }) }),
22126
+ ) : /* @__PURE__ */ jsx33(FileText, { size: 16, strokeWidth: 2, "aria-hidden": true }) }),
22056
22127
  /* @__PURE__ */ jsxs23("span", { className: "flex min-w-0 flex-col", children: [
22057
- /* @__PURE__ */ jsx32("span", { className: "max-w-[200px] truncate font-medium text-[var(--text-primary)]", children: preview }),
22058
- /* @__PURE__ */ jsx32("span", { className: "max-w-[200px] truncate text-[11px] text-[var(--text-tertiary)]", children: attachmentStatus })
22128
+ /* @__PURE__ */ jsx33("span", { className: "max-w-[200px] truncate font-medium text-[var(--text-primary)]", children: preview }),
22129
+ /* @__PURE__ */ jsx33("span", { className: "max-w-[200px] truncate text-[11px] text-[var(--text-tertiary)]", children: attachmentStatus })
22059
22130
  ] })
22060
22131
  ]
22061
22132
  }
22062
22133
  ),
22063
- /* @__PURE__ */ jsx32(
22134
+ /* @__PURE__ */ jsx33(
22064
22135
  "button",
22065
22136
  {
22066
22137
  type: "button",
@@ -22068,7 +22139,7 @@ function ComposerDraftAttachments({
22068
22139
  "aria-label": labels.removeMention,
22069
22140
  title: labels.removeMention,
22070
22141
  onClick: () => removeDraftLargeText(item.id),
22071
- children: /* @__PURE__ */ jsx32(X3, { size: 12, strokeWidth: 2.4, "aria-hidden": true })
22142
+ children: /* @__PURE__ */ jsx33(X3, { size: 12, strokeWidth: 2.4, "aria-hidden": true })
22072
22143
  }
22073
22144
  )
22074
22145
  ]
@@ -22087,7 +22158,7 @@ function ComposerDraftAttachments({
22087
22158
  "data-upload-error": file.uploadError ? "true" : void 0,
22088
22159
  title: file.hostPath ?? file.path ?? file.name,
22089
22160
  children: [
22090
- file.uploading ? /* @__PURE__ */ jsx32(
22161
+ file.uploading ? /* @__PURE__ */ jsx33(
22091
22162
  Spinner4,
22092
22163
  {
22093
22164
  className: "shrink-0 text-[var(--text-primary)]",
@@ -22096,15 +22167,15 @@ function ComposerDraftAttachments({
22096
22167
  trackColor: "var(--transparency-hover)",
22097
22168
  testId: "agent-gui-composer-file-upload-spinner"
22098
22169
  }
22099
- ) : /* @__PURE__ */ jsx32(
22170
+ ) : /* @__PURE__ */ jsx33(
22100
22171
  "span",
22101
22172
  {
22102
22173
  className: "size-2 shrink-0 rounded-full bg-[var(--text-tertiary)]",
22103
22174
  "aria-hidden": true
22104
22175
  }
22105
22176
  ),
22106
- /* @__PURE__ */ jsx32("span", { className: "min-w-0 max-w-[220px] truncate", children: file.name }),
22107
- /* @__PURE__ */ jsx32(
22177
+ /* @__PURE__ */ jsx33("span", { className: "min-w-0 max-w-[220px] truncate", children: file.name }),
22178
+ /* @__PURE__ */ jsx33(
22108
22179
  "button",
22109
22180
  {
22110
22181
  type: "button",
@@ -22112,7 +22183,7 @@ function ComposerDraftAttachments({
22112
22183
  "aria-label": labels.removeMention,
22113
22184
  title: labels.removeMention,
22114
22185
  onClick: () => removeDraftFile(file.id),
22115
- children: /* @__PURE__ */ jsx32(X3, { size: 12, strokeWidth: 2.4, "aria-hidden": true })
22186
+ children: /* @__PURE__ */ jsx33(X3, { size: 12, strokeWidth: 2.4, "aria-hidden": true })
22116
22187
  }
22117
22188
  )
22118
22189
  ]
@@ -22132,10 +22203,10 @@ import {
22132
22203
  SelectContent as SelectContent2,
22133
22204
  SelectItem as SelectItem2,
22134
22205
  SelectTrigger as SelectTrigger2,
22135
- Tooltip as Tooltip3,
22136
- TooltipContent as TooltipContent3,
22137
- TooltipProvider as TooltipProvider2,
22138
- TooltipTrigger as TooltipTrigger3
22206
+ Tooltip as Tooltip4,
22207
+ TooltipContent as TooltipContent4,
22208
+ TooltipProvider as TooltipProvider3,
22209
+ TooltipTrigger as TooltipTrigger4
22139
22210
  } from "@tutti-os/ui-system";
22140
22211
 
22141
22212
  // app/renderer/assets/icons/add-lined-bold.svg
@@ -22145,7 +22216,7 @@ var add_lined_bold_default = "./add-lined-bold-5QPUDZCU.svg";
22145
22216
  var bold_lined_default = "./@-bold-lined-BLLFKBFI.svg";
22146
22217
 
22147
22218
  // agent-gui/agentGuiNode/composer/ComposerFooter.tsx
22148
- import { Fragment as Fragment10, jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
22219
+ import { Fragment as Fragment10, jsx as jsx34, jsxs as jsxs24 } from "react/jsx-runtime";
22149
22220
  function ComposerFooter({
22150
22221
  labels,
22151
22222
  composerSettings,
@@ -22184,11 +22255,11 @@ function ComposerFooter({
22184
22255
  onClearGoalMode: clearGoalModeBadge
22185
22256
  }) {
22186
22257
  const showSettingsLoadingPlaceholders = composerSettings.isSettingsLoading;
22187
- return /* @__PURE__ */ jsx33(Fragment10, { children: /* @__PURE__ */ jsxs24("div", { className: AgentGUINode_styles_default.composerFooter, children: [
22258
+ return /* @__PURE__ */ jsx34(Fragment10, { children: /* @__PURE__ */ jsxs24("div", { className: AgentGUINode_styles_default.composerFooter, children: [
22188
22259
  /* @__PURE__ */ jsxs24("div", { className: composerStyles.footerGroup, children: [
22189
22260
  /* @__PURE__ */ jsxs24("div", { className: "inline-flex shrink-0 items-center gap-1", children: [
22190
- previewMode ? /* @__PURE__ */ jsx33(TooltipProvider2, { delayDuration: 120, children: /* @__PURE__ */ jsxs24(Tooltip3, { children: [
22191
- /* @__PURE__ */ jsx33(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx33(
22261
+ previewMode ? /* @__PURE__ */ jsx34(TooltipProvider3, { delayDuration: 120, children: /* @__PURE__ */ jsxs24(Tooltip4, { children: [
22262
+ /* @__PURE__ */ jsx34(TooltipTrigger4, { asChild: true, children: /* @__PURE__ */ jsx34(
22192
22263
  "button",
22193
22264
  {
22194
22265
  type: "button",
@@ -22198,7 +22269,7 @@ function ComposerFooter({
22198
22269
  AgentGUINode_styles_default.composerReferenceTrigger,
22199
22270
  "group w-auto justify-center text-[var(--agent-gui-text-secondary)]"
22200
22271
  ),
22201
- children: /* @__PURE__ */ jsx33(
22272
+ children: /* @__PURE__ */ jsx34(
22202
22273
  AgentComposerMaskIcon,
22203
22274
  {
22204
22275
  iconUrl: add_lined_bold_default,
@@ -22207,9 +22278,9 @@ function ComposerFooter({
22207
22278
  )
22208
22279
  }
22209
22280
  ) }),
22210
- /* @__PURE__ */ jsx33(TooltipContent3, { side: "top", children: labels.addContent })
22211
- ] }) }) : /* @__PURE__ */ jsx33(TooltipProvider2, { delayDuration: 120, children: /* @__PURE__ */ jsxs24(Tooltip3, { children: [
22212
- /* @__PURE__ */ jsx33(
22281
+ /* @__PURE__ */ jsx34(TooltipContent4, { side: "top", children: labels.addContent })
22282
+ ] }) }) : /* @__PURE__ */ jsx34(TooltipProvider3, { delayDuration: 120, children: /* @__PURE__ */ jsxs24(Tooltip4, { children: [
22283
+ /* @__PURE__ */ jsx34(
22213
22284
  Select2,
22214
22285
  {
22215
22286
  open: false,
@@ -22225,7 +22296,7 @@ function ComposerFooter({
22225
22296
  void handleWorkspaceReferencePicker();
22226
22297
  }
22227
22298
  },
22228
- children: /* @__PURE__ */ jsx33(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx33(
22299
+ children: /* @__PURE__ */ jsx34(TooltipTrigger4, { asChild: true, children: /* @__PURE__ */ jsx34(
22229
22300
  SelectTrigger2,
22230
22301
  {
22231
22302
  size: "sm",
@@ -22236,7 +22307,7 @@ function ComposerFooter({
22236
22307
  AgentGUINode_styles_default.composerReferenceTrigger,
22237
22308
  "group w-auto justify-center text-[var(--agent-gui-text-secondary)] [&>svg:last-child]:hidden"
22238
22309
  ),
22239
- children: /* @__PURE__ */ jsx33(
22310
+ children: /* @__PURE__ */ jsx34(
22240
22311
  AgentComposerMaskIcon,
22241
22312
  {
22242
22313
  iconUrl: add_lined_bold_default,
@@ -22247,10 +22318,10 @@ function ComposerFooter({
22247
22318
  ) })
22248
22319
  }
22249
22320
  ),
22250
- /* @__PURE__ */ jsx33(TooltipContent3, { side: "top", children: labels.addContent })
22321
+ /* @__PURE__ */ jsx34(TooltipContent4, { side: "top", children: labels.addContent })
22251
22322
  ] }) }),
22252
- /* @__PURE__ */ jsx33(TooltipProvider2, { delayDuration: 120, children: /* @__PURE__ */ jsxs24(Tooltip3, { children: [
22253
- /* @__PURE__ */ jsx33(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx33(
22323
+ /* @__PURE__ */ jsx34(TooltipProvider3, { delayDuration: 120, children: /* @__PURE__ */ jsxs24(Tooltip4, { children: [
22324
+ /* @__PURE__ */ jsx34(TooltipTrigger4, { asChild: true, children: /* @__PURE__ */ jsx34(
22254
22325
  "button",
22255
22326
  {
22256
22327
  type: "button",
@@ -22263,7 +22334,7 @@ function ComposerFooter({
22263
22334
  ),
22264
22335
  onMouseDown: (event) => event.preventDefault(),
22265
22336
  onClick: handleMentionPaletteButton,
22266
- children: /* @__PURE__ */ jsx33(
22337
+ children: /* @__PURE__ */ jsx34(
22267
22338
  "span",
22268
22339
  {
22269
22340
  "aria-hidden": true,
@@ -22282,10 +22353,10 @@ function ComposerFooter({
22282
22353
  )
22283
22354
  }
22284
22355
  ) }),
22285
- /* @__PURE__ */ jsx33(TooltipContent3, { side: "top", children: labels.mentionPalette })
22356
+ /* @__PURE__ */ jsx34(TooltipContent4, { side: "top", children: labels.mentionPalette })
22286
22357
  ] }) })
22287
22358
  ] }),
22288
- showHandoffSelect ? /* @__PURE__ */ jsx33(TooltipProvider2, { children: /* @__PURE__ */ jsxs24(Tooltip3, { children: [
22359
+ showHandoffSelect ? /* @__PURE__ */ jsx34(TooltipProvider3, { children: /* @__PURE__ */ jsxs24(Tooltip4, { children: [
22289
22360
  /* @__PURE__ */ jsxs24(
22290
22361
  Select2,
22291
22362
  {
@@ -22301,7 +22372,7 @@ function ComposerFooter({
22301
22372
  onHandoffConversation?.(target);
22302
22373
  },
22303
22374
  children: [
22304
- /* @__PURE__ */ jsx33(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx33(
22375
+ /* @__PURE__ */ jsx34(TooltipTrigger4, { asChild: true, children: /* @__PURE__ */ jsx34(
22305
22376
  SelectTrigger2,
22306
22377
  {
22307
22378
  size: "sm",
@@ -22326,18 +22397,18 @@ function ComposerFooter({
22326
22397
  "w-auto max-w-[180px] [&>svg:last-child]:hidden"
22327
22398
  ),
22328
22399
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5", children: [
22329
- /* @__PURE__ */ jsx33(
22400
+ /* @__PURE__ */ jsx34(
22330
22401
  AgentComposerHandoffIcon,
22331
22402
  {
22332
22403
  disabled: handoffDisabled,
22333
22404
  isPlaying: isHandoffIconPlaying
22334
22405
  }
22335
22406
  ),
22336
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: effectiveHandoffLabel })
22407
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: effectiveHandoffLabel })
22337
22408
  ] })
22338
22409
  }
22339
22410
  ) }),
22340
- /* @__PURE__ */ jsx33(
22411
+ /* @__PURE__ */ jsx34(
22341
22412
  SelectContent2,
22342
22413
  {
22343
22414
  align: "start",
@@ -22347,14 +22418,14 @@ function ComposerFooter({
22347
22418
  "min-w-[190px]"
22348
22419
  ),
22349
22420
  "aria-label": effectiveHandoffMenuLabel,
22350
- children: handoffMenuTargets.map((target) => /* @__PURE__ */ jsx33(
22421
+ children: handoffMenuTargets.map((target) => /* @__PURE__ */ jsx34(
22351
22422
  SelectItem2,
22352
22423
  {
22353
22424
  value: target.targetId,
22354
22425
  className: cn(AgentGUINode_styles_default.composerMenuItem, "gap-2"),
22355
22426
  disabled: target.disabled === true,
22356
22427
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5", children: [
22357
- /* @__PURE__ */ jsx33(
22428
+ /* @__PURE__ */ jsx34(
22358
22429
  "img",
22359
22430
  {
22360
22431
  alt: "",
@@ -22363,7 +22434,7 @@ function ComposerFooter({
22363
22434
  src: resolveComposerProviderTargetIconUrl(target)
22364
22435
  }
22365
22436
  ),
22366
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: target.label })
22437
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: target.label })
22367
22438
  ] })
22368
22439
  },
22369
22440
  `${target.provider}:${target.targetId}`
@@ -22373,7 +22444,7 @@ function ComposerFooter({
22373
22444
  ]
22374
22445
  }
22375
22446
  ),
22376
- /* @__PURE__ */ jsx33(TooltipContent3, { side: "top", children: labels.handoffConversationTooltip })
22447
+ /* @__PURE__ */ jsx34(TooltipContent4, { side: "top", children: labels.handoffConversationTooltip })
22377
22448
  ] }) }) : showProviderSelect && selectedProviderSwitchTarget ? /* @__PURE__ */ jsxs24(
22378
22449
  Select2,
22379
22450
  {
@@ -22392,7 +22463,7 @@ function ComposerFooter({
22392
22463
  });
22393
22464
  },
22394
22465
  children: [
22395
- /* @__PURE__ */ jsx33(
22466
+ /* @__PURE__ */ jsx34(
22396
22467
  SelectTrigger2,
22397
22468
  {
22398
22469
  size: "sm",
@@ -22404,7 +22475,7 @@ function ComposerFooter({
22404
22475
  "w-auto max-w-[180px]"
22405
22476
  ),
22406
22477
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5", children: [
22407
- /* @__PURE__ */ jsx33(
22478
+ /* @__PURE__ */ jsx34(
22408
22479
  "img",
22409
22480
  {
22410
22481
  alt: "",
@@ -22415,22 +22486,22 @@ function ComposerFooter({
22415
22486
  )
22416
22487
  }
22417
22488
  ),
22418
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: selectedProviderLabel })
22489
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: selectedProviderLabel })
22419
22490
  ] })
22420
22491
  }
22421
22492
  ),
22422
- /* @__PURE__ */ jsx33(
22493
+ /* @__PURE__ */ jsx34(
22423
22494
  SelectContent2,
22424
22495
  {
22425
22496
  align: "start",
22426
22497
  className: cn(AgentGUINode_styles_default.composerMenuContent, "min-w-[190px]"),
22427
- children: providerMenuTargets.map((target) => /* @__PURE__ */ jsx33(
22498
+ children: providerMenuTargets.map((target) => /* @__PURE__ */ jsx34(
22428
22499
  SelectItem2,
22429
22500
  {
22430
22501
  value: target.targetId,
22431
22502
  className: cn(AgentGUINode_styles_default.composerMenuItem, "gap-2"),
22432
22503
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5", children: [
22433
- /* @__PURE__ */ jsx33(
22504
+ /* @__PURE__ */ jsx34(
22434
22505
  "img",
22435
22506
  {
22436
22507
  alt: "",
@@ -22439,7 +22510,7 @@ function ComposerFooter({
22439
22510
  src: resolveComposerProviderTargetIconUrl(target)
22440
22511
  }
22441
22512
  ),
22442
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: target.label })
22513
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: target.label })
22443
22514
  ] })
22444
22515
  },
22445
22516
  `${target.provider}:${target.targetId}`
@@ -22449,7 +22520,7 @@ function ComposerFooter({
22449
22520
  ]
22450
22521
  }
22451
22522
  ) : null,
22452
- composerSettings.supportsPlanMode && composerSettings.draftSettings.planMode ? /* @__PURE__ */ jsx33(
22523
+ composerSettings.supportsPlanMode && composerSettings.draftSettings.planMode ? /* @__PURE__ */ jsx34(
22453
22524
  "button",
22454
22525
  {
22455
22526
  type: "button",
@@ -22465,19 +22536,19 @@ function ComposerFooter({
22465
22536
  onClick: () => onSettingsChange({ planMode: false }),
22466
22537
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5 overflow-hidden", children: [
22467
22538
  /* @__PURE__ */ jsxs24("span", { className: "relative flex size-3.5 shrink-0 items-center justify-center", children: [
22468
- /* @__PURE__ */ jsx33(
22539
+ /* @__PURE__ */ jsx34(
22469
22540
  ListChecks2,
22470
22541
  {
22471
22542
  "aria-hidden": true,
22472
22543
  className: "size-3.5 transition-opacity duration-150 group-hover:opacity-0 group-focus-visible:opacity-0"
22473
22544
  }
22474
22545
  ),
22475
- /* @__PURE__ */ jsx33(
22546
+ /* @__PURE__ */ jsx34(
22476
22547
  "span",
22477
22548
  {
22478
22549
  "aria-hidden": true,
22479
22550
  className: "absolute inset-0 flex items-center justify-center rounded-full bg-[var(--text-secondary)] opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-visible:opacity-100 group-disabled:opacity-0",
22480
- children: /* @__PURE__ */ jsx33(
22551
+ children: /* @__PURE__ */ jsx34(
22481
22552
  X4,
22482
22553
  {
22483
22554
  className: "size-2.5 text-[var(--background-fronted)]",
@@ -22487,11 +22558,11 @@ function ComposerFooter({
22487
22558
  }
22488
22559
  )
22489
22560
  ] }),
22490
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: labels.planModeLabel })
22561
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: labels.planModeLabel })
22491
22562
  ] })
22492
22563
  }
22493
22564
  ) : null,
22494
- isGoalModeActive ? /* @__PURE__ */ jsx33(
22565
+ isGoalModeActive ? /* @__PURE__ */ jsx34(
22495
22566
  "button",
22496
22567
  {
22497
22568
  type: "button",
@@ -22507,19 +22578,19 @@ function ComposerFooter({
22507
22578
  onClick: clearGoalModeBadge,
22508
22579
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5 overflow-hidden", children: [
22509
22580
  /* @__PURE__ */ jsxs24("span", { className: "relative flex size-3.5 shrink-0 items-center justify-center", children: [
22510
- /* @__PURE__ */ jsx33(
22581
+ /* @__PURE__ */ jsx34(
22511
22582
  Target2,
22512
22583
  {
22513
22584
  "aria-hidden": true,
22514
22585
  className: "size-3.5 transition-opacity duration-150 group-hover:opacity-0 group-focus-visible:opacity-0"
22515
22586
  }
22516
22587
  ),
22517
- /* @__PURE__ */ jsx33(
22588
+ /* @__PURE__ */ jsx34(
22518
22589
  "span",
22519
22590
  {
22520
22591
  "aria-hidden": true,
22521
22592
  className: "absolute inset-0 flex items-center justify-center rounded-full bg-[var(--text-secondary)] opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-visible:opacity-100 group-disabled:opacity-0",
22522
- children: /* @__PURE__ */ jsx33(
22593
+ children: /* @__PURE__ */ jsx34(
22523
22594
  X4,
22524
22595
  {
22525
22596
  className: "size-2.5 text-[var(--background-fronted)]",
@@ -22529,13 +22600,13 @@ function ComposerFooter({
22529
22600
  }
22530
22601
  )
22531
22602
  ] }),
22532
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: labels.goalLabel })
22603
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: labels.goalLabel })
22533
22604
  ] })
22534
22605
  }
22535
22606
  ) : null
22536
22607
  ] }),
22537
22608
  /* @__PURE__ */ jsxs24("div", { className: composerStyles.footerGroupRight, children: [
22538
- usage && usage.percentUsed !== null ? /* @__PURE__ */ jsx33(
22609
+ usage && usage.percentUsed !== null ? /* @__PURE__ */ jsx34(
22539
22610
  AgentUsageChip,
22540
22611
  {
22541
22612
  percentUsed: usage.percentUsed,
@@ -22554,7 +22625,7 @@ function ComposerFooter({
22554
22625
  }
22555
22626
  }
22556
22627
  ) : null,
22557
- showSettingsLoadingPlaceholders || composerSettings.supportsPermissionMode ? /* @__PURE__ */ jsx33(
22628
+ showSettingsLoadingPlaceholders || composerSettings.supportsPermissionMode ? /* @__PURE__ */ jsx34(
22558
22629
  AgentPermissionModeDropdown,
22559
22630
  {
22560
22631
  composerSettings,
@@ -22567,7 +22638,7 @@ function ComposerFooter({
22567
22638
  onSettingsChange: (patch) => onSettingsChange(patch)
22568
22639
  }
22569
22640
  ) : null,
22570
- showSettingsLoadingPlaceholders || composerSettings.supportsModel || composerSettings.supportsReasoningEffort ? /* @__PURE__ */ jsx33(
22641
+ showSettingsLoadingPlaceholders || composerSettings.supportsModel || composerSettings.supportsReasoningEffort ? /* @__PURE__ */ jsx34(
22571
22642
  AgentModelReasoningDropdown,
22572
22643
  {
22573
22644
  composerSettings,
@@ -22610,7 +22681,7 @@ function ComposerFooter({
22610
22681
  }
22611
22682
 
22612
22683
  // agent-gui/agentGuiNode/composer/AgentComposerView.tsx
22613
- import { jsx as jsx34, jsxs as jsxs25 } from "react/jsx-runtime";
22684
+ import { jsx as jsx35, jsxs as jsxs25 } from "react/jsx-runtime";
22614
22685
  function AgentComposerView(input) {
22615
22686
  const {
22616
22687
  slashStatus = null,
@@ -22638,6 +22709,7 @@ function AgentComposerView(input) {
22638
22709
  onEditQueuedPrompt,
22639
22710
  onPromptImagesUnsupported,
22640
22711
  onRequestWorkspaceReferences,
22712
+ referenceProvenanceFilter,
22641
22713
  selectProjectDirectory,
22642
22714
  onProjectPathChange = () => {
22643
22715
  },
@@ -22737,12 +22809,12 @@ function AgentComposerView(input) {
22737
22809
  onSubmit: submit,
22738
22810
  children: [
22739
22811
  fileDropOverlay,
22740
- visibleActivePrompt ? /* @__PURE__ */ jsx34(
22812
+ visibleActivePrompt ? /* @__PURE__ */ jsx35(
22741
22813
  "div",
22742
22814
  {
22743
22815
  className: AgentGUINode_styles_default.composerFloatingPrompt,
22744
22816
  "data-testid": "agent-gui-composer-floating-prompt",
22745
- children: /* @__PURE__ */ jsx34(
22817
+ children: /* @__PURE__ */ jsx35(
22746
22818
  AgentInteractivePromptSurface,
22747
22819
  {
22748
22820
  prompt: visibleActivePrompt,
@@ -22774,7 +22846,7 @@ function AgentComposerView(input) {
22774
22846
  )
22775
22847
  }
22776
22848
  ) : null,
22777
- queuedPrompts.length > 0 ? /* @__PURE__ */ jsx34(
22849
+ queuedPrompts.length > 0 ? /* @__PURE__ */ jsx35(
22778
22850
  "div",
22779
22851
  {
22780
22852
  className: cn(
@@ -22782,7 +22854,7 @@ function AgentComposerView(input) {
22782
22854
  AgentGUINode_styles_default.composerQueuedPromptFloating
22783
22855
  ),
22784
22856
  "data-testid": "agent-gui-composer-queued-prompts",
22785
- children: /* @__PURE__ */ jsx34(
22857
+ children: /* @__PURE__ */ jsx35(
22786
22858
  AgentQueuedPromptPanel,
22787
22859
  {
22788
22860
  queueStatus,
@@ -22807,7 +22879,7 @@ function AgentComposerView(input) {
22807
22879
  )
22808
22880
  }
22809
22881
  ) : null,
22810
- showProjectMissingProbe ? /* @__PURE__ */ jsx34(
22882
+ showProjectMissingProbe ? /* @__PURE__ */ jsx35(
22811
22883
  AgentProjectMissingStatusProbe,
22812
22884
  {
22813
22885
  composerSettings,
@@ -22823,17 +22895,17 @@ function AgentComposerView(input) {
22823
22895
  ),
22824
22896
  "data-edge-glow": showEdgeGlow ? "true" : void 0,
22825
22897
  children: [
22826
- backgroundAgentStatusText ? /* @__PURE__ */ jsx34(
22898
+ backgroundAgentStatusText ? /* @__PURE__ */ jsx35(
22827
22899
  AgentChromeNotice,
22828
22900
  {
22829
22901
  tone: "muted",
22830
22902
  role: "status",
22831
22903
  testId: "agent-gui-composer-background-agent-status",
22832
22904
  title: backgroundAgentStatusText,
22833
- icon: /* @__PURE__ */ jsx34(Spinner5, { className: "h-3.5 w-3.5" })
22905
+ icon: /* @__PURE__ */ jsx35(Spinner5, { className: "h-3.5 w-3.5" })
22834
22906
  }
22835
22907
  ) : null,
22836
- input.isSelectedProjectMissing ? /* @__PURE__ */ jsx34(
22908
+ input.isSelectedProjectMissing ? /* @__PURE__ */ jsx35(
22837
22909
  AgentChromeNotice,
22838
22910
  {
22839
22911
  tone: "danger",
@@ -22862,7 +22934,7 @@ function AgentComposerView(input) {
22862
22934
  onOpenChange: input.setIsPaletteOpen,
22863
22935
  modal: false,
22864
22936
  children: [
22865
- /* @__PURE__ */ jsx34(PopoverAnchor2, { asChild: true, children: /* @__PURE__ */ jsxs25(
22937
+ /* @__PURE__ */ jsx35(PopoverAnchor2, { asChild: true, children: /* @__PURE__ */ jsxs25(
22866
22938
  "div",
22867
22939
  {
22868
22940
  ref: input.promptInputAreaRef,
@@ -22874,7 +22946,7 @@ function AgentComposerView(input) {
22874
22946
  "data-has-draft-images": draftImages.length > 0 ? "true" : void 0,
22875
22947
  style: promptInputAreaStyle,
22876
22948
  children: [
22877
- /* @__PURE__ */ jsx34(
22949
+ /* @__PURE__ */ jsx35(
22878
22950
  ComposerDraftAttachments,
22879
22951
  {
22880
22952
  draftImages,
@@ -22895,7 +22967,7 @@ function AgentComposerView(input) {
22895
22967
  !isHeroLayout && "agent-gui-node__composer-prompt-input-line"
22896
22968
  ),
22897
22969
  children: [
22898
- /* @__PURE__ */ jsx34(
22970
+ /* @__PURE__ */ jsx35(
22899
22971
  AgentRichTextEditor,
22900
22972
  {
22901
22973
  ref: input.editorHandleRef,
@@ -22942,7 +23014,7 @@ function AgentComposerView(input) {
22942
23014
  }
22943
23015
  ) }),
22944
23016
  input.showFileMentionPalette && mentionPaletteFrame ? createPortal4(
22945
- /* @__PURE__ */ jsx34(
23017
+ /* @__PURE__ */ jsx35(
22946
23018
  "div",
22947
23019
  {
22948
23020
  "data-testid": "agent-gui-mention-palette-surface",
@@ -22952,7 +23024,7 @@ function AgentComposerView(input) {
22952
23024
  "max-h-[320px] overflow-hidden border-[var(--line-1)] p-0"
22953
23025
  ),
22954
23026
  style: mentionPaletteStyle,
22955
- children: /* @__PURE__ */ jsx34(
23027
+ children: /* @__PURE__ */ jsx35(
22956
23028
  AgentFileMentionPalette,
22957
23029
  {
22958
23030
  state: input.mentionSearchState,
@@ -22971,14 +23043,20 @@ function AgentComposerView(input) {
22971
23043
  onExpandGroup: (groupId) => input.mentionControllerRef.current?.expandGroup(groupId),
22972
23044
  onNavigateHierarchy: navigateFileMentionHierarchy,
22973
23045
  onNavigateIntoItem: navigateIntoFileMentionItem,
22974
- onOpenReferences: onRequestWorkspaceReferences ? handleOpenReferencesForEntity : void 0
23046
+ onOpenReferences: onRequestWorkspaceReferences ? handleOpenReferencesForEntity : void 0,
23047
+ provenanceFilterControl: referenceProvenanceFilter ? /* @__PURE__ */ jsx35(
23048
+ AgentReferenceProvenanceFilterControl,
23049
+ {
23050
+ filter: referenceProvenanceFilter
23051
+ }
23052
+ ) : void 0
22975
23053
  }
22976
23054
  )
22977
23055
  }
22978
23056
  ),
22979
23057
  mentionPaletteFrame.portalTarget
22980
23058
  ) : null,
22981
- /* @__PURE__ */ jsx34(
23059
+ /* @__PURE__ */ jsx35(
22982
23060
  ComposerFloatingMenuSurface,
22983
23061
  {
22984
23062
  anchorRef: input.inputShellRef,
@@ -22991,7 +23069,7 @@ function AgentComposerView(input) {
22991
23069
  placement: "fixed-height",
22992
23070
  surfaceRef: input.paletteContentRef,
22993
23071
  testId: "agent-gui-slash-palette-surface",
22994
- children: /* @__PURE__ */ jsx34(
23072
+ children: /* @__PURE__ */ jsx35(
22995
23073
  AgentSlashCommandPalette,
22996
23074
  {
22997
23075
  entries: slashPaletteEntries,
@@ -23014,7 +23092,7 @@ function AgentComposerView(input) {
23014
23092
  )
23015
23093
  }
23016
23094
  ),
23017
- /* @__PURE__ */ jsx34(
23095
+ /* @__PURE__ */ jsx35(
23018
23096
  ComposerFloatingMenuSurface,
23019
23097
  {
23020
23098
  anchorRef: input.inputShellRef,
@@ -23026,7 +23104,7 @@ function AgentComposerView(input) {
23026
23104
  placement: "dynamic-above",
23027
23105
  surfaceRef: input.paletteContentRef,
23028
23106
  testId: "agent-gui-command-menu-surface",
23029
- children: /* @__PURE__ */ jsx34(
23107
+ children: /* @__PURE__ */ jsx35(
23030
23108
  AgentSlashStatusPanel,
23031
23109
  {
23032
23110
  status: slashStatus,
@@ -23046,7 +23124,7 @@ function AgentComposerView(input) {
23046
23124
  )
23047
23125
  }
23048
23126
  ),
23049
- /* @__PURE__ */ jsx34(
23127
+ /* @__PURE__ */ jsx35(
23050
23128
  ComposerFloatingMenuSurface,
23051
23129
  {
23052
23130
  anchorRef: input.inputShellRef,
@@ -23058,7 +23136,7 @@ function AgentComposerView(input) {
23058
23136
  placement: "dynamic-above",
23059
23137
  surfaceRef: input.paletteContentRef,
23060
23138
  testId: "agent-gui-command-menu-surface",
23061
- children: /* @__PURE__ */ jsx34(
23139
+ children: /* @__PURE__ */ jsx35(
23062
23140
  AgentReviewPickerPanel,
23063
23141
  {
23064
23142
  labels: labels.reviewPicker,
@@ -23072,7 +23150,7 @@ function AgentComposerView(input) {
23072
23150
  ]
23073
23151
  }
23074
23152
  ),
23075
- /* @__PURE__ */ jsx34(
23153
+ /* @__PURE__ */ jsx35(
23076
23154
  ComposerFooter,
23077
23155
  {
23078
23156
  labels,
@@ -23121,7 +23199,7 @@ function AgentComposerView(input) {
23121
23199
  className: AgentGUINode_styles_default.composerProjectRow,
23122
23200
  "data-project-missing": input.isSelectedProjectMissing ? "true" : void 0,
23123
23201
  children: [
23124
- showHeroProjectSelector ? /* @__PURE__ */ jsx34(
23202
+ showHeroProjectSelector ? /* @__PURE__ */ jsx35(
23125
23203
  AgentProjectDropdown,
23126
23204
  {
23127
23205
  composerSettings,
@@ -23137,15 +23215,15 @@ function AgentComposerView(input) {
23137
23215
  onProjectPathChange
23138
23216
  }
23139
23217
  ) : null,
23140
- activePromptTip ? /* @__PURE__ */ jsx34(
23218
+ activePromptTip ? /* @__PURE__ */ jsx35(
23141
23219
  "div",
23142
23220
  {
23143
23221
  className: AgentGUINode_styles_default.composerPromptTips,
23144
23222
  "data-testid": "agent-gui-prompt-tips",
23145
- children: !previewMode && input.isPromptTipOverflowing && promptTipNode ? /* @__PURE__ */ jsx34(TooltipProvider3, { delayDuration: 0, children: /* @__PURE__ */ jsxs25(Tooltip4, { children: [
23146
- /* @__PURE__ */ jsx34(TooltipTrigger4, { asChild: true, children: promptTipNode }),
23147
- /* @__PURE__ */ jsx34(
23148
- TooltipContent4,
23223
+ children: !previewMode && input.isPromptTipOverflowing && promptTipNode ? /* @__PURE__ */ jsx35(TooltipProvider4, { delayDuration: 0, children: /* @__PURE__ */ jsxs25(Tooltip5, { children: [
23224
+ /* @__PURE__ */ jsx35(TooltipTrigger5, { asChild: true, children: promptTipNode }),
23225
+ /* @__PURE__ */ jsx35(
23226
+ TooltipContent5,
23149
23227
  {
23150
23228
  align: "end",
23151
23229
  className: AgentGUINode_styles_default.composerPromptTipTooltip,
@@ -23168,13 +23246,13 @@ function AgentComposerView(input) {
23168
23246
  }
23169
23247
 
23170
23248
  // agent-gui/agentGuiNode/AgentComposer.tsx
23171
- import { jsx as jsx35 } from "react/jsx-runtime";
23249
+ import { jsx as jsx36 } from "react/jsx-runtime";
23172
23250
  var DOCK_COMPOSER_INPUT_MIN_HEIGHT2 = 56;
23173
23251
  var DOCK_COMPOSER_TEXT_LINE_HEIGHT2 = 24;
23174
23252
  var DOCK_COMPOSER_MAX_VISIBLE_TEXT_LINES2 = 3.5;
23175
- var DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT2 = 26;
23253
+ var DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT = 26;
23176
23254
  var DOCK_COMPOSER_TEXT_VIEWPORT_MAX_HEIGHT2 = DOCK_COMPOSER_TEXT_LINE_HEIGHT2 * DOCK_COMPOSER_MAX_VISIBLE_TEXT_LINES2;
23177
- var DOCK_COMPOSER_INPUT_MAX_HEIGHT2 = DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT2 + DOCK_COMPOSER_TEXT_VIEWPORT_MAX_HEIGHT2;
23255
+ var DOCK_COMPOSER_INPUT_MAX_HEIGHT2 = DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT + DOCK_COMPOSER_TEXT_VIEWPORT_MAX_HEIGHT2;
23178
23256
  function AgentComposer(props) {
23179
23257
  "use memo";
23180
23258
  const {
@@ -23233,7 +23311,8 @@ function AgentComposer(props) {
23233
23311
  onRequestWorkspaceReferences = null,
23234
23312
  resolveDroppedFileReferences = null,
23235
23313
  onRequestGitBranches = null,
23236
- contextMentionProviders = EMPTY_CONTEXT_MENTION_PROVIDERS
23314
+ contextMentionProviders = EMPTY_CONTEXT_MENTION_PROVIDERS,
23315
+ referenceProvenanceFilter = null
23237
23316
  } = props;
23238
23317
  const draftPrompt = agentComposerDraftPrompt(draftContent);
23239
23318
  const goalDraftObjective = canGoalControl ? goalDraftObjectiveFromPrompt(draftPrompt) : null;
@@ -23399,6 +23478,9 @@ function AgentComposer(props) {
23399
23478
  const controller = new AgentMentionSearchController({
23400
23479
  contextMentionProviders
23401
23480
  });
23481
+ controller.setProvenanceFilter(
23482
+ referenceProvenanceFilter?.snapshot.value ?? null
23483
+ );
23402
23484
  mentionControllerRef.current = controller;
23403
23485
  const unsubscribe = controller.subscribe(setMentionSearchState);
23404
23486
  return () => {
@@ -23408,6 +23490,9 @@ function AgentComposer(props) {
23408
23490
  };
23409
23491
  }, [contextMentionProviders]);
23410
23492
  useEffect28(() => {
23493
+ draftImagesRef.current = agentComposerDraftImages(draftContent);
23494
+ draftFilesRef.current = agentComposerDraftFiles(draftContent);
23495
+ draftLargeTextsRef.current = agentComposerDraftLargeTexts(draftContent);
23411
23496
  const isExternalDraftReplacement = draftPromptRef.current !== draftPrompt;
23412
23497
  draftPromptRef.current = draftPrompt;
23413
23498
  setPaletteDraftPrompt(goalDraftObjective ?? draftPrompt);
@@ -23418,12 +23503,12 @@ function AgentComposer(props) {
23418
23503
  });
23419
23504
  });
23420
23505
  }
23421
- }, [draftPrompt, goalDraftObjective]);
23506
+ }, [draftContent, draftPrompt, goalDraftObjective]);
23422
23507
  useEffect28(() => {
23423
- draftImagesRef.current = agentComposerDraftImages(draftContent);
23424
- draftFilesRef.current = agentComposerDraftFiles(draftContent);
23425
- draftLargeTextsRef.current = agentComposerDraftLargeTexts(draftContent);
23426
- }, [draftContent]);
23508
+ mentionControllerRef.current?.setProvenanceFilter(
23509
+ referenceProvenanceFilter?.snapshot.value ?? null
23510
+ );
23511
+ }, [referenceProvenanceFilter?.snapshot.value]);
23427
23512
  useEffect28(() => {
23428
23513
  if (previousSlashStatusAgentSessionIdRef.current === slashStatusAgentSessionId) {
23429
23514
  return;
@@ -23642,7 +23727,7 @@ function AgentComposer(props) {
23642
23727
  canUploadAttachment,
23643
23728
  promptImagesSupported
23644
23729
  });
23645
- return /* @__PURE__ */ jsx35(
23730
+ return /* @__PURE__ */ jsx36(
23646
23731
  AgentComposerView,
23647
23732
  {
23648
23733
  props,
@@ -23689,9 +23774,9 @@ function AgentComposer(props) {
23689
23774
  // agent-gui/agentGuiNode/AgentHomeSuggestions.tsx
23690
23775
  import { memo as memo2, useState as useState21 } from "react";
23691
23776
  import { ArrowLeftRight, Code, Compass, Import, Pencil, X as X5 } from "lucide-react";
23692
- import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
23777
+ import { jsx as jsx37, jsxs as jsxs26 } from "react/jsx-runtime";
23693
23778
  function TuttiIcon(props) {
23694
- return /* @__PURE__ */ jsx36(
23779
+ return /* @__PURE__ */ jsx37(
23695
23780
  "svg",
23696
23781
  {
23697
23782
  width: "24",
@@ -23700,7 +23785,7 @@ function TuttiIcon(props) {
23700
23785
  fill: "none",
23701
23786
  xmlns: "http://www.w3.org/2000/svg",
23702
23787
  ...props,
23703
- children: /* @__PURE__ */ jsx36(
23788
+ children: /* @__PURE__ */ jsx37(
23704
23789
  "path",
23705
23790
  {
23706
23791
  d: "M11.9239 0.561676C15.4275 0.704643 18.0594 1.93856 19.9297 3.83316L20.0235 3.92984C23.0545 7.07999 23.0228 10.8742 22.9942 11.9015C22.8949 15.4888 21.1541 19.3943 18.0293 21.4328C15.586 23.0271 12.2829 23.8614 9.04007 23.215C5.73644 22.5564 2.62421 20.3849 0.626007 16.2238L3.20804 14.9836C4.83809 18.3782 7.22804 19.9325 9.60062 20.4054C12.0339 20.8904 14.5821 20.262 16.4649 19.0334C16.5072 19.0058 16.5482 18.9761 16.5899 18.9474C16.1093 18.8715 15.6404 18.7558 15.2119 18.5773C14.5812 18.3145 13.9737 17.8946 13.5371 17.2316C13.3482 16.9446 13.2091 16.6341 13.1094 16.3068V19.089C11.9062 19.089 10.438 19.0648 9.26761 18.5773C8.63673 18.3144 8.0285 17.8949 7.59183 17.2316C7.19348 16.6265 7.00806 15.9216 6.97952 15.1593C5.38231 15.2733 4.05048 14.8926 3.01273 14.0617C1.45415 12.8137 0.967716 10.8679 0.965851 9.3605C0.960457 5.06718 4.93349 0.556422 11.211 0.548004L11.9239 0.561676ZM12.3096 13.4562C11.6218 13.7868 10.8654 14.1393 9.99808 14.4611C9.94487 14.4808 9.89073 14.4979 9.83792 14.5168V14.9503C9.83792 15.3764 9.92819 15.571 9.98441 15.6564C10.0384 15.7384 10.1371 15.8371 10.3692 15.9337C10.921 16.1636 11.797 16.223 13.084 16.2238C12.9714 15.8224 12.918 15.3955 12.918 14.9503V13.1632C12.7221 13.2577 12.5204 13.3549 12.3096 13.4562ZM11.2149 3.41226C6.37997 3.4188 3.86603 6.76409 3.83011 9.29703V9.3566C3.83137 10.3769 4.17272 11.3206 4.80276 11.8253C5.17526 12.1236 5.83321 12.4102 6.97366 12.2882V6.38785H9.83792V11.4386C10.2583 11.2583 10.6625 11.0703 11.0684 10.8752C11.6533 10.594 12.2733 10.2876 12.918 10.008V6.38785H15.7823V9.08414C16.6423 8.90981 17.6005 8.80628 18.708 8.80484L18.7119 11.6691C17.5478 11.6706 16.6096 11.8073 15.7823 12.0255V14.9503C15.7823 15.3762 15.8725 15.5709 15.9287 15.6564C15.9827 15.7384 16.0816 15.8371 16.3135 15.9337C16.8534 16.1586 17.7037 16.2204 18.9453 16.2238C19.6618 14.896 20.0887 13.3489 20.1309 11.8214C20.1545 10.9724 20.155 8.19654 17.96 5.91519C16.5592 4.45958 14.4443 3.40841 11.2149 3.41226Z",
@@ -23711,7 +23796,7 @@ function TuttiIcon(props) {
23711
23796
  );
23712
23797
  }
23713
23798
  function TaskBreakdownIcon(props) {
23714
- return /* @__PURE__ */ jsx36(
23799
+ return /* @__PURE__ */ jsx37(
23715
23800
  "svg",
23716
23801
  {
23717
23802
  width: "24",
@@ -23720,7 +23805,7 @@ function TaskBreakdownIcon(props) {
23720
23805
  fill: "none",
23721
23806
  xmlns: "http://www.w3.org/2000/svg",
23722
23807
  ...props,
23723
- children: /* @__PURE__ */ jsx36(
23808
+ children: /* @__PURE__ */ jsx37(
23724
23809
  "path",
23725
23810
  {
23726
23811
  d: "M8.29297 14.793C8.68349 14.4025 9.31651 14.4025 9.70703 14.793C10.0976 15.1835 10.0976 15.8166 9.70703 16.2071L5.70703 20.2071C5.31651 20.5976 4.68349 20.5976 4.29297 20.2071L2.29297 18.2071C1.90244 17.8166 1.90244 17.1836 2.29297 16.793C2.68349 16.4025 3.31651 16.4025 3.70703 16.793L5 18.086L8.29297 14.793ZM21 18.0001C21.5523 18.0001 22 18.4478 22 19.0001C22 19.5524 21.5523 20.0001 21 20.0001H13C12.4477 20.0001 12 19.5524 12 19.0001C12 18.4478 12.4477 18.0001 13 18.0001H21ZM21 11C21.5523 11 22 11.4478 22 12C22 12.5523 21.5523 13 21 13H13C12.4477 13 12 12.5523 12 12C12 11.4478 12.4477 11 13 11H21ZM8 3.5C9.10457 3.5 10 4.39543 10 5.50001V9.50003C10 10.6046 9.10457 11.5 8 11.5H4C2.89543 11.5 2 10.6046 2 9.50003V5.50001C2 4.39543 2.89543 3.5 4 3.5H8ZM4 9.50003H8V5.50001H4V9.50003ZM21 4C21.5523 4 22 4.44772 22 5.00001C22 5.55229 21.5523 6.00001 21 6.00001H13C12.4477 6.00001 12 5.55229 12 5.00001C12 4.44772 12.4477 4 13 4H21Z",
@@ -23731,7 +23816,7 @@ function TaskBreakdownIcon(props) {
23731
23816
  );
23732
23817
  }
23733
23818
  function BattleIcon(props) {
23734
- return /* @__PURE__ */ jsx36(
23819
+ return /* @__PURE__ */ jsx37(
23735
23820
  "svg",
23736
23821
  {
23737
23822
  width: "24",
@@ -23740,7 +23825,7 @@ function BattleIcon(props) {
23740
23825
  fill: "none",
23741
23826
  xmlns: "http://www.w3.org/2000/svg",
23742
23827
  ...props,
23743
- children: /* @__PURE__ */ jsx36(
23828
+ children: /* @__PURE__ */ jsx37(
23744
23829
  "path",
23745
23830
  {
23746
23831
  d: "M4.29297 13.293C4.68349 12.9024 5.31651 12.9024 5.70703 13.293L9.70703 17.293C10.0976 17.6835 10.0976 18.3165 9.70703 18.707C9.31651 19.0976 8.68349 19.0976 8.29297 18.707L7.5 17.9141L5.41406 20L5.70703 20.293C6.09756 20.6835 6.09756 21.3165 5.70703 21.707C5.31651 22.0976 4.68349 22.0976 4.29297 21.707L2.29297 19.707C1.90244 19.3165 1.90244 18.6835 2.29297 18.293C2.68349 17.9024 3.31651 17.9024 3.70703 18.293L4 18.5859L6.08594 16.5L4.29297 14.707C3.90244 14.3165 3.90244 13.6835 4.29297 13.293ZM6 2C6.26522 2 6.51949 2.10543 6.70703 2.29297L17.5 13.0859L18.293 12.293C18.6835 11.9024 19.3165 11.9024 19.707 12.293C20.0976 12.6835 20.0976 13.3165 19.707 13.707L17.4141 16L20 18.5859L20.293 18.293C20.6835 17.9024 21.3165 17.9024 21.707 18.293C22.0976 18.6835 22.0976 19.3165 21.707 19.707L19.707 21.707C19.3165 22.0976 18.6835 22.0976 18.293 21.707C17.9024 21.3165 17.9024 20.6835 18.293 20.293L18.5859 20L16 17.4141L13.707 19.707C13.3165 20.0976 12.6835 20.0976 12.293 19.707C11.9024 19.3165 11.9024 18.6835 12.293 18.293L13.0859 17.5L2.29297 6.70703C2.10543 6.51949 2 6.26522 2 6V3C2 2.44772 2.44772 2 3 2H6ZM4 5.58594L14.5 16.0859L16.0859 14.5L5.58594 4H4V5.58594ZM21 2C21.5523 2 22 2.44772 22 3V6C22 6.26522 21.8946 6.51949 21.707 6.70703L18.207 10.207C17.8165 10.5976 17.1835 10.5976 16.793 10.207C16.4024 9.81651 16.4024 9.18349 16.793 8.79297L20 5.58594V4H18.4141L15.207 7.20703C14.8165 7.59756 14.1835 7.59756 13.793 7.20703C13.4024 6.81651 13.4024 6.18349 13.793 5.79297L17.293 2.29297L17.3662 2.22656C17.5442 2.08073 17.7679 2 18 2H21Z",
@@ -23751,7 +23836,7 @@ function BattleIcon(props) {
23751
23836
  );
23752
23837
  }
23753
23838
  function QualityReviewIcon(props) {
23754
- return /* @__PURE__ */ jsx36(
23839
+ return /* @__PURE__ */ jsx37(
23755
23840
  "svg",
23756
23841
  {
23757
23842
  width: "24",
@@ -23760,7 +23845,7 @@ function QualityReviewIcon(props) {
23760
23845
  fill: "none",
23761
23846
  xmlns: "http://www.w3.org/2000/svg",
23762
23847
  ...props,
23763
- children: /* @__PURE__ */ jsx36(
23848
+ children: /* @__PURE__ */ jsx37(
23764
23849
  "path",
23765
23850
  {
23766
23851
  d: "M20 2C20.7957 2 21.5585 2.3163 22.1211 2.87891C22.6837 3.44152 23 4.20435 23 5V17C23 17.7957 22.6837 18.5585 22.1211 19.1211C21.5585 19.6837 20.7957 20 20 20H6.82812C6.56296 20.0001 6.30857 20.1054 6.12109 20.293L3.91895 22.4951C3.6799 22.7341 3.37545 22.8969 3.04395 22.9629C2.71233 23.0288 2.36805 22.9956 2.05566 22.8662C1.74327 22.7368 1.47598 22.5174 1.28809 22.2363C1.10019 21.9552 1.00004 21.6243 1 21.2861V5C1 4.20435 1.3163 3.44152 1.87891 2.87891C2.44152 2.3163 3.20435 2 4 2H20ZM4 4C3.73478 4 3.4805 4.10543 3.29297 4.29297C3.10543 4.4805 3 4.73478 3 5V20.5859L4.70703 18.8789L4.92676 18.6797C5.46048 18.2422 6.13198 18.0001 6.82812 18H20C20.2652 18 20.5195 17.8946 20.707 17.707C20.8946 17.5195 21 17.2652 21 17V5C21 4.73478 20.8946 4.48051 20.707 4.29297C20.5195 4.10543 20.2652 4 20 4H4ZM9.29297 7.29297C9.68349 6.90244 10.3165 6.90244 10.707 7.29297C11.0976 7.68349 11.0976 8.31651 10.707 8.70703L8.41406 11L10.707 13.293C11.0976 13.6835 11.0976 14.3165 10.707 14.707C10.3165 15.0976 9.68349 15.0976 9.29297 14.707L6.29297 11.707C5.90244 11.3165 5.90244 10.6835 6.29297 10.293L9.29297 7.29297ZM13.293 7.29297C13.6835 6.90244 14.3165 6.90244 14.707 7.29297L17.707 10.293C18.0976 10.6835 18.0976 11.3165 17.707 11.707L14.707 14.707C14.3165 15.0976 13.6835 15.0976 13.293 14.707C12.9024 14.3165 12.9024 13.6835 13.293 13.293L15.5859 11L13.293 8.70703C12.9024 8.31651 12.9024 7.68349 13.293 7.29297Z",
@@ -23807,7 +23892,7 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
23807
23892
  ) ?? null;
23808
23893
  const ActiveCategoryIcon = activeCategory?.icon ? CATEGORY_ICON[activeCategory.icon] : null;
23809
23894
  return /* @__PURE__ */ jsxs26("div", { className: AgentGUINode_styles_default.emptyHeroSuggestions, children: [
23810
- /* @__PURE__ */ jsx36("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsChips, children: categories.map((category) => {
23895
+ /* @__PURE__ */ jsx37("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsChips, children: categories.map((category) => {
23811
23896
  const Icon = category.icon ? CATEGORY_ICON[category.icon] : null;
23812
23897
  const direct = isDirectCategory(category);
23813
23898
  const isActive = !direct && category.id === activeCategory?.id;
@@ -23832,14 +23917,14 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
23832
23917
  );
23833
23918
  },
23834
23919
  children: [
23835
- Icon ? /* @__PURE__ */ jsx36(
23920
+ Icon ? /* @__PURE__ */ jsx37(
23836
23921
  Icon,
23837
23922
  {
23838
23923
  className: AgentGUINode_styles_default.emptyHeroSuggestionsChipIcon,
23839
23924
  "aria-hidden": true
23840
23925
  }
23841
23926
  ) : null,
23842
- /* @__PURE__ */ jsx36("span", { children: category.label })
23927
+ /* @__PURE__ */ jsx37("span", { children: category.label })
23843
23928
  ]
23844
23929
  },
23845
23930
  category.id
@@ -23848,7 +23933,7 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
23848
23933
  activeCategory ? /* @__PURE__ */ jsxs26("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCard, children: [
23849
23934
  /* @__PURE__ */ jsxs26("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCardHeader, children: [
23850
23935
  /* @__PURE__ */ jsxs26("span", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCardTitle, children: [
23851
- ActiveCategoryIcon ? /* @__PURE__ */ jsx36(
23936
+ ActiveCategoryIcon ? /* @__PURE__ */ jsx37(
23852
23937
  ActiveCategoryIcon,
23853
23938
  {
23854
23939
  className: AgentGUINode_styles_default.emptyHeroSuggestionsChipIcon,
@@ -23857,7 +23942,7 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
23857
23942
  ) : null,
23858
23943
  activeCategory.label
23859
23944
  ] }),
23860
- /* @__PURE__ */ jsx36(
23945
+ /* @__PURE__ */ jsx37(
23861
23946
  "button",
23862
23947
  {
23863
23948
  type: "button",
@@ -23865,11 +23950,11 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
23865
23950
  "aria-label": closeLabel,
23866
23951
  title: closeLabel,
23867
23952
  onClick: () => setActiveCategoryId(null),
23868
- children: /* @__PURE__ */ jsx36(X5, { "aria-hidden": true })
23953
+ children: /* @__PURE__ */ jsx37(X5, { "aria-hidden": true })
23869
23954
  }
23870
23955
  )
23871
23956
  ] }),
23872
- activeCategory.items?.map((item) => /* @__PURE__ */ jsx36(
23957
+ activeCategory.items?.map((item) => /* @__PURE__ */ jsx37(
23873
23958
  "button",
23874
23959
  {
23875
23960
  type: "button",
@@ -23917,7 +24002,7 @@ function createFallbackAgentGUIAgentAvatar(input) {
23917
24002
 
23918
24003
  // agent-gui/agentGuiNode/view/AgentGUIEmptyHeroCarouselStage.tsx
23919
24004
  import { Component as Component3 } from "react";
23920
- import { jsx as jsx37, jsxs as jsxs27 } from "react/jsx-runtime";
24005
+ import { jsx as jsx38, jsxs as jsxs27 } from "react/jsx-runtime";
23921
24006
  var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
23922
24007
  animationFrame = null;
23923
24008
  layer = null;
@@ -23943,7 +24028,7 @@ var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
23943
24028
  } = this.props;
23944
24029
  const hasCarousel = items.length > 1;
23945
24030
  return /* @__PURE__ */ jsxs27("div", { ref: this.setStage, className: AgentGUINode_styles_default.emptyHeroCarouselStage, children: [
23946
- hasCarousel ? /* @__PURE__ */ jsx37("div", { ref: this.setLayer, className: AgentGUINode_styles_default.emptyHeroCarouselLayer, children: /* @__PURE__ */ jsx37(
24031
+ hasCarousel ? /* @__PURE__ */ jsx38("div", { ref: this.setLayer, className: AgentGUINode_styles_default.emptyHeroCarouselLayer, children: /* @__PURE__ */ jsx38(
23947
24032
  AgentGUIHeroAgentCarousel,
23948
24033
  {
23949
24034
  activeAgentTargetId,
@@ -24033,7 +24118,7 @@ var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
24033
24118
  };
24034
24119
 
24035
24120
  // agent-gui/agentGuiNode/view/AgentGUIEmptyState.tsx
24036
- import { Fragment as Fragment11, jsx as jsx38, jsxs as jsxs28 } from "react/jsx-runtime";
24121
+ import { Fragment as Fragment11, jsx as jsx39, jsxs as jsxs28 } from "react/jsx-runtime";
24037
24122
  function resolveAgentGUIHeroIconUrl2(provider) {
24038
24123
  const normalizedProvider = normalizeManagedAgentProvider(provider);
24039
24124
  return MANAGED_AGENT_ICON_URLS[normalizedProvider] ?? MANAGED_AGENT_ICON_FALLBACK_URL;
@@ -24075,14 +24160,14 @@ var AgentGUIEmptyHomePane = memo3(function AgentGUIEmptyHomePane2({
24075
24160
  [agentTargets, provider, providerLabel, selectedAgentTarget]
24076
24161
  );
24077
24162
  const carouselMountedExternally = avatarPresentations.length > 1;
24078
- return /* @__PURE__ */ jsx38(
24163
+ return /* @__PURE__ */ jsx39(
24079
24164
  AgentGUIEmptyHeroCarouselStage,
24080
24165
  {
24081
24166
  activeAgentTargetId: selectedAgentTarget?.agentTargetId ?? selectedAgentTarget?.targetId,
24082
24167
  items: avatarPresentations,
24083
24168
  onProviderSelect,
24084
24169
  providerSelectLabel: labels.providerSwitchLabel,
24085
- children: providerReadinessGate ? /* @__PURE__ */ jsx38(
24170
+ children: providerReadinessGate ? /* @__PURE__ */ jsx39(
24086
24171
  AgentGUIProviderReadinessGatePane,
24087
24172
  {
24088
24173
  provider,
@@ -24098,7 +24183,7 @@ var AgentGUIEmptyHomePane = memo3(function AgentGUIEmptyHomePane2({
24098
24183
  selectedAgentTarget,
24099
24184
  labels
24100
24185
  }
24101
- ) : /* @__PURE__ */ jsx38(
24186
+ ) : /* @__PURE__ */ jsx39(
24102
24187
  AgentGUIEmptyHeroPane,
24103
24188
  {
24104
24189
  ...heroProps,
@@ -24149,13 +24234,13 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
24149
24234
  const heroIconAnimationKey = heroAvatarPresentations.map(
24150
24235
  (avatar) => `${avatar.agentTargetId}:${avatar.iconUrl}:${avatar.badge?.iconUrl ?? ""}`
24151
24236
  ).join("|");
24152
- return /* @__PURE__ */ jsx38("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs28("div", { className: AgentGUINode_styles_default.emptyHeroBody, children: [
24153
- /* @__PURE__ */ jsx38(
24237
+ return /* @__PURE__ */ jsx39("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs28("div", { className: AgentGUINode_styles_default.emptyHeroBody, children: [
24238
+ /* @__PURE__ */ jsx39(
24154
24239
  "div",
24155
24240
  {
24156
24241
  className: AgentGUINode_styles_default.emptyHeroIconSlot,
24157
24242
  "data-carousel-placeholder": carouselMountedExternally || void 0,
24158
- children: carouselMountedExternally ? null : heroAvatarPresentations.length > 1 ? /* @__PURE__ */ jsx38(
24243
+ children: carouselMountedExternally ? null : heroAvatarPresentations.length > 1 ? /* @__PURE__ */ jsx39(
24159
24244
  AgentGUIHeroAgentCarousel,
24160
24245
  {
24161
24246
  activeAgentTargetId: selectedAgentTarget?.agentTargetId ?? selectedAgentTarget?.targetId,
@@ -24163,7 +24248,7 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
24163
24248
  onProviderSelect,
24164
24249
  providerSelectLabel
24165
24250
  }
24166
- ) : /* @__PURE__ */ jsx38(
24251
+ ) : /* @__PURE__ */ jsx39(
24167
24252
  AgentGUIAgentAvatarVisual,
24168
24253
  {
24169
24254
  className: AgentGUINode_styles_default.emptyHeroIconEffect,
@@ -24173,7 +24258,7 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
24173
24258
  )
24174
24259
  }
24175
24260
  ),
24176
- /* @__PURE__ */ jsx38("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: /* @__PURE__ */ jsx38(
24261
+ /* @__PURE__ */ jsx39("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: /* @__PURE__ */ jsx39(
24177
24262
  EmptyHeroTitle,
24178
24263
  {
24179
24264
  label: emptyLabel,
@@ -24184,7 +24269,7 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
24184
24269
  onProviderSelect
24185
24270
  }
24186
24271
  ) }),
24187
- inlineNoticeChrome ? /* @__PURE__ */ jsx38(
24272
+ inlineNoticeChrome ? /* @__PURE__ */ jsx39(
24188
24273
  AgentSessionChrome,
24189
24274
  {
24190
24275
  chrome: inlineNoticeChrome,
@@ -24196,8 +24281,8 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
24196
24281
  labels: chromeLabels
24197
24282
  }
24198
24283
  ) : null,
24199
- /* @__PURE__ */ jsx38(AgentComposer, { ...composerProps }),
24200
- /* @__PURE__ */ jsx38(
24284
+ /* @__PURE__ */ jsx39(AgentComposer, { ...composerProps }),
24285
+ /* @__PURE__ */ jsx39(
24201
24286
  AgentHomeSuggestions,
24202
24287
  {
24203
24288
  categories: suggestions,
@@ -24239,20 +24324,20 @@ var AgentGUIProviderReadinessGatePane = memo3(
24239
24324
  const titleLabel = gate.status === "not_installed" || gate.status === "auth_required" ? emptyLabel : content.title;
24240
24325
  const action = providerGateAction(gate.status);
24241
24326
  const pendingLabel = pendingAction === "install" ? labels.providerGatePendingInstall : pendingAction === "login" ? labels.providerGatePendingLogin : pendingAction === "refresh" ? labels.providerGatePendingRefresh : null;
24242
- return /* @__PURE__ */ jsx38("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs28(
24327
+ return /* @__PURE__ */ jsx39("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs28(
24243
24328
  "div",
24244
24329
  {
24245
24330
  className: cn4(AgentGUINode_styles_default.emptyHeroBody, AgentGUINode_styles_default.emptyProviderGate),
24246
24331
  "data-testid": "agent-gui-provider-readiness-gate",
24247
24332
  role: "status",
24248
24333
  children: [
24249
- carouselMountedExternally ? /* @__PURE__ */ jsx38(
24334
+ carouselMountedExternally ? /* @__PURE__ */ jsx39(
24250
24335
  "div",
24251
24336
  {
24252
24337
  "aria-hidden": "true",
24253
24338
  className: AgentGUINode_styles_default.emptyHeroCarouselPlaceholder
24254
24339
  }
24255
- ) : heroAvatarPresentations.length > 1 ? /* @__PURE__ */ jsx38(
24340
+ ) : heroAvatarPresentations.length > 1 ? /* @__PURE__ */ jsx39(
24256
24341
  AgentGUIHeroAgentCarousel,
24257
24342
  {
24258
24343
  activeAgentTargetId: selectedAgentTarget?.agentTargetId ?? selectedAgentTarget?.targetId,
@@ -24260,14 +24345,14 @@ var AgentGUIProviderReadinessGatePane = memo3(
24260
24345
  onProviderSelect,
24261
24346
  providerSelectLabel
24262
24347
  }
24263
- ) : /* @__PURE__ */ jsx38(
24348
+ ) : /* @__PURE__ */ jsx39(
24264
24349
  AgentGUIAgentAvatarVisual,
24265
24350
  {
24266
24351
  className: AgentGUINode_styles_default.emptyHeroIconEffect,
24267
24352
  presentation: heroAvatarPresentations[0]
24268
24353
  }
24269
24354
  ),
24270
- /* @__PURE__ */ jsx38("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: /* @__PURE__ */ jsx38(
24355
+ /* @__PURE__ */ jsx39("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: /* @__PURE__ */ jsx39(
24271
24356
  EmptyHeroTitle,
24272
24357
  {
24273
24358
  label: titleLabel,
@@ -24278,8 +24363,8 @@ var AgentGUIProviderReadinessGatePane = memo3(
24278
24363
  onProviderSelect
24279
24364
  }
24280
24365
  ) }),
24281
- /* @__PURE__ */ jsx38("p", { className: AgentGUINode_styles_default.emptyProviderGateDescription, children: content.description }),
24282
- pendingLabel && !action ? /* @__PURE__ */ jsx38(
24366
+ /* @__PURE__ */ jsx39("p", { className: AgentGUINode_styles_default.emptyProviderGateDescription, children: content.description }),
24367
+ pendingLabel && !action ? /* @__PURE__ */ jsx39(
24283
24368
  "div",
24284
24369
  {
24285
24370
  className: AgentGUINode_styles_default.emptyProviderGateStatus,
@@ -24287,7 +24372,7 @@ var AgentGUIProviderReadinessGatePane = memo3(
24287
24372
  children: pendingLabel
24288
24373
  }
24289
24374
  ) : null,
24290
- action ? /* @__PURE__ */ jsx38(
24375
+ action ? /* @__PURE__ */ jsx39(
24291
24376
  Button,
24292
24377
  {
24293
24378
  type: "button",
@@ -24306,7 +24391,7 @@ var AgentGUIProviderReadinessGatePane = memo3(
24306
24391
  },
24307
24392
  children: isPending && pendingLabel ? pendingLabel : content.actionLabel
24308
24393
  }
24309
- ) : content.actionLabel ? /* @__PURE__ */ jsx38(
24394
+ ) : content.actionLabel ? /* @__PURE__ */ jsx39(
24310
24395
  Button,
24311
24396
  {
24312
24397
  type: "button",
@@ -24375,7 +24460,7 @@ function AgentGUIUnifiedProviderIcon({
24375
24460
  presentation
24376
24461
  }) {
24377
24462
  const iconUrl = presentation?.iconUrl?.trim() || agentColorfulUrl;
24378
- return /* @__PURE__ */ jsx38("span", { "aria-hidden": "true", className: AgentGUINode_styles_default.providerRailAvatar, children: /* @__PURE__ */ jsx38(
24463
+ return /* @__PURE__ */ jsx39("span", { "aria-hidden": "true", className: AgentGUINode_styles_default.providerRailAvatar, children: /* @__PURE__ */ jsx39(
24379
24464
  "img",
24380
24465
  {
24381
24466
  alt: "",
@@ -24390,7 +24475,7 @@ function AgentGUIProviderIconVisual({
24390
24475
  icon,
24391
24476
  imageClassName
24392
24477
  }) {
24393
- return /* @__PURE__ */ jsx38(
24478
+ return /* @__PURE__ */ jsx39(
24394
24479
  "img",
24395
24480
  {
24396
24481
  alt: "",
@@ -24413,7 +24498,7 @@ function AgentGUIAgentAvatarVisual({
24413
24498
  className: cn4(AgentGUINode_styles_default.agentAvatar, className),
24414
24499
  "data-agent-target-id": presentation.agentTargetId,
24415
24500
  children: [
24416
- /* @__PURE__ */ jsx38(
24501
+ /* @__PURE__ */ jsx39(
24417
24502
  "img",
24418
24503
  {
24419
24504
  alt: "",
@@ -24422,7 +24507,7 @@ function AgentGUIAgentAvatarVisual({
24422
24507
  src: presentation.iconUrl
24423
24508
  }
24424
24509
  ),
24425
- presentation.badge?.iconUrl ? /* @__PURE__ */ jsx38("span", { className: AgentGUINode_styles_default.agentAvatarBadge, children: /* @__PURE__ */ jsx38(
24510
+ presentation.badge?.iconUrl ? /* @__PURE__ */ jsx39("span", { className: AgentGUINode_styles_default.agentAvatarBadge, children: /* @__PURE__ */ jsx39(
24426
24511
  "img",
24427
24512
  {
24428
24513
  alt: "",
@@ -24445,7 +24530,7 @@ function EmptyHeroTitle({
24445
24530
  }) {
24446
24531
  const providerStart = providerLabel ? label.indexOf(providerLabel) : -1;
24447
24532
  if (!shouldEmphasizeEmptyHeroProvider(label) || providerStart < 0) {
24448
- return /* @__PURE__ */ jsx38(Fragment11, { children: label });
24533
+ return /* @__PURE__ */ jsx39(Fragment11, { children: label });
24449
24534
  }
24450
24535
  const providerEnd = providerStart + providerLabel.length;
24451
24536
  const selectedAgentTargetId = selectedAgentTarget?.targetId ?? `local:${selectedAgentTarget?.provider ?? ""}`;
@@ -24470,28 +24555,28 @@ function EmptyHeroTitle({
24470
24555
  });
24471
24556
  },
24472
24557
  children: [
24473
- /* @__PURE__ */ jsx38(
24558
+ /* @__PURE__ */ jsx39(
24474
24559
  SelectTrigger3,
24475
24560
  {
24476
24561
  size: "sm",
24477
24562
  "aria-label": providerSelectLabel,
24478
24563
  title: providerSelectLabel,
24479
24564
  className: AgentGUINode_styles_default.emptyHeroProviderSelect,
24480
- children: /* @__PURE__ */ jsx38("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: providerName })
24565
+ children: /* @__PURE__ */ jsx39("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: providerName })
24481
24566
  }
24482
24567
  ),
24483
- /* @__PURE__ */ jsx38(
24568
+ /* @__PURE__ */ jsx39(
24484
24569
  SelectContent3,
24485
24570
  {
24486
24571
  align: "center",
24487
24572
  className: cn4(AgentGUINode_styles_default.composerMenuContent, "min-w-[190px]"),
24488
- children: agentTargets.map((target) => /* @__PURE__ */ jsx38(
24573
+ children: agentTargets.map((target) => /* @__PURE__ */ jsx39(
24489
24574
  SelectItem3,
24490
24575
  {
24491
24576
  value: target.targetId,
24492
24577
  className: cn4(AgentGUINode_styles_default.composerMenuItem, "gap-2"),
24493
24578
  children: /* @__PURE__ */ jsxs28("span", { className: "flex min-w-0 items-center gap-1.5", children: [
24494
- /* @__PURE__ */ jsx38(
24579
+ /* @__PURE__ */ jsx39(
24495
24580
  "img",
24496
24581
  {
24497
24582
  alt: "",
@@ -24503,7 +24588,7 @@ function EmptyHeroTitle({
24503
24588
  ).iconUrl
24504
24589
  }
24505
24590
  ),
24506
- /* @__PURE__ */ jsx38("span", { className: "min-w-0 truncate", children: target.label })
24591
+ /* @__PURE__ */ jsx39("span", { className: "min-w-0 truncate", children: target.label })
24507
24592
  ] })
24508
24593
  },
24509
24594
  `${target.provider}:${target.targetId}`
@@ -24512,7 +24597,7 @@ function EmptyHeroTitle({
24512
24597
  )
24513
24598
  ]
24514
24599
  }
24515
- ) : /* @__PURE__ */ jsx38("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: providerName }),
24600
+ ) : /* @__PURE__ */ jsx39("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: providerName }),
24516
24601
  label.slice(providerEnd)
24517
24602
  ] });
24518
24603
  }
@@ -24532,7 +24617,7 @@ import {
24532
24617
  DialogTitle,
24533
24618
  toast as toast2
24534
24619
  } from "@tutti-os/ui-system";
24535
- import { jsx as jsx39, jsxs as jsxs29 } from "react/jsx-runtime";
24620
+ import { jsx as jsx40, jsxs as jsxs29 } from "react/jsx-runtime";
24536
24621
  var AGENT_MANAGER_LONG_PRESS_MOVE_TOLERANCE_PX = 8;
24537
24622
  var AGENT_MANAGER_DROP_HYSTERESIS_PX = 8;
24538
24623
  function AgentGUIProviderManagerDialog({
@@ -24755,7 +24840,7 @@ function AgentGUIProviderManagerDialog({
24755
24840
  };
24756
24841
  const disabledDropBlocked = dragState?.source === "available" && (finalAvailableAgent || running.has(dragState.targetId));
24757
24842
  const disabledDropBlockedByRunning = dragState?.source === "available" && running.has(dragState.targetId);
24758
- return /* @__PURE__ */ jsx39(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs29(
24843
+ return /* @__PURE__ */ jsx40(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs29(
24759
24844
  DialogContent,
24760
24845
  {
24761
24846
  className: "nodrag tsh-desktop-no-drag flex max-h-[min(680px,calc(100vh-32px))] flex-col gap-0 overflow-hidden p-0 [-webkit-app-region:no-drag] sm:max-w-[520px]",
@@ -24771,8 +24856,8 @@ function AgentGUIProviderManagerDialog({
24771
24856
  },
24772
24857
  children: [
24773
24858
  /* @__PURE__ */ jsxs29(DialogHeader, { className: "shrink-0 border-b border-[var(--border-1)] px-5 py-4", children: [
24774
- /* @__PURE__ */ jsx39(DialogTitle, { children: labels.manageAgentsTitle }),
24775
- /* @__PURE__ */ jsx39(DialogDescription, { children: labels.manageAgentsDescription })
24859
+ /* @__PURE__ */ jsx40(DialogTitle, { children: labels.manageAgentsTitle }),
24860
+ /* @__PURE__ */ jsx40(DialogDescription, { children: labels.manageAgentsDescription })
24776
24861
  ] }),
24777
24862
  /* @__PURE__ */ jsxs29(
24778
24863
  "div",
@@ -24790,7 +24875,7 @@ function AgentGUIProviderManagerDialog({
24790
24875
  onDragOver: (event) => dragOverDropZone(event, "available"),
24791
24876
  onDrop: (event) => dropIntoZone(event, "available"),
24792
24877
  children: [
24793
- /* @__PURE__ */ jsx39(
24878
+ /* @__PURE__ */ jsx40(
24794
24879
  "h3",
24795
24880
  {
24796
24881
  className: "mb-3 text-[12px] font-medium text-[var(--text-secondary)]",
@@ -24798,7 +24883,7 @@ function AgentGUIProviderManagerDialog({
24798
24883
  children: labels.manageAgentsAvailable
24799
24884
  }
24800
24885
  ),
24801
- availableTargets.length > 0 ? /* @__PURE__ */ jsx39(
24886
+ availableTargets.length > 0 ? /* @__PURE__ */ jsx40(
24802
24887
  "div",
24803
24888
  {
24804
24889
  "aria-label": labels.manageAgentsAvailable,
@@ -24846,7 +24931,7 @@ function AgentGUIProviderManagerDialog({
24846
24931
  role: "listitem",
24847
24932
  tabIndex: 0,
24848
24933
  children: [
24849
- dragPreview?.overTargetId === target.targetId ? /* @__PURE__ */ jsx39(
24934
+ dragPreview?.overTargetId === target.targetId ? /* @__PURE__ */ jsx40(
24850
24935
  "span",
24851
24936
  {
24852
24937
  "aria-hidden": "true",
@@ -24855,7 +24940,7 @@ function AgentGUIProviderManagerDialog({
24855
24940
  "data-testid": "agent-gui-provider-manager-drop-indicator"
24856
24941
  }
24857
24942
  ) : null,
24858
- editing ? /* @__PURE__ */ jsx39(
24943
+ editing ? /* @__PURE__ */ jsx40(
24859
24944
  Button4,
24860
24945
  {
24861
24946
  "aria-label": labels.removeAgentFromSidebar(label),
@@ -24873,10 +24958,10 @@ function AgentGUIProviderManagerDialog({
24873
24958
  title: targetRunning ? labels.manageAgentsRunningBlocked(label) : finalAvailableAgent ? labels.manageAgentsKeepOneAvailable : void 0,
24874
24959
  type: "button",
24875
24960
  variant: "ghost",
24876
- children: /* @__PURE__ */ jsx39(CircleMinus, { "aria-hidden": "true", className: "size-4" })
24961
+ children: /* @__PURE__ */ jsx40(CircleMinus, { "aria-hidden": "true", className: "size-4" })
24877
24962
  }
24878
24963
  ) : null,
24879
- /* @__PURE__ */ jsx39(
24964
+ /* @__PURE__ */ jsx40(
24880
24965
  AgentGUIProviderIconVisual,
24881
24966
  {
24882
24967
  ariaHidden: true,
@@ -24887,14 +24972,14 @@ function AgentGUIProviderManagerDialog({
24887
24972
  imageClassName: "size-9 shrink-0 rounded-[9px] object-cover"
24888
24973
  }
24889
24974
  ),
24890
- /* @__PURE__ */ jsx39("span", { className: "mt-2 block w-full truncate text-center text-[12px] font-medium text-[var(--text-primary)]", children: label })
24975
+ /* @__PURE__ */ jsx40("span", { className: "mt-2 block w-full truncate text-center text-[12px] font-medium text-[var(--text-primary)]", children: label })
24891
24976
  ]
24892
24977
  },
24893
24978
  target.targetId
24894
24979
  );
24895
24980
  })
24896
24981
  }
24897
- ) : /* @__PURE__ */ jsx39("p", { className: "rounded-[8px] bg-[var(--transparency-block)] px-3 py-4 text-center text-[12px] text-[var(--text-tertiary)]", children: labels.manageAgentsNoAvailable })
24982
+ ) : /* @__PURE__ */ jsx40("p", { className: "rounded-[8px] bg-[var(--transparency-block)] px-3 py-4 text-center text-[12px] text-[var(--text-tertiary)]", children: labels.manageAgentsNoAvailable })
24898
24983
  ]
24899
24984
  }
24900
24985
  ),
@@ -24914,7 +24999,7 @@ function AgentGUIProviderManagerDialog({
24914
24999
  )?.label ?? ""
24915
25000
  ) : labels.manageAgentsKeepOneAvailable : void 0,
24916
25001
  children: [
24917
- /* @__PURE__ */ jsx39(
25002
+ /* @__PURE__ */ jsx40(
24918
25003
  "h3",
24919
25004
  {
24920
25005
  className: "mb-3 text-[12px] font-medium text-[var(--text-secondary)]",
@@ -24922,7 +25007,7 @@ function AgentGUIProviderManagerDialog({
24922
25007
  children: labels.manageAgentsDisabled
24923
25008
  }
24924
25009
  ),
24925
- disabledTargets.length > 0 ? /* @__PURE__ */ jsx39(
25010
+ disabledTargets.length > 0 ? /* @__PURE__ */ jsx40(
24926
25011
  "div",
24927
25012
  {
24928
25013
  "aria-label": labels.manageAgentsDisabled,
@@ -24968,7 +25053,7 @@ function AgentGUIProviderManagerDialog({
24968
25053
  role: "listitem",
24969
25054
  tabIndex: 0,
24970
25055
  children: [
24971
- dragPreview?.overTargetId === target.targetId ? /* @__PURE__ */ jsx39(
25056
+ dragPreview?.overTargetId === target.targetId ? /* @__PURE__ */ jsx40(
24972
25057
  "span",
24973
25058
  {
24974
25059
  "aria-hidden": "true",
@@ -24977,7 +25062,7 @@ function AgentGUIProviderManagerDialog({
24977
25062
  "data-testid": "agent-gui-provider-manager-drop-indicator"
24978
25063
  }
24979
25064
  ) : null,
24980
- editing ? /* @__PURE__ */ jsx39(
25065
+ editing ? /* @__PURE__ */ jsx40(
24981
25066
  Button4,
24982
25067
  {
24983
25068
  "aria-label": labels.addAgentToSidebar(label),
@@ -24989,10 +25074,10 @@ function AgentGUIProviderManagerDialog({
24989
25074
  size: "icon-xs",
24990
25075
  type: "button",
24991
25076
  variant: "ghost",
24992
- children: /* @__PURE__ */ jsx39(CirclePlus, { "aria-hidden": "true", className: "size-4" })
25077
+ children: /* @__PURE__ */ jsx40(CirclePlus, { "aria-hidden": "true", className: "size-4" })
24993
25078
  }
24994
25079
  ) : null,
24995
- /* @__PURE__ */ jsx39(
25080
+ /* @__PURE__ */ jsx40(
24996
25081
  AgentGUIProviderIconVisual,
24997
25082
  {
24998
25083
  ariaHidden: true,
@@ -25003,14 +25088,14 @@ function AgentGUIProviderManagerDialog({
25003
25088
  imageClassName: "size-9 shrink-0 rounded-[9px] object-cover opacity-70 grayscale-[0.25]"
25004
25089
  }
25005
25090
  ),
25006
- /* @__PURE__ */ jsx39("span", { className: "mt-2 block w-full truncate text-center text-[12px] font-medium text-[var(--text-secondary)]", children: label })
25091
+ /* @__PURE__ */ jsx40("span", { className: "mt-2 block w-full truncate text-center text-[12px] font-medium text-[var(--text-secondary)]", children: label })
25007
25092
  ]
25008
25093
  },
25009
25094
  target.targetId
25010
25095
  );
25011
25096
  })
25012
25097
  }
25013
- ) : /* @__PURE__ */ jsx39("p", { className: "flex min-h-[72px] items-center justify-center rounded-[8px] border border-dashed border-[var(--border-1)] px-3 py-4 text-center text-[12px] text-[var(--text-tertiary)]", children: labels.manageAgentsNoDisabled })
25098
+ ) : /* @__PURE__ */ jsx40("p", { className: "flex min-h-[72px] items-center justify-center rounded-[8px] border border-dashed border-[var(--border-1)] px-3 py-4 text-center text-[12px] text-[var(--text-tertiary)]", children: labels.manageAgentsNoDisabled })
25014
25099
  ]
25015
25100
  }
25016
25101
  )
@@ -25073,7 +25158,7 @@ function useAgentGUIProviderRailPreferences() {
25073
25158
  }
25074
25159
 
25075
25160
  // agent-gui/agentGuiNode/view/AgentGUIProviderRail.tsx
25076
- import { jsx as jsx40, jsxs as jsxs30 } from "react/jsx-runtime";
25161
+ import { jsx as jsx41, jsxs as jsxs30 } from "react/jsx-runtime";
25077
25162
  var agentGUIProviderRailCatalog = [
25078
25163
  ...migratedAgentGUIProviderIdentityCatalog
25079
25164
  ].sort((left, right) => left.target.sortOrder - right.target.sortOrder);
@@ -25481,7 +25566,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25481
25566
  },
25482
25567
  [dragState, previewMode, agentTargetsLoading, setProviderRailDragState]
25483
25568
  );
25484
- const providerManagerDialog = /* @__PURE__ */ jsx40(
25569
+ const providerManagerDialog = /* @__PURE__ */ jsx41(
25485
25570
  AgentGUIProviderManagerDialog,
25486
25571
  {
25487
25572
  hiddenTargetIds: effectiveHiddenTargetIds,
@@ -25533,18 +25618,18 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25533
25618
  disabled: previewMode,
25534
25619
  onClick: selectAllProviders,
25535
25620
  children: [
25536
- /* @__PURE__ */ jsx40(
25621
+ /* @__PURE__ */ jsx41(
25537
25622
  AgentGUIUnifiedProviderIcon,
25538
25623
  {
25539
25624
  presentation: providerRailAllPresentation
25540
25625
  }
25541
25626
  ),
25542
- /* @__PURE__ */ jsx40("span", { className: AgentGUINode_styles_default.providerRailTileLabel, children: labels.conversationFilterAll })
25627
+ /* @__PURE__ */ jsx41("span", { className: AgentGUINode_styles_default.providerRailTileLabel, children: labels.conversationFilterAll })
25543
25628
  ]
25544
25629
  }
25545
25630
  ),
25546
- /* @__PURE__ */ jsx40("span", { "aria-hidden": "true", className: AgentGUINode_styles_default.providerRailSeparator }),
25547
- agentTargetsLoading ? [0, 1, 2].map((index) => /* @__PURE__ */ jsx40(
25631
+ /* @__PURE__ */ jsx41("span", { "aria-hidden": "true", className: AgentGUINode_styles_default.providerRailSeparator }),
25632
+ agentTargetsLoading ? [0, 1, 2].map((index) => /* @__PURE__ */ jsx41(
25548
25633
  "button",
25549
25634
  {
25550
25635
  type: "button",
@@ -25554,7 +25639,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25554
25639
  "data-loading": "true",
25555
25640
  "data-selected": "false",
25556
25641
  disabled: true,
25557
- children: /* @__PURE__ */ jsx40(
25642
+ children: /* @__PURE__ */ jsx41(
25558
25643
  "span",
25559
25644
  {
25560
25645
  "aria-hidden": "true",
@@ -25577,7 +25662,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25577
25662
  label,
25578
25663
  target.badge?.label
25579
25664
  );
25580
- const tile = /* @__PURE__ */ jsx40(
25665
+ const tile = /* @__PURE__ */ jsx41(
25581
25666
  "button",
25582
25667
  {
25583
25668
  type: "button",
@@ -25598,7 +25683,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25598
25683
  onDragOver: (event) => handleProviderRailDragOver(event, target),
25599
25684
  onDragStart: (event) => handleProviderRailDragStart(event, target),
25600
25685
  children: /* @__PURE__ */ jsxs30("span", { className: AgentGUINode_styles_default.providerRailAvatar, children: [
25601
- /* @__PURE__ */ jsx40(
25686
+ /* @__PURE__ */ jsx41(
25602
25687
  AgentGUIProviderIconVisual,
25603
25688
  {
25604
25689
  ariaHidden: true,
@@ -25609,7 +25694,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25609
25694
  )
25610
25695
  }
25611
25696
  ),
25612
- target.badge?.iconUrl ? /* @__PURE__ */ jsx40("span", { "aria-hidden": "true", className: AgentGUINode_styles_default.agentAvatarBadge, children: /* @__PURE__ */ jsx40(
25697
+ target.badge?.iconUrl ? /* @__PURE__ */ jsx41("span", { "aria-hidden": "true", className: AgentGUINode_styles_default.agentAvatarBadge, children: /* @__PURE__ */ jsx41(
25613
25698
  "img",
25614
25699
  {
25615
25700
  alt: "",
@@ -25625,9 +25710,9 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25625
25710
  if (previewMode) {
25626
25711
  return tile;
25627
25712
  }
25628
- return /* @__PURE__ */ jsxs30(Tooltip5, { children: [
25629
- /* @__PURE__ */ jsx40(TooltipTrigger5, { asChild: true, children: tile }),
25630
- /* @__PURE__ */ jsx40(TooltipContent5, { side: "right", sideOffset: -4, children: label })
25713
+ return /* @__PURE__ */ jsxs30(Tooltip6, { children: [
25714
+ /* @__PURE__ */ jsx41(TooltipTrigger6, { asChild: true, children: tile }),
25715
+ /* @__PURE__ */ jsx41(TooltipContent6, { side: "right", sideOffset: -4, children: label })
25631
25716
  ] }, `${target.provider}:${target.targetId}:tooltip`);
25632
25717
  })
25633
25718
  ]
@@ -25671,7 +25756,7 @@ var styles3 = {
25671
25756
  var RoomIssueNode_styles_default = styles3;
25672
25757
 
25673
25758
  // agent-gui/RoomIssueNode/TaskSearchField.tsx
25674
- import { jsx as jsx41, jsxs as jsxs31 } from "react/jsx-runtime";
25759
+ import { jsx as jsx42, jsxs as jsxs31 } from "react/jsx-runtime";
25675
25760
  function TaskSearchField({
25676
25761
  ariaLabel,
25677
25762
  className,
@@ -25691,7 +25776,7 @@ function TaskSearchField({
25691
25776
  className: `${RoomIssueNode_styles_default.searchField} ${className ?? ""}`.trim(),
25692
25777
  "data-has-value": searchInput.value ? "true" : "false",
25693
25778
  children: [
25694
- /* @__PURE__ */ jsx41(
25779
+ /* @__PURE__ */ jsx42(
25695
25780
  Input,
25696
25781
  {
25697
25782
  type: "search",
@@ -25714,7 +25799,7 @@ function TaskSearchField({
25714
25799
  "data-testid": dataTestId
25715
25800
  }
25716
25801
  ),
25717
- searchInput.value ? /* @__PURE__ */ jsx41(
25802
+ searchInput.value ? /* @__PURE__ */ jsx42(
25718
25803
  "button",
25719
25804
  {
25720
25805
  type: "button",
@@ -25722,7 +25807,7 @@ function TaskSearchField({
25722
25807
  "aria-label": clearAriaLabel ?? t("common.clear"),
25723
25808
  onMouseDown: (event) => event.preventDefault(),
25724
25809
  onClick: searchInput.clearValue,
25725
- children: /* @__PURE__ */ jsx41(CloseLinedIcon, { "aria-hidden": "true" })
25810
+ children: /* @__PURE__ */ jsx42(CloseLinedIcon, { "aria-hidden": "true" })
25726
25811
  }
25727
25812
  ) : null
25728
25813
  ]
@@ -25740,7 +25825,7 @@ function isTaskSearchImeComposing(event) {
25740
25825
  }
25741
25826
 
25742
25827
  // agent-gui/agentGuiNode/AgentConversationListSkeleton.tsx
25743
- import { jsx as jsx42, jsxs as jsxs32 } from "react/jsx-runtime";
25828
+ import { jsx as jsx43, jsxs as jsxs32 } from "react/jsx-runtime";
25744
25829
  var SKELETON_ROWS = [
25745
25830
  { id: "first", size: "long" },
25746
25831
  { id: "second", size: "medium" },
@@ -25752,7 +25837,7 @@ function AgentConversationListSkeleton({
25752
25837
  label
25753
25838
  }) {
25754
25839
  "use memo";
25755
- return /* @__PURE__ */ jsx42(
25840
+ return /* @__PURE__ */ jsx43(
25756
25841
  "div",
25757
25842
  {
25758
25843
  className: "agent-gui-node__conversation-list-skeleton",
@@ -25766,9 +25851,9 @@ function AgentConversationListSkeleton({
25766
25851
  "data-size": row.size,
25767
25852
  "aria-hidden": "true",
25768
25853
  children: [
25769
- /* @__PURE__ */ jsx42("span", { className: "agent-gui-node__conversation-list-skeleton-spine" }),
25770
- /* @__PURE__ */ jsx42("span", { className: "agent-gui-node__conversation-list-skeleton-rib agent-gui-node__conversation-list-skeleton-rib-primary" }),
25771
- /* @__PURE__ */ jsx42("span", { className: "agent-gui-node__conversation-list-skeleton-rib agent-gui-node__conversation-list-skeleton-rib-secondary" })
25854
+ /* @__PURE__ */ jsx43("span", { className: "agent-gui-node__conversation-list-skeleton-spine" }),
25855
+ /* @__PURE__ */ jsx43("span", { className: "agent-gui-node__conversation-list-skeleton-rib agent-gui-node__conversation-list-skeleton-rib-primary" }),
25856
+ /* @__PURE__ */ jsx43("span", { className: "agent-gui-node__conversation-list-skeleton-rib agent-gui-node__conversation-list-skeleton-rib-secondary" })
25772
25857
  ]
25773
25858
  },
25774
25859
  row.id
@@ -25780,7 +25865,7 @@ function AgentConversationListSkeleton({
25780
25865
  // agent-gui/agentGuiNode/agentGuiNodeViewConversation.tsx
25781
25866
  import { Spinner as Spinner6 } from "@tutti-os/ui-system";
25782
25867
  import { AskLinedIcon } from "@tutti-os/ui-system/icons";
25783
- import { jsx as jsx43 } from "react/jsx-runtime";
25868
+ import { jsx as jsx44 } from "react/jsx-runtime";
25784
25869
  function ConversationMeta({
25785
25870
  item,
25786
25871
  nowMs,
@@ -25789,24 +25874,24 @@ function ConversationMeta({
25789
25874
  "use memo";
25790
25875
  const kind = conversationMetaKind(item);
25791
25876
  if (kind === "loading") {
25792
- return /* @__PURE__ */ jsx43(
25877
+ return /* @__PURE__ */ jsx44(
25793
25878
  "span",
25794
25879
  {
25795
25880
  className: AgentGUINode_styles_default.conversationMeta,
25796
25881
  "data-kind": kind,
25797
25882
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
25798
- children: /* @__PURE__ */ jsx43(LoadingGlyph, {})
25883
+ children: /* @__PURE__ */ jsx44(LoadingGlyph, {})
25799
25884
  }
25800
25885
  );
25801
25886
  }
25802
25887
  if (kind === "waiting") {
25803
- return /* @__PURE__ */ jsx43(
25888
+ return /* @__PURE__ */ jsx44(
25804
25889
  "span",
25805
25890
  {
25806
25891
  className: AgentGUINode_styles_default.conversationMeta,
25807
25892
  "data-kind": kind,
25808
25893
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
25809
- children: /* @__PURE__ */ jsx43(
25894
+ children: /* @__PURE__ */ jsx44(
25810
25895
  AskLinedIcon,
25811
25896
  {
25812
25897
  "aria-hidden": "true",
@@ -25817,34 +25902,34 @@ function ConversationMeta({
25817
25902
  );
25818
25903
  }
25819
25904
  if (kind === "failed") {
25820
- return /* @__PURE__ */ jsx43(
25905
+ return /* @__PURE__ */ jsx44(
25821
25906
  "span",
25822
25907
  {
25823
25908
  className: AgentGUINode_styles_default.conversationMeta,
25824
25909
  "data-kind": kind,
25825
25910
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
25826
- children: /* @__PURE__ */ jsx43(AttentionGlyph, {})
25911
+ children: /* @__PURE__ */ jsx44(AttentionGlyph, {})
25827
25912
  }
25828
25913
  );
25829
25914
  }
25830
25915
  if (kind === "unread-complete") {
25831
- return /* @__PURE__ */ jsx43(
25916
+ return /* @__PURE__ */ jsx44(
25832
25917
  "span",
25833
25918
  {
25834
25919
  className: AgentGUINode_styles_default.conversationMeta,
25835
25920
  "data-kind": kind,
25836
25921
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
25837
- children: /* @__PURE__ */ jsx43("span", { className: AgentGUINode_styles_default.conversationUnreadLamp, "aria-hidden": "true" })
25922
+ children: /* @__PURE__ */ jsx44("span", { className: AgentGUINode_styles_default.conversationUnreadLamp, "aria-hidden": "true" })
25838
25923
  }
25839
25924
  );
25840
25925
  }
25841
- return /* @__PURE__ */ jsx43(
25926
+ return /* @__PURE__ */ jsx44(
25842
25927
  "span",
25843
25928
  {
25844
25929
  className: AgentGUINode_styles_default.conversationMeta,
25845
25930
  "data-kind": kind,
25846
25931
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
25847
- children: /* @__PURE__ */ jsx43("span", { className: AgentGUINode_styles_default.conversationTime, children: formatConversationRelativeTime(
25932
+ children: /* @__PURE__ */ jsx44("span", { className: AgentGUINode_styles_default.conversationTime, children: formatConversationRelativeTime(
25848
25933
  resolveAgentGUIConversationSortTimeUnixMs(item),
25849
25934
  nowMs,
25850
25935
  labels
@@ -26017,13 +26102,13 @@ function formatConversationRelativeTime(updatedAtUnixMs, nowMs, labels) {
26017
26102
  }
26018
26103
  function LoadingGlyph() {
26019
26104
  "use memo";
26020
- return /* @__PURE__ */ jsx43(
26105
+ return /* @__PURE__ */ jsx44(
26021
26106
  Spinner6,
26022
26107
  {
26023
26108
  className: AgentGUINode_styles_default.conversationStatusGlyph,
26024
26109
  size: 14,
26025
26110
  style: { color: "var(--text-secondary)" },
26026
- strokeWidth: 1.5,
26111
+ strokeWidth: 2.25,
26027
26112
  trackColor: "color-mix(in srgb, currentColor 24%, transparent)",
26028
26113
  testId: "agent-gui-conversation-spinner"
26029
26114
  }
@@ -26031,14 +26116,14 @@ function LoadingGlyph() {
26031
26116
  }
26032
26117
  function AttentionGlyph() {
26033
26118
  "use memo";
26034
- return /* @__PURE__ */ jsx43(
26119
+ return /* @__PURE__ */ jsx44(
26035
26120
  "svg",
26036
26121
  {
26037
26122
  viewBox: "0 0 24 24",
26038
26123
  fill: "none",
26039
26124
  "aria-hidden": "true",
26040
26125
  className: AgentGUINode_styles_default.conversationStatusGlyph,
26041
- children: /* @__PURE__ */ jsx43(
26126
+ children: /* @__PURE__ */ jsx44(
26042
26127
  "path",
26043
26128
  {
26044
26129
  d: "M12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2ZM12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM12.5 15C12.7761 15 13 15.2239 13 15.5V16.5C13 16.7761 12.7761 17 12.5 17H11.5C11.2239 17 11 16.7761 11 16.5V15.5C11 15.2239 11.2239 15 11.5 15H12.5ZM12.5 7C12.7761 7 13 7.22386 13 7.5V13.5C13 13.7761 12.7761 14 12.5 14H11.5C11.2239 14 11 13.7761 11 13.5V7.5C11 7.22386 11.2239 7 11.5 7H12.5Z",
@@ -26424,9 +26509,9 @@ import {
26424
26509
  DropdownMenuContent as DropdownMenuContent4,
26425
26510
  DropdownMenuItem as DropdownMenuItem3,
26426
26511
  DropdownMenuTrigger as DropdownMenuTrigger4,
26427
- Tooltip as Tooltip6,
26428
- TooltipContent as TooltipContent6,
26429
- TooltipTrigger as TooltipTrigger6
26512
+ Tooltip as Tooltip7,
26513
+ TooltipContent as TooltipContent7,
26514
+ TooltipTrigger as TooltipTrigger7
26430
26515
  } from "@tutti-os/ui-system";
26431
26516
  import { BareIconButton as BareIconButton2 } from "@tutti-os/ui-system/components";
26432
26517
  import {
@@ -26457,10 +26542,10 @@ import { BareIconButton } from "@tutti-os/ui-system/components";
26457
26542
  import { WorkspaceUserProjectSelect as WorkspaceUserProjectSelect2 } from "@tutti-os/workspace-user-project/ui";
26458
26543
 
26459
26544
  // app/renderer/components/icons/PinFilledIcon.tsx
26460
- import { jsx as jsx44 } from "react/jsx-runtime";
26545
+ import { jsx as jsx45 } from "react/jsx-runtime";
26461
26546
  function PinFilledIcon(props) {
26462
26547
  "use memo";
26463
- return /* @__PURE__ */ jsx44(
26548
+ return /* @__PURE__ */ jsx45(
26464
26549
  "svg",
26465
26550
  {
26466
26551
  xmlns: "http://www.w3.org/2000/svg",
@@ -26468,16 +26553,16 @@ function PinFilledIcon(props) {
26468
26553
  fill: "currentColor",
26469
26554
  "aria-hidden": true,
26470
26555
  ...props,
26471
- children: /* @__PURE__ */ jsx44("path", { d: "M21.6066 8.05025C22.1692 8.61286 22.4849 9.37592 22.4849 10.1716C22.4849 10.9672 22.1692 11.7303 21.6066 12.2929C21.044 12.8555 20.2809 13.1713 19.4853 13.1713C18.6896 13.1713 17.9266 12.8555 17.3639 12.2929L14.7054 14.9514L14.6142 15.0564C14.531 15.1669 14.4714 15.2943 14.4395 15.43C14.3972 15.6109 14.406 15.8 14.4651 15.9762L14.4678 15.9831L15.0873 17.8717L15.1466 18.072C15.2691 18.5425 15.2761 19.037 15.1646 19.5124C15.0372 20.0557 14.7607 20.5526 14.3663 20.9474L13.8284 21.4853C13.4533 21.8604 12.9446 22.0709 12.4142 22.0709C11.8838 22.0709 11.3751 21.8604 11 21.4853L7.46445 17.9497L4.63603 20.7782C4.2455 21.1687 3.61234 21.1687 3.22181 20.7782C2.83129 20.3877 2.83129 19.7545 3.22181 19.364L6.05024 16.5355L2.51471 13C2.13963 12.6249 1.92913 12.1162 1.92913 11.5858C1.92913 11.0554 2.13963 10.5466 2.51471 10.1716L3.05263 9.63365L3.20524 9.49209C3.57235 9.17309 4.01205 8.94693 4.48756 8.83539C5.03093 8.70798 5.59924 8.73494 6.12827 8.91273L8.01688 9.53214L8.02379 9.5349C8.19995 9.59404 8.38907 9.60282 8.57 9.56045C8.7057 9.52863 8.83304 9.46898 8.94358 9.38575L9.04854 9.2946L11.7071 6.63604C11.1445 6.07343 10.8287 5.31037 10.8287 4.51472C10.8287 3.71907 11.1445 2.95601 11.7071 2.3934C12.2697 1.83079 13.0328 1.51504 13.8284 1.51504C14.6241 1.51504 15.3871 1.83079 15.9497 2.3934L21.6066 8.05025Z" })
26556
+ children: /* @__PURE__ */ jsx45("path", { d: "M21.6066 8.05025C22.1692 8.61286 22.4849 9.37592 22.4849 10.1716C22.4849 10.9672 22.1692 11.7303 21.6066 12.2929C21.044 12.8555 20.2809 13.1713 19.4853 13.1713C18.6896 13.1713 17.9266 12.8555 17.3639 12.2929L14.7054 14.9514L14.6142 15.0564C14.531 15.1669 14.4714 15.2943 14.4395 15.43C14.3972 15.6109 14.406 15.8 14.4651 15.9762L14.4678 15.9831L15.0873 17.8717L15.1466 18.072C15.2691 18.5425 15.2761 19.037 15.1646 19.5124C15.0372 20.0557 14.7607 20.5526 14.3663 20.9474L13.8284 21.4853C13.4533 21.8604 12.9446 22.0709 12.4142 22.0709C11.8838 22.0709 11.3751 21.8604 11 21.4853L7.46445 17.9497L4.63603 20.7782C4.2455 21.1687 3.61234 21.1687 3.22181 20.7782C2.83129 20.3877 2.83129 19.7545 3.22181 19.364L6.05024 16.5355L2.51471 13C2.13963 12.6249 1.92913 12.1162 1.92913 11.5858C1.92913 11.0554 2.13963 10.5466 2.51471 10.1716L3.05263 9.63365L3.20524 9.49209C3.57235 9.17309 4.01205 8.94693 4.48756 8.83539C5.03093 8.70798 5.59924 8.73494 6.12827 8.91273L8.01688 9.53214L8.02379 9.5349C8.19995 9.59404 8.38907 9.60282 8.57 9.56045C8.7057 9.52863 8.83304 9.46898 8.94358 9.38575L9.04854 9.2946L11.7071 6.63604C11.1445 6.07343 10.8287 5.31037 10.8287 4.51472C10.8287 3.71907 11.1445 2.95601 11.7071 2.3934C12.2697 1.83079 13.0328 1.51504 13.8284 1.51504C14.6241 1.51504 15.3871 1.83079 15.9497 2.3934L21.6066 8.05025Z" })
26472
26557
  }
26473
26558
  );
26474
26559
  }
26475
26560
 
26476
26561
  // app/renderer/components/icons/PinLinedIcon.tsx
26477
- import { jsx as jsx45 } from "react/jsx-runtime";
26562
+ import { jsx as jsx46 } from "react/jsx-runtime";
26478
26563
  function PinLinedIcon(props) {
26479
26564
  "use memo";
26480
- return /* @__PURE__ */ jsx45(
26565
+ return /* @__PURE__ */ jsx46(
26481
26566
  "svg",
26482
26567
  {
26483
26568
  xmlns: "http://www.w3.org/2000/svg",
@@ -26485,13 +26570,13 @@ function PinLinedIcon(props) {
26485
26570
  fill: "currentColor",
26486
26571
  "aria-hidden": true,
26487
26572
  ...props,
26488
- children: /* @__PURE__ */ jsx45("path", { d: "M21.6066 8.05025C22.1692 8.61286 22.4849 9.37592 22.4849 10.1716C22.4849 10.9672 22.1692 11.7303 21.6066 12.2929C21.044 12.8555 20.2809 13.1713 19.4853 13.1713C18.6896 13.1713 17.9266 12.8555 17.3639 12.2929L14.7054 14.9514L14.6142 15.0564C14.531 15.1669 14.4714 15.2943 14.4395 15.43C14.3972 15.6109 14.406 15.8 14.4651 15.9762L14.4678 15.9831L15.0873 17.8717L15.1466 18.072C15.2691 18.5425 15.2761 19.037 15.1646 19.5124C15.0372 20.0557 14.7607 20.5526 14.3663 20.9474L13.8284 21.4853C13.4533 21.8604 12.9446 22.0709 12.4142 22.0709C11.8838 22.0709 11.3751 21.8604 11 21.4853L7.46445 17.9497L4.63603 20.7782C4.2455 21.1687 3.61234 21.1687 3.22181 20.7782C2.83129 20.3877 2.83129 19.7545 3.22181 19.364L6.05024 16.5355L2.51471 13C2.13963 12.6249 1.92913 12.1162 1.92913 11.5858C1.92913 11.0554 2.13963 10.5466 2.51471 10.1716L3.05263 9.63365L3.20524 9.49209C3.57235 9.17309 4.01205 8.94693 4.48756 8.83539C5.03093 8.70798 5.59924 8.73494 6.12827 8.91273L8.01688 9.53214L8.02379 9.5349C8.19995 9.59404 8.38907 9.60282 8.57 9.56045C8.7057 9.52863 8.83304 9.46898 8.94358 9.38575L9.04854 9.2946L11.7071 6.63604C11.1445 6.07343 10.8287 5.31037 10.8287 4.51472C10.8287 3.71907 11.1445 2.95601 11.7071 2.3934C12.2697 1.83079 13.0328 1.51504 13.8284 1.51504C14.6241 1.51504 15.3871 1.83079 15.9497 2.3934L21.6066 8.05025ZM14.5355 3.80761C14.348 3.62008 14.0936 3.51483 13.8284 3.51483C13.5632 3.51483 13.3088 3.62008 13.1213 3.80761C12.9338 3.99515 12.8285 4.2495 12.8285 4.51472C12.8285 4.74685 12.9091 4.97066 13.055 5.14863L13.2539 5.36822C13.5457 5.72416 13.7069 6.17177 13.7069 6.63604C13.7069 7.16647 13.4964 7.67518 13.1213 8.05025L10.4621 10.7095C10.0673 11.1038 9.57037 11.3803 9.02713 11.5078C8.48575 11.6347 7.92002 11.6071 7.39264 11.4311V11.4325L5.49781 10.811L5.49091 10.8082C5.31475 10.7491 5.12562 10.7403 4.94469 10.7827C4.76366 10.8251 4.59774 10.9172 4.46615 11.0486L3.92892 11.5858L12.4142 20.0711L12.9514 19.5338C13.0828 19.4022 13.1748 19.2363 13.2173 19.0553C13.2597 18.8744 13.2509 18.6852 13.1917 18.5091L13.189 18.5022L12.5675 16.6073L12.5682 16.6067C12.3924 16.0795 12.3654 15.514 12.4922 14.9729C12.6197 14.4296 12.8962 13.9327 13.2905 13.5379L15.9497 10.8787C16.3248 10.5036 16.8335 10.2931 17.3639 10.2931C17.8282 10.2931 18.2758 10.4543 18.6318 10.7461L18.8514 10.945C19.0293 11.0909 19.2531 11.1715 19.4853 11.1715C19.7505 11.1715 20.0048 11.0662 20.1924 10.8787C20.3799 10.6911 20.4852 10.4368 20.4852 10.1716C20.4852 9.90636 20.3799 9.652 20.1924 9.46447L14.5355 3.80761Z" })
26573
+ children: /* @__PURE__ */ jsx46("path", { d: "M21.6066 8.05025C22.1692 8.61286 22.4849 9.37592 22.4849 10.1716C22.4849 10.9672 22.1692 11.7303 21.6066 12.2929C21.044 12.8555 20.2809 13.1713 19.4853 13.1713C18.6896 13.1713 17.9266 12.8555 17.3639 12.2929L14.7054 14.9514L14.6142 15.0564C14.531 15.1669 14.4714 15.2943 14.4395 15.43C14.3972 15.6109 14.406 15.8 14.4651 15.9762L14.4678 15.9831L15.0873 17.8717L15.1466 18.072C15.2691 18.5425 15.2761 19.037 15.1646 19.5124C15.0372 20.0557 14.7607 20.5526 14.3663 20.9474L13.8284 21.4853C13.4533 21.8604 12.9446 22.0709 12.4142 22.0709C11.8838 22.0709 11.3751 21.8604 11 21.4853L7.46445 17.9497L4.63603 20.7782C4.2455 21.1687 3.61234 21.1687 3.22181 20.7782C2.83129 20.3877 2.83129 19.7545 3.22181 19.364L6.05024 16.5355L2.51471 13C2.13963 12.6249 1.92913 12.1162 1.92913 11.5858C1.92913 11.0554 2.13963 10.5466 2.51471 10.1716L3.05263 9.63365L3.20524 9.49209C3.57235 9.17309 4.01205 8.94693 4.48756 8.83539C5.03093 8.70798 5.59924 8.73494 6.12827 8.91273L8.01688 9.53214L8.02379 9.5349C8.19995 9.59404 8.38907 9.60282 8.57 9.56045C8.7057 9.52863 8.83304 9.46898 8.94358 9.38575L9.04854 9.2946L11.7071 6.63604C11.1445 6.07343 10.8287 5.31037 10.8287 4.51472C10.8287 3.71907 11.1445 2.95601 11.7071 2.3934C12.2697 1.83079 13.0328 1.51504 13.8284 1.51504C14.6241 1.51504 15.3871 1.83079 15.9497 2.3934L21.6066 8.05025ZM14.5355 3.80761C14.348 3.62008 14.0936 3.51483 13.8284 3.51483C13.5632 3.51483 13.3088 3.62008 13.1213 3.80761C12.9338 3.99515 12.8285 4.2495 12.8285 4.51472C12.8285 4.74685 12.9091 4.97066 13.055 5.14863L13.2539 5.36822C13.5457 5.72416 13.7069 6.17177 13.7069 6.63604C13.7069 7.16647 13.4964 7.67518 13.1213 8.05025L10.4621 10.7095C10.0673 11.1038 9.57037 11.3803 9.02713 11.5078C8.48575 11.6347 7.92002 11.6071 7.39264 11.4311V11.4325L5.49781 10.811L5.49091 10.8082C5.31475 10.7491 5.12562 10.7403 4.94469 10.7827C4.76366 10.8251 4.59774 10.9172 4.46615 11.0486L3.92892 11.5858L12.4142 20.0711L12.9514 19.5338C13.0828 19.4022 13.1748 19.2363 13.2173 19.0553C13.2597 18.8744 13.2509 18.6852 13.1917 18.5091L13.189 18.5022L12.5675 16.6073L12.5682 16.6067C12.3924 16.0795 12.3654 15.514 12.4922 14.9729C12.6197 14.4296 12.8962 13.9327 13.2905 13.5379L15.9497 10.8787C16.3248 10.5036 16.8335 10.2931 17.3639 10.2931C17.8282 10.2931 18.2758 10.4543 18.6318 10.7461L18.8514 10.945C19.0293 11.0909 19.2531 11.1715 19.4853 11.1715C19.7505 11.1715 20.0048 11.0662 20.1924 10.8787C20.3799 10.6911 20.4852 10.4368 20.4852 10.1716C20.4852 9.90636 20.3799 9.652 20.1924 9.46447L14.5355 3.80761Z" })
26489
26574
  }
26490
26575
  );
26491
26576
  }
26492
26577
 
26493
26578
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailItem.tsx
26494
- import { Fragment as Fragment12, jsx as jsx46, jsxs as jsxs33 } from "react/jsx-runtime";
26579
+ import { Fragment as Fragment12, jsx as jsx47, jsxs as jsxs33 } from "react/jsx-runtime";
26495
26580
  function agentGUIConversationIconUrl(provider, agentTargetId, workspaceId, agentTargets) {
26496
26581
  const targetPresentation = resolveAgentTargetPresentation({
26497
26582
  agentTargetId: agentTargetId ?? "",
@@ -26679,7 +26764,7 @@ var AgentGUIConversationRailItem = memo5(
26679
26764
  },
26680
26765
  children: [
26681
26766
  /* @__PURE__ */ jsxs33("span", { className: AgentGUINode_styles_default.conversationTitleRow, children: [
26682
- conversationIconUrl ? /* @__PURE__ */ jsx46(
26767
+ conversationIconUrl ? /* @__PURE__ */ jsx47(
26683
26768
  "span",
26684
26769
  {
26685
26770
  "aria-hidden": "true",
@@ -26689,13 +26774,13 @@ var AgentGUIConversationRailItem = memo5(
26689
26774
  }
26690
26775
  }
26691
26776
  ) : null,
26692
- /* @__PURE__ */ jsx46("span", { className: AgentGUINode_styles_default.conversationTitle, children: conversationPlainTitle(item, labels, uiLanguage) })
26777
+ /* @__PURE__ */ jsx47("span", { className: AgentGUINode_styles_default.conversationTitle, children: conversationPlainTitle(item, labels, uiLanguage) })
26693
26778
  ] }),
26694
- /* @__PURE__ */ jsx46(ConversationMeta, { item, nowMs: currentTimeMs, labels })
26779
+ /* @__PURE__ */ jsx47(ConversationMeta, { item, nowMs: currentTimeMs, labels })
26695
26780
  ]
26696
26781
  }
26697
26782
  ),
26698
- previewMode ? null : /* @__PURE__ */ jsx46("div", { className: AgentGUINode_styles_default.conversationActions, children: isPendingDeleteConversation ? /* @__PURE__ */ jsx46(
26783
+ previewMode ? null : /* @__PURE__ */ jsx47("div", { className: AgentGUINode_styles_default.conversationActions, children: isPendingDeleteConversation ? /* @__PURE__ */ jsx47(
26699
26784
  "button",
26700
26785
  {
26701
26786
  type: "button",
@@ -26709,10 +26794,10 @@ var AgentGUIConversationRailItem = memo5(
26709
26794
  onConfirmDeleteConversation();
26710
26795
  }
26711
26796
  },
26712
- children: /* @__PURE__ */ jsx46("span", { className: AgentGUINode_styles_default.conversationDeleteConfirmText, children: labels.deleteSessionConfirm })
26797
+ children: /* @__PURE__ */ jsx47("span", { className: AgentGUINode_styles_default.conversationDeleteConfirmText, children: labels.deleteSessionConfirm })
26713
26798
  }
26714
26799
  ) : /* @__PURE__ */ jsxs33(Fragment12, { children: [
26715
- onOpenConversationWindow ? /* @__PURE__ */ jsx46(
26800
+ onOpenConversationWindow ? /* @__PURE__ */ jsx47(
26716
26801
  BareIconButton,
26717
26802
  {
26718
26803
  className: AgentGUINode_styles_default.conversationOpenWindowButton,
@@ -26729,10 +26814,10 @@ var AgentGUIConversationRailItem = memo5(
26729
26814
  event.stopPropagation();
26730
26815
  handleOpenConversationWindow();
26731
26816
  },
26732
- children: /* @__PURE__ */ jsx46(ExternalLink2, { "aria-hidden": "true" })
26817
+ children: /* @__PURE__ */ jsx47(ExternalLink2, { "aria-hidden": "true" })
26733
26818
  }
26734
26819
  ) : null,
26735
- /* @__PURE__ */ jsx46(
26820
+ /* @__PURE__ */ jsx47(
26736
26821
  BareIconButton,
26737
26822
  {
26738
26823
  className: AgentGUINode_styles_default.conversationPinButton,
@@ -26749,10 +26834,10 @@ var AgentGUIConversationRailItem = memo5(
26749
26834
  event.stopPropagation();
26750
26835
  handleTogglePinned();
26751
26836
  },
26752
- children: pinned ? /* @__PURE__ */ jsx46(PinFilledIcon, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx46(PinLinedIcon, { "aria-hidden": "true" })
26837
+ children: pinned ? /* @__PURE__ */ jsx47(PinFilledIcon, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx47(PinLinedIcon, { "aria-hidden": "true" })
26753
26838
  }
26754
26839
  ),
26755
- /* @__PURE__ */ jsx46(
26840
+ /* @__PURE__ */ jsx47(
26756
26841
  BareIconButton,
26757
26842
  {
26758
26843
  className: AgentGUINode_styles_default.conversationDeleteButton,
@@ -26769,7 +26854,7 @@ var AgentGUIConversationRailItem = memo5(
26769
26854
  event.stopPropagation();
26770
26855
  handleRequestDelete();
26771
26856
  },
26772
- children: /* @__PURE__ */ jsx46(CanvasNodeTrashLinedIcon, { "aria-hidden": "true" })
26857
+ children: /* @__PURE__ */ jsx47(CanvasNodeTrashLinedIcon, { "aria-hidden": "true" })
26773
26858
  }
26774
26859
  )
26775
26860
  ] }) })
@@ -26780,13 +26865,13 @@ var AgentGUIConversationRailItem = memo5(
26780
26865
  return row;
26781
26866
  }
26782
26867
  return /* @__PURE__ */ jsxs33(ContextMenu, { children: [
26783
- /* @__PURE__ */ jsx46(ContextMenuTrigger, { asChild: true, children: row }),
26868
+ /* @__PURE__ */ jsx47(ContextMenuTrigger, { asChild: true, children: row }),
26784
26869
  /* @__PURE__ */ jsxs33(
26785
26870
  ContextMenuContent,
26786
26871
  {
26787
26872
  className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
26788
26873
  children: [
26789
- /* @__PURE__ */ jsx46(
26874
+ /* @__PURE__ */ jsx47(
26790
26875
  ContextMenuItem,
26791
26876
  {
26792
26877
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -26797,10 +26882,10 @@ var AgentGUIConversationRailItem = memo5(
26797
26882
  }
26798
26883
  },
26799
26884
  onSelect: handleContextMenuRename,
26800
- children: /* @__PURE__ */ jsx46("span", { children: labels.renameSession })
26885
+ children: /* @__PURE__ */ jsx47("span", { children: labels.renameSession })
26801
26886
  }
26802
26887
  ),
26803
- onOpenConversationWindow ? /* @__PURE__ */ jsx46(
26888
+ onOpenConversationWindow ? /* @__PURE__ */ jsx47(
26804
26889
  ContextMenuItem,
26805
26890
  {
26806
26891
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -26811,10 +26896,10 @@ var AgentGUIConversationRailItem = memo5(
26811
26896
  }
26812
26897
  },
26813
26898
  onSelect: handleContextMenuOpenConversationWindow,
26814
- children: /* @__PURE__ */ jsx46("span", { children: labels.openConversationWindow })
26899
+ children: /* @__PURE__ */ jsx47("span", { children: labels.openConversationWindow })
26815
26900
  }
26816
26901
  ) : null,
26817
- /* @__PURE__ */ jsx46(
26902
+ /* @__PURE__ */ jsx47(
26818
26903
  ContextMenuItem,
26819
26904
  {
26820
26905
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -26825,16 +26910,16 @@ var AgentGUIConversationRailItem = memo5(
26825
26910
  }
26826
26911
  },
26827
26912
  onSelect: handleContextMenuCopySessionLink,
26828
- children: /* @__PURE__ */ jsx46("span", { children: labels.copySessionLink })
26913
+ children: /* @__PURE__ */ jsx47("span", { children: labels.copySessionLink })
26829
26914
  }
26830
26915
  ),
26831
- /* @__PURE__ */ jsx46(
26916
+ /* @__PURE__ */ jsx47(
26832
26917
  ContextMenuItem,
26833
26918
  {
26834
26919
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
26835
26920
  disabled: !canMarkUnread,
26836
26921
  onSelect: handleMarkUnread,
26837
- children: /* @__PURE__ */ jsx46("span", { children: labels.markSessionUnread })
26922
+ children: /* @__PURE__ */ jsx47("span", { children: labels.markSessionUnread })
26838
26923
  }
26839
26924
  )
26840
26925
  ]
@@ -26863,9 +26948,9 @@ function AgentGUIProjectRailHeader({
26863
26948
  ]
26864
26949
  );
26865
26950
  return /* @__PURE__ */ jsxs33("div", { className: AgentGUINode_styles_default.projectRailHeader, children: [
26866
- /* @__PURE__ */ jsx46("div", { className: AgentGUINode_styles_default.projectRailTitle, children: /* @__PURE__ */ jsx46("span", { children: workspaceUserProjectI18n.tFirst(["projectSelect.projectLabel"]) }) }),
26951
+ /* @__PURE__ */ jsx47("div", { className: AgentGUINode_styles_default.projectRailTitle, children: /* @__PURE__ */ jsx47("span", { children: workspaceUserProjectI18n.tFirst(["projectSelect.projectLabel"]) }) }),
26867
26952
  /* @__PURE__ */ jsxs33("div", { className: AgentGUINode_styles_default.projectRailAddProject, children: [
26868
- /* @__PURE__ */ jsx46(
26953
+ /* @__PURE__ */ jsx47(
26869
26954
  WorkspaceUserProjectSelect2,
26870
26955
  {
26871
26956
  api: userProjectApi,
@@ -26896,7 +26981,7 @@ function AgentGUIProjectRailHeader({
26896
26981
  "projectSelect.addProject"
26897
26982
  ])
26898
26983
  },
26899
- renderAddProjectIcon: () => /* @__PURE__ */ jsx46(
26984
+ renderAddProjectIcon: () => /* @__PURE__ */ jsx47(
26900
26985
  NewWorkspaceLinedIcon2,
26901
26986
  {
26902
26987
  "aria-hidden": true,
@@ -26914,7 +26999,7 @@ function AgentGUIProjectRailHeader({
26914
26999
  }
26915
27000
  }
26916
27001
  ),
26917
- /* @__PURE__ */ jsx46(
27002
+ /* @__PURE__ */ jsx47(
26918
27003
  NewWorkspaceLinedIcon2,
26919
27004
  {
26920
27005
  "aria-hidden": true,
@@ -26926,7 +27011,7 @@ function AgentGUIProjectRailHeader({
26926
27011
  }
26927
27012
 
26928
27013
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailSection.tsx
26929
- import { jsx as jsx47, jsxs as jsxs34 } from "react/jsx-runtime";
27014
+ import { jsx as jsx48, jsxs as jsxs34 } from "react/jsx-runtime";
26930
27015
  var AGENT_GUI_CONVERSATION_RAIL_SECTION_PAGE_SIZE = 5;
26931
27016
  var AgentGUIConversationRailSection = memo6(
26932
27017
  function AgentGUIConversationRailSection2({
@@ -27073,7 +27158,7 @@ var AgentGUIConversationRailSection = memo6(
27073
27158
  }
27074
27159
  },
27075
27160
  children: [
27076
- /* @__PURE__ */ jsx47(
27161
+ /* @__PURE__ */ jsx48(
27077
27162
  ChevronRight2,
27078
27163
  {
27079
27164
  "aria-hidden": "true",
@@ -27081,26 +27166,26 @@ var AgentGUIConversationRailSection = memo6(
27081
27166
  }
27082
27167
  ),
27083
27168
  /* @__PURE__ */ jsxs34("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: [
27084
- isSectionCollapsed ? /* @__PURE__ */ jsx47(
27169
+ isSectionCollapsed ? /* @__PURE__ */ jsx48(
27085
27170
  FolderIcon2,
27086
27171
  {
27087
27172
  "aria-hidden": "true",
27088
27173
  className: AgentGUINode_styles_default.conversationSectionLabelIcon
27089
27174
  }
27090
- ) : /* @__PURE__ */ jsx47(
27175
+ ) : /* @__PURE__ */ jsx48(
27091
27176
  FolderOpenLinedIcon,
27092
27177
  {
27093
27178
  "aria-hidden": "true",
27094
27179
  className: AgentGUINode_styles_default.conversationSectionLabelIcon
27095
27180
  }
27096
27181
  ),
27097
- /* @__PURE__ */ jsx47("span", { children: section.label })
27182
+ /* @__PURE__ */ jsx48("span", { children: section.label })
27098
27183
  ] })
27099
27184
  ]
27100
27185
  }
27101
- ) : /* @__PURE__ */ jsx47("div", { className: AgentGUINode_styles_default.conversationSectionToggle, children: /* @__PURE__ */ jsx47("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: /* @__PURE__ */ jsx47("span", { children: section.label }) }) }),
27186
+ ) : /* @__PURE__ */ jsx48("div", { className: AgentGUINode_styles_default.conversationSectionToggle, children: /* @__PURE__ */ jsx48("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: /* @__PURE__ */ jsx48("span", { children: section.label }) }) }),
27102
27187
  canCreateConversationFromSection ? /* @__PURE__ */ jsxs34("div", { className: AgentGUINode_styles_default.conversationSectionActions, children: [
27103
- previewMode ? /* @__PURE__ */ jsx47("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx47(
27188
+ previewMode ? /* @__PURE__ */ jsx48("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx48(
27104
27189
  BareIconButton2,
27105
27190
  {
27106
27191
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
@@ -27108,14 +27193,14 @@ var AgentGUIConversationRailSection = memo6(
27108
27193
  size: "sm",
27109
27194
  disabled: createConversationDisabled,
27110
27195
  onClick: handleCreateConversation,
27111
- children: /* @__PURE__ */ jsx47(CreateChatIcon, { "aria-hidden": "true" })
27196
+ children: /* @__PURE__ */ jsx48(CreateChatIcon, { "aria-hidden": "true" })
27112
27197
  }
27113
- ) }) : /* @__PURE__ */ jsxs34(Tooltip6, { children: [
27114
- /* @__PURE__ */ jsx47(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx47(
27198
+ ) }) : /* @__PURE__ */ jsxs34(Tooltip7, { children: [
27199
+ /* @__PURE__ */ jsx48(TooltipTrigger7, { asChild: true, children: /* @__PURE__ */ jsx48(
27115
27200
  "span",
27116
27201
  {
27117
27202
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
27118
- children: /* @__PURE__ */ jsx47(
27203
+ children: /* @__PURE__ */ jsx48(
27119
27204
  BareIconButton2,
27120
27205
  {
27121
27206
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
@@ -27123,13 +27208,13 @@ var AgentGUIConversationRailSection = memo6(
27123
27208
  size: "sm",
27124
27209
  disabled: createConversationDisabled,
27125
27210
  onClick: handleCreateConversation,
27126
- children: /* @__PURE__ */ jsx47(CreateChatIcon, { "aria-hidden": "true" })
27211
+ children: /* @__PURE__ */ jsx48(CreateChatIcon, { "aria-hidden": "true" })
27127
27212
  }
27128
27213
  )
27129
27214
  }
27130
27215
  ) }),
27131
- /* @__PURE__ */ jsx47(
27132
- TooltipContent6,
27216
+ /* @__PURE__ */ jsx48(
27217
+ TooltipContent7,
27133
27218
  {
27134
27219
  side: "top",
27135
27220
  sideOffset: 6,
@@ -27139,38 +27224,38 @@ var AgentGUIConversationRailSection = memo6(
27139
27224
  )
27140
27225
  ] }),
27141
27226
  projectPath ? /* @__PURE__ */ jsxs34(DropdownMenu4, { children: [
27142
- previewMode ? /* @__PURE__ */ jsx47(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx47(
27227
+ previewMode ? /* @__PURE__ */ jsx48(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx48(
27143
27228
  "span",
27144
27229
  {
27145
27230
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
27146
- children: /* @__PURE__ */ jsx47(
27231
+ children: /* @__PURE__ */ jsx48(
27147
27232
  BareIconButton2,
27148
27233
  {
27149
27234
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
27150
27235
  "aria-label": labels.projectSectionMoreActions,
27151
27236
  size: "sm",
27152
- children: /* @__PURE__ */ jsx47(MoreHorizontalIcon, { "aria-hidden": "true" })
27237
+ children: /* @__PURE__ */ jsx48(MoreHorizontalIcon, { "aria-hidden": "true" })
27153
27238
  }
27154
27239
  )
27155
27240
  }
27156
- ) }) : /* @__PURE__ */ jsxs34(Tooltip6, { children: [
27157
- /* @__PURE__ */ jsx47(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx47(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx47(
27241
+ ) }) : /* @__PURE__ */ jsxs34(Tooltip7, { children: [
27242
+ /* @__PURE__ */ jsx48(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx48(TooltipTrigger7, { asChild: true, children: /* @__PURE__ */ jsx48(
27158
27243
  "span",
27159
27244
  {
27160
27245
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
27161
- children: /* @__PURE__ */ jsx47(
27246
+ children: /* @__PURE__ */ jsx48(
27162
27247
  BareIconButton2,
27163
27248
  {
27164
27249
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
27165
27250
  "aria-label": labels.projectSectionMoreActions,
27166
27251
  size: "sm",
27167
- children: /* @__PURE__ */ jsx47(MoreHorizontalIcon, { "aria-hidden": "true" })
27252
+ children: /* @__PURE__ */ jsx48(MoreHorizontalIcon, { "aria-hidden": "true" })
27168
27253
  }
27169
27254
  )
27170
27255
  }
27171
27256
  ) }) }),
27172
- /* @__PURE__ */ jsx47(
27173
- TooltipContent6,
27257
+ /* @__PURE__ */ jsx48(
27258
+ TooltipContent7,
27174
27259
  {
27175
27260
  side: "right",
27176
27261
  sideOffset: 6,
@@ -27186,7 +27271,7 @@ var AgentGUIConversationRailSection = memo6(
27186
27271
  className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
27187
27272
  sideOffset: 6,
27188
27273
  children: [
27189
- /* @__PURE__ */ jsx47(
27274
+ /* @__PURE__ */ jsx48(
27190
27275
  DropdownMenuItem3,
27191
27276
  {
27192
27277
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -27202,10 +27287,10 @@ var AgentGUIConversationRailSection = memo6(
27202
27287
  workspaceRoot: projectPath
27203
27288
  });
27204
27289
  },
27205
- children: /* @__PURE__ */ jsx47("span", { children: labels.projectSectionViewFiles })
27290
+ children: /* @__PURE__ */ jsx48("span", { children: labels.projectSectionViewFiles })
27206
27291
  }
27207
27292
  ),
27208
- /* @__PURE__ */ jsx47(
27293
+ /* @__PURE__ */ jsx48(
27209
27294
  DropdownMenuItem3,
27210
27295
  {
27211
27296
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -27215,10 +27300,10 @@ var AgentGUIConversationRailSection = memo6(
27215
27300
  onRequestSectionBatchDeletion(section);
27216
27301
  }
27217
27302
  },
27218
- children: /* @__PURE__ */ jsx47("span", { children: labels.batchDeleteProjectSessions })
27303
+ children: /* @__PURE__ */ jsx48("span", { children: labels.batchDeleteProjectSessions })
27219
27304
  }
27220
27305
  ),
27221
- /* @__PURE__ */ jsx47(
27306
+ /* @__PURE__ */ jsx48(
27222
27307
  DropdownMenuItem3,
27223
27308
  {
27224
27309
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -27231,7 +27316,7 @@ var AgentGUIConversationRailSection = memo6(
27231
27316
  path: projectPath
27232
27317
  });
27233
27318
  },
27234
- children: /* @__PURE__ */ jsx47("span", { children: labels.removeProject })
27319
+ children: /* @__PURE__ */ jsx48("span", { children: labels.removeProject })
27235
27320
  }
27236
27321
  )
27237
27322
  ]
@@ -27239,38 +27324,38 @@ var AgentGUIConversationRailSection = memo6(
27239
27324
  )
27240
27325
  ] }) : null,
27241
27326
  !projectPath && section.kind === "conversations" ? /* @__PURE__ */ jsxs34(DropdownMenu4, { children: [
27242
- previewMode ? /* @__PURE__ */ jsx47(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx47(
27327
+ previewMode ? /* @__PURE__ */ jsx48(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx48(
27243
27328
  "span",
27244
27329
  {
27245
27330
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
27246
- children: /* @__PURE__ */ jsx47(
27331
+ children: /* @__PURE__ */ jsx48(
27247
27332
  BareIconButton2,
27248
27333
  {
27249
27334
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
27250
27335
  "aria-label": labels.conversationsSectionMoreActions,
27251
27336
  size: "sm",
27252
- children: /* @__PURE__ */ jsx47(MoreHorizontalIcon, { "aria-hidden": "true" })
27337
+ children: /* @__PURE__ */ jsx48(MoreHorizontalIcon, { "aria-hidden": "true" })
27253
27338
  }
27254
27339
  )
27255
27340
  }
27256
- ) }) : /* @__PURE__ */ jsxs34(Tooltip6, { children: [
27257
- /* @__PURE__ */ jsx47(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx47(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx47(
27341
+ ) }) : /* @__PURE__ */ jsxs34(Tooltip7, { children: [
27342
+ /* @__PURE__ */ jsx48(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx48(TooltipTrigger7, { asChild: true, children: /* @__PURE__ */ jsx48(
27258
27343
  "span",
27259
27344
  {
27260
27345
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
27261
- children: /* @__PURE__ */ jsx47(
27346
+ children: /* @__PURE__ */ jsx48(
27262
27347
  BareIconButton2,
27263
27348
  {
27264
27349
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
27265
27350
  "aria-label": labels.conversationsSectionMoreActions,
27266
27351
  size: "sm",
27267
- children: /* @__PURE__ */ jsx47(MoreHorizontalIcon, { "aria-hidden": "true" })
27352
+ children: /* @__PURE__ */ jsx48(MoreHorizontalIcon, { "aria-hidden": "true" })
27268
27353
  }
27269
27354
  )
27270
27355
  }
27271
27356
  ) }) }),
27272
- /* @__PURE__ */ jsx47(
27273
- TooltipContent6,
27357
+ /* @__PURE__ */ jsx48(
27358
+ TooltipContent7,
27274
27359
  {
27275
27360
  side: "right",
27276
27361
  sideOffset: 6,
@@ -27279,13 +27364,13 @@ var AgentGUIConversationRailSection = memo6(
27279
27364
  }
27280
27365
  )
27281
27366
  ] }),
27282
- /* @__PURE__ */ jsx47(
27367
+ /* @__PURE__ */ jsx48(
27283
27368
  DropdownMenuContent4,
27284
27369
  {
27285
27370
  align: "end",
27286
27371
  className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
27287
27372
  sideOffset: 6,
27288
- children: /* @__PURE__ */ jsx47(
27373
+ children: /* @__PURE__ */ jsx48(
27289
27374
  DropdownMenuItem3,
27290
27375
  {
27291
27376
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -27295,7 +27380,7 @@ var AgentGUIConversationRailSection = memo6(
27295
27380
  onRequestSectionBatchDeletion(section);
27296
27381
  }
27297
27382
  },
27298
- children: /* @__PURE__ */ jsx47("span", { children: labels.batchDeleteConversations })
27383
+ children: /* @__PURE__ */ jsx48("span", { children: labels.batchDeleteConversations })
27299
27384
  }
27300
27385
  )
27301
27386
  }
@@ -27303,14 +27388,14 @@ var AgentGUIConversationRailSection = memo6(
27303
27388
  ] }) : null
27304
27389
  ] }) : null
27305
27390
  ] }),
27306
- /* @__PURE__ */ jsx47(
27391
+ /* @__PURE__ */ jsx48(
27307
27392
  "div",
27308
27393
  {
27309
27394
  className: AgentGUINode_styles_default.conversationSectionItems,
27310
27395
  "aria-hidden": isSectionCollapsed ? "true" : void 0,
27311
27396
  children: /* @__PURE__ */ jsxs34("div", { className: AgentGUINode_styles_default.conversationSectionItemsInner, children: [
27312
- !isSectionCollapsed && visibleItems.length === 0 ? /* @__PURE__ */ jsx47("div", { className: AgentGUINode_styles_default.conversationSectionEmpty, children: labels.emptyProjectConversations }) : null,
27313
- visibleItems.map((item) => /* @__PURE__ */ jsx47(
27397
+ !isSectionCollapsed && visibleItems.length === 0 ? /* @__PURE__ */ jsx48("div", { className: AgentGUINode_styles_default.conversationSectionEmpty, children: labels.emptyProjectConversations }) : null,
27398
+ visibleItems.map((item) => /* @__PURE__ */ jsx48(
27314
27399
  AgentGUIConversationRailItem,
27315
27400
  {
27316
27401
  active: item.id === activeConversationId,
@@ -27336,7 +27421,7 @@ var AgentGUIConversationRailSection = memo6(
27336
27421
  item.id
27337
27422
  )),
27338
27423
  canShowMore || canShowLess ? /* @__PURE__ */ jsxs34("div", { className: AgentGUINode_styles_default.conversationSectionPagination, children: [
27339
- canShowMore ? /* @__PURE__ */ jsx47(
27424
+ canShowMore ? /* @__PURE__ */ jsx48(
27340
27425
  "button",
27341
27426
  {
27342
27427
  type: "button",
@@ -27346,7 +27431,7 @@ var AgentGUIConversationRailSection = memo6(
27346
27431
  children: labels.showMoreConversations
27347
27432
  }
27348
27433
  ) : null,
27349
- canShowLess ? /* @__PURE__ */ jsx47(
27434
+ canShowLess ? /* @__PURE__ */ jsx48(
27350
27435
  "button",
27351
27436
  {
27352
27437
  type: "button",
@@ -27366,7 +27451,7 @@ var AgentGUIConversationRailSection = memo6(
27366
27451
  );
27367
27452
 
27368
27453
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailPane.tsx
27369
- import { jsx as jsx48, jsxs as jsxs35 } from "react/jsx-runtime";
27454
+ import { jsx as jsx49, jsxs as jsxs35 } from "react/jsx-runtime";
27370
27455
  var AGENT_GUI_CONFIRMATION_DIALOG_CLASS_NAME = "nodrag tsh-desktop-no-drag [-webkit-app-region:no-drag]";
27371
27456
  var AGENT_GUI_CONFIRMATION_DIALOG_OVERLAY_CLASS_NAME = "nodrag tsh-desktop-no-drag [-webkit-app-region:no-drag]";
27372
27457
  function useDelayedBoolean(value, delayMs) {
@@ -27672,7 +27757,7 @@ var AgentGUIConversationRailPane = memo7(
27672
27757
  "aria-hidden": isCollapsed ? "true" : void 0,
27673
27758
  children: [
27674
27759
  /* @__PURE__ */ jsxs35("div", { className: AgentGUINode_styles_default.railToolbar, children: [
27675
- /* @__PURE__ */ jsx48(
27760
+ /* @__PURE__ */ jsx49(
27676
27761
  TaskSearchField,
27677
27762
  {
27678
27763
  value: conversationQuery,
@@ -27691,27 +27776,27 @@ var AgentGUIConversationRailPane = memo7(
27691
27776
  disabled: createConversationDisabled,
27692
27777
  onClick: () => onCreateConversation(),
27693
27778
  children: [
27694
- /* @__PURE__ */ jsx48(CreateChatIcon2, { "aria-hidden": "true" }),
27695
- /* @__PURE__ */ jsx48("span", { children: labels.newConversation })
27779
+ /* @__PURE__ */ jsx49(CreateChatIcon2, { "aria-hidden": "true" }),
27780
+ /* @__PURE__ */ jsx49("span", { children: labels.newConversation })
27696
27781
  ]
27697
27782
  }
27698
27783
  )
27699
27784
  ] }),
27700
- /* @__PURE__ */ jsx48(
27785
+ /* @__PURE__ */ jsx49(
27701
27786
  ScrollArea,
27702
27787
  {
27703
27788
  scrollbarMode: "native",
27704
27789
  className: "min-h-0 flex-1 [&_[data-orientation=vertical][data-slot=scroll-area-scrollbar]]:opacity-100",
27705
27790
  viewportRef: conversationListRef,
27706
27791
  viewportClassName: AgentGUINode_styles_default.conversationList,
27707
- children: shouldShowConversationSkeleton ? /* @__PURE__ */ jsx48(
27792
+ children: shouldShowConversationSkeleton ? /* @__PURE__ */ jsx49(
27708
27793
  AgentConversationListSkeleton,
27709
27794
  {
27710
27795
  label: labels.loadingConversations
27711
27796
  }
27712
27797
  ) : shouldShowConversationSearchError ? /* @__PURE__ */ jsxs35("div", { className: AgentGUINode_styles_default.emptyState, children: [
27713
- /* @__PURE__ */ jsx48("span", { children: labels.searchFailed }),
27714
- /* @__PURE__ */ jsx48(
27798
+ /* @__PURE__ */ jsx49("span", { children: labels.searchFailed }),
27799
+ /* @__PURE__ */ jsx49(
27715
27800
  SystemButton,
27716
27801
  {
27717
27802
  type: "button",
@@ -27721,7 +27806,7 @@ var AgentGUIConversationRailPane = memo7(
27721
27806
  children: labels.retrySearch
27722
27807
  }
27723
27808
  )
27724
- ] }) : shouldShowConversationEmptyState ? /* @__PURE__ */ jsx48("div", { className: AgentGUINode_styles_default.emptyState, children: /* @__PURE__ */ jsx48("span", { children: conversationQuery.trim() ? labels.searchNoConversations : conversations.length === 0 ? labels.noConversations : labels.conversationUnavailable }) }) : /* @__PURE__ */ jsx48(
27809
+ ] }) : shouldShowConversationEmptyState ? /* @__PURE__ */ jsx49("div", { className: AgentGUINode_styles_default.emptyState, children: /* @__PURE__ */ jsx49("span", { children: conversationQuery.trim() ? labels.searchNoConversations : conversations.length === 0 ? labels.noConversations : labels.conversationUnavailable }) }) : /* @__PURE__ */ jsx49(
27725
27810
  "fieldset",
27726
27811
  {
27727
27812
  className: "contents",
@@ -27753,7 +27838,7 @@ var AgentGUIConversationRailPane = memo7(
27753
27838
  ).length + (activeOverlayCountsTowardTotal && !activeOverlayIsCanonical ? 1 : 0);
27754
27839
  const sectionHasMore = searchSectionHasMore || !conversationQuery.trim() && sectionPageState?.hasMore === true;
27755
27840
  return /* @__PURE__ */ jsxs35(Fragment13, { children: [
27756
- showProjectRailHeader ? /* @__PURE__ */ jsx48(
27841
+ showProjectRailHeader ? /* @__PURE__ */ jsx49(
27757
27842
  AgentGUIProjectRailHeader,
27758
27843
  {
27759
27844
  disabled: railInteractionsLocked,
@@ -27762,7 +27847,7 @@ var AgentGUIConversationRailPane = memo7(
27762
27847
  workspaceUserProjectI18n
27763
27848
  }
27764
27849
  ) : null,
27765
- /* @__PURE__ */ jsx48(
27850
+ /* @__PURE__ */ jsx49(
27766
27851
  AgentGUIConversationRailSection,
27767
27852
  {
27768
27853
  activeConversation: activeOverlayConversation,
@@ -27813,8 +27898,8 @@ var AgentGUIConversationRailPane = memo7(
27813
27898
  )
27814
27899
  }
27815
27900
  ),
27816
- footer ? /* @__PURE__ */ jsx48("div", { className: "shrink-0 pb-2", children: footer }) : null,
27817
- /* @__PURE__ */ jsx48(
27901
+ footer ? /* @__PURE__ */ jsx49("div", { className: "shrink-0 pb-2", children: footer }) : null,
27902
+ /* @__PURE__ */ jsx49(
27818
27903
  ConfirmationDialog,
27819
27904
  {
27820
27905
  cancelLabel: labels.cancel,
@@ -27869,7 +27954,7 @@ var AgentGUIConversationRailPane = memo7(
27869
27954
  import {
27870
27955
  selectWorkspaceAgentConsumerSessions as selectWorkspaceAgentConsumerSessions4
27871
27956
  } from "@tutti-os/agent-activity-core";
27872
- import { useDeferredValue, useEffect as useEffect31, useMemo as useMemo33, useRef as useRef34 } from "react";
27957
+ import { useEffect as useEffect31, useMemo as useMemo33, useRef as useRef34 } from "react";
27873
27958
 
27874
27959
  // agent-gui/agentGuiNode/controller/AgentGUIConversationRailQueryController.ts
27875
27960
  import {
@@ -27878,6 +27963,7 @@ import {
27878
27963
  } from "@tutti-os/agent-activity-core";
27879
27964
  var SECTION_PAGE_SIZE = 5;
27880
27965
  var SEARCH_PAGE_SIZE = 100;
27966
+ var CONVERSATION_SEARCH_DEBOUNCE_MS = 300;
27881
27967
  var EMPTY_SEARCH_STATE = {
27882
27968
  failed: false,
27883
27969
  hasMore: false,
@@ -27906,6 +27992,7 @@ var AgentGUIConversationRailQueryController = class {
27906
27992
  getActiveConversationId;
27907
27993
  listeners = /* @__PURE__ */ new Set();
27908
27994
  runtime;
27995
+ scheduler;
27909
27996
  workspaceId;
27910
27997
  pagingAbortControllers = /* @__PURE__ */ new Map();
27911
27998
  queryState = EMPTY_QUERY_STATE;
@@ -27917,6 +28004,7 @@ var AgentGUIConversationRailQueryController = class {
27917
28004
  searchQuery = "";
27918
28005
  searchRequestKey = null;
27919
28006
  searchAbortController = null;
28007
+ searchDebounceTask = null;
27920
28008
  pagingRequestSequence = 0;
27921
28009
  searchRequestSequence = 0;
27922
28010
  attached = false;
@@ -27927,6 +28015,7 @@ var AgentGUIConversationRailQueryController = class {
27927
28015
  this.engine = input.engine;
27928
28016
  this.getActiveConversationId = input.getActiveConversationId;
27929
28017
  this.runtime = input.runtime;
28018
+ this.scheduler = input.scheduler ?? agentGuiScheduler;
27930
28019
  this.workspaceId = input.workspaceId;
27931
28020
  this.previousMembershipRecords = membershipRecords(
27932
28021
  this.engine.getSnapshot()
@@ -27975,7 +28064,7 @@ var AgentGUIConversationRailQueryController = class {
27975
28064
  const query = value.trim();
27976
28065
  if (query === this.searchQuery) return;
27977
28066
  this.searchQuery = query;
27978
- this.requestSearch();
28067
+ this.scheduleSearch();
27979
28068
  }
27980
28069
  loadMoreSectionConversations = (section) => {
27981
28070
  const scopeKey = this.railSectionQueryKey;
@@ -28214,6 +28303,7 @@ var AgentGUIConversationRailQueryController = class {
28214
28303
  });
28215
28304
  }
28216
28305
  requestSearch() {
28306
+ this.clearSearchDebounceTimer();
28217
28307
  this.searchRequestKey = this.searchEnabled() && this.searchQuery ? JSON.stringify([
28218
28308
  this.workspaceId,
28219
28309
  this.sectionAgentTargetId,
@@ -28274,6 +28364,29 @@ var AgentGUIConversationRailQueryController = class {
28274
28364
  this.emit();
28275
28365
  });
28276
28366
  }
28367
+ scheduleSearch() {
28368
+ this.clearSearchDebounceTimer();
28369
+ this.searchRequestSequence += 1;
28370
+ this.searchAbortController?.abort();
28371
+ this.searchAbortController = null;
28372
+ if (!this.searchQuery || !this.searchEnabled()) {
28373
+ this.requestSearch();
28374
+ return;
28375
+ }
28376
+ this.searchRequestKey = null;
28377
+ this.emit();
28378
+ this.searchDebounceTask = this.scheduler.schedule(
28379
+ CONVERSATION_SEARCH_DEBOUNCE_MS,
28380
+ () => {
28381
+ this.searchDebounceTask = null;
28382
+ this.requestSearch();
28383
+ }
28384
+ );
28385
+ }
28386
+ clearSearchDebounceTimer() {
28387
+ this.searchDebounceTask?.cancel();
28388
+ this.searchDebounceTask = null;
28389
+ }
28277
28390
  upsertSessions(sessions) {
28278
28391
  this.ingestingSessions = true;
28279
28392
  try {
@@ -28331,6 +28444,7 @@ var AgentGUIConversationRailQueryController = class {
28331
28444
  this.unsubscribeEngine?.();
28332
28445
  this.unsubscribeEngine = null;
28333
28446
  this.cancelPagingRequests();
28447
+ this.clearSearchDebounceTimer();
28334
28448
  this.searchRequestSequence += 1;
28335
28449
  this.searchAbortController?.abort();
28336
28450
  this.searchAbortController = null;
@@ -28386,7 +28500,6 @@ function useAgentGUIConversationRailQuery({
28386
28500
  );
28387
28501
  const activeConversationIdRef = useRef34(activeConversationId);
28388
28502
  activeConversationIdRef.current = activeConversationId;
28389
- const deferredConversationQuery = useDeferredValue(conversationQuery);
28390
28503
  const controller = useMemo33(
28391
28504
  () => new AgentGUIConversationRailQueryController({
28392
28505
  engine,
@@ -28404,11 +28517,11 @@ function useAgentGUIConversationRailQuery({
28404
28517
  sectionAgentTargetFallbackId,
28405
28518
  userProjects
28406
28519
  });
28407
- controller.setSearchQuery(deferredConversationQuery);
28520
+ controller.setSearchQuery(conversationQuery);
28408
28521
  }, [
28409
28522
  controller,
28410
28523
  conversationFilter,
28411
- deferredConversationQuery,
28524
+ conversationQuery,
28412
28525
  previewMode,
28413
28526
  sectionAgentTargetFallbackId,
28414
28527
  userProjects
@@ -28454,7 +28567,7 @@ function identitySnapshot(snapshot) {
28454
28567
  }
28455
28568
 
28456
28569
  // agent-gui/agentGuiNode/controller/AgentGUIConversationRailController.tsx
28457
- import { jsx as jsx49 } from "react/jsx-runtime";
28570
+ import { jsx as jsx50 } from "react/jsx-runtime";
28458
28571
  var AgentGUIConversationRailController = memo8(
28459
28572
  function AgentGUIConversationRailController2(props) {
28460
28573
  const [conversationQuery, setConversationQuery] = useState28("");
@@ -28467,7 +28580,7 @@ var AgentGUIConversationRailController = memo8(
28467
28580
  userProjects: props.userProjects,
28468
28581
  workspaceId: props.workspaceId
28469
28582
  });
28470
- return /* @__PURE__ */ jsx49(
28583
+ return /* @__PURE__ */ jsx50(
28471
28584
  AgentGUIConversationRailPane,
28472
28585
  {
28473
28586
  ...props,
@@ -28659,7 +28772,7 @@ import { cn as cn6 } from "@tutti-os/ui-system";
28659
28772
  // agent-gui/agentGuiNode/AgentGoalBanner.tsx
28660
28773
  import { useEffect as useEffect32, useState as useState29 } from "react";
28661
28774
  import { CirclePause, CirclePlay, Pencil as Pencil2, Target as Target3, Trash2 } from "lucide-react";
28662
- import { jsx as jsx50, jsxs as jsxs36 } from "react/jsx-runtime";
28775
+ import { jsx as jsx51, jsxs as jsxs36 } from "react/jsx-runtime";
28663
28776
  var RESUMABLE_GOAL_STATUSES = /* @__PURE__ */ new Set([
28664
28777
  "paused",
28665
28778
  "blocked",
@@ -28768,7 +28881,7 @@ function AgentGoalBanner({
28768
28881
  onEditObjective?.(next);
28769
28882
  }
28770
28883
  };
28771
- return /* @__PURE__ */ jsx50("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: /* @__PURE__ */ jsx50(
28884
+ return /* @__PURE__ */ jsx51("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: /* @__PURE__ */ jsx51(
28772
28885
  "section",
28773
28886
  {
28774
28887
  className: cn(AgentGUIChrome_styles_default.chromeCard, AgentGUIChrome_styles_default.chromeCardMuted),
@@ -28776,8 +28889,8 @@ function AgentGoalBanner({
28776
28889
  "data-testid": "agent-gui-goal-banner",
28777
28890
  children: /* @__PURE__ */ jsxs36("div", { className: AgentGUIChrome_styles_default.chromeMetaRow, children: [
28778
28891
  /* @__PURE__ */ jsxs36("div", { className: AgentGUIChrome_styles_default.chromeMessageSlot, children: [
28779
- /* @__PURE__ */ jsx50("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: /* @__PURE__ */ jsx50(Target3, { "aria-hidden": true, className: "size-3.5" }) }),
28780
- editDraft !== null ? /* @__PURE__ */ jsx50(
28892
+ /* @__PURE__ */ jsx51("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: /* @__PURE__ */ jsx51(Target3, { "aria-hidden": true, className: "size-3.5" }) }),
28893
+ editDraft !== null ? /* @__PURE__ */ jsx51(
28781
28894
  "input",
28782
28895
  {
28783
28896
  className: AgentGUIChrome_styles_default.chromeGoalEditInput,
@@ -28803,8 +28916,8 @@ function AgentGoalBanner({
28803
28916
  className: cn(AgentGUIChrome_styles_default.chromeMessage, AgentGUIChrome_styles_default.chromeNoticeMessage),
28804
28917
  title: fullMessage,
28805
28918
  children: [
28806
- /* @__PURE__ */ jsx50("span", { className: AgentGUIChrome_styles_default.chromeNoticeTitle, children: title }),
28807
- /* @__PURE__ */ jsx50(
28919
+ /* @__PURE__ */ jsx51("span", { className: AgentGUIChrome_styles_default.chromeNoticeTitle, children: title }),
28920
+ /* @__PURE__ */ jsx51(
28808
28921
  "span",
28809
28922
  {
28810
28923
  className: AgentGUIChrome_styles_default.chromeNoticeDescription,
@@ -28817,7 +28930,7 @@ function AgentGoalBanner({
28817
28930
  )
28818
28931
  ] }),
28819
28932
  hasActions ? /* @__PURE__ */ jsxs36("div", { className: AgentGUIChrome_styles_default.chromeGoalActions, children: [
28820
- onEditObjective !== void 0 && editDraft === null ? /* @__PURE__ */ jsx50(
28933
+ onEditObjective !== void 0 && editDraft === null ? /* @__PURE__ */ jsx51(
28821
28934
  "button",
28822
28935
  {
28823
28936
  type: "button",
@@ -28825,10 +28938,10 @@ function AgentGoalBanner({
28825
28938
  title: labels.editAction,
28826
28939
  "aria-label": labels.editAction,
28827
28940
  "data-testid": "agent-gui-goal-banner-edit",
28828
- children: /* @__PURE__ */ jsx50(Pencil2, { "aria-hidden": true, className: "size-3.5" })
28941
+ children: /* @__PURE__ */ jsx51(Pencil2, { "aria-hidden": true, className: "size-3.5" })
28829
28942
  }
28830
28943
  ) : null,
28831
- showPause ? /* @__PURE__ */ jsx50(
28944
+ showPause ? /* @__PURE__ */ jsx51(
28832
28945
  "button",
28833
28946
  {
28834
28947
  type: "button",
@@ -28836,10 +28949,10 @@ function AgentGoalBanner({
28836
28949
  title: labels.pauseAction,
28837
28950
  "aria-label": labels.pauseAction,
28838
28951
  "data-testid": "agent-gui-goal-banner-pause",
28839
- children: /* @__PURE__ */ jsx50(CirclePause, { "aria-hidden": true, className: "size-3.5" })
28952
+ children: /* @__PURE__ */ jsx51(CirclePause, { "aria-hidden": true, className: "size-3.5" })
28840
28953
  }
28841
28954
  ) : null,
28842
- showResume ? /* @__PURE__ */ jsx50(
28955
+ showResume ? /* @__PURE__ */ jsx51(
28843
28956
  "button",
28844
28957
  {
28845
28958
  type: "button",
@@ -28847,10 +28960,10 @@ function AgentGoalBanner({
28847
28960
  title: labels.resumeAction,
28848
28961
  "aria-label": labels.resumeAction,
28849
28962
  "data-testid": "agent-gui-goal-banner-resume",
28850
- children: /* @__PURE__ */ jsx50(CirclePlay, { "aria-hidden": true, className: "size-3.5" })
28963
+ children: /* @__PURE__ */ jsx51(CirclePlay, { "aria-hidden": true, className: "size-3.5" })
28851
28964
  }
28852
28965
  ) : null,
28853
- onClearGoal !== void 0 ? /* @__PURE__ */ jsx50(
28966
+ onClearGoal !== void 0 ? /* @__PURE__ */ jsx51(
28854
28967
  "button",
28855
28968
  {
28856
28969
  type: "button",
@@ -28858,10 +28971,10 @@ function AgentGoalBanner({
28858
28971
  title: labels.clearAction,
28859
28972
  "aria-label": labels.clearAction,
28860
28973
  "data-testid": "agent-gui-goal-banner-clear",
28861
- children: /* @__PURE__ */ jsx50(Trash2, { "aria-hidden": true, className: "size-3.5" })
28974
+ children: /* @__PURE__ */ jsx51(Trash2, { "aria-hidden": true, className: "size-3.5" })
28862
28975
  }
28863
28976
  ) : null
28864
- ] }) : /* @__PURE__ */ jsx50(
28977
+ ] }) : /* @__PURE__ */ jsx51(
28865
28978
  "span",
28866
28979
  {
28867
28980
  className: AgentGUIChrome_styles_default.chromeGoalHint,
@@ -28875,7 +28988,7 @@ function AgentGoalBanner({
28875
28988
  }
28876
28989
 
28877
28990
  // agent-gui/agentGuiNode/view/AgentGUIBottomDockPane.tsx
28878
- import { jsx as jsx51, jsxs as jsxs37 } from "react/jsx-runtime";
28991
+ import { jsx as jsx52, jsxs as jsxs37 } from "react/jsx-runtime";
28879
28992
  var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28880
28993
  bottomDockRef,
28881
28994
  showScrollToBottom,
@@ -28915,7 +29028,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28915
29028
  className: AgentGUINode_styles_default.bottomDock,
28916
29029
  "data-testid": "agent-gui-bottom-dock",
28917
29030
  children: [
28918
- showScrollToBottom ? /* @__PURE__ */ jsx51(
29031
+ showScrollToBottom ? /* @__PURE__ */ jsx52(
28919
29032
  "button",
28920
29033
  {
28921
29034
  type: "button",
@@ -28928,15 +29041,15 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28928
29041
  title: scrollToBottomLabel,
28929
29042
  onPointerDown: (event) => event.stopPropagation(),
28930
29043
  onClick: onScrollToBottom,
28931
- children: /* @__PURE__ */ jsx51(ChevronsDown, { "aria-hidden": "true", size: 15, strokeWidth: 2.2 })
29044
+ children: /* @__PURE__ */ jsx52(ChevronsDown, { "aria-hidden": "true", size: 15, strokeWidth: 2.2 })
28932
29045
  }
28933
29046
  ) : null,
28934
- bottomDockLiftedPrompt ? /* @__PURE__ */ jsx51(
29047
+ bottomDockLiftedPrompt ? /* @__PURE__ */ jsx52(
28935
29048
  "div",
28936
29049
  {
28937
29050
  className: AgentGUINode_styles_default.bottomDockPrompt,
28938
29051
  "data-testid": "agent-gui-bottom-dock-active-prompt",
28939
- children: /* @__PURE__ */ jsx51(
29052
+ children: /* @__PURE__ */ jsx52(
28940
29053
  AgentInteractivePromptSurface,
28941
29054
  {
28942
29055
  prompt: bottomDockLiftedPrompt,
@@ -28951,7 +29064,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28951
29064
  )
28952
29065
  }
28953
29066
  ) : null,
28954
- inlineNoticeChrome ? /* @__PURE__ */ jsx51(
29067
+ inlineNoticeChrome ? /* @__PURE__ */ jsx52(
28955
29068
  AgentSessionChrome,
28956
29069
  {
28957
29070
  chrome: inlineNoticeChrome,
@@ -28963,7 +29076,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28963
29076
  labels: chromeLabels
28964
29077
  }
28965
29078
  ) : null,
28966
- /* @__PURE__ */ jsx51(
29079
+ /* @__PURE__ */ jsx52(
28967
29080
  AgentSessionChrome,
28968
29081
  {
28969
29082
  chrome: sessionChrome,
@@ -28975,7 +29088,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28975
29088
  labels: chromeLabels
28976
29089
  }
28977
29090
  ),
28978
- showGoalBanner ? /* @__PURE__ */ jsx51(
29091
+ showGoalBanner ? /* @__PURE__ */ jsx52(
28979
29092
  AgentGoalBanner,
28980
29093
  {
28981
29094
  objective: goalObjective,
@@ -28989,12 +29102,12 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28989
29102
  onClearGoal: () => onGoalControl("clear")
28990
29103
  }
28991
29104
  ) : null,
28992
- bottomDockReplacementPrompt ? /* @__PURE__ */ jsx51(
29105
+ bottomDockReplacementPrompt ? /* @__PURE__ */ jsx52(
28993
29106
  "div",
28994
29107
  {
28995
29108
  className: AgentGUINode_styles_default.bottomDockPrompt,
28996
29109
  "data-testid": "agent-gui-bottom-dock-active-prompt",
28997
- children: /* @__PURE__ */ jsx51(
29110
+ children: /* @__PURE__ */ jsx52(
28998
29111
  AgentInteractivePromptSurface,
28999
29112
  {
29000
29113
  prompt: bottomDockReplacementPrompt,
@@ -29008,7 +29121,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
29008
29121
  }
29009
29122
  )
29010
29123
  }
29011
- ) : /* @__PURE__ */ jsx51(AgentComposer, { ...composerProps })
29124
+ ) : /* @__PURE__ */ jsx52(AgentComposer, { ...composerProps })
29012
29125
  ]
29013
29126
  }
29014
29127
  );
@@ -29017,8 +29130,8 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
29017
29130
  // agent-gui/agentGuiNode/view/AgentGUIDetailHeader.tsx
29018
29131
  import { memo as memo10 } from "react";
29019
29132
  import { Info as Info2 } from "lucide-react";
29020
- import { Tooltip as Tooltip7, TooltipContent as TooltipContent7, TooltipTrigger as TooltipTrigger7 } from "@tutti-os/ui-system";
29021
- import { jsx as jsx52, jsxs as jsxs38 } from "react/jsx-runtime";
29133
+ import { Tooltip as Tooltip8, TooltipContent as TooltipContent8, TooltipTrigger as TooltipTrigger8 } from "@tutti-os/ui-system";
29134
+ import { jsx as jsx53, jsxs as jsxs38 } from "react/jsx-runtime";
29022
29135
  var AgentGUIDetailHeader = memo10(function AgentGUIDetailHeader2({
29023
29136
  activeConversation,
29024
29137
  hidden,
@@ -29031,9 +29144,9 @@ var AgentGUIDetailHeader = memo10(function AgentGUIDetailHeader2({
29031
29144
  return null;
29032
29145
  }
29033
29146
  const runPath = activeConversation.cwd.trim();
29034
- return /* @__PURE__ */ jsx52("div", { className: AgentGUINode_styles_default.detailHeader, children: /* @__PURE__ */ jsxs38("span", { className: AgentGUINode_styles_default.detailHeaderTitleGroup, children: [
29035
- /* @__PURE__ */ jsx52("span", { className: AgentGUINode_styles_default.detailHeaderTitle, children: conversationPlainTitle(activeConversation, labels, uiLanguage) }),
29036
- runPath ? /* @__PURE__ */ jsx52(AgentRunPathInfo, { path: runPath, previewMode }) : null
29147
+ return /* @__PURE__ */ jsx53("div", { className: AgentGUINode_styles_default.detailHeader, children: /* @__PURE__ */ jsxs38("span", { className: AgentGUINode_styles_default.detailHeaderTitleGroup, children: [
29148
+ /* @__PURE__ */ jsx53("span", { className: AgentGUINode_styles_default.detailHeaderTitle, children: conversationPlainTitle(activeConversation, labels, uiLanguage) }),
29149
+ runPath ? /* @__PURE__ */ jsx53(AgentRunPathInfo, { path: runPath, previewMode }) : null
29037
29150
  ] }) });
29038
29151
  });
29039
29152
  function AgentRunPathInfo({
@@ -29041,22 +29154,22 @@ function AgentRunPathInfo({
29041
29154
  previewMode
29042
29155
  }) {
29043
29156
  "use memo";
29044
- const trigger = /* @__PURE__ */ jsx52(
29157
+ const trigger = /* @__PURE__ */ jsx53(
29045
29158
  "button",
29046
29159
  {
29047
29160
  type: "button",
29048
29161
  className: AgentGUINode_styles_default.detailHeaderPathInfo,
29049
29162
  "aria-label": path,
29050
- children: /* @__PURE__ */ jsx52(Info2, { size: 14, strokeWidth: 2, "aria-hidden": "true" })
29163
+ children: /* @__PURE__ */ jsx53(Info2, { size: 14, strokeWidth: 2, "aria-hidden": "true" })
29051
29164
  }
29052
29165
  );
29053
29166
  if (previewMode) {
29054
29167
  return trigger;
29055
29168
  }
29056
- return /* @__PURE__ */ jsxs38(Tooltip7, { children: [
29057
- /* @__PURE__ */ jsx52(TooltipTrigger7, { asChild: true, children: trigger }),
29058
- /* @__PURE__ */ jsx52(
29059
- TooltipContent7,
29169
+ return /* @__PURE__ */ jsxs38(Tooltip8, { children: [
29170
+ /* @__PURE__ */ jsx53(TooltipTrigger8, { asChild: true, children: trigger }),
29171
+ /* @__PURE__ */ jsx53(
29172
+ TooltipContent8,
29060
29173
  {
29061
29174
  side: "top",
29062
29175
  align: "start",
@@ -29069,7 +29182,7 @@ function AgentRunPathInfo({
29069
29182
 
29070
29183
  // agent-gui/agentGuiNode/view/AgentGUIConversationTimelinePane.tsx
29071
29184
  import { memo as memo11 } from "react";
29072
- import { Fragment as Fragment14, jsx as jsx53, jsxs as jsxs39 } from "react/jsx-runtime";
29185
+ import { Fragment as Fragment14, jsx as jsx54, jsxs as jsxs39 } from "react/jsx-runtime";
29073
29186
  var EMPTY_WORKSPACE_APP_ICONS3 = [];
29074
29187
  var AgentGUIConversationTimelinePane = memo11(
29075
29188
  function AgentGUIConversationTimelinePane2({
@@ -29087,16 +29200,16 @@ var AgentGUIConversationTimelinePane = memo11(
29087
29200
  }) {
29088
29201
  "use memo";
29089
29202
  return /* @__PURE__ */ jsxs39(Fragment14, { children: [
29090
- isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx53(
29203
+ isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx54(
29091
29204
  "div",
29092
29205
  {
29093
29206
  className: "mx-auto flex h-8 items-center justify-center text-[12px] text-[var(--text-secondary)]",
29094
29207
  "data-testid": "agent-gui-older-messages-loading",
29095
29208
  role: "status",
29096
- children: /* @__PURE__ */ jsx53("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
29209
+ children: /* @__PURE__ */ jsx54("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
29097
29210
  }
29098
29211
  ) : null,
29099
- /* @__PURE__ */ jsx53(
29212
+ /* @__PURE__ */ jsx54(
29100
29213
  AgentConversationFlow,
29101
29214
  {
29102
29215
  conversation,
@@ -29431,10 +29544,10 @@ function useAgentGUIDetailScroll(input) {
29431
29544
  import { useMemo as useMemo34 } from "react";
29432
29545
 
29433
29546
  // app/renderer/components/icons/UnavailableChatIcon.tsx
29434
- import { jsx as jsx54 } from "react/jsx-runtime";
29547
+ import { jsx as jsx55 } from "react/jsx-runtime";
29435
29548
  function UnavailableChatIcon(props) {
29436
29549
  "use memo";
29437
- return /* @__PURE__ */ jsx54(
29550
+ return /* @__PURE__ */ jsx55(
29438
29551
  "svg",
29439
29552
  {
29440
29553
  xmlns: "http://www.w3.org/2000/svg",
@@ -29442,13 +29555,13 @@ function UnavailableChatIcon(props) {
29442
29555
  fill: "currentColor",
29443
29556
  "aria-hidden": true,
29444
29557
  ...props,
29445
- children: /* @__PURE__ */ jsx54("path", { d: "M20.833 2.125C21.6507 2.125 22.4355 2.45019 23.0137 3.02832C23.5916 3.60645 23.9159 4.39053 23.916 5.20801V17.708C23.916 18.5257 23.5918 19.3104 23.0137 19.8887C22.4355 20.4668 21.6507 20.792 20.833 20.792H7.1123C6.82516 20.7922 6.5497 20.9063 6.34668 21.1094L4.05273 23.4033C3.80954 23.6464 3.49934 23.8118 3.16211 23.8789C2.82492 23.9459 2.47487 23.9118 2.15723 23.7803C1.83953 23.6486 1.56707 23.4256 1.37598 23.1396C1.18489 22.8536 1.08305 22.5168 1.08301 22.1729V5.20801C1.08309 4.39045 1.40827 3.60647 1.98633 3.02832C2.56441 2.45024 3.3485 2.12517 4.16602 2.125H20.833ZM16.1533 7.80566C15.7628 7.41518 15.1298 7.41527 14.7393 7.80566L12.5 10.0439L10.2607 7.80469C9.87031 7.41464 9.23712 7.41465 8.84668 7.80469C8.45627 8.19509 8.45651 8.8282 8.84668 9.21875L11.0859 11.458L8.84668 13.6982C8.45651 14.0888 8.45627 14.7219 8.84668 15.1123C9.2371 15.5026 9.87024 15.5024 10.2607 15.1123L12.5 12.873L14.7393 15.1113C15.1298 15.5017 15.7628 15.5018 16.1533 15.1113C16.5434 14.7208 16.5436 14.0877 16.1533 13.6973L13.9141 11.458L16.1533 9.21973C16.5437 8.82924 16.5437 8.19616 16.1533 7.80566Z" })
29558
+ children: /* @__PURE__ */ jsx55("path", { d: "M20.833 2.125C21.6507 2.125 22.4355 2.45019 23.0137 3.02832C23.5916 3.60645 23.9159 4.39053 23.916 5.20801V17.708C23.916 18.5257 23.5918 19.3104 23.0137 19.8887C22.4355 20.4668 21.6507 20.792 20.833 20.792H7.1123C6.82516 20.7922 6.5497 20.9063 6.34668 21.1094L4.05273 23.4033C3.80954 23.6464 3.49934 23.8118 3.16211 23.8789C2.82492 23.9459 2.47487 23.9118 2.15723 23.7803C1.83953 23.6486 1.56707 23.4256 1.37598 23.1396C1.18489 22.8536 1.08305 22.5168 1.08301 22.1729V5.20801C1.08309 4.39045 1.40827 3.60647 1.98633 3.02832C2.56441 2.45024 3.3485 2.12517 4.16602 2.125H20.833ZM16.1533 7.80566C15.7628 7.41518 15.1298 7.41527 14.7393 7.80566L12.5 10.0439L10.2607 7.80469C9.87031 7.41464 9.23712 7.41465 8.84668 7.80469C8.45627 8.19509 8.45651 8.8282 8.84668 9.21875L11.0859 11.458L8.84668 13.6982C8.45651 14.0888 8.45627 14.7219 8.84668 15.1123C9.2371 15.5026 9.87024 15.5024 10.2607 15.1123L12.5 12.873L14.7393 15.1113C15.1298 15.5017 15.7628 15.5018 16.1533 15.1113C16.5434 14.7208 16.5436 14.0877 16.1533 13.6973L13.9141 11.458L16.1533 9.21973C16.5437 8.82924 16.5437 8.19616 16.1533 7.80566Z" })
29446
29559
  }
29447
29560
  );
29448
29561
  }
29449
29562
 
29450
29563
  // agent-gui/agentGuiNode/view/useAgentGUIDetailModel.tsx
29451
- import { Fragment as Fragment15, jsx as jsx55, jsxs as jsxs40 } from "react/jsx-runtime";
29564
+ import { Fragment as Fragment15, jsx as jsx56, jsxs as jsxs40 } from "react/jsx-runtime";
29452
29565
  function useAgentGUIDetailModel(input) {
29453
29566
  const {
29454
29567
  bottomDockDismissedPromptRequestId,
@@ -29582,11 +29695,11 @@ function useAgentGUIDetailModel(input) {
29582
29695
  className: AgentGUINode_styles_default.unavailableChatEmpty,
29583
29696
  "data-testid": "agent-gui-unavailable-chat-empty",
29584
29697
  children: [
29585
- /* @__PURE__ */ jsx55(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
29586
- /* @__PURE__ */ jsx55("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
29698
+ /* @__PURE__ */ jsx56(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
29699
+ /* @__PURE__ */ jsx56("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
29587
29700
  ]
29588
29701
  }
29589
- ) : /* @__PURE__ */ jsx55(Fragment15, {}),
29702
+ ) : /* @__PURE__ */ jsx56(Fragment15, {}),
29590
29703
  [labels.conversationUnavailable, showUnavailableChatEmpty]
29591
29704
  );
29592
29705
  const chromeLabels = useMemo34(
@@ -29954,7 +30067,7 @@ function useAgentGUIDetailModel(input) {
29954
30067
  }
29955
30068
 
29956
30069
  // agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
29957
- import { Fragment as Fragment16, jsx as jsx56, jsxs as jsxs41 } from "react/jsx-runtime";
30070
+ import { Fragment as Fragment16, jsx as jsx57, jsxs as jsxs41 } from "react/jsx-runtime";
29958
30071
  var AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE = {
29959
30072
  width: "100%",
29960
30073
  minWidth: "100%",
@@ -30006,6 +30119,7 @@ function mergeWorkspaceAppIconsFromCommands(input) {
30006
30119
  }
30007
30120
  var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30008
30121
  viewModel,
30122
+ referenceProvenanceFilter = null,
30009
30123
  composerEngagement,
30010
30124
  actions,
30011
30125
  labels,
@@ -30142,13 +30256,13 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30142
30256
  pendingPrependScrollAnchorRef.current = null;
30143
30257
  }, [viewModel.rail.activeConversationId]);
30144
30258
  const submitPromptAndScrollToBottom = useCallback45(
30145
- (content, displayPrompt) => {
30259
+ (content, displayPrompt, options) => {
30146
30260
  requestSubmittedPromptScrollToBottom();
30147
30261
  if (displayPrompt === void 0) {
30148
- submitPrompt(content);
30262
+ submitPrompt(content, void 0, options);
30149
30263
  return;
30150
30264
  }
30151
- submitPrompt(content, displayPrompt);
30265
+ submitPrompt(content, displayPrompt, options);
30152
30266
  },
30153
30267
  [requestSubmittedPromptScrollToBottom, submitPrompt]
30154
30268
  );
@@ -30263,6 +30377,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30263
30377
  showStopButton,
30264
30378
  previewMode,
30265
30379
  workspaceReferencePickerOpen,
30380
+ referenceProvenanceFilter,
30266
30381
  // Plan decisions replace the composer; approval / ask-user embed here.
30267
30382
  activePrompt: composerActivePrompt,
30268
30383
  backgroundAgentStatusText,
@@ -30371,6 +30486,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30371
30486
  viewModel.detail.usage,
30372
30487
  viewModel.shell.workspaceId,
30373
30488
  viewModel.shell.workspacePath,
30489
+ referenceProvenanceFilter,
30374
30490
  workspaceUserProjectI18n,
30375
30491
  workspaceAppIcons,
30376
30492
  selectHomeComposerAgentTargetAndFocus
@@ -30421,7 +30537,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30421
30537
  viewModel
30422
30538
  });
30423
30539
  return /* @__PURE__ */ jsxs41("main", { className: AgentGUINode_styles_default.detail, children: [
30424
- /* @__PURE__ */ jsx56(
30540
+ /* @__PURE__ */ jsx57(
30425
30541
  AgentGUIDetailHeader,
30426
30542
  {
30427
30543
  activeConversation: viewModel.rail.activeConversation,
@@ -30442,8 +30558,8 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30442
30558
  "data-testid": "agent-gui-provider-setup-notice",
30443
30559
  role: "status",
30444
30560
  children: [
30445
- /* @__PURE__ */ jsx56("span", { className: "inline-flex max-w-full items-center justify-center gap-[6px] text-center text-[13px] font-normal leading-normal", children: /* @__PURE__ */ jsx56("span", { className: "min-w-0 break-words", children: labels.installRequiredPlaceholder }) }),
30446
- /* @__PURE__ */ jsx56(
30561
+ /* @__PURE__ */ jsx57("span", { className: "inline-flex max-w-full items-center justify-center gap-[6px] text-center text-[13px] font-normal leading-normal", children: /* @__PURE__ */ jsx57("span", { className: "min-w-0 break-words", children: labels.installRequiredPlaceholder }) }),
30562
+ /* @__PURE__ */ jsx57(
30447
30563
  "button",
30448
30564
  {
30449
30565
  type: "button",
@@ -30463,7 +30579,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30463
30579
  ]
30464
30580
  }
30465
30581
  ) : null,
30466
- /* @__PURE__ */ jsx56(
30582
+ /* @__PURE__ */ jsx57(
30467
30583
  ScrollArea2,
30468
30584
  {
30469
30585
  scrollbarMode: "native",
@@ -30472,7 +30588,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30472
30588
  viewportTestId: "agent-gui-timeline",
30473
30589
  viewportClassName: `${AgentGUINode_styles_default.timeline} ${hasActiveConversation ? AgentGUINode_styles_default.timelineWithComposer : AgentGUINode_styles_default.timelineCentered} ${!isTimelineScrolledToTop ? AgentGUINode_styles_default.timelineScrolledFromTop : ""} ${showUnavailableChatEmpty ? AgentGUINode_styles_default.timelineUnavailableChatEmpty : ""}`.trim(),
30474
30590
  viewportContentStyle: AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE,
30475
- children: !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx56(Fragment16, { children: renderProviderUnavailableState?.({
30591
+ children: !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx57(Fragment16, { children: renderProviderUnavailableState?.({
30476
30592
  provider: disabledProviderTarget.provider,
30477
30593
  providerLabel: labels.emptyProviderForProvider?.(
30478
30594
  disabledProviderTarget.provider
@@ -30484,7 +30600,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30484
30600
  disabledProviderTarget.provider
30485
30601
  ),
30486
30602
  unavailableReason: disabledProviderTarget.unavailableReason ?? null
30487
- }) }) : /* @__PURE__ */ jsx56(
30603
+ }) }) : /* @__PURE__ */ jsx57(
30488
30604
  AgentGUIEmptyHomePane,
30489
30605
  {
30490
30606
  provider: emptyHeroProvider,
@@ -30507,7 +30623,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30507
30623
  onSelectSuggestion: handleSelectHomeSuggestion,
30508
30624
  onSelectSuggestionAction: handleHomeSuggestionAction
30509
30625
  }
30510
- ) : /* @__PURE__ */ jsx56(
30626
+ ) : /* @__PURE__ */ jsx57(
30511
30627
  AgentGUIConversationTimelinePane,
30512
30628
  {
30513
30629
  conversation,
@@ -30525,7 +30641,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30525
30641
  )
30526
30642
  }
30527
30643
  ),
30528
- hasActiveConversation ? /* @__PURE__ */ jsx56(
30644
+ hasActiveConversation ? /* @__PURE__ */ jsx57(
30529
30645
  AgentGUIBottomDockPane,
30530
30646
  {
30531
30647
  bottomDockRef,
@@ -30557,13 +30673,12 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30557
30673
  // agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
30558
30674
  import { memo as memo13, useCallback as useCallback46, useEffect as useEffect35, useRef as useRef37, useState as useState32 } from "react";
30559
30675
  import { ConfirmationDialog as ConfirmationDialog2 } from "@tutti-os/ui-system";
30560
- import { jsx as jsx57, jsxs as jsxs42 } from "react/jsx-runtime";
30676
+ import { jsx as jsx58, jsxs as jsxs42 } from "react/jsx-runtime";
30561
30677
  var AgentGUIRenameConversationDialog = memo13(
30562
30678
  function AgentGUIRenameConversationDialog2({
30563
30679
  conversation,
30564
30680
  open,
30565
30681
  labels,
30566
- uiLanguage,
30567
30682
  onOpenChange,
30568
30683
  onRename
30569
30684
  }) {
@@ -30582,8 +30697,8 @@ var AgentGUIRenameConversationDialog = memo13(
30582
30697
  setIsSaving(false);
30583
30698
  return;
30584
30699
  }
30585
- setTitle(conversationPlainTitle(conversation, labels, uiLanguage));
30586
- }, [conversation, labels, open, uiLanguage]);
30700
+ setTitle(conversation.title);
30701
+ }, [conversation, open]);
30587
30702
  useEffect35(() => {
30588
30703
  if (!open) {
30589
30704
  return;
@@ -30614,7 +30729,7 @@ var AgentGUIRenameConversationDialog = memo13(
30614
30729
  setIsSaving(false);
30615
30730
  });
30616
30731
  }, [conversation, onOpenChange, onRename, trimmedTitle]);
30617
- return /* @__PURE__ */ jsx57(
30732
+ return /* @__PURE__ */ jsx58(
30618
30733
  ConfirmationDialog2,
30619
30734
  {
30620
30735
  cancelLabel: labels.cancel,
@@ -30624,7 +30739,7 @@ var AgentGUIRenameConversationDialog = memo13(
30624
30739
  confirmLabel: labels.renameSessionSave,
30625
30740
  description: labels.renameSessionDescription,
30626
30741
  footer: /* @__PURE__ */ jsxs42("div", { className: "flex justify-end gap-2", children: [
30627
- /* @__PURE__ */ jsx57(
30742
+ /* @__PURE__ */ jsx58(
30628
30743
  Button,
30629
30744
  {
30630
30745
  disabled: isSaving,
@@ -30662,7 +30777,7 @@ var AgentGUIRenameConversationDialog = memo13(
30662
30777
  children: labels.cancel
30663
30778
  }
30664
30779
  ),
30665
- /* @__PURE__ */ jsx57(
30780
+ /* @__PURE__ */ jsx58(
30666
30781
  Button,
30667
30782
  {
30668
30783
  className: "shadow-none",
@@ -30717,7 +30832,7 @@ var AgentGUIRenameConversationDialog = memo13(
30717
30832
  title: labels.renameSessionTitle,
30718
30833
  onConfirm: confirmRename,
30719
30834
  onOpenChange,
30720
- children: /* @__PURE__ */ jsx57(
30835
+ children: /* @__PURE__ */ jsx58(
30721
30836
  "input",
30722
30837
  {
30723
30838
  ref: inputRef,
@@ -30739,6 +30854,66 @@ var AgentGUIRenameConversationDialog = memo13(
30739
30854
  }
30740
30855
  );
30741
30856
 
30857
+ // agent-gui/agentGuiNode/view/AgentGUIReferencePickerSurface.tsx
30858
+ import {
30859
+ ReferenceSourcePicker,
30860
+ WorkspaceFileReferencePicker
30861
+ } from "@tutti-os/workspace-file-reference/ui";
30862
+ import { jsx as jsx59 } from "react/jsx-runtime";
30863
+ function AgentGUIReferencePickerSurface({
30864
+ aggregator,
30865
+ copy,
30866
+ fileAdapter,
30867
+ fileManagerCopy,
30868
+ initialPath,
30869
+ initialTarget,
30870
+ isNodeSelectable,
30871
+ open,
30872
+ provenanceFilter,
30873
+ resolveEntryIconUrl,
30874
+ workspaceId,
30875
+ onClose,
30876
+ onConfirm,
30877
+ onConfirmBundles
30878
+ }) {
30879
+ return aggregator ? /* @__PURE__ */ jsx59(
30880
+ ReferenceSourcePicker,
30881
+ {
30882
+ aggregator,
30883
+ copy,
30884
+ initialTarget,
30885
+ isNodeSelectable,
30886
+ fileManagerCopy: fileManagerCopy ?? void 0,
30887
+ open,
30888
+ provenanceFilter: provenanceFilter?.snapshot.value,
30889
+ provenanceFilterControl: provenanceFilter ? /* @__PURE__ */ jsx59(
30890
+ AgentReferenceProvenanceFilterControl,
30891
+ {
30892
+ filter: provenanceFilter,
30893
+ popoverElevation: "panel"
30894
+ }
30895
+ ) : void 0,
30896
+ resolveEntryIconUrl,
30897
+ workspaceId,
30898
+ onClose,
30899
+ onConfirm,
30900
+ onConfirmBundles
30901
+ }
30902
+ ) : /* @__PURE__ */ jsx59(
30903
+ WorkspaceFileReferencePicker,
30904
+ {
30905
+ copy,
30906
+ fileAdapter: fileAdapter ?? void 0,
30907
+ initialPath,
30908
+ open,
30909
+ scoped: true,
30910
+ workspaceId,
30911
+ onClose,
30912
+ onConfirm
30913
+ }
30914
+ );
30915
+ }
30916
+
30742
30917
  // agent-gui/agentGuiNode/view/useAgentGUIWorkspaceReferencePicker.ts
30743
30918
  import { useCallback as useCallback47, useMemo as useMemo36, useRef as useRef38, useState as useState33 } from "react";
30744
30919
  import { createRichTextMentionHref } from "@tutti-os/ui-rich-text/core";
@@ -31118,9 +31293,10 @@ function useAgentGUINodeEngagement(input) {
31118
31293
  }
31119
31294
 
31120
31295
  // agent-gui/agentGuiNode/AgentGUINodeView.tsx
31121
- import { jsx as jsx58, jsxs as jsxs43 } from "react/jsx-runtime";
31296
+ import { jsx as jsx60, jsxs as jsxs43 } from "react/jsx-runtime";
31122
31297
  function AgentGUINodeView({
31123
31298
  viewModel,
31299
+ referenceProvenanceFilter = null,
31124
31300
  renderSidebarFooter,
31125
31301
  renderProviderRailEmpty,
31126
31302
  renderProviderUnavailableState,
@@ -31556,7 +31732,7 @@ function AgentGUINodeView({
31556
31732
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
31557
31733
  inert: conversationRailCollapsed ? true : void 0,
31558
31734
  children: [
31559
- /* @__PURE__ */ jsx58(
31735
+ /* @__PURE__ */ jsx60(
31560
31736
  AgentGUIProviderRail,
31561
31737
  {
31562
31738
  activeConversation: viewModel.rail.activeConversation,
@@ -31580,7 +31756,7 @@ function AgentGUINodeView({
31580
31756
  onRequestComposerFocus: requestComposerFocus
31581
31757
  }
31582
31758
  ),
31583
- renderSidebarFooter ? /* @__PURE__ */ jsx58(
31759
+ renderSidebarFooter ? /* @__PURE__ */ jsx60(
31584
31760
  "div",
31585
31761
  {
31586
31762
  className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailSidebarFooter} nodrag tsh-desktop-no-drag`,
@@ -31591,12 +31767,12 @@ function AgentGUINodeView({
31591
31767
  })
31592
31768
  }
31593
31769
  ) : null,
31594
- shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx58(
31770
+ shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx60(
31595
31771
  "div",
31596
31772
  {
31597
31773
  className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailConfigFooter} nodrag tsh-desktop-no-drag`,
31598
31774
  "data-testid": "agent-gui-config-footer",
31599
- children: shouldShowProviderRailConfigMenu ? /* @__PURE__ */ jsx58(
31775
+ children: shouldShowProviderRailConfigMenu ? /* @__PURE__ */ jsx60(
31600
31776
  AgentGUIConfigMenu,
31601
31777
  {
31602
31778
  environmentSetupVisible,
@@ -31615,7 +31791,7 @@ function AgentGUINodeView({
31615
31791
  onOpenAgentEnvSetup: openAgentEnvSetup,
31616
31792
  onOpenAgentSettings: openAgentSettings
31617
31793
  }
31618
- ) : /* @__PURE__ */ jsx58(
31794
+ ) : /* @__PURE__ */ jsx60(
31619
31795
  "button",
31620
31796
  {
31621
31797
  type: "button",
@@ -31624,7 +31800,7 @@ function AgentGUINodeView({
31624
31800
  title: labels.agentSettingsMenu,
31625
31801
  disabled: previewMode,
31626
31802
  onClick: openAgentSettings,
31627
- children: /* @__PURE__ */ jsx58(
31803
+ children: /* @__PURE__ */ jsx60(
31628
31804
  SettingsLinedIcon,
31629
31805
  {
31630
31806
  "aria-hidden": "true",
@@ -31639,21 +31815,21 @@ function AgentGUINodeView({
31639
31815
  ]
31640
31816
  }
31641
31817
  ) : null,
31642
- /* @__PURE__ */ jsx58(
31818
+ /* @__PURE__ */ jsx60(
31643
31819
  "aside",
31644
31820
  {
31645
31821
  id: "agent-gui-conversation-rail",
31646
31822
  className: `${AgentGUINode_styles_default.railPanel}${conversationRailCollapsed ? ` ${AgentGUINode_styles_default.railPanelCollapsed}` : ""}`,
31647
31823
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
31648
31824
  inert: conversationRailCollapsed ? true : void 0,
31649
- children: /* @__PURE__ */ jsx58(
31825
+ children: /* @__PURE__ */ jsx60(
31650
31826
  AgentGUIConversationRailController,
31651
31827
  {
31652
31828
  ...conversationRailStoreState,
31653
31829
  conversations: viewModel.rail.conversations,
31654
31830
  userProjects: viewModel.rail.userProjects,
31655
31831
  workspaceId: viewModel.shell.workspaceId,
31656
- footer: accountMenuState?.user ? /* @__PURE__ */ jsx58(
31832
+ footer: accountMenuState?.user ? /* @__PURE__ */ jsx60(
31657
31833
  AgentGUIAccountRailMenu,
31658
31834
  {
31659
31835
  accountMenuState,
@@ -31665,7 +31841,7 @@ function AgentGUINodeView({
31665
31841
  )
31666
31842
  }
31667
31843
  ),
31668
- /* @__PURE__ */ jsx58(
31844
+ /* @__PURE__ */ jsx60(
31669
31845
  "div",
31670
31846
  {
31671
31847
  id: "agent-gui-conversation-rail-resize",
@@ -31689,10 +31865,11 @@ function AgentGUINodeView({
31689
31865
  onPointerUp: endConversationRailResize
31690
31866
  }
31691
31867
  ),
31692
- /* @__PURE__ */ jsx58("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx58(
31868
+ /* @__PURE__ */ jsx60("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx60(
31693
31869
  AgentGUIDetailPane,
31694
31870
  {
31695
31871
  viewModel,
31872
+ referenceProvenanceFilter,
31696
31873
  composerEngagement,
31697
31874
  actions,
31698
31875
  labels,
@@ -31726,41 +31903,31 @@ function AgentGUINodeView({
31726
31903
  ]
31727
31904
  }
31728
31905
  ),
31729
- referenceSourceAggregator ? /* @__PURE__ */ jsx58(
31730
- ReferenceSourcePicker,
31906
+ /* @__PURE__ */ jsx60(
31907
+ AgentGUIReferencePickerSurface,
31731
31908
  {
31732
31909
  aggregator: referenceSourceAggregator,
31733
31910
  copy: workspaceFileReferenceCopy ?? fallbackWorkspaceFileReferenceCopy,
31911
+ fileAdapter: workspaceFileReferenceAdapter,
31912
+ fileManagerCopy: workspaceFileManagerCopy,
31913
+ initialPath: viewModel.composer.composerSettings.selectedProjectPath,
31734
31914
  initialTarget: workspaceReferencePickerTarget,
31735
31915
  isNodeSelectable: isWorkspaceReferencePickerNodeSelectable,
31736
- fileManagerCopy: workspaceFileManagerCopy ?? void 0,
31737
31916
  open: workspaceReferencePickerOpen,
31917
+ provenanceFilter: referenceProvenanceFilter,
31738
31918
  resolveEntryIconUrl: resolveWorkspaceReferenceEntryIconUrl,
31739
31919
  workspaceId: viewModel.shell.workspaceId,
31740
31920
  onClose: closeWorkspaceReferencePicker,
31741
31921
  onConfirm: confirmWorkspaceReferencePicker,
31742
31922
  onConfirmBundles: confirmWorkspaceReferenceBundles
31743
31923
  }
31744
- ) : /* @__PURE__ */ jsx58(
31745
- WorkspaceFileReferencePicker,
31746
- {
31747
- copy: workspaceFileReferenceCopy ?? fallbackWorkspaceFileReferenceCopy,
31748
- fileAdapter: workspaceFileReferenceAdapter ?? void 0,
31749
- initialPath: viewModel.composer.composerSettings.selectedProjectPath,
31750
- open: workspaceReferencePickerOpen,
31751
- scoped: true,
31752
- workspaceId: viewModel.shell.workspaceId,
31753
- onClose: closeWorkspaceReferencePicker,
31754
- onConfirm: confirmWorkspaceReferencePicker
31755
- }
31756
31924
  ),
31757
- /* @__PURE__ */ jsx58(
31925
+ /* @__PURE__ */ jsx60(
31758
31926
  AgentGUIRenameConversationDialog,
31759
31927
  {
31760
31928
  conversation: renameConversationTarget,
31761
31929
  open: renameConversationDialogOpen && renameConversationTarget !== null,
31762
31930
  labels,
31763
- uiLanguage,
31764
31931
  onOpenChange: (open) => {
31765
31932
  setRenameConversationDialogOpen(open);
31766
31933
  if (!open) {
@@ -31771,7 +31938,7 @@ function AgentGUINodeView({
31771
31938
  }
31772
31939
  )
31773
31940
  ] });
31774
- return previewMode ? content : /* @__PURE__ */ jsx58(TooltipProvider4, { children: content });
31941
+ return previewMode ? content : /* @__PURE__ */ jsx60(TooltipProvider5, { children: content });
31775
31942
  }
31776
31943
 
31777
31944
  // agent-gui/workspaceDesktop/view/desktopDockAgentProbeTooltipModel.ts
@@ -31952,7 +32119,7 @@ import {
31952
32119
  useState as useState35
31953
32120
  } from "react";
31954
32121
  import { createPortal as createPortal5 } from "react-dom";
31955
- import { Fragment as Fragment17, jsx as jsx59, jsxs as jsxs44 } from "react/jsx-runtime";
32122
+ import { Fragment as Fragment17, jsx as jsx61, jsxs as jsxs44 } from "react/jsx-runtime";
31956
32123
  var POPOVER_MIN_VIEWPORT_INSET_PX = 16;
31957
32124
  var POPOVER_DEFAULT_WIDTH_PX = 260;
31958
32125
  function dockAgentProbeLineKey(line) {
@@ -31966,7 +32133,7 @@ function renderDockAgentProbeLine(line) {
31966
32133
  line.primary,
31967
32134
  line.secondary ? /* @__PURE__ */ jsxs44(Fragment17, { children: [
31968
32135
  " ",
31969
- /* @__PURE__ */ jsx59("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
32136
+ /* @__PURE__ */ jsx61("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
31970
32137
  ] }) : null
31971
32138
  ] });
31972
32139
  }
@@ -32050,7 +32217,7 @@ function AgentProbeInfoPopover({
32050
32217
  if (lines.length === 0) {
32051
32218
  return null;
32052
32219
  }
32053
- const popover = /* @__PURE__ */ jsx59(
32220
+ const popover = /* @__PURE__ */ jsx61(
32054
32221
  "div",
32055
32222
  {
32056
32223
  ref: popoverRef,
@@ -32059,7 +32226,7 @@ function AgentProbeInfoPopover({
32059
32226
  style: popoverStyle ?? void 0,
32060
32227
  onMouseEnter: openPopover,
32061
32228
  onMouseLeave: closeIfPointerLeavesPopover,
32062
- children: /* @__PURE__ */ jsx59("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
32229
+ children: /* @__PURE__ */ jsx61("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
32063
32230
  const label = getDockAgentProbeLineLabel(line);
32064
32231
  const valueText = formatDockAgentProbeLineText(line);
32065
32232
  return /* @__PURE__ */ jsxs44(
@@ -32068,8 +32235,8 @@ function AgentProbeInfoPopover({
32068
32235
  className: "desktop-dock-popup__agent-info-item",
32069
32236
  "data-has-label": label ? "true" : "false",
32070
32237
  children: [
32071
- label ? /* @__PURE__ */ jsx59("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
32072
- /* @__PURE__ */ jsx59(
32238
+ label ? /* @__PURE__ */ jsx61("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
32239
+ /* @__PURE__ */ jsx61(
32073
32240
  "span",
32074
32241
  {
32075
32242
  className: "desktop-dock-popup__agent-info-value",
@@ -32104,7 +32271,7 @@ function AgentProbeInfoPopover({
32104
32271
  },
32105
32272
  onBlur: () => setIsOpen(false),
32106
32273
  children: [
32107
- /* @__PURE__ */ jsx59(Info3, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
32274
+ /* @__PURE__ */ jsx61(Info3, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
32108
32275
  isOpen ? createPortal5(popover, document.body) : null
32109
32276
  ]
32110
32277
  }
@@ -32315,7 +32482,7 @@ function areAgentGUINodePropsEqual(previous, next) {
32315
32482
  const pc = previous.hostCapabilities, nc = next.hostCapabilities;
32316
32483
  const pa = previous.hostActions, na = next.hostActions;
32317
32484
  const ps = previous.renderSlots, ns = next.renderSlots;
32318
- 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.resolveDroppedFileReferences === nw.resolveDroppedFileReferences && 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 && 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.newConversationSequence === nr.newConversationSequence && 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.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.managedAgentsState === nc.managedAgentsState && pc.contextMentionProviders === nc.contextMentionProviders && 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.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;
32485
+ 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.resolveDroppedFileReferences === nw.resolveDroppedFileReferences && 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.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.newConversationSequence === nr.newConversationSequence && 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.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.managedAgentsState === nc.managedAgentsState && pc.contextMentionProviders === nc.contextMentionProviders && 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.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;
32319
32486
  }
32320
32487
 
32321
32488
  // agent-gui/agentGuiNode/AgentGUINode.labels.ts
@@ -32720,6 +32887,9 @@ function useAgentGUIViewLabels(input) {
32720
32887
  loadingConversation: t("agentHost.agentGui.loadingConversation"),
32721
32888
  scrollToBottom: t("agentHost.agentGui.scrollToBottom"),
32722
32889
  fallbackAgentTitle,
32890
+ untitledConversationTitle: t(
32891
+ "agentHost.workspaceAgentsUntitledConversation"
32892
+ ),
32723
32893
  sectionToday: t("agentHost.agentGui.sectionToday"),
32724
32894
  sectionYesterday: t("agentHost.agentGui.sectionYesterday"),
32725
32895
  sectionEarlier: t("agentHost.agentGui.sectionEarlier"),
@@ -33158,7 +33328,7 @@ function resolveAgentGUIRailStatusProvider(input) {
33158
33328
  }
33159
33329
 
33160
33330
  // agent-gui/agentGuiNode/AgentGUINode.tsx
33161
- import { jsx as jsx60, jsxs as jsxs45 } from "react/jsx-runtime";
33331
+ import { jsx as jsx62, jsxs as jsxs45 } from "react/jsx-runtime";
33162
33332
  var EMPTY_SLASH_STATUS_QUOTAS = [];
33163
33333
  var AgentGUINode = memo14(function AgentGUINode2({
33164
33334
  identity,
@@ -33221,8 +33391,25 @@ var AgentGUINode = memo14(function AgentGUINode2({
33221
33391
  managedAgentsState,
33222
33392
  contextMentionProviders,
33223
33393
  workspaceAppIcons,
33224
- disabledHomeSuggestions
33394
+ disabledHomeSuggestions,
33395
+ referenceProvenanceFilterEnabled = false
33225
33396
  } = hostCapabilities;
33397
+ const referenceProvenanceFilterBinding = useReferenceProvenanceFilterCatalog({
33398
+ enabledDimensions: referenceProvenanceFilterEnabled ? ["agent"] : [],
33399
+ agentOptions: referenceProvenanceFilterEnabled ? (agentTargets ?? []).flatMap((target) => {
33400
+ const agentTargetId = target.agentTargetId?.trim();
33401
+ return agentTargetId ? [
33402
+ {
33403
+ disabled: target.disabled,
33404
+ iconUrl: target.iconUrl,
33405
+ id: agentTargetId,
33406
+ label: target.label
33407
+ }
33408
+ ] : [];
33409
+ }) : [],
33410
+ memberOptions: []
33411
+ });
33412
+ const referenceProvenanceFilter = referenceProvenanceFilterEnabled ? referenceProvenanceFilterBinding : null;
33226
33413
  const {
33227
33414
  onLinkAction,
33228
33415
  onHandoffConversation,
@@ -33561,7 +33748,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33561
33748
  previewMode,
33562
33749
  railStatusProvider
33563
33750
  ]);
33564
- return /* @__PURE__ */ jsx60(
33751
+ return /* @__PURE__ */ jsx62(
33565
33752
  WorkspaceNodeWindow,
33566
33753
  {
33567
33754
  nodeId,
@@ -33578,7 +33765,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33578
33765
  bodyClassName: `${AgentGUINode_styles_default.shell} nodrag size-full min-h-0 min-w-0 !bg-transparent p-0`,
33579
33766
  hideHeader: embedded,
33580
33767
  titleAccessory: /* @__PURE__ */ jsxs45("span", { className: "inline-flex flex-none items-center gap-1", children: [
33581
- /* @__PURE__ */ jsx60(
33768
+ /* @__PURE__ */ jsx62(
33582
33769
  AgentProbeInfoPopover,
33583
33770
  {
33584
33771
  lines: agentProbeLines,
@@ -33587,7 +33774,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33587
33774
  onOpen: handleAgentProbeInfoOpen
33588
33775
  }
33589
33776
  ),
33590
- /* @__PURE__ */ jsx60(
33777
+ /* @__PURE__ */ jsx62(
33591
33778
  CanvasNodeGhostIconButton,
33592
33779
  {
33593
33780
  "aria-label": isConversationRailCollapsed ? t("agentHost.agentGui.expandConversationRail") : t("agentHost.agentGui.collapseConversationRail"),
@@ -33599,7 +33786,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33599
33786
  event.stopPropagation();
33600
33787
  handleConversationRailToggle();
33601
33788
  },
33602
- children: /* @__PURE__ */ jsx60(
33789
+ children: /* @__PURE__ */ jsx62(
33603
33790
  CanvasNodePanelLinedIcon,
33604
33791
  {
33605
33792
  width: 18,
@@ -33623,7 +33810,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33623
33810
  renderedWidth,
33624
33811
  railAutoCollapseWidthPx
33625
33812
  );
33626
- return /* @__PURE__ */ jsx60(
33813
+ return /* @__PURE__ */ jsx62(
33627
33814
  AgentGUINodeView,
33628
33815
  {
33629
33816
  viewModel,
@@ -33684,7 +33871,8 @@ var AgentGUINode = memo14(function AgentGUINode2({
33684
33871
  resolveWorkspaceReferenceInitialTarget,
33685
33872
  workspaceFileReferenceCopy,
33686
33873
  contextMentionProviders,
33687
- workspaceAppIcons
33874
+ workspaceAppIcons,
33875
+ referenceProvenanceFilter
33688
33876
  }
33689
33877
  );
33690
33878
  }
@@ -33693,7 +33881,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33693
33881
  }, areAgentGUINodePropsEqual);
33694
33882
 
33695
33883
  // AgentGUI.tsx
33696
- import { jsx as jsx61 } from "react/jsx-runtime";
33884
+ import { jsx as jsx63 } from "react/jsx-runtime";
33697
33885
  var AgentGUI = memo15(function AgentGUI2({
33698
33886
  agentActivityRuntime,
33699
33887
  agentHostApi,
@@ -33723,15 +33911,15 @@ var AgentGUI = memo15(function AgentGUI2({
33723
33911
  providerRailEmpty: renderAgentsEmpty
33724
33912
  }
33725
33913
  };
33726
- const content = /* @__PURE__ */ jsx61(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx61(
33914
+ const content = /* @__PURE__ */ jsx63(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx63(
33727
33915
  AgentActivityHostProvider,
33728
33916
  {
33729
33917
  agentActivityRuntime,
33730
33918
  agentHostApi,
33731
- children: /* @__PURE__ */ jsx61(AgentGUINode, { ...nodeProps })
33919
+ children: /* @__PURE__ */ jsx63(AgentGUINode, { ...nodeProps })
33732
33920
  }
33733
33921
  ) });
33734
- return props.frame.previewMode ? content : /* @__PURE__ */ jsx61(TooltipProvider5, { delayDuration: 120, skipDelayDuration: 0, children: content });
33922
+ return props.frame.previewMode ? content : /* @__PURE__ */ jsx63(TooltipProvider6, { delayDuration: 120, skipDelayDuration: 0, children: content });
33735
33923
  });
33736
33924
 
33737
33925
  export {
@@ -33744,4 +33932,4 @@ export {
33744
33932
  resolveAgentGUIAgentTarget,
33745
33933
  AgentGUI
33746
33934
  };
33747
- //# sourceMappingURL=chunk-7O4D4KOE.js.map
33935
+ //# sourceMappingURL=chunk-BQJOYTW2.js.map