@tutti-os/agent-gui 0.0.99 → 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-PLCHNOXL.js → chunk-BQJOYTW2.js} +863 -679
  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-CPUEPDF7.js.map +0 -1
  78. package/dist/chunk-FSKGEGGX.js.map +0 -1
  79. package/dist/chunk-GAD6Y3BF.js +0 -88
  80. package/dist/chunk-GAD6Y3BF.js.map +0 -1
  81. package/dist/chunk-GCBDIQDX.js +0 -22
  82. package/dist/chunk-GCBDIQDX.js.map +0 -1
  83. package/dist/chunk-IYEXLOUE.js.map +0 -1
  84. package/dist/chunk-J7ZYAUPC.js.map +0 -1
  85. package/dist/chunk-MASXZENX.js.map +0 -1
  86. package/dist/chunk-MRRICFWA.js.map +0 -1
  87. package/dist/chunk-PLCHNOXL.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({
@@ -7997,7 +7940,7 @@ function useAgentGUINewConversationActivation(input) {
7997
7940
  isConversationStale
7998
7941
  } = input;
7999
7942
  const startConversation = useCallback14(
8000
- (initialContentInput, displayPrompt) => {
7943
+ (initialContentInput, displayPrompt, submitOptions) => {
8001
7944
  const target = selectedAgentTargetRef.current;
8002
7945
  const targetData = selectedComposerTargetDataRef.current;
8003
7946
  if (target.disabled === true) {
@@ -8013,7 +7956,6 @@ function useAgentGUINewConversationActivation(input) {
8013
7956
  ) : textPromptContent(normalizeOptionalPrompt(initialContentInput));
8014
7957
  const initialDisplayPrompt = displayPrompt && displayPrompt.trim() ? displayPrompt : void 0;
8015
7958
  const normalizedInitialPrompt = initialDisplayPrompt ?? agentPromptContentDisplayText(normalizedInitialContent);
8016
- const initialConversationTitle = normalizedInitialPrompt || AGENT_PROVIDER_LABEL[targetData.provider] || targetData.provider;
8017
7959
  isCreatingConversationRef.current = true;
8018
7960
  setDetailError(null);
8019
7961
  const provider = targetData.provider;
@@ -8057,7 +7999,14 @@ function useAgentGUINewConversationActivation(input) {
8057
7999
  lastActiveModelByProviderRef.current[provider]
8058
8000
  ) : null;
8059
8001
  const settings = sanitizeComposerSettingsForTarget({
8060
- 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
+ },
8061
8010
  target: targetData,
8062
8011
  options: snapshotComposerOptions
8063
8012
  });
@@ -8096,8 +8045,10 @@ function useAgentGUINewConversationActivation(input) {
8096
8045
  initialDisplayPrompt,
8097
8046
  runtimeContent: toRuntimeSendContent(normalizedInitialContent),
8098
8047
  submitDiagnostics: agentSubmitTraceDiagnostics(submitTrace),
8099
- title: initialConversationTitle,
8100
- settings
8048
+ settings,
8049
+ optimisticTitle: deriveAgentGUIOptimisticConversationTitle(
8050
+ normalizedInitialPrompt
8051
+ )
8101
8052
  });
8102
8053
  if (requestId === null) return null;
8103
8054
  activeConversationIdRef.current = agentSessionId;
@@ -8484,6 +8435,11 @@ function useAgentGUISubmitInteractionActions(input) {
8484
8435
  ...displayPrompt && displayPrompt.trim() ? { displayPrompt } : {},
8485
8436
  submitDiagnostics: agentSubmitTraceDiagnostics(submitTrace),
8486
8437
  requestedAtUnixMs: submittedAtUnixMs,
8438
+ ...options?.requiredSettingsPatch ? {
8439
+ requiredSettingsPatch: {
8440
+ ...options.requiredSettingsPatch
8441
+ }
8442
+ } : {},
8487
8443
  ...options?.immediate === true ? { routing: "immediate" } : options?.sendNow === true ? { routing: "send_now" } : {},
8488
8444
  runtimeContent: toRuntimeSendContent(normalizedContent),
8489
8445
  type: "submit/requested",
@@ -8576,6 +8532,7 @@ function useAgentGUISubmitInteractionActions(input) {
8576
8532
  return;
8577
8533
  }
8578
8534
  executePrompt(agentSessionId, normalizedContent, displayPromptText, {
8535
+ requiredSettingsPatch: options?.requiredSettingsPatch,
8579
8536
  sendNow: options?.sendNow === true,
8580
8537
  sourceScopeKey: options?.sourceScopeKey,
8581
8538
  trackDraft: options?.trackDraft === true
@@ -8624,7 +8581,7 @@ function useAgentGUISubmitInteractionActions(input) {
8624
8581
  ]
8625
8582
  );
8626
8583
  const submitPrompt = useCallback17(
8627
- (content, displayPrompt) => {
8584
+ (content, displayPrompt, options) => {
8628
8585
  if (previewMode) {
8629
8586
  return;
8630
8587
  }
@@ -8673,6 +8630,7 @@ function useAgentGUISubmitInteractionActions(input) {
8673
8630
  normalizedContent,
8674
8631
  displayPromptText,
8675
8632
  {
8633
+ requiredSettingsPatch: options?.requiredSettingsPatch,
8676
8634
  sourceScopeKey: resolveAgentComposerDraftScopeKey({}),
8677
8635
  trackDraft: true
8678
8636
  }
@@ -8686,7 +8644,8 @@ function useAgentGUISubmitInteractionActions(input) {
8686
8644
  );
8687
8645
  const activationResult = startConversation(
8688
8646
  normalizedContent,
8689
- displayPromptText
8647
+ displayPromptText,
8648
+ options
8690
8649
  );
8691
8650
  if (activationResult) {
8692
8651
  draftByScopeKeyRef.current = clearSubmittedAgentGUIHomeDraft({
@@ -8708,7 +8667,10 @@ function useAgentGUISubmitInteractionActions(input) {
8708
8667
  agentSessionId,
8709
8668
  normalizedContent,
8710
8669
  displayPromptText,
8711
- { trackDraft: true }
8670
+ {
8671
+ requiredSettingsPatch: options?.requiredSettingsPatch,
8672
+ trackDraft: true
8673
+ }
8712
8674
  );
8713
8675
  },
8714
8676
  [
@@ -9034,30 +8996,45 @@ function useAgentGUIViewModel(candidate) {
9034
8996
  // agent-gui/agentGuiNode/controller/useAgentGUIComposerPresentation.ts
9035
8997
  import { useEffect as useEffect8, useMemo as useMemo9 } from "react";
9036
8998
 
9037
- // agent-gui/agentGuiNode/model/agentBrowserUseSubmit.ts
9038
- 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.";
9039
- function parseTuttiBrowserUseInvocation(draft) {
9040
- 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);
9041
9014
  if (!match) {
9042
9015
  return null;
9043
9016
  }
9044
- const commandName = (match[3] ?? "").trim();
9045
- if (!commandName) {
9017
+ const commandName = (match[2] ?? "").trim().toLowerCase();
9018
+ const config = AGENT_CAPABILITY_USE_CONFIG[capability];
9019
+ if (!config.aliases.includes(commandName)) {
9046
9020
  return null;
9047
9021
  }
9048
9022
  return {
9049
9023
  commandName,
9050
- args: match[4] ?? ""
9024
+ args: match[3] ?? ""
9051
9025
  };
9052
9026
  }
9053
- function buildTuttiBrowserUseSubmitPrompt(args) {
9027
+ function buildAgentCapabilityUseSubmitPrompt(capability, args) {
9028
+ const config = AGENT_CAPABILITY_USE_CONFIG[capability];
9054
9029
  const trimmedArgs = args.trim();
9055
- if (!trimmedArgs) {
9056
- return TUTTI_BROWSER_USE_SUBMIT_PREFIX;
9057
- }
9058
- return `${TUTTI_BROWSER_USE_SUBMIT_PREFIX}
9030
+ return trimmedArgs ? `${config.submitPrefix}
9059
9031
 
9060
- ${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}`;
9061
9038
  }
9062
9039
 
9063
9040
  // agent-gui/agentGuiNode/model/agentComposerTriggerQueries.ts
@@ -9327,37 +9304,28 @@ function resolveSlashCommandSelectionEffect({
9327
9304
  draft: draftForSlashCommand(command, currentDraft)
9328
9305
  };
9329
9306
  }
9330
- function resolveTuttiBrowserUseSubmitEffect(input) {
9331
- if (!input.browserSupported) {
9332
- return null;
9333
- }
9334
- const invocation = parseTuttiBrowserUseInvocation(input.draft);
9335
- if (!invocation) {
9336
- return null;
9337
- }
9338
- const command = input.commands.find(
9339
- (candidate) => slashCommandMatchesInvocation(candidate, invocation.commandName)
9340
- );
9341
- if (!command || !isBrowserUseCapability(command)) {
9342
- return null;
9343
- }
9344
- return {
9345
- kind: "submitPrompt",
9346
- prompt: buildTuttiBrowserUseSubmitPrompt(invocation.args),
9347
- displayPrompt: browserUseDisplayPrompt(invocation),
9348
- enableBrowserUse: true
9349
- };
9350
- }
9351
- function browserUseDisplayPrompt({ args }) {
9352
- const trimmedArgs = args.trim();
9353
- return trimmedArgs ? `/browser ${trimmedArgs}` : "/browser";
9354
- }
9355
9307
  function resolveSlashCommandSubmitEffect({
9308
+ browserSupported = false,
9309
+ computerSupported = false,
9356
9310
  provider: _provider,
9357
9311
  policy,
9358
9312
  commands,
9359
9313
  draft
9360
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
+ }
9361
9329
  const invocation = parseSlashCommandInvocation(draft);
9362
9330
  if (!invocation) {
9363
9331
  return null;
@@ -9368,7 +9336,7 @@ function resolveSlashCommandSubmitEffect({
9368
9336
  if (!command) {
9369
9337
  return null;
9370
9338
  }
9371
- if (isBrowserUseCapability(command)) {
9339
+ if (isAgentSlashCommandCapability(command)) {
9372
9340
  return null;
9373
9341
  }
9374
9342
  const commandName = normalizedCommandName(command);
@@ -9395,6 +9363,32 @@ function resolveSlashCommandSubmitEffect({
9395
9363
  }
9396
9364
  return null;
9397
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
+ }
9398
9392
  function isLocalTogglePlanCommand(commandName, policy) {
9399
9393
  return providerSlashPolicy(policy)?.localPlanCommands.has(
9400
9394
  commandName.trim().toLowerCase()
@@ -9447,6 +9441,12 @@ function isBrowserUseCapability(command) {
9447
9441
  function isComputerUseCapability(command) {
9448
9442
  return "kind" in command && command.kind === "capability" && command.capability === "computerUse";
9449
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
+ }
9450
9450
  function slashCommandMatchesInvocation(command, commandName) {
9451
9451
  const normalizedInvocation = commandName.trim().toLowerCase();
9452
9452
  if (normalizedCommandName(command) === normalizedInvocation) {
@@ -10055,7 +10055,6 @@ function useAgentGUIConversationPresentation(input) {
10055
10055
  );
10056
10056
  }
10057
10057
  if (!input.activeConversationId) return stabilize(null);
10058
- const providerLabel = AGENT_PROVIDER_LABEL[input.data.provider] ?? input.data.provider ?? translate("sidebar.fallbackAgentLabel");
10059
10058
  const fallbackStatus = input.isSubmitting || input.isCreatingConversation || Object.prototype.hasOwnProperty.call(
10060
10059
  input.draftByScopeKey,
10061
10060
  resolveAgentComposerDraftScopeKey({
@@ -10071,8 +10070,8 @@ function useAgentGUIConversationPresentation(input) {
10071
10070
  id: input.activeConversationId,
10072
10071
  userId: input.currentUserId?.trim() || void 0,
10073
10072
  provider: input.data.provider,
10074
- title: providerLabel,
10075
- titleFallback: null,
10073
+ title: "",
10074
+ titleFallback: "untitled-conversation",
10076
10075
  status: activityBusyStatus ?? fallbackStatus,
10077
10076
  cwd: input.workspacePath,
10078
10077
  project: resolveAgentGUIConversationProject(
@@ -10897,6 +10896,8 @@ import {
10897
10896
  selectEnginePromptQueueError,
10898
10897
  selectEngineSession as selectEngineSession3,
10899
10898
  selectEngineSessionDeleted,
10899
+ selectEngineSessionDetailHydrated as selectEngineSessionDetailHydrated2,
10900
+ selectEngineSessionDetailLoading,
10900
10901
  selectEngineSessionError,
10901
10902
  selectEngineSessionIsRespondingToInteraction,
10902
10903
  selectEngineSessionReconcile as selectEngineSessionReconcile2,
@@ -10964,8 +10965,13 @@ function useAgentGUISessionEngineState(input) {
10964
10965
  sessionEngine,
10965
10966
  (state) => selectEngineSessionReconcile2(state, activeConversationId)
10966
10967
  );
10967
- const activeSessionReconcilePending = Boolean(
10968
- 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)
10969
10975
  );
10970
10976
  const activeEngineSessionDeleted = useEngineSelector(
10971
10977
  sessionEngine,
@@ -11065,8 +11071,8 @@ function useAgentGUISessionEngineState(input) {
11065
11071
  activeQueuedPromptSnapshot
11066
11072
  ),
11067
11073
  activeSessionState,
11068
- activeSessionReconcilePending,
11069
- activeSessionReconcileError: activeSessionReconcile?.errorMessage ?? null,
11074
+ activeSessionDetailLoading,
11075
+ activeSessionReconcileError: activeSessionDetailHydrated ? null : activeSessionReconcile?.errorMessage ?? null,
11070
11076
  isCreatingConversation,
11071
11077
  hasUnconfirmedSubmit,
11072
11078
  isRespondingToInteraction,
@@ -11571,7 +11577,6 @@ function useAgentGUINodeController({
11571
11577
  } = localState;
11572
11578
  const conversationList = useAgentGUIConversationListState({
11573
11579
  agentActivityRuntimeOrigin,
11574
- agentActivitySnapshot,
11575
11580
  currentUserId,
11576
11581
  data,
11577
11582
  normalizedProviderTargets,
@@ -11785,7 +11790,6 @@ function useAgentGUINodeController({
11785
11790
  activeConversationIdRef,
11786
11791
  activePendingActivation,
11787
11792
  agentActivityRuntime,
11788
- agentActivitySnapshotRef,
11789
11793
  attentionReadRecordsBySessionId: attentionReadState.recordsBySessionId,
11790
11794
  conversationIdsRef,
11791
11795
  conversationListQuery,
@@ -11941,7 +11945,7 @@ function useAgentGUINodeController({
11941
11945
  updateComposerSettingsRef,
11942
11946
  workspaceId
11943
11947
  });
11944
- const isLoadingMessages = localState.isLoadingMessages || sessionEngineState.activeSessionReconcilePending;
11948
+ const isLoadingMessages = localState.isLoadingMessages || sessionEngineState.activeSessionDetailLoading;
11945
11949
  const detailAvailability = activeConversationId === null ? "ready" : sessionEngineState.activeEngineSessionDeleted ? "not_found" : isLoadingMessages ? "loading" : sessionEngineState.activeSessionReconcileError || localState.detailError ? "error" : "ready";
11946
11950
  return useAgentGUIViewAssembly({
11947
11951
  ...providerCatalogSelection,
@@ -12004,11 +12008,7 @@ import {
12004
12008
  useRef as useRef41,
12005
12009
  useState as useState34
12006
12010
  } from "react";
12007
- import {
12008
- ReferenceSourcePicker,
12009
- WorkspaceFileReferencePicker
12010
- } from "@tutti-os/workspace-file-reference/ui";
12011
- import { TooltipProvider as TooltipProvider4 } from "@tutti-os/ui-system";
12011
+ import { TooltipProvider as TooltipProvider5 } from "@tutti-os/ui-system";
12012
12012
 
12013
12013
  // shared/workspaceSettingsPanel/workspaceSettingsPanelStore.ts
12014
12014
  import { useSnapshot } from "valtio";
@@ -12294,7 +12294,7 @@ function conversationPlainTitle(conversation, labels, uiLanguage) {
12294
12294
  void uiLanguage;
12295
12295
  return resolveAgentGUIConversationDisplayTitle(
12296
12296
  conversation,
12297
- labels.fallbackAgentTitle
12297
+ labels.untitledConversationTitle
12298
12298
  );
12299
12299
  }
12300
12300
 
@@ -12898,7 +12898,7 @@ import {
12898
12898
  useRef as useRef31,
12899
12899
  useState as useState24
12900
12900
  } from "react";
12901
- 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";
12902
12902
 
12903
12903
  // agent-gui/agentGuiNode/model/agentGuiProviderRailOrder.ts
12904
12904
  var AGENT_GUI_PROVIDER_RAIL_PREFERENCES_STORAGE_KEY = "agent-gui:provider-rail-preferences";
@@ -15567,9 +15567,10 @@ import {
15567
15567
  var DOCK_COMPOSER_INPUT_MIN_HEIGHT = 56;
15568
15568
  var DOCK_COMPOSER_TEXT_LINE_HEIGHT = 24;
15569
15569
  var DOCK_COMPOSER_MAX_VISIBLE_TEXT_LINES = 3.5;
15570
- 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;
15571
15572
  var DOCK_COMPOSER_TEXT_VIEWPORT_MAX_HEIGHT = DOCK_COMPOSER_TEXT_LINE_HEIGHT * DOCK_COMPOSER_MAX_VISIBLE_TEXT_LINES;
15572
- 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;
15573
15574
  var DOCK_COMPOSER_INPUT_BORDER_HEIGHT = 2;
15574
15575
  var DOCK_COMPOSER_INPUT_PADDING_BLOCK_HEIGHT = 24;
15575
15576
  var PROMPT_TIP_CYCLE_STEP_MS = 5200;
@@ -15684,7 +15685,7 @@ function useComposerLayout({
15684
15685
  DOCK_COMPOSER_INPUT_MAX_HEIGHT,
15685
15686
  Math.max(
15686
15687
  DOCK_COMPOSER_INPUT_MIN_HEIGHT,
15687
- editor.scrollHeight + DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT
15688
+ editor.scrollHeight + DOCK_COMPOSER_INPUT_TEXT_MEASUREMENT_CHROME_HEIGHT
15688
15689
  )
15689
15690
  );
15690
15691
  const attachmentChromeHeight = attachmentHeight > 0 ? DOCK_COMPOSER_INPUT_PADDING_BLOCK_HEIGHT : 0;
@@ -16665,13 +16666,15 @@ function useComposerSlashActions(input) {
16665
16666
  (effect) => {
16666
16667
  if (effect.kind === "submitPrompt") {
16667
16668
  clearSlashCommandDraft();
16668
- if (effect.enableBrowserUse && !settingsControlsDisabled) {
16669
- onSettingsChange({ browserUse: true });
16670
- }
16669
+ const submitOptions = effect.requiredSettingsPatch ? { requiredSettingsPatch: effect.requiredSettingsPatch } : void 0;
16671
16670
  if (effect.displayPrompt) {
16672
- onSubmit(textPromptContent(effect.prompt), effect.displayPrompt);
16671
+ onSubmit(
16672
+ textPromptContent(effect.prompt),
16673
+ effect.displayPrompt,
16674
+ submitOptions
16675
+ );
16673
16676
  } else {
16674
- onSubmit(textPromptContent(effect.prompt));
16677
+ onSubmit(textPromptContent(effect.prompt), void 0, submitOptions);
16675
16678
  }
16676
16679
  return;
16677
16680
  }
@@ -16865,20 +16868,13 @@ function useComposerSlashActions(input) {
16865
16868
  return;
16866
16869
  }
16867
16870
  if (options?.guidance !== true) {
16868
- const browserUseEffect = resolveTuttiBrowserUseSubmitEffect({
16871
+ const slashCommandEffect = resolveSlashCommandSubmitEffect({
16869
16872
  browserSupported: Boolean(composerSettings.supportsBrowser),
16873
+ computerSupported: Boolean(composerSettings.supportsComputerUse),
16870
16874
  commands: resolvedSlashCommands,
16871
- draft: nextPrompt
16872
- });
16873
- if (browserUseEffect) {
16874
- executeSlashCommandEffect(browserUseEffect);
16875
- return;
16876
- }
16877
- const slashCommandEffect = resolveSlashCommandSubmitEffect({
16875
+ draft: nextPrompt,
16878
16876
  provider,
16879
- policy: slashCommandPolicy,
16880
- commands: resolvedSlashCommands,
16881
- draft: nextPrompt
16877
+ policy: slashCommandPolicy
16882
16878
  });
16883
16879
  if (slashCommandEffect) {
16884
16880
  executeSlashCommandEffect(slashCommandEffect);
@@ -18220,10 +18216,10 @@ import {
18220
18216
  Popover as Popover3,
18221
18217
  PopoverAnchor as PopoverAnchor2,
18222
18218
  Spinner as Spinner5,
18223
- Tooltip as Tooltip4,
18224
- TooltipContent as TooltipContent4,
18225
- TooltipProvider as TooltipProvider3,
18226
- TooltipTrigger as TooltipTrigger4
18219
+ Tooltip as Tooltip5,
18220
+ TooltipContent as TooltipContent5,
18221
+ TooltipProvider as TooltipProvider4,
18222
+ TooltipTrigger as TooltipTrigger5
18227
18223
  } from "@tutti-os/ui-system";
18228
18224
 
18229
18225
  // agent-gui/agentGuiNode/AgentQueuedPromptPanel.tsx
@@ -18238,8 +18234,14 @@ import {
18238
18234
  DropdownMenu as DropdownMenu2,
18239
18235
  DropdownMenuContent as DropdownMenuContent2,
18240
18236
  DropdownMenuItem,
18241
- 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
18242
18243
  } from "@tutti-os/ui-system";
18244
+ import { extractPlainTextFromContent } from "@tutti-os/ui-rich-text";
18243
18245
 
18244
18246
  // agent-gui/agentGuiNode/queuedPromptImageLoadOwner.ts
18245
18247
  function queuedPromptImageLoadRequestIdentity(request) {
@@ -18331,6 +18333,7 @@ var QueuedPromptImageLoadOwner = class {
18331
18333
  // agent-gui/agentGuiNode/AgentQueuedPromptPanel.tsx
18332
18334
  import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
18333
18335
  var EMPTY_WORKSPACE_APP_ICONS2 = [];
18336
+ var QUEUED_PROMPT_OVERFLOW_DESCENDANTS = '[data-workspace-agent-markdown="true"], .tsh-agent-object-token__main';
18334
18337
  function queuedPromptImages(queuedPrompt) {
18335
18338
  return agentPromptContentImageBlocks(queuedPrompt.content);
18336
18339
  }
@@ -18442,10 +18445,53 @@ function queuedPromptDisplayText(queuedPrompt) {
18442
18445
  function queuedPromptTitle(queuedPrompt) {
18443
18446
  const prompt = queuedPromptDisplayText(queuedPrompt);
18444
18447
  if (prompt) {
18445
- return prompt;
18448
+ return extractPlainTextFromContent(prompt);
18446
18449
  }
18447
18450
  return queuedPromptImages(queuedPrompt).map((image) => image.name?.trim() ?? "").filter(Boolean).join(", ");
18448
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
+ }
18449
18495
  function AgentQueuedPromptPanel({
18450
18496
  queueStatus = "active",
18451
18497
  queuedPrompts,
@@ -18594,27 +18640,15 @@ function AgentQueuedPromptPanel({
18594
18640
  "data-testid": `agent-gui-composer-queued-prompt-${queuedPrompt.id}`,
18595
18641
  "data-draining": isDraining ? "true" : "false",
18596
18642
  children: [
18597
- /* @__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: [
18598
18644
  displayText ? /* @__PURE__ */ jsx24(
18599
- "div",
18645
+ AgentQueuedPromptText,
18600
18646
  {
18601
- ref: queuedPrompts.length === 1 ? singlePromptTextRef : void 0,
18602
- className: AgentGUINode_styles_default.composerQueuedPromptText,
18603
- onClick: (event) => {
18604
- if (event.target instanceof Element && event.target.closest("a")) {
18605
- event.stopPropagation();
18606
- }
18607
- },
18608
- children: /* @__PURE__ */ jsx24(
18609
- AgentMessageMarkdown,
18610
- {
18611
- content: displayText,
18612
- className: "agent-gui-node__composer-queued-prompt-markdown",
18613
- inline: true,
18614
- onLinkClick,
18615
- workspaceAppIcons
18616
- }
18617
- )
18647
+ displayText,
18648
+ measurementRef: queuedPrompts.length === 1 ? singlePromptTextRef : void 0,
18649
+ onLinkClick,
18650
+ title,
18651
+ workspaceAppIcons
18618
18652
  }
18619
18653
  ) : null,
18620
18654
  images.length > 0 ? /* @__PURE__ */ jsx24("div", { className: AgentGUINode_styles_default.composerQueuedPromptImages, children: images.slice(0, 3).map((image, index) => {
@@ -18730,9 +18764,9 @@ import {
18730
18764
  SelectContent,
18731
18765
  SelectItem,
18732
18766
  SelectTrigger,
18733
- Tooltip as Tooltip2,
18734
- TooltipContent as TooltipContent2,
18735
- TooltipTrigger as TooltipTrigger2,
18767
+ Tooltip as Tooltip3,
18768
+ TooltipContent as TooltipContent3,
18769
+ TooltipTrigger as TooltipTrigger3,
18736
18770
  cn as cn3
18737
18771
  } from "@tutti-os/ui-system";
18738
18772
 
@@ -19380,9 +19414,9 @@ function AgentPermissionModeDropdown({
19380
19414
  // The trigger is disabled while loading, so pointer events never reach
19381
19415
  // it. Target the tooltip at a focusable wrapper span (Radix's pattern
19382
19416
  // for disabled triggers) so hover/focus reliably surfaces the hint.
19383
- /* @__PURE__ */ jsxs19(Tooltip2, { children: [
19384
- /* @__PURE__ */ jsx26(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx26("span", { className: "inline-flex", tabIndex: 0, children: selectTrigger }) }),
19385
- /* @__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 })
19386
19420
  ] })
19387
19421
  ) : selectTrigger,
19388
19422
  isSelectOpen ? /* @__PURE__ */ jsx26(
@@ -19499,9 +19533,9 @@ function ComposerOptionInfoTooltip({
19499
19533
  if (!tooltipsEnabled) {
19500
19534
  return trigger;
19501
19535
  }
19502
- return /* @__PURE__ */ jsxs19(Tooltip2, { children: [
19503
- /* @__PURE__ */ jsx26(TooltipTrigger2, { asChild: true, children: trigger }),
19504
- /* @__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 })
19505
19539
  ] });
19506
19540
  }
19507
19541
  function resolvePermissionModeTriggerTone(value) {
@@ -19582,9 +19616,9 @@ function AgentModelReasoningDropdown({
19582
19616
  // The trigger is disabled while loading, so pointer events never reach
19583
19617
  // it. Target the tooltip at a focusable wrapper span (Radix's pattern
19584
19618
  // for disabled triggers) so hover/focus reliably surfaces the hint.
19585
- /* @__PURE__ */ jsxs19(Tooltip2, { children: [
19586
- /* @__PURE__ */ jsx26(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx26("span", { className: "inline-flex", tabIndex: 0, children: /* @__PURE__ */ jsx26(DropdownMenuTrigger3, { asChild: true, disabled: menuDisabled, children: trigger }) }) }),
19587
- /* @__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 })
19588
19622
  ] })
19589
19623
  ) : /* @__PURE__ */ jsx26(DropdownMenuTrigger3, { asChild: true, disabled: menuDisabled, children: trigger }),
19590
19624
  /* @__PURE__ */ jsxs19(
@@ -19787,12 +19821,12 @@ function ComposerModelOptionTooltip({
19787
19821
  if (!tooltipsEnabled || !option.tooltip) {
19788
19822
  return children;
19789
19823
  }
19790
- return /* @__PURE__ */ jsxs19(Tooltip2, { children: [
19791
- /* @__PURE__ */ jsx26(TooltipTrigger2, { asChild: true, children: cloneElement(children, {
19824
+ return /* @__PURE__ */ jsxs19(Tooltip3, { children: [
19825
+ /* @__PURE__ */ jsx26(TooltipTrigger3, { asChild: true, children: cloneElement(children, {
19792
19826
  "data-agent-model-option-tooltip-trigger": "true"
19793
19827
  }) }),
19794
19828
  /* @__PURE__ */ jsxs19(
19795
- TooltipContent2,
19829
+ TooltipContent3,
19796
19830
  {
19797
19831
  side: "right",
19798
19832
  align: "start",
@@ -20378,7 +20412,7 @@ function AgentRichTextEditorSurface({
20378
20412
  "aria-multiline": "true",
20379
20413
  className: cn(
20380
20414
  className,
20381
- "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"
20382
20416
  )
20383
20417
  }
20384
20418
  ),
@@ -20698,7 +20732,7 @@ var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
20698
20732
  "aria-multiline": "true",
20699
20733
  class: cn(
20700
20734
  className,
20701
- "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"
20702
20736
  )
20703
20737
  },
20704
20738
  clipboardTextSerializer: (slice) => agentRichTextContentToPromptText(slice.content.toJSON()),
@@ -21112,6 +21146,39 @@ function releasePastedAtSuggestionSuppression(ref) {
21112
21146
  }, 0);
21113
21147
  }
21114
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
+
21115
21182
  // agent-gui/agentGuiNode/AgentSlashCommandPalette.tsx
21116
21183
  import { Fragment as Fragment8, useEffect as useEffect25, useRef as useRef26 } from "react";
21117
21184
  import { Spinner as Spinner3 } from "@tutti-os/ui-system";
@@ -21125,10 +21192,10 @@ import {
21125
21192
  Target,
21126
21193
  ZapIcon as ZapIcon2
21127
21194
  } from "lucide-react";
21128
- import { jsx as jsx29, jsxs as jsxs21 } from "react/jsx-runtime";
21195
+ import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
21129
21196
  var paletteStyles = {
21130
- 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]",
21131
- 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",
21132
21199
  icon: "flex w-3 shrink-0 items-center justify-center self-center text-[var(--text-secondary)]",
21133
21200
  copy: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden leading-[16px]",
21134
21201
  name: "flex min-w-0 max-w-[48%] shrink-0 items-center gap-1 overflow-hidden",
@@ -21138,7 +21205,7 @@ var paletteStyles = {
21138
21205
  groupHeader: "select-none px-2.5 pb-0.5 text-[11px] font-normal text-[var(--text-secondary)]",
21139
21206
  groupHeaderFirst: "pt-1.5",
21140
21207
  groupHeaderSeparated: "mt-1 border-t border-[var(--border-1)] pt-2",
21141
- 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))]",
21142
21209
  loading: "flex min-h-9 w-full items-center gap-2 px-2.5 py-2 text-[11px] text-[var(--text-secondary)]"
21143
21210
  };
21144
21211
  function AgentSlashCommandPalette({
@@ -21184,7 +21251,7 @@ function AgentSlashCommandPalette({
21184
21251
  );
21185
21252
  const capabilityLoadingInsertIndex = capabilitiesLoading ? capabilityLoadingIndex(entries) : -1;
21186
21253
  const capabilityLoadingNode = capabilitiesLoading ? /* @__PURE__ */ jsxs21(Fragment8, { children: [
21187
- !hasCapabilityEntries ? /* @__PURE__ */ jsx29(
21254
+ !hasCapabilityEntries ? /* @__PURE__ */ jsx30(
21188
21255
  "div",
21189
21256
  {
21190
21257
  "aria-hidden": "true",
@@ -21196,8 +21263,8 @@ function AgentSlashCommandPalette({
21196
21263
  }
21197
21264
  ) : null,
21198
21265
  /* @__PURE__ */ jsxs21("div", { "aria-live": "polite", className: paletteStyles.loading, role: "status", children: [
21199
- /* @__PURE__ */ jsx29("span", { "aria-hidden": "true", className: paletteStyles.icon, children: /* @__PURE__ */ jsx29(Spinner3, { size: 12, strokeWidth: 2 }) }),
21200
- /* @__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 })
21201
21268
  ] })
21202
21269
  ] }, "capability-loading") : null;
21203
21270
  return /* @__PURE__ */ jsxs21("div", { className: paletteStyles.palette, role: "listbox", "aria-label": label, children: [
@@ -21205,7 +21272,7 @@ function AgentSlashCommandPalette({
21205
21272
  const isHighlighted = index === highlightedIndex;
21206
21273
  const groupType = entryGroupType(entry);
21207
21274
  const entryIcon = slashPaletteEntryIcon(entry);
21208
- const groupHeader = showGroupHeaders && firstEntryIndexByType.get(groupType) === index ? /* @__PURE__ */ jsx29(
21275
+ const groupHeader = showGroupHeaders && firstEntryIndexByType.get(groupType) === index ? /* @__PURE__ */ jsx30(
21209
21276
  "div",
21210
21277
  {
21211
21278
  "aria-hidden": "true",
@@ -21255,15 +21322,15 @@ function AgentSlashCommandPalette({
21255
21322
  onSelectSkill(entry.skill);
21256
21323
  },
21257
21324
  children: [
21258
- 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,
21259
21326
  /* @__PURE__ */ jsxs21("span", { className: paletteStyles.copy, children: [
21260
21327
  /* @__PURE__ */ jsxs21("span", { className: paletteStyles.name, children: [
21261
- /* @__PURE__ */ jsx29("span", { className: paletteStyles.primaryName, children: entry.type === "command" ? entry.primaryLabel ?? entry.label : entry.label }),
21262
- 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
21263
21330
  ] }),
21264
- 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
21265
21332
  ] }),
21266
- entry.type === "capability" && entry.settingsLabel && onSelectCapabilitySettings ? /* @__PURE__ */ jsx29(
21333
+ entry.type === "capability" && entry.settingsLabel && onSelectCapabilitySettings ? /* @__PURE__ */ jsx30(
21267
21334
  "button",
21268
21335
  {
21269
21336
  "aria-label": entry.settingsAriaLabel ?? entry.settingsLabel,
@@ -21334,24 +21401,24 @@ function labelForEntryGroupType(groupType, labels) {
21334
21401
  var SLASH_PALETTE_ICON_CLASS = "size-3";
21335
21402
  function slashPaletteEntryIcon(entry) {
21336
21403
  if (entry.type === "capability") {
21337
- 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 });
21338
21405
  }
21339
21406
  if (entry.type !== "command") {
21340
21407
  return null;
21341
21408
  }
21342
21409
  switch (entry.command.name.trim().toLowerCase()) {
21343
21410
  case "compact":
21344
- return /* @__PURE__ */ jsx29(Minimize2, { className: SLASH_PALETTE_ICON_CLASS });
21411
+ return /* @__PURE__ */ jsx30(Minimize2, { className: SLASH_PALETTE_ICON_CLASS });
21345
21412
  case "fast":
21346
- return /* @__PURE__ */ jsx29(ZapIcon2, { className: SLASH_PALETTE_ICON_CLASS });
21413
+ return /* @__PURE__ */ jsx30(ZapIcon2, { className: SLASH_PALETTE_ICON_CLASS });
21347
21414
  case "goal":
21348
- return /* @__PURE__ */ jsx29(Target, { className: SLASH_PALETTE_ICON_CLASS });
21415
+ return /* @__PURE__ */ jsx30(Target, { className: SLASH_PALETTE_ICON_CLASS });
21349
21416
  case "plan":
21350
- return /* @__PURE__ */ jsx29(ListChecks, { className: SLASH_PALETTE_ICON_CLASS });
21417
+ return /* @__PURE__ */ jsx30(ListChecks, { className: SLASH_PALETTE_ICON_CLASS });
21351
21418
  case "review":
21352
- return /* @__PURE__ */ jsx29(Search, { className: SLASH_PALETTE_ICON_CLASS });
21419
+ return /* @__PURE__ */ jsx30(Search, { className: SLASH_PALETTE_ICON_CLASS });
21353
21420
  case "status":
21354
- return /* @__PURE__ */ jsx29(Info, { className: SLASH_PALETTE_ICON_CLASS });
21421
+ return /* @__PURE__ */ jsx30(Info, { className: SLASH_PALETTE_ICON_CLASS });
21355
21422
  default:
21356
21423
  return null;
21357
21424
  }
@@ -21453,7 +21520,7 @@ var AgentReviewBranchController = class {
21453
21520
  };
21454
21521
 
21455
21522
  // agent-gui/agentGuiNode/AgentReviewPickerPanel.tsx
21456
- import { jsx as jsx30, jsxs as jsxs22 } from "react/jsx-runtime";
21523
+ import { jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
21457
21524
  var reviewMenuStyles = {
21458
21525
  panel: "agent-gui-node__slash-status-panel nodrag flex max-h-[280px] flex-col gap-1 overflow-hidden [-webkit-app-region:no-drag]",
21459
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]",
@@ -21657,7 +21724,7 @@ function AgentReviewPickerPanel({
21657
21724
  role: "dialog",
21658
21725
  "aria-label": labels.title,
21659
21726
  children: [
21660
- /* @__PURE__ */ jsx30(
21727
+ /* @__PURE__ */ jsx31(
21661
21728
  "input",
21662
21729
  {
21663
21730
  ref: searchInputRef,
@@ -21673,15 +21740,15 @@ function AgentReviewPickerPanel({
21673
21740
  onKeyDown: handleKeyDown
21674
21741
  }
21675
21742
  ),
21676
- /* @__PURE__ */ jsx30(
21743
+ /* @__PURE__ */ jsx31(
21677
21744
  "div",
21678
21745
  {
21679
21746
  className: reviewMenuStyles.list,
21680
21747
  role: "listbox",
21681
21748
  "aria-label": labels.title,
21682
- 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) => {
21683
21750
  const isHighlighted = index === safeHighlightedIndex;
21684
- return /* @__PURE__ */ jsx30(
21751
+ return /* @__PURE__ */ jsx31(
21685
21752
  "button",
21686
21753
  {
21687
21754
  ref: isHighlighted ? highlightedOptionRef : null,
@@ -21702,8 +21769,8 @@ function AgentReviewPickerPanel({
21702
21769
  }
21703
21770
  },
21704
21771
  children: /* @__PURE__ */ jsxs22("span", { className: reviewMenuStyles.copy, children: [
21705
- /* @__PURE__ */ jsx30("span", { className: reviewMenuStyles.name, children: entry.label }),
21706
- 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
21707
21774
  ] })
21708
21775
  },
21709
21776
  entry.key
@@ -21727,7 +21794,7 @@ import {
21727
21794
  useState as useState19
21728
21795
  } from "react";
21729
21796
  import { createPortal as createPortal3 } from "react-dom";
21730
- import { jsx as jsx31 } from "react/jsx-runtime";
21797
+ import { jsx as jsx32 } from "react/jsx-runtime";
21731
21798
  var COMPOSER_MENU_GAP_PX = 8;
21732
21799
  var COMPOSER_MENU_VIEWPORT_PADDING_PX = 8;
21733
21800
  var COMPOSER_MENU_TOP_SAFE_AREA_PX = DESKTOP_WINDOW_TOP_MARGIN;
@@ -21960,7 +22027,7 @@ var ComposerFloatingMenuSurface = forwardRef4(function ComposerFloatingMenuSurfa
21960
22027
  }
21961
22028
  const portalTarget = frame?.portalTarget ?? (anchorRef.current ? resolveComposerMenuPortalTarget(anchorRef.current) : document.body);
21962
22029
  return createPortal3(
21963
- /* @__PURE__ */ jsx31(
22030
+ /* @__PURE__ */ jsx32(
21964
22031
  "div",
21965
22032
  {
21966
22033
  "data-testid": testId,
@@ -21971,7 +22038,7 @@ var ComposerFloatingMenuSurface = forwardRef4(function ComposerFloatingMenuSurfa
21971
22038
  className
21972
22039
  ),
21973
22040
  style,
21974
- children: contentClassName ? /* @__PURE__ */ jsx31("div", { className: contentClassName, children }) : children
22041
+ children: contentClassName ? /* @__PURE__ */ jsx32("div", { className: contentClassName, children }) : children
21975
22042
  }
21976
22043
  ),
21977
22044
  portalTarget
@@ -21981,7 +22048,7 @@ var ComposerFloatingMenuSurface = forwardRef4(function ComposerFloatingMenuSurfa
21981
22048
  // agent-gui/agentGuiNode/composer/ComposerDraftAttachments.tsx
21982
22049
  import { FileText, X as X3 } from "lucide-react";
21983
22050
  import { Spinner as Spinner4 } from "@tutti-os/ui-system";
21984
- 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";
21985
22052
  function ComposerDraftAttachments({
21986
22053
  draftImages,
21987
22054
  draftFiles: visibleDraftFiles,
@@ -21994,12 +22061,12 @@ function ComposerDraftAttachments({
21994
22061
  }) {
21995
22062
  const labels = { removeMention: removeLabel };
21996
22063
  return /* @__PURE__ */ jsxs23(Fragment9, { children: [
21997
- draftImages.length > 0 ? /* @__PURE__ */ jsx32(
22064
+ draftImages.length > 0 ? /* @__PURE__ */ jsx33(
21998
22065
  "div",
21999
22066
  {
22000
22067
  className: "mb-2 flex w-full max-w-full flex-wrap items-start gap-2",
22001
22068
  "data-testid": "agent-gui-composer-image-drafts",
22002
- children: draftImages.map((image) => /* @__PURE__ */ jsx32(
22069
+ children: draftImages.map((image) => /* @__PURE__ */ jsx33(
22003
22070
  AgentComposerDraftImagePreview,
22004
22071
  {
22005
22072
  image,
@@ -22048,7 +22115,7 @@ function ComposerDraftAttachments({
22048
22115
  title: item.uploadError ?? (canRestore ? restoreLabel : preview),
22049
22116
  onClick: () => expandDraftLargeTextToPrompt(item.id),
22050
22117
  children: [
22051
- /* @__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(
22052
22119
  Spinner4,
22053
22120
  {
22054
22121
  size: 16,
@@ -22056,15 +22123,15 @@ function ComposerDraftAttachments({
22056
22123
  trackColor: "var(--transparency-hover)",
22057
22124
  testId: "agent-gui-composer-large-text-upload-spinner"
22058
22125
  }
22059
- ) : /* @__PURE__ */ jsx32(FileText, { size: 16, strokeWidth: 2, "aria-hidden": true }) }),
22126
+ ) : /* @__PURE__ */ jsx33(FileText, { size: 16, strokeWidth: 2, "aria-hidden": true }) }),
22060
22127
  /* @__PURE__ */ jsxs23("span", { className: "flex min-w-0 flex-col", children: [
22061
- /* @__PURE__ */ jsx32("span", { className: "max-w-[200px] truncate font-medium text-[var(--text-primary)]", children: preview }),
22062
- /* @__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 })
22063
22130
  ] })
22064
22131
  ]
22065
22132
  }
22066
22133
  ),
22067
- /* @__PURE__ */ jsx32(
22134
+ /* @__PURE__ */ jsx33(
22068
22135
  "button",
22069
22136
  {
22070
22137
  type: "button",
@@ -22072,7 +22139,7 @@ function ComposerDraftAttachments({
22072
22139
  "aria-label": labels.removeMention,
22073
22140
  title: labels.removeMention,
22074
22141
  onClick: () => removeDraftLargeText(item.id),
22075
- 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 })
22076
22143
  }
22077
22144
  )
22078
22145
  ]
@@ -22091,7 +22158,7 @@ function ComposerDraftAttachments({
22091
22158
  "data-upload-error": file.uploadError ? "true" : void 0,
22092
22159
  title: file.hostPath ?? file.path ?? file.name,
22093
22160
  children: [
22094
- file.uploading ? /* @__PURE__ */ jsx32(
22161
+ file.uploading ? /* @__PURE__ */ jsx33(
22095
22162
  Spinner4,
22096
22163
  {
22097
22164
  className: "shrink-0 text-[var(--text-primary)]",
@@ -22100,15 +22167,15 @@ function ComposerDraftAttachments({
22100
22167
  trackColor: "var(--transparency-hover)",
22101
22168
  testId: "agent-gui-composer-file-upload-spinner"
22102
22169
  }
22103
- ) : /* @__PURE__ */ jsx32(
22170
+ ) : /* @__PURE__ */ jsx33(
22104
22171
  "span",
22105
22172
  {
22106
22173
  className: "size-2 shrink-0 rounded-full bg-[var(--text-tertiary)]",
22107
22174
  "aria-hidden": true
22108
22175
  }
22109
22176
  ),
22110
- /* @__PURE__ */ jsx32("span", { className: "min-w-0 max-w-[220px] truncate", children: file.name }),
22111
- /* @__PURE__ */ jsx32(
22177
+ /* @__PURE__ */ jsx33("span", { className: "min-w-0 max-w-[220px] truncate", children: file.name }),
22178
+ /* @__PURE__ */ jsx33(
22112
22179
  "button",
22113
22180
  {
22114
22181
  type: "button",
@@ -22116,7 +22183,7 @@ function ComposerDraftAttachments({
22116
22183
  "aria-label": labels.removeMention,
22117
22184
  title: labels.removeMention,
22118
22185
  onClick: () => removeDraftFile(file.id),
22119
- 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 })
22120
22187
  }
22121
22188
  )
22122
22189
  ]
@@ -22136,10 +22203,10 @@ import {
22136
22203
  SelectContent as SelectContent2,
22137
22204
  SelectItem as SelectItem2,
22138
22205
  SelectTrigger as SelectTrigger2,
22139
- Tooltip as Tooltip3,
22140
- TooltipContent as TooltipContent3,
22141
- TooltipProvider as TooltipProvider2,
22142
- TooltipTrigger as TooltipTrigger3
22206
+ Tooltip as Tooltip4,
22207
+ TooltipContent as TooltipContent4,
22208
+ TooltipProvider as TooltipProvider3,
22209
+ TooltipTrigger as TooltipTrigger4
22143
22210
  } from "@tutti-os/ui-system";
22144
22211
 
22145
22212
  // app/renderer/assets/icons/add-lined-bold.svg
@@ -22149,7 +22216,7 @@ var add_lined_bold_default = "./add-lined-bold-5QPUDZCU.svg";
22149
22216
  var bold_lined_default = "./@-bold-lined-BLLFKBFI.svg";
22150
22217
 
22151
22218
  // agent-gui/agentGuiNode/composer/ComposerFooter.tsx
22152
- 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";
22153
22220
  function ComposerFooter({
22154
22221
  labels,
22155
22222
  composerSettings,
@@ -22188,11 +22255,11 @@ function ComposerFooter({
22188
22255
  onClearGoalMode: clearGoalModeBadge
22189
22256
  }) {
22190
22257
  const showSettingsLoadingPlaceholders = composerSettings.isSettingsLoading;
22191
- 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: [
22192
22259
  /* @__PURE__ */ jsxs24("div", { className: composerStyles.footerGroup, children: [
22193
22260
  /* @__PURE__ */ jsxs24("div", { className: "inline-flex shrink-0 items-center gap-1", children: [
22194
- previewMode ? /* @__PURE__ */ jsx33(TooltipProvider2, { delayDuration: 120, children: /* @__PURE__ */ jsxs24(Tooltip3, { children: [
22195
- /* @__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(
22196
22263
  "button",
22197
22264
  {
22198
22265
  type: "button",
@@ -22202,7 +22269,7 @@ function ComposerFooter({
22202
22269
  AgentGUINode_styles_default.composerReferenceTrigger,
22203
22270
  "group w-auto justify-center text-[var(--agent-gui-text-secondary)]"
22204
22271
  ),
22205
- children: /* @__PURE__ */ jsx33(
22272
+ children: /* @__PURE__ */ jsx34(
22206
22273
  AgentComposerMaskIcon,
22207
22274
  {
22208
22275
  iconUrl: add_lined_bold_default,
@@ -22211,9 +22278,9 @@ function ComposerFooter({
22211
22278
  )
22212
22279
  }
22213
22280
  ) }),
22214
- /* @__PURE__ */ jsx33(TooltipContent3, { side: "top", children: labels.addContent })
22215
- ] }) }) : /* @__PURE__ */ jsx33(TooltipProvider2, { delayDuration: 120, children: /* @__PURE__ */ jsxs24(Tooltip3, { children: [
22216
- /* @__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(
22217
22284
  Select2,
22218
22285
  {
22219
22286
  open: false,
@@ -22229,7 +22296,7 @@ function ComposerFooter({
22229
22296
  void handleWorkspaceReferencePicker();
22230
22297
  }
22231
22298
  },
22232
- children: /* @__PURE__ */ jsx33(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx33(
22299
+ children: /* @__PURE__ */ jsx34(TooltipTrigger4, { asChild: true, children: /* @__PURE__ */ jsx34(
22233
22300
  SelectTrigger2,
22234
22301
  {
22235
22302
  size: "sm",
@@ -22240,7 +22307,7 @@ function ComposerFooter({
22240
22307
  AgentGUINode_styles_default.composerReferenceTrigger,
22241
22308
  "group w-auto justify-center text-[var(--agent-gui-text-secondary)] [&>svg:last-child]:hidden"
22242
22309
  ),
22243
- children: /* @__PURE__ */ jsx33(
22310
+ children: /* @__PURE__ */ jsx34(
22244
22311
  AgentComposerMaskIcon,
22245
22312
  {
22246
22313
  iconUrl: add_lined_bold_default,
@@ -22251,10 +22318,10 @@ function ComposerFooter({
22251
22318
  ) })
22252
22319
  }
22253
22320
  ),
22254
- /* @__PURE__ */ jsx33(TooltipContent3, { side: "top", children: labels.addContent })
22321
+ /* @__PURE__ */ jsx34(TooltipContent4, { side: "top", children: labels.addContent })
22255
22322
  ] }) }),
22256
- /* @__PURE__ */ jsx33(TooltipProvider2, { delayDuration: 120, children: /* @__PURE__ */ jsxs24(Tooltip3, { children: [
22257
- /* @__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(
22258
22325
  "button",
22259
22326
  {
22260
22327
  type: "button",
@@ -22267,7 +22334,7 @@ function ComposerFooter({
22267
22334
  ),
22268
22335
  onMouseDown: (event) => event.preventDefault(),
22269
22336
  onClick: handleMentionPaletteButton,
22270
- children: /* @__PURE__ */ jsx33(
22337
+ children: /* @__PURE__ */ jsx34(
22271
22338
  "span",
22272
22339
  {
22273
22340
  "aria-hidden": true,
@@ -22286,10 +22353,10 @@ function ComposerFooter({
22286
22353
  )
22287
22354
  }
22288
22355
  ) }),
22289
- /* @__PURE__ */ jsx33(TooltipContent3, { side: "top", children: labels.mentionPalette })
22356
+ /* @__PURE__ */ jsx34(TooltipContent4, { side: "top", children: labels.mentionPalette })
22290
22357
  ] }) })
22291
22358
  ] }),
22292
- showHandoffSelect ? /* @__PURE__ */ jsx33(TooltipProvider2, { children: /* @__PURE__ */ jsxs24(Tooltip3, { children: [
22359
+ showHandoffSelect ? /* @__PURE__ */ jsx34(TooltipProvider3, { children: /* @__PURE__ */ jsxs24(Tooltip4, { children: [
22293
22360
  /* @__PURE__ */ jsxs24(
22294
22361
  Select2,
22295
22362
  {
@@ -22305,7 +22372,7 @@ function ComposerFooter({
22305
22372
  onHandoffConversation?.(target);
22306
22373
  },
22307
22374
  children: [
22308
- /* @__PURE__ */ jsx33(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx33(
22375
+ /* @__PURE__ */ jsx34(TooltipTrigger4, { asChild: true, children: /* @__PURE__ */ jsx34(
22309
22376
  SelectTrigger2,
22310
22377
  {
22311
22378
  size: "sm",
@@ -22330,18 +22397,18 @@ function ComposerFooter({
22330
22397
  "w-auto max-w-[180px] [&>svg:last-child]:hidden"
22331
22398
  ),
22332
22399
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5", children: [
22333
- /* @__PURE__ */ jsx33(
22400
+ /* @__PURE__ */ jsx34(
22334
22401
  AgentComposerHandoffIcon,
22335
22402
  {
22336
22403
  disabled: handoffDisabled,
22337
22404
  isPlaying: isHandoffIconPlaying
22338
22405
  }
22339
22406
  ),
22340
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: effectiveHandoffLabel })
22407
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: effectiveHandoffLabel })
22341
22408
  ] })
22342
22409
  }
22343
22410
  ) }),
22344
- /* @__PURE__ */ jsx33(
22411
+ /* @__PURE__ */ jsx34(
22345
22412
  SelectContent2,
22346
22413
  {
22347
22414
  align: "start",
@@ -22351,14 +22418,14 @@ function ComposerFooter({
22351
22418
  "min-w-[190px]"
22352
22419
  ),
22353
22420
  "aria-label": effectiveHandoffMenuLabel,
22354
- children: handoffMenuTargets.map((target) => /* @__PURE__ */ jsx33(
22421
+ children: handoffMenuTargets.map((target) => /* @__PURE__ */ jsx34(
22355
22422
  SelectItem2,
22356
22423
  {
22357
22424
  value: target.targetId,
22358
22425
  className: cn(AgentGUINode_styles_default.composerMenuItem, "gap-2"),
22359
22426
  disabled: target.disabled === true,
22360
22427
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5", children: [
22361
- /* @__PURE__ */ jsx33(
22428
+ /* @__PURE__ */ jsx34(
22362
22429
  "img",
22363
22430
  {
22364
22431
  alt: "",
@@ -22367,7 +22434,7 @@ function ComposerFooter({
22367
22434
  src: resolveComposerProviderTargetIconUrl(target)
22368
22435
  }
22369
22436
  ),
22370
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: target.label })
22437
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: target.label })
22371
22438
  ] })
22372
22439
  },
22373
22440
  `${target.provider}:${target.targetId}`
@@ -22377,7 +22444,7 @@ function ComposerFooter({
22377
22444
  ]
22378
22445
  }
22379
22446
  ),
22380
- /* @__PURE__ */ jsx33(TooltipContent3, { side: "top", children: labels.handoffConversationTooltip })
22447
+ /* @__PURE__ */ jsx34(TooltipContent4, { side: "top", children: labels.handoffConversationTooltip })
22381
22448
  ] }) }) : showProviderSelect && selectedProviderSwitchTarget ? /* @__PURE__ */ jsxs24(
22382
22449
  Select2,
22383
22450
  {
@@ -22396,7 +22463,7 @@ function ComposerFooter({
22396
22463
  });
22397
22464
  },
22398
22465
  children: [
22399
- /* @__PURE__ */ jsx33(
22466
+ /* @__PURE__ */ jsx34(
22400
22467
  SelectTrigger2,
22401
22468
  {
22402
22469
  size: "sm",
@@ -22408,7 +22475,7 @@ function ComposerFooter({
22408
22475
  "w-auto max-w-[180px]"
22409
22476
  ),
22410
22477
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5", children: [
22411
- /* @__PURE__ */ jsx33(
22478
+ /* @__PURE__ */ jsx34(
22412
22479
  "img",
22413
22480
  {
22414
22481
  alt: "",
@@ -22419,22 +22486,22 @@ function ComposerFooter({
22419
22486
  )
22420
22487
  }
22421
22488
  ),
22422
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: selectedProviderLabel })
22489
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: selectedProviderLabel })
22423
22490
  ] })
22424
22491
  }
22425
22492
  ),
22426
- /* @__PURE__ */ jsx33(
22493
+ /* @__PURE__ */ jsx34(
22427
22494
  SelectContent2,
22428
22495
  {
22429
22496
  align: "start",
22430
22497
  className: cn(AgentGUINode_styles_default.composerMenuContent, "min-w-[190px]"),
22431
- children: providerMenuTargets.map((target) => /* @__PURE__ */ jsx33(
22498
+ children: providerMenuTargets.map((target) => /* @__PURE__ */ jsx34(
22432
22499
  SelectItem2,
22433
22500
  {
22434
22501
  value: target.targetId,
22435
22502
  className: cn(AgentGUINode_styles_default.composerMenuItem, "gap-2"),
22436
22503
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5", children: [
22437
- /* @__PURE__ */ jsx33(
22504
+ /* @__PURE__ */ jsx34(
22438
22505
  "img",
22439
22506
  {
22440
22507
  alt: "",
@@ -22443,7 +22510,7 @@ function ComposerFooter({
22443
22510
  src: resolveComposerProviderTargetIconUrl(target)
22444
22511
  }
22445
22512
  ),
22446
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: target.label })
22513
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: target.label })
22447
22514
  ] })
22448
22515
  },
22449
22516
  `${target.provider}:${target.targetId}`
@@ -22453,7 +22520,7 @@ function ComposerFooter({
22453
22520
  ]
22454
22521
  }
22455
22522
  ) : null,
22456
- composerSettings.supportsPlanMode && composerSettings.draftSettings.planMode ? /* @__PURE__ */ jsx33(
22523
+ composerSettings.supportsPlanMode && composerSettings.draftSettings.planMode ? /* @__PURE__ */ jsx34(
22457
22524
  "button",
22458
22525
  {
22459
22526
  type: "button",
@@ -22469,19 +22536,19 @@ function ComposerFooter({
22469
22536
  onClick: () => onSettingsChange({ planMode: false }),
22470
22537
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5 overflow-hidden", children: [
22471
22538
  /* @__PURE__ */ jsxs24("span", { className: "relative flex size-3.5 shrink-0 items-center justify-center", children: [
22472
- /* @__PURE__ */ jsx33(
22539
+ /* @__PURE__ */ jsx34(
22473
22540
  ListChecks2,
22474
22541
  {
22475
22542
  "aria-hidden": true,
22476
22543
  className: "size-3.5 transition-opacity duration-150 group-hover:opacity-0 group-focus-visible:opacity-0"
22477
22544
  }
22478
22545
  ),
22479
- /* @__PURE__ */ jsx33(
22546
+ /* @__PURE__ */ jsx34(
22480
22547
  "span",
22481
22548
  {
22482
22549
  "aria-hidden": true,
22483
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",
22484
- children: /* @__PURE__ */ jsx33(
22551
+ children: /* @__PURE__ */ jsx34(
22485
22552
  X4,
22486
22553
  {
22487
22554
  className: "size-2.5 text-[var(--background-fronted)]",
@@ -22491,11 +22558,11 @@ function ComposerFooter({
22491
22558
  }
22492
22559
  )
22493
22560
  ] }),
22494
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: labels.planModeLabel })
22561
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: labels.planModeLabel })
22495
22562
  ] })
22496
22563
  }
22497
22564
  ) : null,
22498
- isGoalModeActive ? /* @__PURE__ */ jsx33(
22565
+ isGoalModeActive ? /* @__PURE__ */ jsx34(
22499
22566
  "button",
22500
22567
  {
22501
22568
  type: "button",
@@ -22511,19 +22578,19 @@ function ComposerFooter({
22511
22578
  onClick: clearGoalModeBadge,
22512
22579
  children: /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 items-center gap-1.5 overflow-hidden", children: [
22513
22580
  /* @__PURE__ */ jsxs24("span", { className: "relative flex size-3.5 shrink-0 items-center justify-center", children: [
22514
- /* @__PURE__ */ jsx33(
22581
+ /* @__PURE__ */ jsx34(
22515
22582
  Target2,
22516
22583
  {
22517
22584
  "aria-hidden": true,
22518
22585
  className: "size-3.5 transition-opacity duration-150 group-hover:opacity-0 group-focus-visible:opacity-0"
22519
22586
  }
22520
22587
  ),
22521
- /* @__PURE__ */ jsx33(
22588
+ /* @__PURE__ */ jsx34(
22522
22589
  "span",
22523
22590
  {
22524
22591
  "aria-hidden": true,
22525
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",
22526
- children: /* @__PURE__ */ jsx33(
22593
+ children: /* @__PURE__ */ jsx34(
22527
22594
  X4,
22528
22595
  {
22529
22596
  className: "size-2.5 text-[var(--background-fronted)]",
@@ -22533,13 +22600,13 @@ function ComposerFooter({
22533
22600
  }
22534
22601
  )
22535
22602
  ] }),
22536
- /* @__PURE__ */ jsx33("span", { className: "min-w-0 truncate", children: labels.goalLabel })
22603
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: labels.goalLabel })
22537
22604
  ] })
22538
22605
  }
22539
22606
  ) : null
22540
22607
  ] }),
22541
22608
  /* @__PURE__ */ jsxs24("div", { className: composerStyles.footerGroupRight, children: [
22542
- usage && usage.percentUsed !== null ? /* @__PURE__ */ jsx33(
22609
+ usage && usage.percentUsed !== null ? /* @__PURE__ */ jsx34(
22543
22610
  AgentUsageChip,
22544
22611
  {
22545
22612
  percentUsed: usage.percentUsed,
@@ -22558,7 +22625,7 @@ function ComposerFooter({
22558
22625
  }
22559
22626
  }
22560
22627
  ) : null,
22561
- showSettingsLoadingPlaceholders || composerSettings.supportsPermissionMode ? /* @__PURE__ */ jsx33(
22628
+ showSettingsLoadingPlaceholders || composerSettings.supportsPermissionMode ? /* @__PURE__ */ jsx34(
22562
22629
  AgentPermissionModeDropdown,
22563
22630
  {
22564
22631
  composerSettings,
@@ -22571,7 +22638,7 @@ function ComposerFooter({
22571
22638
  onSettingsChange: (patch) => onSettingsChange(patch)
22572
22639
  }
22573
22640
  ) : null,
22574
- showSettingsLoadingPlaceholders || composerSettings.supportsModel || composerSettings.supportsReasoningEffort ? /* @__PURE__ */ jsx33(
22641
+ showSettingsLoadingPlaceholders || composerSettings.supportsModel || composerSettings.supportsReasoningEffort ? /* @__PURE__ */ jsx34(
22575
22642
  AgentModelReasoningDropdown,
22576
22643
  {
22577
22644
  composerSettings,
@@ -22614,7 +22681,7 @@ function ComposerFooter({
22614
22681
  }
22615
22682
 
22616
22683
  // agent-gui/agentGuiNode/composer/AgentComposerView.tsx
22617
- import { jsx as jsx34, jsxs as jsxs25 } from "react/jsx-runtime";
22684
+ import { jsx as jsx35, jsxs as jsxs25 } from "react/jsx-runtime";
22618
22685
  function AgentComposerView(input) {
22619
22686
  const {
22620
22687
  slashStatus = null,
@@ -22642,6 +22709,7 @@ function AgentComposerView(input) {
22642
22709
  onEditQueuedPrompt,
22643
22710
  onPromptImagesUnsupported,
22644
22711
  onRequestWorkspaceReferences,
22712
+ referenceProvenanceFilter,
22645
22713
  selectProjectDirectory,
22646
22714
  onProjectPathChange = () => {
22647
22715
  },
@@ -22741,12 +22809,12 @@ function AgentComposerView(input) {
22741
22809
  onSubmit: submit,
22742
22810
  children: [
22743
22811
  fileDropOverlay,
22744
- visibleActivePrompt ? /* @__PURE__ */ jsx34(
22812
+ visibleActivePrompt ? /* @__PURE__ */ jsx35(
22745
22813
  "div",
22746
22814
  {
22747
22815
  className: AgentGUINode_styles_default.composerFloatingPrompt,
22748
22816
  "data-testid": "agent-gui-composer-floating-prompt",
22749
- children: /* @__PURE__ */ jsx34(
22817
+ children: /* @__PURE__ */ jsx35(
22750
22818
  AgentInteractivePromptSurface,
22751
22819
  {
22752
22820
  prompt: visibleActivePrompt,
@@ -22778,7 +22846,7 @@ function AgentComposerView(input) {
22778
22846
  )
22779
22847
  }
22780
22848
  ) : null,
22781
- queuedPrompts.length > 0 ? /* @__PURE__ */ jsx34(
22849
+ queuedPrompts.length > 0 ? /* @__PURE__ */ jsx35(
22782
22850
  "div",
22783
22851
  {
22784
22852
  className: cn(
@@ -22786,7 +22854,7 @@ function AgentComposerView(input) {
22786
22854
  AgentGUINode_styles_default.composerQueuedPromptFloating
22787
22855
  ),
22788
22856
  "data-testid": "agent-gui-composer-queued-prompts",
22789
- children: /* @__PURE__ */ jsx34(
22857
+ children: /* @__PURE__ */ jsx35(
22790
22858
  AgentQueuedPromptPanel,
22791
22859
  {
22792
22860
  queueStatus,
@@ -22811,7 +22879,7 @@ function AgentComposerView(input) {
22811
22879
  )
22812
22880
  }
22813
22881
  ) : null,
22814
- showProjectMissingProbe ? /* @__PURE__ */ jsx34(
22882
+ showProjectMissingProbe ? /* @__PURE__ */ jsx35(
22815
22883
  AgentProjectMissingStatusProbe,
22816
22884
  {
22817
22885
  composerSettings,
@@ -22827,17 +22895,17 @@ function AgentComposerView(input) {
22827
22895
  ),
22828
22896
  "data-edge-glow": showEdgeGlow ? "true" : void 0,
22829
22897
  children: [
22830
- backgroundAgentStatusText ? /* @__PURE__ */ jsx34(
22898
+ backgroundAgentStatusText ? /* @__PURE__ */ jsx35(
22831
22899
  AgentChromeNotice,
22832
22900
  {
22833
22901
  tone: "muted",
22834
22902
  role: "status",
22835
22903
  testId: "agent-gui-composer-background-agent-status",
22836
22904
  title: backgroundAgentStatusText,
22837
- icon: /* @__PURE__ */ jsx34(Spinner5, { className: "h-3.5 w-3.5" })
22905
+ icon: /* @__PURE__ */ jsx35(Spinner5, { className: "h-3.5 w-3.5" })
22838
22906
  }
22839
22907
  ) : null,
22840
- input.isSelectedProjectMissing ? /* @__PURE__ */ jsx34(
22908
+ input.isSelectedProjectMissing ? /* @__PURE__ */ jsx35(
22841
22909
  AgentChromeNotice,
22842
22910
  {
22843
22911
  tone: "danger",
@@ -22866,7 +22934,7 @@ function AgentComposerView(input) {
22866
22934
  onOpenChange: input.setIsPaletteOpen,
22867
22935
  modal: false,
22868
22936
  children: [
22869
- /* @__PURE__ */ jsx34(PopoverAnchor2, { asChild: true, children: /* @__PURE__ */ jsxs25(
22937
+ /* @__PURE__ */ jsx35(PopoverAnchor2, { asChild: true, children: /* @__PURE__ */ jsxs25(
22870
22938
  "div",
22871
22939
  {
22872
22940
  ref: input.promptInputAreaRef,
@@ -22878,7 +22946,7 @@ function AgentComposerView(input) {
22878
22946
  "data-has-draft-images": draftImages.length > 0 ? "true" : void 0,
22879
22947
  style: promptInputAreaStyle,
22880
22948
  children: [
22881
- /* @__PURE__ */ jsx34(
22949
+ /* @__PURE__ */ jsx35(
22882
22950
  ComposerDraftAttachments,
22883
22951
  {
22884
22952
  draftImages,
@@ -22899,7 +22967,7 @@ function AgentComposerView(input) {
22899
22967
  !isHeroLayout && "agent-gui-node__composer-prompt-input-line"
22900
22968
  ),
22901
22969
  children: [
22902
- /* @__PURE__ */ jsx34(
22970
+ /* @__PURE__ */ jsx35(
22903
22971
  AgentRichTextEditor,
22904
22972
  {
22905
22973
  ref: input.editorHandleRef,
@@ -22946,7 +23014,7 @@ function AgentComposerView(input) {
22946
23014
  }
22947
23015
  ) }),
22948
23016
  input.showFileMentionPalette && mentionPaletteFrame ? createPortal4(
22949
- /* @__PURE__ */ jsx34(
23017
+ /* @__PURE__ */ jsx35(
22950
23018
  "div",
22951
23019
  {
22952
23020
  "data-testid": "agent-gui-mention-palette-surface",
@@ -22956,7 +23024,7 @@ function AgentComposerView(input) {
22956
23024
  "max-h-[320px] overflow-hidden border-[var(--line-1)] p-0"
22957
23025
  ),
22958
23026
  style: mentionPaletteStyle,
22959
- children: /* @__PURE__ */ jsx34(
23027
+ children: /* @__PURE__ */ jsx35(
22960
23028
  AgentFileMentionPalette,
22961
23029
  {
22962
23030
  state: input.mentionSearchState,
@@ -22975,14 +23043,20 @@ function AgentComposerView(input) {
22975
23043
  onExpandGroup: (groupId) => input.mentionControllerRef.current?.expandGroup(groupId),
22976
23044
  onNavigateHierarchy: navigateFileMentionHierarchy,
22977
23045
  onNavigateIntoItem: navigateIntoFileMentionItem,
22978
- 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
22979
23053
  }
22980
23054
  )
22981
23055
  }
22982
23056
  ),
22983
23057
  mentionPaletteFrame.portalTarget
22984
23058
  ) : null,
22985
- /* @__PURE__ */ jsx34(
23059
+ /* @__PURE__ */ jsx35(
22986
23060
  ComposerFloatingMenuSurface,
22987
23061
  {
22988
23062
  anchorRef: input.inputShellRef,
@@ -22995,7 +23069,7 @@ function AgentComposerView(input) {
22995
23069
  placement: "fixed-height",
22996
23070
  surfaceRef: input.paletteContentRef,
22997
23071
  testId: "agent-gui-slash-palette-surface",
22998
- children: /* @__PURE__ */ jsx34(
23072
+ children: /* @__PURE__ */ jsx35(
22999
23073
  AgentSlashCommandPalette,
23000
23074
  {
23001
23075
  entries: slashPaletteEntries,
@@ -23018,7 +23092,7 @@ function AgentComposerView(input) {
23018
23092
  )
23019
23093
  }
23020
23094
  ),
23021
- /* @__PURE__ */ jsx34(
23095
+ /* @__PURE__ */ jsx35(
23022
23096
  ComposerFloatingMenuSurface,
23023
23097
  {
23024
23098
  anchorRef: input.inputShellRef,
@@ -23030,7 +23104,7 @@ function AgentComposerView(input) {
23030
23104
  placement: "dynamic-above",
23031
23105
  surfaceRef: input.paletteContentRef,
23032
23106
  testId: "agent-gui-command-menu-surface",
23033
- children: /* @__PURE__ */ jsx34(
23107
+ children: /* @__PURE__ */ jsx35(
23034
23108
  AgentSlashStatusPanel,
23035
23109
  {
23036
23110
  status: slashStatus,
@@ -23050,7 +23124,7 @@ function AgentComposerView(input) {
23050
23124
  )
23051
23125
  }
23052
23126
  ),
23053
- /* @__PURE__ */ jsx34(
23127
+ /* @__PURE__ */ jsx35(
23054
23128
  ComposerFloatingMenuSurface,
23055
23129
  {
23056
23130
  anchorRef: input.inputShellRef,
@@ -23062,7 +23136,7 @@ function AgentComposerView(input) {
23062
23136
  placement: "dynamic-above",
23063
23137
  surfaceRef: input.paletteContentRef,
23064
23138
  testId: "agent-gui-command-menu-surface",
23065
- children: /* @__PURE__ */ jsx34(
23139
+ children: /* @__PURE__ */ jsx35(
23066
23140
  AgentReviewPickerPanel,
23067
23141
  {
23068
23142
  labels: labels.reviewPicker,
@@ -23076,7 +23150,7 @@ function AgentComposerView(input) {
23076
23150
  ]
23077
23151
  }
23078
23152
  ),
23079
- /* @__PURE__ */ jsx34(
23153
+ /* @__PURE__ */ jsx35(
23080
23154
  ComposerFooter,
23081
23155
  {
23082
23156
  labels,
@@ -23125,7 +23199,7 @@ function AgentComposerView(input) {
23125
23199
  className: AgentGUINode_styles_default.composerProjectRow,
23126
23200
  "data-project-missing": input.isSelectedProjectMissing ? "true" : void 0,
23127
23201
  children: [
23128
- showHeroProjectSelector ? /* @__PURE__ */ jsx34(
23202
+ showHeroProjectSelector ? /* @__PURE__ */ jsx35(
23129
23203
  AgentProjectDropdown,
23130
23204
  {
23131
23205
  composerSettings,
@@ -23141,15 +23215,15 @@ function AgentComposerView(input) {
23141
23215
  onProjectPathChange
23142
23216
  }
23143
23217
  ) : null,
23144
- activePromptTip ? /* @__PURE__ */ jsx34(
23218
+ activePromptTip ? /* @__PURE__ */ jsx35(
23145
23219
  "div",
23146
23220
  {
23147
23221
  className: AgentGUINode_styles_default.composerPromptTips,
23148
23222
  "data-testid": "agent-gui-prompt-tips",
23149
- children: !previewMode && input.isPromptTipOverflowing && promptTipNode ? /* @__PURE__ */ jsx34(TooltipProvider3, { delayDuration: 0, children: /* @__PURE__ */ jsxs25(Tooltip4, { children: [
23150
- /* @__PURE__ */ jsx34(TooltipTrigger4, { asChild: true, children: promptTipNode }),
23151
- /* @__PURE__ */ jsx34(
23152
- 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,
23153
23227
  {
23154
23228
  align: "end",
23155
23229
  className: AgentGUINode_styles_default.composerPromptTipTooltip,
@@ -23172,13 +23246,13 @@ function AgentComposerView(input) {
23172
23246
  }
23173
23247
 
23174
23248
  // agent-gui/agentGuiNode/AgentComposer.tsx
23175
- import { jsx as jsx35 } from "react/jsx-runtime";
23249
+ import { jsx as jsx36 } from "react/jsx-runtime";
23176
23250
  var DOCK_COMPOSER_INPUT_MIN_HEIGHT2 = 56;
23177
23251
  var DOCK_COMPOSER_TEXT_LINE_HEIGHT2 = 24;
23178
23252
  var DOCK_COMPOSER_MAX_VISIBLE_TEXT_LINES2 = 3.5;
23179
- var DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT2 = 26;
23253
+ var DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT = 26;
23180
23254
  var DOCK_COMPOSER_TEXT_VIEWPORT_MAX_HEIGHT2 = DOCK_COMPOSER_TEXT_LINE_HEIGHT2 * DOCK_COMPOSER_MAX_VISIBLE_TEXT_LINES2;
23181
- 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;
23182
23256
  function AgentComposer(props) {
23183
23257
  "use memo";
23184
23258
  const {
@@ -23237,7 +23311,8 @@ function AgentComposer(props) {
23237
23311
  onRequestWorkspaceReferences = null,
23238
23312
  resolveDroppedFileReferences = null,
23239
23313
  onRequestGitBranches = null,
23240
- contextMentionProviders = EMPTY_CONTEXT_MENTION_PROVIDERS
23314
+ contextMentionProviders = EMPTY_CONTEXT_MENTION_PROVIDERS,
23315
+ referenceProvenanceFilter = null
23241
23316
  } = props;
23242
23317
  const draftPrompt = agentComposerDraftPrompt(draftContent);
23243
23318
  const goalDraftObjective = canGoalControl ? goalDraftObjectiveFromPrompt(draftPrompt) : null;
@@ -23403,6 +23478,9 @@ function AgentComposer(props) {
23403
23478
  const controller = new AgentMentionSearchController({
23404
23479
  contextMentionProviders
23405
23480
  });
23481
+ controller.setProvenanceFilter(
23482
+ referenceProvenanceFilter?.snapshot.value ?? null
23483
+ );
23406
23484
  mentionControllerRef.current = controller;
23407
23485
  const unsubscribe = controller.subscribe(setMentionSearchState);
23408
23486
  return () => {
@@ -23412,6 +23490,9 @@ function AgentComposer(props) {
23412
23490
  };
23413
23491
  }, [contextMentionProviders]);
23414
23492
  useEffect28(() => {
23493
+ draftImagesRef.current = agentComposerDraftImages(draftContent);
23494
+ draftFilesRef.current = agentComposerDraftFiles(draftContent);
23495
+ draftLargeTextsRef.current = agentComposerDraftLargeTexts(draftContent);
23415
23496
  const isExternalDraftReplacement = draftPromptRef.current !== draftPrompt;
23416
23497
  draftPromptRef.current = draftPrompt;
23417
23498
  setPaletteDraftPrompt(goalDraftObjective ?? draftPrompt);
@@ -23422,12 +23503,12 @@ function AgentComposer(props) {
23422
23503
  });
23423
23504
  });
23424
23505
  }
23425
- }, [draftPrompt, goalDraftObjective]);
23506
+ }, [draftContent, draftPrompt, goalDraftObjective]);
23426
23507
  useEffect28(() => {
23427
- draftImagesRef.current = agentComposerDraftImages(draftContent);
23428
- draftFilesRef.current = agentComposerDraftFiles(draftContent);
23429
- draftLargeTextsRef.current = agentComposerDraftLargeTexts(draftContent);
23430
- }, [draftContent]);
23508
+ mentionControllerRef.current?.setProvenanceFilter(
23509
+ referenceProvenanceFilter?.snapshot.value ?? null
23510
+ );
23511
+ }, [referenceProvenanceFilter?.snapshot.value]);
23431
23512
  useEffect28(() => {
23432
23513
  if (previousSlashStatusAgentSessionIdRef.current === slashStatusAgentSessionId) {
23433
23514
  return;
@@ -23646,7 +23727,7 @@ function AgentComposer(props) {
23646
23727
  canUploadAttachment,
23647
23728
  promptImagesSupported
23648
23729
  });
23649
- return /* @__PURE__ */ jsx35(
23730
+ return /* @__PURE__ */ jsx36(
23650
23731
  AgentComposerView,
23651
23732
  {
23652
23733
  props,
@@ -23693,9 +23774,9 @@ function AgentComposer(props) {
23693
23774
  // agent-gui/agentGuiNode/AgentHomeSuggestions.tsx
23694
23775
  import { memo as memo2, useState as useState21 } from "react";
23695
23776
  import { ArrowLeftRight, Code, Compass, Import, Pencil, X as X5 } from "lucide-react";
23696
- import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
23777
+ import { jsx as jsx37, jsxs as jsxs26 } from "react/jsx-runtime";
23697
23778
  function TuttiIcon(props) {
23698
- return /* @__PURE__ */ jsx36(
23779
+ return /* @__PURE__ */ jsx37(
23699
23780
  "svg",
23700
23781
  {
23701
23782
  width: "24",
@@ -23704,7 +23785,7 @@ function TuttiIcon(props) {
23704
23785
  fill: "none",
23705
23786
  xmlns: "http://www.w3.org/2000/svg",
23706
23787
  ...props,
23707
- children: /* @__PURE__ */ jsx36(
23788
+ children: /* @__PURE__ */ jsx37(
23708
23789
  "path",
23709
23790
  {
23710
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",
@@ -23715,7 +23796,7 @@ function TuttiIcon(props) {
23715
23796
  );
23716
23797
  }
23717
23798
  function TaskBreakdownIcon(props) {
23718
- return /* @__PURE__ */ jsx36(
23799
+ return /* @__PURE__ */ jsx37(
23719
23800
  "svg",
23720
23801
  {
23721
23802
  width: "24",
@@ -23724,7 +23805,7 @@ function TaskBreakdownIcon(props) {
23724
23805
  fill: "none",
23725
23806
  xmlns: "http://www.w3.org/2000/svg",
23726
23807
  ...props,
23727
- children: /* @__PURE__ */ jsx36(
23808
+ children: /* @__PURE__ */ jsx37(
23728
23809
  "path",
23729
23810
  {
23730
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",
@@ -23735,7 +23816,7 @@ function TaskBreakdownIcon(props) {
23735
23816
  );
23736
23817
  }
23737
23818
  function BattleIcon(props) {
23738
- return /* @__PURE__ */ jsx36(
23819
+ return /* @__PURE__ */ jsx37(
23739
23820
  "svg",
23740
23821
  {
23741
23822
  width: "24",
@@ -23744,7 +23825,7 @@ function BattleIcon(props) {
23744
23825
  fill: "none",
23745
23826
  xmlns: "http://www.w3.org/2000/svg",
23746
23827
  ...props,
23747
- children: /* @__PURE__ */ jsx36(
23828
+ children: /* @__PURE__ */ jsx37(
23748
23829
  "path",
23749
23830
  {
23750
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",
@@ -23755,7 +23836,7 @@ function BattleIcon(props) {
23755
23836
  );
23756
23837
  }
23757
23838
  function QualityReviewIcon(props) {
23758
- return /* @__PURE__ */ jsx36(
23839
+ return /* @__PURE__ */ jsx37(
23759
23840
  "svg",
23760
23841
  {
23761
23842
  width: "24",
@@ -23764,7 +23845,7 @@ function QualityReviewIcon(props) {
23764
23845
  fill: "none",
23765
23846
  xmlns: "http://www.w3.org/2000/svg",
23766
23847
  ...props,
23767
- children: /* @__PURE__ */ jsx36(
23848
+ children: /* @__PURE__ */ jsx37(
23768
23849
  "path",
23769
23850
  {
23770
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",
@@ -23811,7 +23892,7 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
23811
23892
  ) ?? null;
23812
23893
  const ActiveCategoryIcon = activeCategory?.icon ? CATEGORY_ICON[activeCategory.icon] : null;
23813
23894
  return /* @__PURE__ */ jsxs26("div", { className: AgentGUINode_styles_default.emptyHeroSuggestions, children: [
23814
- /* @__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) => {
23815
23896
  const Icon = category.icon ? CATEGORY_ICON[category.icon] : null;
23816
23897
  const direct = isDirectCategory(category);
23817
23898
  const isActive = !direct && category.id === activeCategory?.id;
@@ -23836,14 +23917,14 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
23836
23917
  );
23837
23918
  },
23838
23919
  children: [
23839
- Icon ? /* @__PURE__ */ jsx36(
23920
+ Icon ? /* @__PURE__ */ jsx37(
23840
23921
  Icon,
23841
23922
  {
23842
23923
  className: AgentGUINode_styles_default.emptyHeroSuggestionsChipIcon,
23843
23924
  "aria-hidden": true
23844
23925
  }
23845
23926
  ) : null,
23846
- /* @__PURE__ */ jsx36("span", { children: category.label })
23927
+ /* @__PURE__ */ jsx37("span", { children: category.label })
23847
23928
  ]
23848
23929
  },
23849
23930
  category.id
@@ -23852,7 +23933,7 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
23852
23933
  activeCategory ? /* @__PURE__ */ jsxs26("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCard, children: [
23853
23934
  /* @__PURE__ */ jsxs26("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCardHeader, children: [
23854
23935
  /* @__PURE__ */ jsxs26("span", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCardTitle, children: [
23855
- ActiveCategoryIcon ? /* @__PURE__ */ jsx36(
23936
+ ActiveCategoryIcon ? /* @__PURE__ */ jsx37(
23856
23937
  ActiveCategoryIcon,
23857
23938
  {
23858
23939
  className: AgentGUINode_styles_default.emptyHeroSuggestionsChipIcon,
@@ -23861,7 +23942,7 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
23861
23942
  ) : null,
23862
23943
  activeCategory.label
23863
23944
  ] }),
23864
- /* @__PURE__ */ jsx36(
23945
+ /* @__PURE__ */ jsx37(
23865
23946
  "button",
23866
23947
  {
23867
23948
  type: "button",
@@ -23869,11 +23950,11 @@ var AgentHomeSuggestions = memo2(function AgentHomeSuggestions2({
23869
23950
  "aria-label": closeLabel,
23870
23951
  title: closeLabel,
23871
23952
  onClick: () => setActiveCategoryId(null),
23872
- children: /* @__PURE__ */ jsx36(X5, { "aria-hidden": true })
23953
+ children: /* @__PURE__ */ jsx37(X5, { "aria-hidden": true })
23873
23954
  }
23874
23955
  )
23875
23956
  ] }),
23876
- activeCategory.items?.map((item) => /* @__PURE__ */ jsx36(
23957
+ activeCategory.items?.map((item) => /* @__PURE__ */ jsx37(
23877
23958
  "button",
23878
23959
  {
23879
23960
  type: "button",
@@ -23921,7 +24002,7 @@ function createFallbackAgentGUIAgentAvatar(input) {
23921
24002
 
23922
24003
  // agent-gui/agentGuiNode/view/AgentGUIEmptyHeroCarouselStage.tsx
23923
24004
  import { Component as Component3 } from "react";
23924
- import { jsx as jsx37, jsxs as jsxs27 } from "react/jsx-runtime";
24005
+ import { jsx as jsx38, jsxs as jsxs27 } from "react/jsx-runtime";
23925
24006
  var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
23926
24007
  animationFrame = null;
23927
24008
  layer = null;
@@ -23947,7 +24028,7 @@ var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
23947
24028
  } = this.props;
23948
24029
  const hasCarousel = items.length > 1;
23949
24030
  return /* @__PURE__ */ jsxs27("div", { ref: this.setStage, className: AgentGUINode_styles_default.emptyHeroCarouselStage, children: [
23950
- 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(
23951
24032
  AgentGUIHeroAgentCarousel,
23952
24033
  {
23953
24034
  activeAgentTargetId,
@@ -24037,7 +24118,7 @@ var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
24037
24118
  };
24038
24119
 
24039
24120
  // agent-gui/agentGuiNode/view/AgentGUIEmptyState.tsx
24040
- 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";
24041
24122
  function resolveAgentGUIHeroIconUrl2(provider) {
24042
24123
  const normalizedProvider = normalizeManagedAgentProvider(provider);
24043
24124
  return MANAGED_AGENT_ICON_URLS[normalizedProvider] ?? MANAGED_AGENT_ICON_FALLBACK_URL;
@@ -24079,14 +24160,14 @@ var AgentGUIEmptyHomePane = memo3(function AgentGUIEmptyHomePane2({
24079
24160
  [agentTargets, provider, providerLabel, selectedAgentTarget]
24080
24161
  );
24081
24162
  const carouselMountedExternally = avatarPresentations.length > 1;
24082
- return /* @__PURE__ */ jsx38(
24163
+ return /* @__PURE__ */ jsx39(
24083
24164
  AgentGUIEmptyHeroCarouselStage,
24084
24165
  {
24085
24166
  activeAgentTargetId: selectedAgentTarget?.agentTargetId ?? selectedAgentTarget?.targetId,
24086
24167
  items: avatarPresentations,
24087
24168
  onProviderSelect,
24088
24169
  providerSelectLabel: labels.providerSwitchLabel,
24089
- children: providerReadinessGate ? /* @__PURE__ */ jsx38(
24170
+ children: providerReadinessGate ? /* @__PURE__ */ jsx39(
24090
24171
  AgentGUIProviderReadinessGatePane,
24091
24172
  {
24092
24173
  provider,
@@ -24102,7 +24183,7 @@ var AgentGUIEmptyHomePane = memo3(function AgentGUIEmptyHomePane2({
24102
24183
  selectedAgentTarget,
24103
24184
  labels
24104
24185
  }
24105
- ) : /* @__PURE__ */ jsx38(
24186
+ ) : /* @__PURE__ */ jsx39(
24106
24187
  AgentGUIEmptyHeroPane,
24107
24188
  {
24108
24189
  ...heroProps,
@@ -24153,13 +24234,13 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
24153
24234
  const heroIconAnimationKey = heroAvatarPresentations.map(
24154
24235
  (avatar) => `${avatar.agentTargetId}:${avatar.iconUrl}:${avatar.badge?.iconUrl ?? ""}`
24155
24236
  ).join("|");
24156
- return /* @__PURE__ */ jsx38("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs28("div", { className: AgentGUINode_styles_default.emptyHeroBody, children: [
24157
- /* @__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(
24158
24239
  "div",
24159
24240
  {
24160
24241
  className: AgentGUINode_styles_default.emptyHeroIconSlot,
24161
24242
  "data-carousel-placeholder": carouselMountedExternally || void 0,
24162
- children: carouselMountedExternally ? null : heroAvatarPresentations.length > 1 ? /* @__PURE__ */ jsx38(
24243
+ children: carouselMountedExternally ? null : heroAvatarPresentations.length > 1 ? /* @__PURE__ */ jsx39(
24163
24244
  AgentGUIHeroAgentCarousel,
24164
24245
  {
24165
24246
  activeAgentTargetId: selectedAgentTarget?.agentTargetId ?? selectedAgentTarget?.targetId,
@@ -24167,7 +24248,7 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
24167
24248
  onProviderSelect,
24168
24249
  providerSelectLabel
24169
24250
  }
24170
- ) : /* @__PURE__ */ jsx38(
24251
+ ) : /* @__PURE__ */ jsx39(
24171
24252
  AgentGUIAgentAvatarVisual,
24172
24253
  {
24173
24254
  className: AgentGUINode_styles_default.emptyHeroIconEffect,
@@ -24177,7 +24258,7 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
24177
24258
  )
24178
24259
  }
24179
24260
  ),
24180
- /* @__PURE__ */ jsx38("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: /* @__PURE__ */ jsx38(
24261
+ /* @__PURE__ */ jsx39("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: /* @__PURE__ */ jsx39(
24181
24262
  EmptyHeroTitle,
24182
24263
  {
24183
24264
  label: emptyLabel,
@@ -24188,7 +24269,7 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
24188
24269
  onProviderSelect
24189
24270
  }
24190
24271
  ) }),
24191
- inlineNoticeChrome ? /* @__PURE__ */ jsx38(
24272
+ inlineNoticeChrome ? /* @__PURE__ */ jsx39(
24192
24273
  AgentSessionChrome,
24193
24274
  {
24194
24275
  chrome: inlineNoticeChrome,
@@ -24200,8 +24281,8 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
24200
24281
  labels: chromeLabels
24201
24282
  }
24202
24283
  ) : null,
24203
- /* @__PURE__ */ jsx38(AgentComposer, { ...composerProps }),
24204
- /* @__PURE__ */ jsx38(
24284
+ /* @__PURE__ */ jsx39(AgentComposer, { ...composerProps }),
24285
+ /* @__PURE__ */ jsx39(
24205
24286
  AgentHomeSuggestions,
24206
24287
  {
24207
24288
  categories: suggestions,
@@ -24243,20 +24324,20 @@ var AgentGUIProviderReadinessGatePane = memo3(
24243
24324
  const titleLabel = gate.status === "not_installed" || gate.status === "auth_required" ? emptyLabel : content.title;
24244
24325
  const action = providerGateAction(gate.status);
24245
24326
  const pendingLabel = pendingAction === "install" ? labels.providerGatePendingInstall : pendingAction === "login" ? labels.providerGatePendingLogin : pendingAction === "refresh" ? labels.providerGatePendingRefresh : null;
24246
- 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(
24247
24328
  "div",
24248
24329
  {
24249
24330
  className: cn4(AgentGUINode_styles_default.emptyHeroBody, AgentGUINode_styles_default.emptyProviderGate),
24250
24331
  "data-testid": "agent-gui-provider-readiness-gate",
24251
24332
  role: "status",
24252
24333
  children: [
24253
- carouselMountedExternally ? /* @__PURE__ */ jsx38(
24334
+ carouselMountedExternally ? /* @__PURE__ */ jsx39(
24254
24335
  "div",
24255
24336
  {
24256
24337
  "aria-hidden": "true",
24257
24338
  className: AgentGUINode_styles_default.emptyHeroCarouselPlaceholder
24258
24339
  }
24259
- ) : heroAvatarPresentations.length > 1 ? /* @__PURE__ */ jsx38(
24340
+ ) : heroAvatarPresentations.length > 1 ? /* @__PURE__ */ jsx39(
24260
24341
  AgentGUIHeroAgentCarousel,
24261
24342
  {
24262
24343
  activeAgentTargetId: selectedAgentTarget?.agentTargetId ?? selectedAgentTarget?.targetId,
@@ -24264,14 +24345,14 @@ var AgentGUIProviderReadinessGatePane = memo3(
24264
24345
  onProviderSelect,
24265
24346
  providerSelectLabel
24266
24347
  }
24267
- ) : /* @__PURE__ */ jsx38(
24348
+ ) : /* @__PURE__ */ jsx39(
24268
24349
  AgentGUIAgentAvatarVisual,
24269
24350
  {
24270
24351
  className: AgentGUINode_styles_default.emptyHeroIconEffect,
24271
24352
  presentation: heroAvatarPresentations[0]
24272
24353
  }
24273
24354
  ),
24274
- /* @__PURE__ */ jsx38("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: /* @__PURE__ */ jsx38(
24355
+ /* @__PURE__ */ jsx39("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: /* @__PURE__ */ jsx39(
24275
24356
  EmptyHeroTitle,
24276
24357
  {
24277
24358
  label: titleLabel,
@@ -24282,8 +24363,8 @@ var AgentGUIProviderReadinessGatePane = memo3(
24282
24363
  onProviderSelect
24283
24364
  }
24284
24365
  ) }),
24285
- /* @__PURE__ */ jsx38("p", { className: AgentGUINode_styles_default.emptyProviderGateDescription, children: content.description }),
24286
- pendingLabel && !action ? /* @__PURE__ */ jsx38(
24366
+ /* @__PURE__ */ jsx39("p", { className: AgentGUINode_styles_default.emptyProviderGateDescription, children: content.description }),
24367
+ pendingLabel && !action ? /* @__PURE__ */ jsx39(
24287
24368
  "div",
24288
24369
  {
24289
24370
  className: AgentGUINode_styles_default.emptyProviderGateStatus,
@@ -24291,7 +24372,7 @@ var AgentGUIProviderReadinessGatePane = memo3(
24291
24372
  children: pendingLabel
24292
24373
  }
24293
24374
  ) : null,
24294
- action ? /* @__PURE__ */ jsx38(
24375
+ action ? /* @__PURE__ */ jsx39(
24295
24376
  Button,
24296
24377
  {
24297
24378
  type: "button",
@@ -24310,7 +24391,7 @@ var AgentGUIProviderReadinessGatePane = memo3(
24310
24391
  },
24311
24392
  children: isPending && pendingLabel ? pendingLabel : content.actionLabel
24312
24393
  }
24313
- ) : content.actionLabel ? /* @__PURE__ */ jsx38(
24394
+ ) : content.actionLabel ? /* @__PURE__ */ jsx39(
24314
24395
  Button,
24315
24396
  {
24316
24397
  type: "button",
@@ -24379,7 +24460,7 @@ function AgentGUIUnifiedProviderIcon({
24379
24460
  presentation
24380
24461
  }) {
24381
24462
  const iconUrl = presentation?.iconUrl?.trim() || agentColorfulUrl;
24382
- 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(
24383
24464
  "img",
24384
24465
  {
24385
24466
  alt: "",
@@ -24394,7 +24475,7 @@ function AgentGUIProviderIconVisual({
24394
24475
  icon,
24395
24476
  imageClassName
24396
24477
  }) {
24397
- return /* @__PURE__ */ jsx38(
24478
+ return /* @__PURE__ */ jsx39(
24398
24479
  "img",
24399
24480
  {
24400
24481
  alt: "",
@@ -24417,7 +24498,7 @@ function AgentGUIAgentAvatarVisual({
24417
24498
  className: cn4(AgentGUINode_styles_default.agentAvatar, className),
24418
24499
  "data-agent-target-id": presentation.agentTargetId,
24419
24500
  children: [
24420
- /* @__PURE__ */ jsx38(
24501
+ /* @__PURE__ */ jsx39(
24421
24502
  "img",
24422
24503
  {
24423
24504
  alt: "",
@@ -24426,7 +24507,7 @@ function AgentGUIAgentAvatarVisual({
24426
24507
  src: presentation.iconUrl
24427
24508
  }
24428
24509
  ),
24429
- 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(
24430
24511
  "img",
24431
24512
  {
24432
24513
  alt: "",
@@ -24449,7 +24530,7 @@ function EmptyHeroTitle({
24449
24530
  }) {
24450
24531
  const providerStart = providerLabel ? label.indexOf(providerLabel) : -1;
24451
24532
  if (!shouldEmphasizeEmptyHeroProvider(label) || providerStart < 0) {
24452
- return /* @__PURE__ */ jsx38(Fragment11, { children: label });
24533
+ return /* @__PURE__ */ jsx39(Fragment11, { children: label });
24453
24534
  }
24454
24535
  const providerEnd = providerStart + providerLabel.length;
24455
24536
  const selectedAgentTargetId = selectedAgentTarget?.targetId ?? `local:${selectedAgentTarget?.provider ?? ""}`;
@@ -24474,28 +24555,28 @@ function EmptyHeroTitle({
24474
24555
  });
24475
24556
  },
24476
24557
  children: [
24477
- /* @__PURE__ */ jsx38(
24558
+ /* @__PURE__ */ jsx39(
24478
24559
  SelectTrigger3,
24479
24560
  {
24480
24561
  size: "sm",
24481
24562
  "aria-label": providerSelectLabel,
24482
24563
  title: providerSelectLabel,
24483
24564
  className: AgentGUINode_styles_default.emptyHeroProviderSelect,
24484
- children: /* @__PURE__ */ jsx38("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: providerName })
24565
+ children: /* @__PURE__ */ jsx39("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: providerName })
24485
24566
  }
24486
24567
  ),
24487
- /* @__PURE__ */ jsx38(
24568
+ /* @__PURE__ */ jsx39(
24488
24569
  SelectContent3,
24489
24570
  {
24490
24571
  align: "center",
24491
24572
  className: cn4(AgentGUINode_styles_default.composerMenuContent, "min-w-[190px]"),
24492
- children: agentTargets.map((target) => /* @__PURE__ */ jsx38(
24573
+ children: agentTargets.map((target) => /* @__PURE__ */ jsx39(
24493
24574
  SelectItem3,
24494
24575
  {
24495
24576
  value: target.targetId,
24496
24577
  className: cn4(AgentGUINode_styles_default.composerMenuItem, "gap-2"),
24497
24578
  children: /* @__PURE__ */ jsxs28("span", { className: "flex min-w-0 items-center gap-1.5", children: [
24498
- /* @__PURE__ */ jsx38(
24579
+ /* @__PURE__ */ jsx39(
24499
24580
  "img",
24500
24581
  {
24501
24582
  alt: "",
@@ -24507,7 +24588,7 @@ function EmptyHeroTitle({
24507
24588
  ).iconUrl
24508
24589
  }
24509
24590
  ),
24510
- /* @__PURE__ */ jsx38("span", { className: "min-w-0 truncate", children: target.label })
24591
+ /* @__PURE__ */ jsx39("span", { className: "min-w-0 truncate", children: target.label })
24511
24592
  ] })
24512
24593
  },
24513
24594
  `${target.provider}:${target.targetId}`
@@ -24516,7 +24597,7 @@ function EmptyHeroTitle({
24516
24597
  )
24517
24598
  ]
24518
24599
  }
24519
- ) : /* @__PURE__ */ jsx38("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: providerName }),
24600
+ ) : /* @__PURE__ */ jsx39("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: providerName }),
24520
24601
  label.slice(providerEnd)
24521
24602
  ] });
24522
24603
  }
@@ -24536,7 +24617,7 @@ import {
24536
24617
  DialogTitle,
24537
24618
  toast as toast2
24538
24619
  } from "@tutti-os/ui-system";
24539
- import { jsx as jsx39, jsxs as jsxs29 } from "react/jsx-runtime";
24620
+ import { jsx as jsx40, jsxs as jsxs29 } from "react/jsx-runtime";
24540
24621
  var AGENT_MANAGER_LONG_PRESS_MOVE_TOLERANCE_PX = 8;
24541
24622
  var AGENT_MANAGER_DROP_HYSTERESIS_PX = 8;
24542
24623
  function AgentGUIProviderManagerDialog({
@@ -24759,7 +24840,7 @@ function AgentGUIProviderManagerDialog({
24759
24840
  };
24760
24841
  const disabledDropBlocked = dragState?.source === "available" && (finalAvailableAgent || running.has(dragState.targetId));
24761
24842
  const disabledDropBlockedByRunning = dragState?.source === "available" && running.has(dragState.targetId);
24762
- return /* @__PURE__ */ jsx39(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs29(
24843
+ return /* @__PURE__ */ jsx40(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs29(
24763
24844
  DialogContent,
24764
24845
  {
24765
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]",
@@ -24775,8 +24856,8 @@ function AgentGUIProviderManagerDialog({
24775
24856
  },
24776
24857
  children: [
24777
24858
  /* @__PURE__ */ jsxs29(DialogHeader, { className: "shrink-0 border-b border-[var(--border-1)] px-5 py-4", children: [
24778
- /* @__PURE__ */ jsx39(DialogTitle, { children: labels.manageAgentsTitle }),
24779
- /* @__PURE__ */ jsx39(DialogDescription, { children: labels.manageAgentsDescription })
24859
+ /* @__PURE__ */ jsx40(DialogTitle, { children: labels.manageAgentsTitle }),
24860
+ /* @__PURE__ */ jsx40(DialogDescription, { children: labels.manageAgentsDescription })
24780
24861
  ] }),
24781
24862
  /* @__PURE__ */ jsxs29(
24782
24863
  "div",
@@ -24794,7 +24875,7 @@ function AgentGUIProviderManagerDialog({
24794
24875
  onDragOver: (event) => dragOverDropZone(event, "available"),
24795
24876
  onDrop: (event) => dropIntoZone(event, "available"),
24796
24877
  children: [
24797
- /* @__PURE__ */ jsx39(
24878
+ /* @__PURE__ */ jsx40(
24798
24879
  "h3",
24799
24880
  {
24800
24881
  className: "mb-3 text-[12px] font-medium text-[var(--text-secondary)]",
@@ -24802,7 +24883,7 @@ function AgentGUIProviderManagerDialog({
24802
24883
  children: labels.manageAgentsAvailable
24803
24884
  }
24804
24885
  ),
24805
- availableTargets.length > 0 ? /* @__PURE__ */ jsx39(
24886
+ availableTargets.length > 0 ? /* @__PURE__ */ jsx40(
24806
24887
  "div",
24807
24888
  {
24808
24889
  "aria-label": labels.manageAgentsAvailable,
@@ -24850,7 +24931,7 @@ function AgentGUIProviderManagerDialog({
24850
24931
  role: "listitem",
24851
24932
  tabIndex: 0,
24852
24933
  children: [
24853
- dragPreview?.overTargetId === target.targetId ? /* @__PURE__ */ jsx39(
24934
+ dragPreview?.overTargetId === target.targetId ? /* @__PURE__ */ jsx40(
24854
24935
  "span",
24855
24936
  {
24856
24937
  "aria-hidden": "true",
@@ -24859,7 +24940,7 @@ function AgentGUIProviderManagerDialog({
24859
24940
  "data-testid": "agent-gui-provider-manager-drop-indicator"
24860
24941
  }
24861
24942
  ) : null,
24862
- editing ? /* @__PURE__ */ jsx39(
24943
+ editing ? /* @__PURE__ */ jsx40(
24863
24944
  Button4,
24864
24945
  {
24865
24946
  "aria-label": labels.removeAgentFromSidebar(label),
@@ -24877,10 +24958,10 @@ function AgentGUIProviderManagerDialog({
24877
24958
  title: targetRunning ? labels.manageAgentsRunningBlocked(label) : finalAvailableAgent ? labels.manageAgentsKeepOneAvailable : void 0,
24878
24959
  type: "button",
24879
24960
  variant: "ghost",
24880
- children: /* @__PURE__ */ jsx39(CircleMinus, { "aria-hidden": "true", className: "size-4" })
24961
+ children: /* @__PURE__ */ jsx40(CircleMinus, { "aria-hidden": "true", className: "size-4" })
24881
24962
  }
24882
24963
  ) : null,
24883
- /* @__PURE__ */ jsx39(
24964
+ /* @__PURE__ */ jsx40(
24884
24965
  AgentGUIProviderIconVisual,
24885
24966
  {
24886
24967
  ariaHidden: true,
@@ -24891,14 +24972,14 @@ function AgentGUIProviderManagerDialog({
24891
24972
  imageClassName: "size-9 shrink-0 rounded-[9px] object-cover"
24892
24973
  }
24893
24974
  ),
24894
- /* @__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 })
24895
24976
  ]
24896
24977
  },
24897
24978
  target.targetId
24898
24979
  );
24899
24980
  })
24900
24981
  }
24901
- ) : /* @__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 })
24902
24983
  ]
24903
24984
  }
24904
24985
  ),
@@ -24918,7 +24999,7 @@ function AgentGUIProviderManagerDialog({
24918
24999
  )?.label ?? ""
24919
25000
  ) : labels.manageAgentsKeepOneAvailable : void 0,
24920
25001
  children: [
24921
- /* @__PURE__ */ jsx39(
25002
+ /* @__PURE__ */ jsx40(
24922
25003
  "h3",
24923
25004
  {
24924
25005
  className: "mb-3 text-[12px] font-medium text-[var(--text-secondary)]",
@@ -24926,7 +25007,7 @@ function AgentGUIProviderManagerDialog({
24926
25007
  children: labels.manageAgentsDisabled
24927
25008
  }
24928
25009
  ),
24929
- disabledTargets.length > 0 ? /* @__PURE__ */ jsx39(
25010
+ disabledTargets.length > 0 ? /* @__PURE__ */ jsx40(
24930
25011
  "div",
24931
25012
  {
24932
25013
  "aria-label": labels.manageAgentsDisabled,
@@ -24972,7 +25053,7 @@ function AgentGUIProviderManagerDialog({
24972
25053
  role: "listitem",
24973
25054
  tabIndex: 0,
24974
25055
  children: [
24975
- dragPreview?.overTargetId === target.targetId ? /* @__PURE__ */ jsx39(
25056
+ dragPreview?.overTargetId === target.targetId ? /* @__PURE__ */ jsx40(
24976
25057
  "span",
24977
25058
  {
24978
25059
  "aria-hidden": "true",
@@ -24981,7 +25062,7 @@ function AgentGUIProviderManagerDialog({
24981
25062
  "data-testid": "agent-gui-provider-manager-drop-indicator"
24982
25063
  }
24983
25064
  ) : null,
24984
- editing ? /* @__PURE__ */ jsx39(
25065
+ editing ? /* @__PURE__ */ jsx40(
24985
25066
  Button4,
24986
25067
  {
24987
25068
  "aria-label": labels.addAgentToSidebar(label),
@@ -24993,10 +25074,10 @@ function AgentGUIProviderManagerDialog({
24993
25074
  size: "icon-xs",
24994
25075
  type: "button",
24995
25076
  variant: "ghost",
24996
- children: /* @__PURE__ */ jsx39(CirclePlus, { "aria-hidden": "true", className: "size-4" })
25077
+ children: /* @__PURE__ */ jsx40(CirclePlus, { "aria-hidden": "true", className: "size-4" })
24997
25078
  }
24998
25079
  ) : null,
24999
- /* @__PURE__ */ jsx39(
25080
+ /* @__PURE__ */ jsx40(
25000
25081
  AgentGUIProviderIconVisual,
25001
25082
  {
25002
25083
  ariaHidden: true,
@@ -25007,14 +25088,14 @@ function AgentGUIProviderManagerDialog({
25007
25088
  imageClassName: "size-9 shrink-0 rounded-[9px] object-cover opacity-70 grayscale-[0.25]"
25008
25089
  }
25009
25090
  ),
25010
- /* @__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 })
25011
25092
  ]
25012
25093
  },
25013
25094
  target.targetId
25014
25095
  );
25015
25096
  })
25016
25097
  }
25017
- ) : /* @__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 })
25018
25099
  ]
25019
25100
  }
25020
25101
  )
@@ -25077,7 +25158,7 @@ function useAgentGUIProviderRailPreferences() {
25077
25158
  }
25078
25159
 
25079
25160
  // agent-gui/agentGuiNode/view/AgentGUIProviderRail.tsx
25080
- import { jsx as jsx40, jsxs as jsxs30 } from "react/jsx-runtime";
25161
+ import { jsx as jsx41, jsxs as jsxs30 } from "react/jsx-runtime";
25081
25162
  var agentGUIProviderRailCatalog = [
25082
25163
  ...migratedAgentGUIProviderIdentityCatalog
25083
25164
  ].sort((left, right) => left.target.sortOrder - right.target.sortOrder);
@@ -25485,7 +25566,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25485
25566
  },
25486
25567
  [dragState, previewMode, agentTargetsLoading, setProviderRailDragState]
25487
25568
  );
25488
- const providerManagerDialog = /* @__PURE__ */ jsx40(
25569
+ const providerManagerDialog = /* @__PURE__ */ jsx41(
25489
25570
  AgentGUIProviderManagerDialog,
25490
25571
  {
25491
25572
  hiddenTargetIds: effectiveHiddenTargetIds,
@@ -25537,18 +25618,18 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25537
25618
  disabled: previewMode,
25538
25619
  onClick: selectAllProviders,
25539
25620
  children: [
25540
- /* @__PURE__ */ jsx40(
25621
+ /* @__PURE__ */ jsx41(
25541
25622
  AgentGUIUnifiedProviderIcon,
25542
25623
  {
25543
25624
  presentation: providerRailAllPresentation
25544
25625
  }
25545
25626
  ),
25546
- /* @__PURE__ */ jsx40("span", { className: AgentGUINode_styles_default.providerRailTileLabel, children: labels.conversationFilterAll })
25627
+ /* @__PURE__ */ jsx41("span", { className: AgentGUINode_styles_default.providerRailTileLabel, children: labels.conversationFilterAll })
25547
25628
  ]
25548
25629
  }
25549
25630
  ),
25550
- /* @__PURE__ */ jsx40("span", { "aria-hidden": "true", className: AgentGUINode_styles_default.providerRailSeparator }),
25551
- 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(
25552
25633
  "button",
25553
25634
  {
25554
25635
  type: "button",
@@ -25558,7 +25639,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25558
25639
  "data-loading": "true",
25559
25640
  "data-selected": "false",
25560
25641
  disabled: true,
25561
- children: /* @__PURE__ */ jsx40(
25642
+ children: /* @__PURE__ */ jsx41(
25562
25643
  "span",
25563
25644
  {
25564
25645
  "aria-hidden": "true",
@@ -25581,7 +25662,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25581
25662
  label,
25582
25663
  target.badge?.label
25583
25664
  );
25584
- const tile = /* @__PURE__ */ jsx40(
25665
+ const tile = /* @__PURE__ */ jsx41(
25585
25666
  "button",
25586
25667
  {
25587
25668
  type: "button",
@@ -25602,7 +25683,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25602
25683
  onDragOver: (event) => handleProviderRailDragOver(event, target),
25603
25684
  onDragStart: (event) => handleProviderRailDragStart(event, target),
25604
25685
  children: /* @__PURE__ */ jsxs30("span", { className: AgentGUINode_styles_default.providerRailAvatar, children: [
25605
- /* @__PURE__ */ jsx40(
25686
+ /* @__PURE__ */ jsx41(
25606
25687
  AgentGUIProviderIconVisual,
25607
25688
  {
25608
25689
  ariaHidden: true,
@@ -25613,7 +25694,7 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25613
25694
  )
25614
25695
  }
25615
25696
  ),
25616
- 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(
25617
25698
  "img",
25618
25699
  {
25619
25700
  alt: "",
@@ -25629,9 +25710,9 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
25629
25710
  if (previewMode) {
25630
25711
  return tile;
25631
25712
  }
25632
- return /* @__PURE__ */ jsxs30(Tooltip5, { children: [
25633
- /* @__PURE__ */ jsx40(TooltipTrigger5, { asChild: true, children: tile }),
25634
- /* @__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 })
25635
25716
  ] }, `${target.provider}:${target.targetId}:tooltip`);
25636
25717
  })
25637
25718
  ]
@@ -25675,7 +25756,7 @@ var styles3 = {
25675
25756
  var RoomIssueNode_styles_default = styles3;
25676
25757
 
25677
25758
  // agent-gui/RoomIssueNode/TaskSearchField.tsx
25678
- import { jsx as jsx41, jsxs as jsxs31 } from "react/jsx-runtime";
25759
+ import { jsx as jsx42, jsxs as jsxs31 } from "react/jsx-runtime";
25679
25760
  function TaskSearchField({
25680
25761
  ariaLabel,
25681
25762
  className,
@@ -25695,7 +25776,7 @@ function TaskSearchField({
25695
25776
  className: `${RoomIssueNode_styles_default.searchField} ${className ?? ""}`.trim(),
25696
25777
  "data-has-value": searchInput.value ? "true" : "false",
25697
25778
  children: [
25698
- /* @__PURE__ */ jsx41(
25779
+ /* @__PURE__ */ jsx42(
25699
25780
  Input,
25700
25781
  {
25701
25782
  type: "search",
@@ -25718,7 +25799,7 @@ function TaskSearchField({
25718
25799
  "data-testid": dataTestId
25719
25800
  }
25720
25801
  ),
25721
- searchInput.value ? /* @__PURE__ */ jsx41(
25802
+ searchInput.value ? /* @__PURE__ */ jsx42(
25722
25803
  "button",
25723
25804
  {
25724
25805
  type: "button",
@@ -25726,7 +25807,7 @@ function TaskSearchField({
25726
25807
  "aria-label": clearAriaLabel ?? t("common.clear"),
25727
25808
  onMouseDown: (event) => event.preventDefault(),
25728
25809
  onClick: searchInput.clearValue,
25729
- children: /* @__PURE__ */ jsx41(CloseLinedIcon, { "aria-hidden": "true" })
25810
+ children: /* @__PURE__ */ jsx42(CloseLinedIcon, { "aria-hidden": "true" })
25730
25811
  }
25731
25812
  ) : null
25732
25813
  ]
@@ -25744,7 +25825,7 @@ function isTaskSearchImeComposing(event) {
25744
25825
  }
25745
25826
 
25746
25827
  // agent-gui/agentGuiNode/AgentConversationListSkeleton.tsx
25747
- import { jsx as jsx42, jsxs as jsxs32 } from "react/jsx-runtime";
25828
+ import { jsx as jsx43, jsxs as jsxs32 } from "react/jsx-runtime";
25748
25829
  var SKELETON_ROWS = [
25749
25830
  { id: "first", size: "long" },
25750
25831
  { id: "second", size: "medium" },
@@ -25756,7 +25837,7 @@ function AgentConversationListSkeleton({
25756
25837
  label
25757
25838
  }) {
25758
25839
  "use memo";
25759
- return /* @__PURE__ */ jsx42(
25840
+ return /* @__PURE__ */ jsx43(
25760
25841
  "div",
25761
25842
  {
25762
25843
  className: "agent-gui-node__conversation-list-skeleton",
@@ -25770,9 +25851,9 @@ function AgentConversationListSkeleton({
25770
25851
  "data-size": row.size,
25771
25852
  "aria-hidden": "true",
25772
25853
  children: [
25773
- /* @__PURE__ */ jsx42("span", { className: "agent-gui-node__conversation-list-skeleton-spine" }),
25774
- /* @__PURE__ */ jsx42("span", { className: "agent-gui-node__conversation-list-skeleton-rib agent-gui-node__conversation-list-skeleton-rib-primary" }),
25775
- /* @__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" })
25776
25857
  ]
25777
25858
  },
25778
25859
  row.id
@@ -25784,7 +25865,7 @@ function AgentConversationListSkeleton({
25784
25865
  // agent-gui/agentGuiNode/agentGuiNodeViewConversation.tsx
25785
25866
  import { Spinner as Spinner6 } from "@tutti-os/ui-system";
25786
25867
  import { AskLinedIcon } from "@tutti-os/ui-system/icons";
25787
- import { jsx as jsx43 } from "react/jsx-runtime";
25868
+ import { jsx as jsx44 } from "react/jsx-runtime";
25788
25869
  function ConversationMeta({
25789
25870
  item,
25790
25871
  nowMs,
@@ -25793,24 +25874,24 @@ function ConversationMeta({
25793
25874
  "use memo";
25794
25875
  const kind = conversationMetaKind(item);
25795
25876
  if (kind === "loading") {
25796
- return /* @__PURE__ */ jsx43(
25877
+ return /* @__PURE__ */ jsx44(
25797
25878
  "span",
25798
25879
  {
25799
25880
  className: AgentGUINode_styles_default.conversationMeta,
25800
25881
  "data-kind": kind,
25801
25882
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
25802
- children: /* @__PURE__ */ jsx43(LoadingGlyph, {})
25883
+ children: /* @__PURE__ */ jsx44(LoadingGlyph, {})
25803
25884
  }
25804
25885
  );
25805
25886
  }
25806
25887
  if (kind === "waiting") {
25807
- return /* @__PURE__ */ jsx43(
25888
+ return /* @__PURE__ */ jsx44(
25808
25889
  "span",
25809
25890
  {
25810
25891
  className: AgentGUINode_styles_default.conversationMeta,
25811
25892
  "data-kind": kind,
25812
25893
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
25813
- children: /* @__PURE__ */ jsx43(
25894
+ children: /* @__PURE__ */ jsx44(
25814
25895
  AskLinedIcon,
25815
25896
  {
25816
25897
  "aria-hidden": "true",
@@ -25821,34 +25902,34 @@ function ConversationMeta({
25821
25902
  );
25822
25903
  }
25823
25904
  if (kind === "failed") {
25824
- return /* @__PURE__ */ jsx43(
25905
+ return /* @__PURE__ */ jsx44(
25825
25906
  "span",
25826
25907
  {
25827
25908
  className: AgentGUINode_styles_default.conversationMeta,
25828
25909
  "data-kind": kind,
25829
25910
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
25830
- children: /* @__PURE__ */ jsx43(AttentionGlyph, {})
25911
+ children: /* @__PURE__ */ jsx44(AttentionGlyph, {})
25831
25912
  }
25832
25913
  );
25833
25914
  }
25834
25915
  if (kind === "unread-complete") {
25835
- return /* @__PURE__ */ jsx43(
25916
+ return /* @__PURE__ */ jsx44(
25836
25917
  "span",
25837
25918
  {
25838
25919
  className: AgentGUINode_styles_default.conversationMeta,
25839
25920
  "data-kind": kind,
25840
25921
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
25841
- 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" })
25842
25923
  }
25843
25924
  );
25844
25925
  }
25845
- return /* @__PURE__ */ jsx43(
25926
+ return /* @__PURE__ */ jsx44(
25846
25927
  "span",
25847
25928
  {
25848
25929
  className: AgentGUINode_styles_default.conversationMeta,
25849
25930
  "data-kind": kind,
25850
25931
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
25851
- children: /* @__PURE__ */ jsx43("span", { className: AgentGUINode_styles_default.conversationTime, children: formatConversationRelativeTime(
25932
+ children: /* @__PURE__ */ jsx44("span", { className: AgentGUINode_styles_default.conversationTime, children: formatConversationRelativeTime(
25852
25933
  resolveAgentGUIConversationSortTimeUnixMs(item),
25853
25934
  nowMs,
25854
25935
  labels
@@ -26021,13 +26102,13 @@ function formatConversationRelativeTime(updatedAtUnixMs, nowMs, labels) {
26021
26102
  }
26022
26103
  function LoadingGlyph() {
26023
26104
  "use memo";
26024
- return /* @__PURE__ */ jsx43(
26105
+ return /* @__PURE__ */ jsx44(
26025
26106
  Spinner6,
26026
26107
  {
26027
26108
  className: AgentGUINode_styles_default.conversationStatusGlyph,
26028
26109
  size: 14,
26029
26110
  style: { color: "var(--text-secondary)" },
26030
- strokeWidth: 1.5,
26111
+ strokeWidth: 2.25,
26031
26112
  trackColor: "color-mix(in srgb, currentColor 24%, transparent)",
26032
26113
  testId: "agent-gui-conversation-spinner"
26033
26114
  }
@@ -26035,14 +26116,14 @@ function LoadingGlyph() {
26035
26116
  }
26036
26117
  function AttentionGlyph() {
26037
26118
  "use memo";
26038
- return /* @__PURE__ */ jsx43(
26119
+ return /* @__PURE__ */ jsx44(
26039
26120
  "svg",
26040
26121
  {
26041
26122
  viewBox: "0 0 24 24",
26042
26123
  fill: "none",
26043
26124
  "aria-hidden": "true",
26044
26125
  className: AgentGUINode_styles_default.conversationStatusGlyph,
26045
- children: /* @__PURE__ */ jsx43(
26126
+ children: /* @__PURE__ */ jsx44(
26046
26127
  "path",
26047
26128
  {
26048
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",
@@ -26428,9 +26509,9 @@ import {
26428
26509
  DropdownMenuContent as DropdownMenuContent4,
26429
26510
  DropdownMenuItem as DropdownMenuItem3,
26430
26511
  DropdownMenuTrigger as DropdownMenuTrigger4,
26431
- Tooltip as Tooltip6,
26432
- TooltipContent as TooltipContent6,
26433
- TooltipTrigger as TooltipTrigger6
26512
+ Tooltip as Tooltip7,
26513
+ TooltipContent as TooltipContent7,
26514
+ TooltipTrigger as TooltipTrigger7
26434
26515
  } from "@tutti-os/ui-system";
26435
26516
  import { BareIconButton as BareIconButton2 } from "@tutti-os/ui-system/components";
26436
26517
  import {
@@ -26461,10 +26542,10 @@ import { BareIconButton } from "@tutti-os/ui-system/components";
26461
26542
  import { WorkspaceUserProjectSelect as WorkspaceUserProjectSelect2 } from "@tutti-os/workspace-user-project/ui";
26462
26543
 
26463
26544
  // app/renderer/components/icons/PinFilledIcon.tsx
26464
- import { jsx as jsx44 } from "react/jsx-runtime";
26545
+ import { jsx as jsx45 } from "react/jsx-runtime";
26465
26546
  function PinFilledIcon(props) {
26466
26547
  "use memo";
26467
- return /* @__PURE__ */ jsx44(
26548
+ return /* @__PURE__ */ jsx45(
26468
26549
  "svg",
26469
26550
  {
26470
26551
  xmlns: "http://www.w3.org/2000/svg",
@@ -26472,16 +26553,16 @@ function PinFilledIcon(props) {
26472
26553
  fill: "currentColor",
26473
26554
  "aria-hidden": true,
26474
26555
  ...props,
26475
- 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" })
26476
26557
  }
26477
26558
  );
26478
26559
  }
26479
26560
 
26480
26561
  // app/renderer/components/icons/PinLinedIcon.tsx
26481
- import { jsx as jsx45 } from "react/jsx-runtime";
26562
+ import { jsx as jsx46 } from "react/jsx-runtime";
26482
26563
  function PinLinedIcon(props) {
26483
26564
  "use memo";
26484
- return /* @__PURE__ */ jsx45(
26565
+ return /* @__PURE__ */ jsx46(
26485
26566
  "svg",
26486
26567
  {
26487
26568
  xmlns: "http://www.w3.org/2000/svg",
@@ -26489,13 +26570,13 @@ function PinLinedIcon(props) {
26489
26570
  fill: "currentColor",
26490
26571
  "aria-hidden": true,
26491
26572
  ...props,
26492
- 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" })
26493
26574
  }
26494
26575
  );
26495
26576
  }
26496
26577
 
26497
26578
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailItem.tsx
26498
- 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";
26499
26580
  function agentGUIConversationIconUrl(provider, agentTargetId, workspaceId, agentTargets) {
26500
26581
  const targetPresentation = resolveAgentTargetPresentation({
26501
26582
  agentTargetId: agentTargetId ?? "",
@@ -26683,7 +26764,7 @@ var AgentGUIConversationRailItem = memo5(
26683
26764
  },
26684
26765
  children: [
26685
26766
  /* @__PURE__ */ jsxs33("span", { className: AgentGUINode_styles_default.conversationTitleRow, children: [
26686
- conversationIconUrl ? /* @__PURE__ */ jsx46(
26767
+ conversationIconUrl ? /* @__PURE__ */ jsx47(
26687
26768
  "span",
26688
26769
  {
26689
26770
  "aria-hidden": "true",
@@ -26693,13 +26774,13 @@ var AgentGUIConversationRailItem = memo5(
26693
26774
  }
26694
26775
  }
26695
26776
  ) : null,
26696
- /* @__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) })
26697
26778
  ] }),
26698
- /* @__PURE__ */ jsx46(ConversationMeta, { item, nowMs: currentTimeMs, labels })
26779
+ /* @__PURE__ */ jsx47(ConversationMeta, { item, nowMs: currentTimeMs, labels })
26699
26780
  ]
26700
26781
  }
26701
26782
  ),
26702
- 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(
26703
26784
  "button",
26704
26785
  {
26705
26786
  type: "button",
@@ -26713,10 +26794,10 @@ var AgentGUIConversationRailItem = memo5(
26713
26794
  onConfirmDeleteConversation();
26714
26795
  }
26715
26796
  },
26716
- 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 })
26717
26798
  }
26718
26799
  ) : /* @__PURE__ */ jsxs33(Fragment12, { children: [
26719
- onOpenConversationWindow ? /* @__PURE__ */ jsx46(
26800
+ onOpenConversationWindow ? /* @__PURE__ */ jsx47(
26720
26801
  BareIconButton,
26721
26802
  {
26722
26803
  className: AgentGUINode_styles_default.conversationOpenWindowButton,
@@ -26733,10 +26814,10 @@ var AgentGUIConversationRailItem = memo5(
26733
26814
  event.stopPropagation();
26734
26815
  handleOpenConversationWindow();
26735
26816
  },
26736
- children: /* @__PURE__ */ jsx46(ExternalLink2, { "aria-hidden": "true" })
26817
+ children: /* @__PURE__ */ jsx47(ExternalLink2, { "aria-hidden": "true" })
26737
26818
  }
26738
26819
  ) : null,
26739
- /* @__PURE__ */ jsx46(
26820
+ /* @__PURE__ */ jsx47(
26740
26821
  BareIconButton,
26741
26822
  {
26742
26823
  className: AgentGUINode_styles_default.conversationPinButton,
@@ -26753,10 +26834,10 @@ var AgentGUIConversationRailItem = memo5(
26753
26834
  event.stopPropagation();
26754
26835
  handleTogglePinned();
26755
26836
  },
26756
- 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" })
26757
26838
  }
26758
26839
  ),
26759
- /* @__PURE__ */ jsx46(
26840
+ /* @__PURE__ */ jsx47(
26760
26841
  BareIconButton,
26761
26842
  {
26762
26843
  className: AgentGUINode_styles_default.conversationDeleteButton,
@@ -26773,7 +26854,7 @@ var AgentGUIConversationRailItem = memo5(
26773
26854
  event.stopPropagation();
26774
26855
  handleRequestDelete();
26775
26856
  },
26776
- children: /* @__PURE__ */ jsx46(CanvasNodeTrashLinedIcon, { "aria-hidden": "true" })
26857
+ children: /* @__PURE__ */ jsx47(CanvasNodeTrashLinedIcon, { "aria-hidden": "true" })
26777
26858
  }
26778
26859
  )
26779
26860
  ] }) })
@@ -26784,13 +26865,13 @@ var AgentGUIConversationRailItem = memo5(
26784
26865
  return row;
26785
26866
  }
26786
26867
  return /* @__PURE__ */ jsxs33(ContextMenu, { children: [
26787
- /* @__PURE__ */ jsx46(ContextMenuTrigger, { asChild: true, children: row }),
26868
+ /* @__PURE__ */ jsx47(ContextMenuTrigger, { asChild: true, children: row }),
26788
26869
  /* @__PURE__ */ jsxs33(
26789
26870
  ContextMenuContent,
26790
26871
  {
26791
26872
  className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
26792
26873
  children: [
26793
- /* @__PURE__ */ jsx46(
26874
+ /* @__PURE__ */ jsx47(
26794
26875
  ContextMenuItem,
26795
26876
  {
26796
26877
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -26801,10 +26882,10 @@ var AgentGUIConversationRailItem = memo5(
26801
26882
  }
26802
26883
  },
26803
26884
  onSelect: handleContextMenuRename,
26804
- children: /* @__PURE__ */ jsx46("span", { children: labels.renameSession })
26885
+ children: /* @__PURE__ */ jsx47("span", { children: labels.renameSession })
26805
26886
  }
26806
26887
  ),
26807
- onOpenConversationWindow ? /* @__PURE__ */ jsx46(
26888
+ onOpenConversationWindow ? /* @__PURE__ */ jsx47(
26808
26889
  ContextMenuItem,
26809
26890
  {
26810
26891
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -26815,10 +26896,10 @@ var AgentGUIConversationRailItem = memo5(
26815
26896
  }
26816
26897
  },
26817
26898
  onSelect: handleContextMenuOpenConversationWindow,
26818
- children: /* @__PURE__ */ jsx46("span", { children: labels.openConversationWindow })
26899
+ children: /* @__PURE__ */ jsx47("span", { children: labels.openConversationWindow })
26819
26900
  }
26820
26901
  ) : null,
26821
- /* @__PURE__ */ jsx46(
26902
+ /* @__PURE__ */ jsx47(
26822
26903
  ContextMenuItem,
26823
26904
  {
26824
26905
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -26829,16 +26910,16 @@ var AgentGUIConversationRailItem = memo5(
26829
26910
  }
26830
26911
  },
26831
26912
  onSelect: handleContextMenuCopySessionLink,
26832
- children: /* @__PURE__ */ jsx46("span", { children: labels.copySessionLink })
26913
+ children: /* @__PURE__ */ jsx47("span", { children: labels.copySessionLink })
26833
26914
  }
26834
26915
  ),
26835
- /* @__PURE__ */ jsx46(
26916
+ /* @__PURE__ */ jsx47(
26836
26917
  ContextMenuItem,
26837
26918
  {
26838
26919
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
26839
26920
  disabled: !canMarkUnread,
26840
26921
  onSelect: handleMarkUnread,
26841
- children: /* @__PURE__ */ jsx46("span", { children: labels.markSessionUnread })
26922
+ children: /* @__PURE__ */ jsx47("span", { children: labels.markSessionUnread })
26842
26923
  }
26843
26924
  )
26844
26925
  ]
@@ -26867,9 +26948,9 @@ function AgentGUIProjectRailHeader({
26867
26948
  ]
26868
26949
  );
26869
26950
  return /* @__PURE__ */ jsxs33("div", { className: AgentGUINode_styles_default.projectRailHeader, children: [
26870
- /* @__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"]) }) }),
26871
26952
  /* @__PURE__ */ jsxs33("div", { className: AgentGUINode_styles_default.projectRailAddProject, children: [
26872
- /* @__PURE__ */ jsx46(
26953
+ /* @__PURE__ */ jsx47(
26873
26954
  WorkspaceUserProjectSelect2,
26874
26955
  {
26875
26956
  api: userProjectApi,
@@ -26900,7 +26981,7 @@ function AgentGUIProjectRailHeader({
26900
26981
  "projectSelect.addProject"
26901
26982
  ])
26902
26983
  },
26903
- renderAddProjectIcon: () => /* @__PURE__ */ jsx46(
26984
+ renderAddProjectIcon: () => /* @__PURE__ */ jsx47(
26904
26985
  NewWorkspaceLinedIcon2,
26905
26986
  {
26906
26987
  "aria-hidden": true,
@@ -26918,7 +26999,7 @@ function AgentGUIProjectRailHeader({
26918
26999
  }
26919
27000
  }
26920
27001
  ),
26921
- /* @__PURE__ */ jsx46(
27002
+ /* @__PURE__ */ jsx47(
26922
27003
  NewWorkspaceLinedIcon2,
26923
27004
  {
26924
27005
  "aria-hidden": true,
@@ -26930,7 +27011,7 @@ function AgentGUIProjectRailHeader({
26930
27011
  }
26931
27012
 
26932
27013
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailSection.tsx
26933
- import { jsx as jsx47, jsxs as jsxs34 } from "react/jsx-runtime";
27014
+ import { jsx as jsx48, jsxs as jsxs34 } from "react/jsx-runtime";
26934
27015
  var AGENT_GUI_CONVERSATION_RAIL_SECTION_PAGE_SIZE = 5;
26935
27016
  var AgentGUIConversationRailSection = memo6(
26936
27017
  function AgentGUIConversationRailSection2({
@@ -27077,7 +27158,7 @@ var AgentGUIConversationRailSection = memo6(
27077
27158
  }
27078
27159
  },
27079
27160
  children: [
27080
- /* @__PURE__ */ jsx47(
27161
+ /* @__PURE__ */ jsx48(
27081
27162
  ChevronRight2,
27082
27163
  {
27083
27164
  "aria-hidden": "true",
@@ -27085,26 +27166,26 @@ var AgentGUIConversationRailSection = memo6(
27085
27166
  }
27086
27167
  ),
27087
27168
  /* @__PURE__ */ jsxs34("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: [
27088
- isSectionCollapsed ? /* @__PURE__ */ jsx47(
27169
+ isSectionCollapsed ? /* @__PURE__ */ jsx48(
27089
27170
  FolderIcon2,
27090
27171
  {
27091
27172
  "aria-hidden": "true",
27092
27173
  className: AgentGUINode_styles_default.conversationSectionLabelIcon
27093
27174
  }
27094
- ) : /* @__PURE__ */ jsx47(
27175
+ ) : /* @__PURE__ */ jsx48(
27095
27176
  FolderOpenLinedIcon,
27096
27177
  {
27097
27178
  "aria-hidden": "true",
27098
27179
  className: AgentGUINode_styles_default.conversationSectionLabelIcon
27099
27180
  }
27100
27181
  ),
27101
- /* @__PURE__ */ jsx47("span", { children: section.label })
27182
+ /* @__PURE__ */ jsx48("span", { children: section.label })
27102
27183
  ] })
27103
27184
  ]
27104
27185
  }
27105
- ) : /* @__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 }) }) }),
27106
27187
  canCreateConversationFromSection ? /* @__PURE__ */ jsxs34("div", { className: AgentGUINode_styles_default.conversationSectionActions, children: [
27107
- 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(
27108
27189
  BareIconButton2,
27109
27190
  {
27110
27191
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
@@ -27112,14 +27193,14 @@ var AgentGUIConversationRailSection = memo6(
27112
27193
  size: "sm",
27113
27194
  disabled: createConversationDisabled,
27114
27195
  onClick: handleCreateConversation,
27115
- children: /* @__PURE__ */ jsx47(CreateChatIcon, { "aria-hidden": "true" })
27196
+ children: /* @__PURE__ */ jsx48(CreateChatIcon, { "aria-hidden": "true" })
27116
27197
  }
27117
- ) }) : /* @__PURE__ */ jsxs34(Tooltip6, { children: [
27118
- /* @__PURE__ */ jsx47(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx47(
27198
+ ) }) : /* @__PURE__ */ jsxs34(Tooltip7, { children: [
27199
+ /* @__PURE__ */ jsx48(TooltipTrigger7, { asChild: true, children: /* @__PURE__ */ jsx48(
27119
27200
  "span",
27120
27201
  {
27121
27202
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
27122
- children: /* @__PURE__ */ jsx47(
27203
+ children: /* @__PURE__ */ jsx48(
27123
27204
  BareIconButton2,
27124
27205
  {
27125
27206
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
@@ -27127,13 +27208,13 @@ var AgentGUIConversationRailSection = memo6(
27127
27208
  size: "sm",
27128
27209
  disabled: createConversationDisabled,
27129
27210
  onClick: handleCreateConversation,
27130
- children: /* @__PURE__ */ jsx47(CreateChatIcon, { "aria-hidden": "true" })
27211
+ children: /* @__PURE__ */ jsx48(CreateChatIcon, { "aria-hidden": "true" })
27131
27212
  }
27132
27213
  )
27133
27214
  }
27134
27215
  ) }),
27135
- /* @__PURE__ */ jsx47(
27136
- TooltipContent6,
27216
+ /* @__PURE__ */ jsx48(
27217
+ TooltipContent7,
27137
27218
  {
27138
27219
  side: "top",
27139
27220
  sideOffset: 6,
@@ -27143,38 +27224,38 @@ var AgentGUIConversationRailSection = memo6(
27143
27224
  )
27144
27225
  ] }),
27145
27226
  projectPath ? /* @__PURE__ */ jsxs34(DropdownMenu4, { children: [
27146
- previewMode ? /* @__PURE__ */ jsx47(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx47(
27227
+ previewMode ? /* @__PURE__ */ jsx48(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx48(
27147
27228
  "span",
27148
27229
  {
27149
27230
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
27150
- children: /* @__PURE__ */ jsx47(
27231
+ children: /* @__PURE__ */ jsx48(
27151
27232
  BareIconButton2,
27152
27233
  {
27153
27234
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
27154
27235
  "aria-label": labels.projectSectionMoreActions,
27155
27236
  size: "sm",
27156
- children: /* @__PURE__ */ jsx47(MoreHorizontalIcon, { "aria-hidden": "true" })
27237
+ children: /* @__PURE__ */ jsx48(MoreHorizontalIcon, { "aria-hidden": "true" })
27157
27238
  }
27158
27239
  )
27159
27240
  }
27160
- ) }) : /* @__PURE__ */ jsxs34(Tooltip6, { children: [
27161
- /* @__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(
27162
27243
  "span",
27163
27244
  {
27164
27245
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
27165
- children: /* @__PURE__ */ jsx47(
27246
+ children: /* @__PURE__ */ jsx48(
27166
27247
  BareIconButton2,
27167
27248
  {
27168
27249
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
27169
27250
  "aria-label": labels.projectSectionMoreActions,
27170
27251
  size: "sm",
27171
- children: /* @__PURE__ */ jsx47(MoreHorizontalIcon, { "aria-hidden": "true" })
27252
+ children: /* @__PURE__ */ jsx48(MoreHorizontalIcon, { "aria-hidden": "true" })
27172
27253
  }
27173
27254
  )
27174
27255
  }
27175
27256
  ) }) }),
27176
- /* @__PURE__ */ jsx47(
27177
- TooltipContent6,
27257
+ /* @__PURE__ */ jsx48(
27258
+ TooltipContent7,
27178
27259
  {
27179
27260
  side: "right",
27180
27261
  sideOffset: 6,
@@ -27190,7 +27271,7 @@ var AgentGUIConversationRailSection = memo6(
27190
27271
  className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
27191
27272
  sideOffset: 6,
27192
27273
  children: [
27193
- /* @__PURE__ */ jsx47(
27274
+ /* @__PURE__ */ jsx48(
27194
27275
  DropdownMenuItem3,
27195
27276
  {
27196
27277
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -27206,10 +27287,10 @@ var AgentGUIConversationRailSection = memo6(
27206
27287
  workspaceRoot: projectPath
27207
27288
  });
27208
27289
  },
27209
- children: /* @__PURE__ */ jsx47("span", { children: labels.projectSectionViewFiles })
27290
+ children: /* @__PURE__ */ jsx48("span", { children: labels.projectSectionViewFiles })
27210
27291
  }
27211
27292
  ),
27212
- /* @__PURE__ */ jsx47(
27293
+ /* @__PURE__ */ jsx48(
27213
27294
  DropdownMenuItem3,
27214
27295
  {
27215
27296
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -27219,10 +27300,10 @@ var AgentGUIConversationRailSection = memo6(
27219
27300
  onRequestSectionBatchDeletion(section);
27220
27301
  }
27221
27302
  },
27222
- children: /* @__PURE__ */ jsx47("span", { children: labels.batchDeleteProjectSessions })
27303
+ children: /* @__PURE__ */ jsx48("span", { children: labels.batchDeleteProjectSessions })
27223
27304
  }
27224
27305
  ),
27225
- /* @__PURE__ */ jsx47(
27306
+ /* @__PURE__ */ jsx48(
27226
27307
  DropdownMenuItem3,
27227
27308
  {
27228
27309
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -27235,7 +27316,7 @@ var AgentGUIConversationRailSection = memo6(
27235
27316
  path: projectPath
27236
27317
  });
27237
27318
  },
27238
- children: /* @__PURE__ */ jsx47("span", { children: labels.removeProject })
27319
+ children: /* @__PURE__ */ jsx48("span", { children: labels.removeProject })
27239
27320
  }
27240
27321
  )
27241
27322
  ]
@@ -27243,38 +27324,38 @@ var AgentGUIConversationRailSection = memo6(
27243
27324
  )
27244
27325
  ] }) : null,
27245
27326
  !projectPath && section.kind === "conversations" ? /* @__PURE__ */ jsxs34(DropdownMenu4, { children: [
27246
- previewMode ? /* @__PURE__ */ jsx47(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx47(
27327
+ previewMode ? /* @__PURE__ */ jsx48(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx48(
27247
27328
  "span",
27248
27329
  {
27249
27330
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
27250
- children: /* @__PURE__ */ jsx47(
27331
+ children: /* @__PURE__ */ jsx48(
27251
27332
  BareIconButton2,
27252
27333
  {
27253
27334
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
27254
27335
  "aria-label": labels.conversationsSectionMoreActions,
27255
27336
  size: "sm",
27256
- children: /* @__PURE__ */ jsx47(MoreHorizontalIcon, { "aria-hidden": "true" })
27337
+ children: /* @__PURE__ */ jsx48(MoreHorizontalIcon, { "aria-hidden": "true" })
27257
27338
  }
27258
27339
  )
27259
27340
  }
27260
- ) }) : /* @__PURE__ */ jsxs34(Tooltip6, { children: [
27261
- /* @__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(
27262
27343
  "span",
27263
27344
  {
27264
27345
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
27265
- children: /* @__PURE__ */ jsx47(
27346
+ children: /* @__PURE__ */ jsx48(
27266
27347
  BareIconButton2,
27267
27348
  {
27268
27349
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
27269
27350
  "aria-label": labels.conversationsSectionMoreActions,
27270
27351
  size: "sm",
27271
- children: /* @__PURE__ */ jsx47(MoreHorizontalIcon, { "aria-hidden": "true" })
27352
+ children: /* @__PURE__ */ jsx48(MoreHorizontalIcon, { "aria-hidden": "true" })
27272
27353
  }
27273
27354
  )
27274
27355
  }
27275
27356
  ) }) }),
27276
- /* @__PURE__ */ jsx47(
27277
- TooltipContent6,
27357
+ /* @__PURE__ */ jsx48(
27358
+ TooltipContent7,
27278
27359
  {
27279
27360
  side: "right",
27280
27361
  sideOffset: 6,
@@ -27283,13 +27364,13 @@ var AgentGUIConversationRailSection = memo6(
27283
27364
  }
27284
27365
  )
27285
27366
  ] }),
27286
- /* @__PURE__ */ jsx47(
27367
+ /* @__PURE__ */ jsx48(
27287
27368
  DropdownMenuContent4,
27288
27369
  {
27289
27370
  align: "end",
27290
27371
  className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
27291
27372
  sideOffset: 6,
27292
- children: /* @__PURE__ */ jsx47(
27373
+ children: /* @__PURE__ */ jsx48(
27293
27374
  DropdownMenuItem3,
27294
27375
  {
27295
27376
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -27299,7 +27380,7 @@ var AgentGUIConversationRailSection = memo6(
27299
27380
  onRequestSectionBatchDeletion(section);
27300
27381
  }
27301
27382
  },
27302
- children: /* @__PURE__ */ jsx47("span", { children: labels.batchDeleteConversations })
27383
+ children: /* @__PURE__ */ jsx48("span", { children: labels.batchDeleteConversations })
27303
27384
  }
27304
27385
  )
27305
27386
  }
@@ -27307,14 +27388,14 @@ var AgentGUIConversationRailSection = memo6(
27307
27388
  ] }) : null
27308
27389
  ] }) : null
27309
27390
  ] }),
27310
- /* @__PURE__ */ jsx47(
27391
+ /* @__PURE__ */ jsx48(
27311
27392
  "div",
27312
27393
  {
27313
27394
  className: AgentGUINode_styles_default.conversationSectionItems,
27314
27395
  "aria-hidden": isSectionCollapsed ? "true" : void 0,
27315
27396
  children: /* @__PURE__ */ jsxs34("div", { className: AgentGUINode_styles_default.conversationSectionItemsInner, children: [
27316
- !isSectionCollapsed && visibleItems.length === 0 ? /* @__PURE__ */ jsx47("div", { className: AgentGUINode_styles_default.conversationSectionEmpty, children: labels.emptyProjectConversations }) : null,
27317
- 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(
27318
27399
  AgentGUIConversationRailItem,
27319
27400
  {
27320
27401
  active: item.id === activeConversationId,
@@ -27340,7 +27421,7 @@ var AgentGUIConversationRailSection = memo6(
27340
27421
  item.id
27341
27422
  )),
27342
27423
  canShowMore || canShowLess ? /* @__PURE__ */ jsxs34("div", { className: AgentGUINode_styles_default.conversationSectionPagination, children: [
27343
- canShowMore ? /* @__PURE__ */ jsx47(
27424
+ canShowMore ? /* @__PURE__ */ jsx48(
27344
27425
  "button",
27345
27426
  {
27346
27427
  type: "button",
@@ -27350,7 +27431,7 @@ var AgentGUIConversationRailSection = memo6(
27350
27431
  children: labels.showMoreConversations
27351
27432
  }
27352
27433
  ) : null,
27353
- canShowLess ? /* @__PURE__ */ jsx47(
27434
+ canShowLess ? /* @__PURE__ */ jsx48(
27354
27435
  "button",
27355
27436
  {
27356
27437
  type: "button",
@@ -27370,7 +27451,7 @@ var AgentGUIConversationRailSection = memo6(
27370
27451
  );
27371
27452
 
27372
27453
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailPane.tsx
27373
- import { jsx as jsx48, jsxs as jsxs35 } from "react/jsx-runtime";
27454
+ import { jsx as jsx49, jsxs as jsxs35 } from "react/jsx-runtime";
27374
27455
  var AGENT_GUI_CONFIRMATION_DIALOG_CLASS_NAME = "nodrag tsh-desktop-no-drag [-webkit-app-region:no-drag]";
27375
27456
  var AGENT_GUI_CONFIRMATION_DIALOG_OVERLAY_CLASS_NAME = "nodrag tsh-desktop-no-drag [-webkit-app-region:no-drag]";
27376
27457
  function useDelayedBoolean(value, delayMs) {
@@ -27676,7 +27757,7 @@ var AgentGUIConversationRailPane = memo7(
27676
27757
  "aria-hidden": isCollapsed ? "true" : void 0,
27677
27758
  children: [
27678
27759
  /* @__PURE__ */ jsxs35("div", { className: AgentGUINode_styles_default.railToolbar, children: [
27679
- /* @__PURE__ */ jsx48(
27760
+ /* @__PURE__ */ jsx49(
27680
27761
  TaskSearchField,
27681
27762
  {
27682
27763
  value: conversationQuery,
@@ -27695,27 +27776,27 @@ var AgentGUIConversationRailPane = memo7(
27695
27776
  disabled: createConversationDisabled,
27696
27777
  onClick: () => onCreateConversation(),
27697
27778
  children: [
27698
- /* @__PURE__ */ jsx48(CreateChatIcon2, { "aria-hidden": "true" }),
27699
- /* @__PURE__ */ jsx48("span", { children: labels.newConversation })
27779
+ /* @__PURE__ */ jsx49(CreateChatIcon2, { "aria-hidden": "true" }),
27780
+ /* @__PURE__ */ jsx49("span", { children: labels.newConversation })
27700
27781
  ]
27701
27782
  }
27702
27783
  )
27703
27784
  ] }),
27704
- /* @__PURE__ */ jsx48(
27785
+ /* @__PURE__ */ jsx49(
27705
27786
  ScrollArea,
27706
27787
  {
27707
27788
  scrollbarMode: "native",
27708
27789
  className: "min-h-0 flex-1 [&_[data-orientation=vertical][data-slot=scroll-area-scrollbar]]:opacity-100",
27709
27790
  viewportRef: conversationListRef,
27710
27791
  viewportClassName: AgentGUINode_styles_default.conversationList,
27711
- children: shouldShowConversationSkeleton ? /* @__PURE__ */ jsx48(
27792
+ children: shouldShowConversationSkeleton ? /* @__PURE__ */ jsx49(
27712
27793
  AgentConversationListSkeleton,
27713
27794
  {
27714
27795
  label: labels.loadingConversations
27715
27796
  }
27716
27797
  ) : shouldShowConversationSearchError ? /* @__PURE__ */ jsxs35("div", { className: AgentGUINode_styles_default.emptyState, children: [
27717
- /* @__PURE__ */ jsx48("span", { children: labels.searchFailed }),
27718
- /* @__PURE__ */ jsx48(
27798
+ /* @__PURE__ */ jsx49("span", { children: labels.searchFailed }),
27799
+ /* @__PURE__ */ jsx49(
27719
27800
  SystemButton,
27720
27801
  {
27721
27802
  type: "button",
@@ -27725,7 +27806,7 @@ var AgentGUIConversationRailPane = memo7(
27725
27806
  children: labels.retrySearch
27726
27807
  }
27727
27808
  )
27728
- ] }) : 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(
27729
27810
  "fieldset",
27730
27811
  {
27731
27812
  className: "contents",
@@ -27757,7 +27838,7 @@ var AgentGUIConversationRailPane = memo7(
27757
27838
  ).length + (activeOverlayCountsTowardTotal && !activeOverlayIsCanonical ? 1 : 0);
27758
27839
  const sectionHasMore = searchSectionHasMore || !conversationQuery.trim() && sectionPageState?.hasMore === true;
27759
27840
  return /* @__PURE__ */ jsxs35(Fragment13, { children: [
27760
- showProjectRailHeader ? /* @__PURE__ */ jsx48(
27841
+ showProjectRailHeader ? /* @__PURE__ */ jsx49(
27761
27842
  AgentGUIProjectRailHeader,
27762
27843
  {
27763
27844
  disabled: railInteractionsLocked,
@@ -27766,7 +27847,7 @@ var AgentGUIConversationRailPane = memo7(
27766
27847
  workspaceUserProjectI18n
27767
27848
  }
27768
27849
  ) : null,
27769
- /* @__PURE__ */ jsx48(
27850
+ /* @__PURE__ */ jsx49(
27770
27851
  AgentGUIConversationRailSection,
27771
27852
  {
27772
27853
  activeConversation: activeOverlayConversation,
@@ -27817,8 +27898,8 @@ var AgentGUIConversationRailPane = memo7(
27817
27898
  )
27818
27899
  }
27819
27900
  ),
27820
- footer ? /* @__PURE__ */ jsx48("div", { className: "shrink-0 pb-2", children: footer }) : null,
27821
- /* @__PURE__ */ jsx48(
27901
+ footer ? /* @__PURE__ */ jsx49("div", { className: "shrink-0 pb-2", children: footer }) : null,
27902
+ /* @__PURE__ */ jsx49(
27822
27903
  ConfirmationDialog,
27823
27904
  {
27824
27905
  cancelLabel: labels.cancel,
@@ -27873,7 +27954,7 @@ var AgentGUIConversationRailPane = memo7(
27873
27954
  import {
27874
27955
  selectWorkspaceAgentConsumerSessions as selectWorkspaceAgentConsumerSessions4
27875
27956
  } from "@tutti-os/agent-activity-core";
27876
- 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";
27877
27958
 
27878
27959
  // agent-gui/agentGuiNode/controller/AgentGUIConversationRailQueryController.ts
27879
27960
  import {
@@ -27882,6 +27963,7 @@ import {
27882
27963
  } from "@tutti-os/agent-activity-core";
27883
27964
  var SECTION_PAGE_SIZE = 5;
27884
27965
  var SEARCH_PAGE_SIZE = 100;
27966
+ var CONVERSATION_SEARCH_DEBOUNCE_MS = 300;
27885
27967
  var EMPTY_SEARCH_STATE = {
27886
27968
  failed: false,
27887
27969
  hasMore: false,
@@ -27910,6 +27992,7 @@ var AgentGUIConversationRailQueryController = class {
27910
27992
  getActiveConversationId;
27911
27993
  listeners = /* @__PURE__ */ new Set();
27912
27994
  runtime;
27995
+ scheduler;
27913
27996
  workspaceId;
27914
27997
  pagingAbortControllers = /* @__PURE__ */ new Map();
27915
27998
  queryState = EMPTY_QUERY_STATE;
@@ -27921,6 +28004,7 @@ var AgentGUIConversationRailQueryController = class {
27921
28004
  searchQuery = "";
27922
28005
  searchRequestKey = null;
27923
28006
  searchAbortController = null;
28007
+ searchDebounceTask = null;
27924
28008
  pagingRequestSequence = 0;
27925
28009
  searchRequestSequence = 0;
27926
28010
  attached = false;
@@ -27931,6 +28015,7 @@ var AgentGUIConversationRailQueryController = class {
27931
28015
  this.engine = input.engine;
27932
28016
  this.getActiveConversationId = input.getActiveConversationId;
27933
28017
  this.runtime = input.runtime;
28018
+ this.scheduler = input.scheduler ?? agentGuiScheduler;
27934
28019
  this.workspaceId = input.workspaceId;
27935
28020
  this.previousMembershipRecords = membershipRecords(
27936
28021
  this.engine.getSnapshot()
@@ -27979,7 +28064,7 @@ var AgentGUIConversationRailQueryController = class {
27979
28064
  const query = value.trim();
27980
28065
  if (query === this.searchQuery) return;
27981
28066
  this.searchQuery = query;
27982
- this.requestSearch();
28067
+ this.scheduleSearch();
27983
28068
  }
27984
28069
  loadMoreSectionConversations = (section) => {
27985
28070
  const scopeKey = this.railSectionQueryKey;
@@ -28218,6 +28303,7 @@ var AgentGUIConversationRailQueryController = class {
28218
28303
  });
28219
28304
  }
28220
28305
  requestSearch() {
28306
+ this.clearSearchDebounceTimer();
28221
28307
  this.searchRequestKey = this.searchEnabled() && this.searchQuery ? JSON.stringify([
28222
28308
  this.workspaceId,
28223
28309
  this.sectionAgentTargetId,
@@ -28278,6 +28364,29 @@ var AgentGUIConversationRailQueryController = class {
28278
28364
  this.emit();
28279
28365
  });
28280
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
+ }
28281
28390
  upsertSessions(sessions) {
28282
28391
  this.ingestingSessions = true;
28283
28392
  try {
@@ -28335,6 +28444,7 @@ var AgentGUIConversationRailQueryController = class {
28335
28444
  this.unsubscribeEngine?.();
28336
28445
  this.unsubscribeEngine = null;
28337
28446
  this.cancelPagingRequests();
28447
+ this.clearSearchDebounceTimer();
28338
28448
  this.searchRequestSequence += 1;
28339
28449
  this.searchAbortController?.abort();
28340
28450
  this.searchAbortController = null;
@@ -28390,7 +28500,6 @@ function useAgentGUIConversationRailQuery({
28390
28500
  );
28391
28501
  const activeConversationIdRef = useRef34(activeConversationId);
28392
28502
  activeConversationIdRef.current = activeConversationId;
28393
- const deferredConversationQuery = useDeferredValue(conversationQuery);
28394
28503
  const controller = useMemo33(
28395
28504
  () => new AgentGUIConversationRailQueryController({
28396
28505
  engine,
@@ -28408,11 +28517,11 @@ function useAgentGUIConversationRailQuery({
28408
28517
  sectionAgentTargetFallbackId,
28409
28518
  userProjects
28410
28519
  });
28411
- controller.setSearchQuery(deferredConversationQuery);
28520
+ controller.setSearchQuery(conversationQuery);
28412
28521
  }, [
28413
28522
  controller,
28414
28523
  conversationFilter,
28415
- deferredConversationQuery,
28524
+ conversationQuery,
28416
28525
  previewMode,
28417
28526
  sectionAgentTargetFallbackId,
28418
28527
  userProjects
@@ -28458,7 +28567,7 @@ function identitySnapshot(snapshot) {
28458
28567
  }
28459
28568
 
28460
28569
  // agent-gui/agentGuiNode/controller/AgentGUIConversationRailController.tsx
28461
- import { jsx as jsx49 } from "react/jsx-runtime";
28570
+ import { jsx as jsx50 } from "react/jsx-runtime";
28462
28571
  var AgentGUIConversationRailController = memo8(
28463
28572
  function AgentGUIConversationRailController2(props) {
28464
28573
  const [conversationQuery, setConversationQuery] = useState28("");
@@ -28471,7 +28580,7 @@ var AgentGUIConversationRailController = memo8(
28471
28580
  userProjects: props.userProjects,
28472
28581
  workspaceId: props.workspaceId
28473
28582
  });
28474
- return /* @__PURE__ */ jsx49(
28583
+ return /* @__PURE__ */ jsx50(
28475
28584
  AgentGUIConversationRailPane,
28476
28585
  {
28477
28586
  ...props,
@@ -28663,7 +28772,7 @@ import { cn as cn6 } from "@tutti-os/ui-system";
28663
28772
  // agent-gui/agentGuiNode/AgentGoalBanner.tsx
28664
28773
  import { useEffect as useEffect32, useState as useState29 } from "react";
28665
28774
  import { CirclePause, CirclePlay, Pencil as Pencil2, Target as Target3, Trash2 } from "lucide-react";
28666
- import { jsx as jsx50, jsxs as jsxs36 } from "react/jsx-runtime";
28775
+ import { jsx as jsx51, jsxs as jsxs36 } from "react/jsx-runtime";
28667
28776
  var RESUMABLE_GOAL_STATUSES = /* @__PURE__ */ new Set([
28668
28777
  "paused",
28669
28778
  "blocked",
@@ -28772,7 +28881,7 @@ function AgentGoalBanner({
28772
28881
  onEditObjective?.(next);
28773
28882
  }
28774
28883
  };
28775
- 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(
28776
28885
  "section",
28777
28886
  {
28778
28887
  className: cn(AgentGUIChrome_styles_default.chromeCard, AgentGUIChrome_styles_default.chromeCardMuted),
@@ -28780,8 +28889,8 @@ function AgentGoalBanner({
28780
28889
  "data-testid": "agent-gui-goal-banner",
28781
28890
  children: /* @__PURE__ */ jsxs36("div", { className: AgentGUIChrome_styles_default.chromeMetaRow, children: [
28782
28891
  /* @__PURE__ */ jsxs36("div", { className: AgentGUIChrome_styles_default.chromeMessageSlot, children: [
28783
- /* @__PURE__ */ jsx50("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: /* @__PURE__ */ jsx50(Target3, { "aria-hidden": true, className: "size-3.5" }) }),
28784
- 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(
28785
28894
  "input",
28786
28895
  {
28787
28896
  className: AgentGUIChrome_styles_default.chromeGoalEditInput,
@@ -28807,8 +28916,8 @@ function AgentGoalBanner({
28807
28916
  className: cn(AgentGUIChrome_styles_default.chromeMessage, AgentGUIChrome_styles_default.chromeNoticeMessage),
28808
28917
  title: fullMessage,
28809
28918
  children: [
28810
- /* @__PURE__ */ jsx50("span", { className: AgentGUIChrome_styles_default.chromeNoticeTitle, children: title }),
28811
- /* @__PURE__ */ jsx50(
28919
+ /* @__PURE__ */ jsx51("span", { className: AgentGUIChrome_styles_default.chromeNoticeTitle, children: title }),
28920
+ /* @__PURE__ */ jsx51(
28812
28921
  "span",
28813
28922
  {
28814
28923
  className: AgentGUIChrome_styles_default.chromeNoticeDescription,
@@ -28821,7 +28930,7 @@ function AgentGoalBanner({
28821
28930
  )
28822
28931
  ] }),
28823
28932
  hasActions ? /* @__PURE__ */ jsxs36("div", { className: AgentGUIChrome_styles_default.chromeGoalActions, children: [
28824
- onEditObjective !== void 0 && editDraft === null ? /* @__PURE__ */ jsx50(
28933
+ onEditObjective !== void 0 && editDraft === null ? /* @__PURE__ */ jsx51(
28825
28934
  "button",
28826
28935
  {
28827
28936
  type: "button",
@@ -28829,10 +28938,10 @@ function AgentGoalBanner({
28829
28938
  title: labels.editAction,
28830
28939
  "aria-label": labels.editAction,
28831
28940
  "data-testid": "agent-gui-goal-banner-edit",
28832
- children: /* @__PURE__ */ jsx50(Pencil2, { "aria-hidden": true, className: "size-3.5" })
28941
+ children: /* @__PURE__ */ jsx51(Pencil2, { "aria-hidden": true, className: "size-3.5" })
28833
28942
  }
28834
28943
  ) : null,
28835
- showPause ? /* @__PURE__ */ jsx50(
28944
+ showPause ? /* @__PURE__ */ jsx51(
28836
28945
  "button",
28837
28946
  {
28838
28947
  type: "button",
@@ -28840,10 +28949,10 @@ function AgentGoalBanner({
28840
28949
  title: labels.pauseAction,
28841
28950
  "aria-label": labels.pauseAction,
28842
28951
  "data-testid": "agent-gui-goal-banner-pause",
28843
- children: /* @__PURE__ */ jsx50(CirclePause, { "aria-hidden": true, className: "size-3.5" })
28952
+ children: /* @__PURE__ */ jsx51(CirclePause, { "aria-hidden": true, className: "size-3.5" })
28844
28953
  }
28845
28954
  ) : null,
28846
- showResume ? /* @__PURE__ */ jsx50(
28955
+ showResume ? /* @__PURE__ */ jsx51(
28847
28956
  "button",
28848
28957
  {
28849
28958
  type: "button",
@@ -28851,10 +28960,10 @@ function AgentGoalBanner({
28851
28960
  title: labels.resumeAction,
28852
28961
  "aria-label": labels.resumeAction,
28853
28962
  "data-testid": "agent-gui-goal-banner-resume",
28854
- children: /* @__PURE__ */ jsx50(CirclePlay, { "aria-hidden": true, className: "size-3.5" })
28963
+ children: /* @__PURE__ */ jsx51(CirclePlay, { "aria-hidden": true, className: "size-3.5" })
28855
28964
  }
28856
28965
  ) : null,
28857
- onClearGoal !== void 0 ? /* @__PURE__ */ jsx50(
28966
+ onClearGoal !== void 0 ? /* @__PURE__ */ jsx51(
28858
28967
  "button",
28859
28968
  {
28860
28969
  type: "button",
@@ -28862,10 +28971,10 @@ function AgentGoalBanner({
28862
28971
  title: labels.clearAction,
28863
28972
  "aria-label": labels.clearAction,
28864
28973
  "data-testid": "agent-gui-goal-banner-clear",
28865
- children: /* @__PURE__ */ jsx50(Trash2, { "aria-hidden": true, className: "size-3.5" })
28974
+ children: /* @__PURE__ */ jsx51(Trash2, { "aria-hidden": true, className: "size-3.5" })
28866
28975
  }
28867
28976
  ) : null
28868
- ] }) : /* @__PURE__ */ jsx50(
28977
+ ] }) : /* @__PURE__ */ jsx51(
28869
28978
  "span",
28870
28979
  {
28871
28980
  className: AgentGUIChrome_styles_default.chromeGoalHint,
@@ -28879,7 +28988,7 @@ function AgentGoalBanner({
28879
28988
  }
28880
28989
 
28881
28990
  // agent-gui/agentGuiNode/view/AgentGUIBottomDockPane.tsx
28882
- import { jsx as jsx51, jsxs as jsxs37 } from "react/jsx-runtime";
28991
+ import { jsx as jsx52, jsxs as jsxs37 } from "react/jsx-runtime";
28883
28992
  var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28884
28993
  bottomDockRef,
28885
28994
  showScrollToBottom,
@@ -28919,7 +29028,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28919
29028
  className: AgentGUINode_styles_default.bottomDock,
28920
29029
  "data-testid": "agent-gui-bottom-dock",
28921
29030
  children: [
28922
- showScrollToBottom ? /* @__PURE__ */ jsx51(
29031
+ showScrollToBottom ? /* @__PURE__ */ jsx52(
28923
29032
  "button",
28924
29033
  {
28925
29034
  type: "button",
@@ -28932,15 +29041,15 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28932
29041
  title: scrollToBottomLabel,
28933
29042
  onPointerDown: (event) => event.stopPropagation(),
28934
29043
  onClick: onScrollToBottom,
28935
- 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 })
28936
29045
  }
28937
29046
  ) : null,
28938
- bottomDockLiftedPrompt ? /* @__PURE__ */ jsx51(
29047
+ bottomDockLiftedPrompt ? /* @__PURE__ */ jsx52(
28939
29048
  "div",
28940
29049
  {
28941
29050
  className: AgentGUINode_styles_default.bottomDockPrompt,
28942
29051
  "data-testid": "agent-gui-bottom-dock-active-prompt",
28943
- children: /* @__PURE__ */ jsx51(
29052
+ children: /* @__PURE__ */ jsx52(
28944
29053
  AgentInteractivePromptSurface,
28945
29054
  {
28946
29055
  prompt: bottomDockLiftedPrompt,
@@ -28955,7 +29064,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28955
29064
  )
28956
29065
  }
28957
29066
  ) : null,
28958
- inlineNoticeChrome ? /* @__PURE__ */ jsx51(
29067
+ inlineNoticeChrome ? /* @__PURE__ */ jsx52(
28959
29068
  AgentSessionChrome,
28960
29069
  {
28961
29070
  chrome: inlineNoticeChrome,
@@ -28967,7 +29076,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28967
29076
  labels: chromeLabels
28968
29077
  }
28969
29078
  ) : null,
28970
- /* @__PURE__ */ jsx51(
29079
+ /* @__PURE__ */ jsx52(
28971
29080
  AgentSessionChrome,
28972
29081
  {
28973
29082
  chrome: sessionChrome,
@@ -28979,7 +29088,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28979
29088
  labels: chromeLabels
28980
29089
  }
28981
29090
  ),
28982
- showGoalBanner ? /* @__PURE__ */ jsx51(
29091
+ showGoalBanner ? /* @__PURE__ */ jsx52(
28983
29092
  AgentGoalBanner,
28984
29093
  {
28985
29094
  objective: goalObjective,
@@ -28993,12 +29102,12 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
28993
29102
  onClearGoal: () => onGoalControl("clear")
28994
29103
  }
28995
29104
  ) : null,
28996
- bottomDockReplacementPrompt ? /* @__PURE__ */ jsx51(
29105
+ bottomDockReplacementPrompt ? /* @__PURE__ */ jsx52(
28997
29106
  "div",
28998
29107
  {
28999
29108
  className: AgentGUINode_styles_default.bottomDockPrompt,
29000
29109
  "data-testid": "agent-gui-bottom-dock-active-prompt",
29001
- children: /* @__PURE__ */ jsx51(
29110
+ children: /* @__PURE__ */ jsx52(
29002
29111
  AgentInteractivePromptSurface,
29003
29112
  {
29004
29113
  prompt: bottomDockReplacementPrompt,
@@ -29012,7 +29121,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
29012
29121
  }
29013
29122
  )
29014
29123
  }
29015
- ) : /* @__PURE__ */ jsx51(AgentComposer, { ...composerProps })
29124
+ ) : /* @__PURE__ */ jsx52(AgentComposer, { ...composerProps })
29016
29125
  ]
29017
29126
  }
29018
29127
  );
@@ -29021,8 +29130,8 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
29021
29130
  // agent-gui/agentGuiNode/view/AgentGUIDetailHeader.tsx
29022
29131
  import { memo as memo10 } from "react";
29023
29132
  import { Info as Info2 } from "lucide-react";
29024
- import { Tooltip as Tooltip7, TooltipContent as TooltipContent7, TooltipTrigger as TooltipTrigger7 } from "@tutti-os/ui-system";
29025
- 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";
29026
29135
  var AgentGUIDetailHeader = memo10(function AgentGUIDetailHeader2({
29027
29136
  activeConversation,
29028
29137
  hidden,
@@ -29035,9 +29144,9 @@ var AgentGUIDetailHeader = memo10(function AgentGUIDetailHeader2({
29035
29144
  return null;
29036
29145
  }
29037
29146
  const runPath = activeConversation.cwd.trim();
29038
- return /* @__PURE__ */ jsx52("div", { className: AgentGUINode_styles_default.detailHeader, children: /* @__PURE__ */ jsxs38("span", { className: AgentGUINode_styles_default.detailHeaderTitleGroup, children: [
29039
- /* @__PURE__ */ jsx52("span", { className: AgentGUINode_styles_default.detailHeaderTitle, children: conversationPlainTitle(activeConversation, labels, uiLanguage) }),
29040
- 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
29041
29150
  ] }) });
29042
29151
  });
29043
29152
  function AgentRunPathInfo({
@@ -29045,22 +29154,22 @@ function AgentRunPathInfo({
29045
29154
  previewMode
29046
29155
  }) {
29047
29156
  "use memo";
29048
- const trigger = /* @__PURE__ */ jsx52(
29157
+ const trigger = /* @__PURE__ */ jsx53(
29049
29158
  "button",
29050
29159
  {
29051
29160
  type: "button",
29052
29161
  className: AgentGUINode_styles_default.detailHeaderPathInfo,
29053
29162
  "aria-label": path,
29054
- children: /* @__PURE__ */ jsx52(Info2, { size: 14, strokeWidth: 2, "aria-hidden": "true" })
29163
+ children: /* @__PURE__ */ jsx53(Info2, { size: 14, strokeWidth: 2, "aria-hidden": "true" })
29055
29164
  }
29056
29165
  );
29057
29166
  if (previewMode) {
29058
29167
  return trigger;
29059
29168
  }
29060
- return /* @__PURE__ */ jsxs38(Tooltip7, { children: [
29061
- /* @__PURE__ */ jsx52(TooltipTrigger7, { asChild: true, children: trigger }),
29062
- /* @__PURE__ */ jsx52(
29063
- TooltipContent7,
29169
+ return /* @__PURE__ */ jsxs38(Tooltip8, { children: [
29170
+ /* @__PURE__ */ jsx53(TooltipTrigger8, { asChild: true, children: trigger }),
29171
+ /* @__PURE__ */ jsx53(
29172
+ TooltipContent8,
29064
29173
  {
29065
29174
  side: "top",
29066
29175
  align: "start",
@@ -29073,7 +29182,7 @@ function AgentRunPathInfo({
29073
29182
 
29074
29183
  // agent-gui/agentGuiNode/view/AgentGUIConversationTimelinePane.tsx
29075
29184
  import { memo as memo11 } from "react";
29076
- 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";
29077
29186
  var EMPTY_WORKSPACE_APP_ICONS3 = [];
29078
29187
  var AgentGUIConversationTimelinePane = memo11(
29079
29188
  function AgentGUIConversationTimelinePane2({
@@ -29091,16 +29200,16 @@ var AgentGUIConversationTimelinePane = memo11(
29091
29200
  }) {
29092
29201
  "use memo";
29093
29202
  return /* @__PURE__ */ jsxs39(Fragment14, { children: [
29094
- isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx53(
29203
+ isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx54(
29095
29204
  "div",
29096
29205
  {
29097
29206
  className: "mx-auto flex h-8 items-center justify-center text-[12px] text-[var(--text-secondary)]",
29098
29207
  "data-testid": "agent-gui-older-messages-loading",
29099
29208
  role: "status",
29100
- children: /* @__PURE__ */ jsx53("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
29209
+ children: /* @__PURE__ */ jsx54("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
29101
29210
  }
29102
29211
  ) : null,
29103
- /* @__PURE__ */ jsx53(
29212
+ /* @__PURE__ */ jsx54(
29104
29213
  AgentConversationFlow,
29105
29214
  {
29106
29215
  conversation,
@@ -29435,10 +29544,10 @@ function useAgentGUIDetailScroll(input) {
29435
29544
  import { useMemo as useMemo34 } from "react";
29436
29545
 
29437
29546
  // app/renderer/components/icons/UnavailableChatIcon.tsx
29438
- import { jsx as jsx54 } from "react/jsx-runtime";
29547
+ import { jsx as jsx55 } from "react/jsx-runtime";
29439
29548
  function UnavailableChatIcon(props) {
29440
29549
  "use memo";
29441
- return /* @__PURE__ */ jsx54(
29550
+ return /* @__PURE__ */ jsx55(
29442
29551
  "svg",
29443
29552
  {
29444
29553
  xmlns: "http://www.w3.org/2000/svg",
@@ -29446,13 +29555,13 @@ function UnavailableChatIcon(props) {
29446
29555
  fill: "currentColor",
29447
29556
  "aria-hidden": true,
29448
29557
  ...props,
29449
- 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" })
29450
29559
  }
29451
29560
  );
29452
29561
  }
29453
29562
 
29454
29563
  // agent-gui/agentGuiNode/view/useAgentGUIDetailModel.tsx
29455
- 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";
29456
29565
  function useAgentGUIDetailModel(input) {
29457
29566
  const {
29458
29567
  bottomDockDismissedPromptRequestId,
@@ -29586,11 +29695,11 @@ function useAgentGUIDetailModel(input) {
29586
29695
  className: AgentGUINode_styles_default.unavailableChatEmpty,
29587
29696
  "data-testid": "agent-gui-unavailable-chat-empty",
29588
29697
  children: [
29589
- /* @__PURE__ */ jsx55(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
29590
- /* @__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 })
29591
29700
  ]
29592
29701
  }
29593
- ) : /* @__PURE__ */ jsx55(Fragment15, {}),
29702
+ ) : /* @__PURE__ */ jsx56(Fragment15, {}),
29594
29703
  [labels.conversationUnavailable, showUnavailableChatEmpty]
29595
29704
  );
29596
29705
  const chromeLabels = useMemo34(
@@ -29958,7 +30067,7 @@ function useAgentGUIDetailModel(input) {
29958
30067
  }
29959
30068
 
29960
30069
  // agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
29961
- 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";
29962
30071
  var AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE = {
29963
30072
  width: "100%",
29964
30073
  minWidth: "100%",
@@ -30010,6 +30119,7 @@ function mergeWorkspaceAppIconsFromCommands(input) {
30010
30119
  }
30011
30120
  var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30012
30121
  viewModel,
30122
+ referenceProvenanceFilter = null,
30013
30123
  composerEngagement,
30014
30124
  actions,
30015
30125
  labels,
@@ -30146,13 +30256,13 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30146
30256
  pendingPrependScrollAnchorRef.current = null;
30147
30257
  }, [viewModel.rail.activeConversationId]);
30148
30258
  const submitPromptAndScrollToBottom = useCallback45(
30149
- (content, displayPrompt) => {
30259
+ (content, displayPrompt, options) => {
30150
30260
  requestSubmittedPromptScrollToBottom();
30151
30261
  if (displayPrompt === void 0) {
30152
- submitPrompt(content);
30262
+ submitPrompt(content, void 0, options);
30153
30263
  return;
30154
30264
  }
30155
- submitPrompt(content, displayPrompt);
30265
+ submitPrompt(content, displayPrompt, options);
30156
30266
  },
30157
30267
  [requestSubmittedPromptScrollToBottom, submitPrompt]
30158
30268
  );
@@ -30267,6 +30377,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30267
30377
  showStopButton,
30268
30378
  previewMode,
30269
30379
  workspaceReferencePickerOpen,
30380
+ referenceProvenanceFilter,
30270
30381
  // Plan decisions replace the composer; approval / ask-user embed here.
30271
30382
  activePrompt: composerActivePrompt,
30272
30383
  backgroundAgentStatusText,
@@ -30375,6 +30486,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30375
30486
  viewModel.detail.usage,
30376
30487
  viewModel.shell.workspaceId,
30377
30488
  viewModel.shell.workspacePath,
30489
+ referenceProvenanceFilter,
30378
30490
  workspaceUserProjectI18n,
30379
30491
  workspaceAppIcons,
30380
30492
  selectHomeComposerAgentTargetAndFocus
@@ -30425,7 +30537,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30425
30537
  viewModel
30426
30538
  });
30427
30539
  return /* @__PURE__ */ jsxs41("main", { className: AgentGUINode_styles_default.detail, children: [
30428
- /* @__PURE__ */ jsx56(
30540
+ /* @__PURE__ */ jsx57(
30429
30541
  AgentGUIDetailHeader,
30430
30542
  {
30431
30543
  activeConversation: viewModel.rail.activeConversation,
@@ -30446,8 +30558,8 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30446
30558
  "data-testid": "agent-gui-provider-setup-notice",
30447
30559
  role: "status",
30448
30560
  children: [
30449
- /* @__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 }) }),
30450
- /* @__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(
30451
30563
  "button",
30452
30564
  {
30453
30565
  type: "button",
@@ -30467,7 +30579,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30467
30579
  ]
30468
30580
  }
30469
30581
  ) : null,
30470
- /* @__PURE__ */ jsx56(
30582
+ /* @__PURE__ */ jsx57(
30471
30583
  ScrollArea2,
30472
30584
  {
30473
30585
  scrollbarMode: "native",
@@ -30476,7 +30588,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30476
30588
  viewportTestId: "agent-gui-timeline",
30477
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(),
30478
30590
  viewportContentStyle: AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE,
30479
- children: !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx56(Fragment16, { children: renderProviderUnavailableState?.({
30591
+ children: !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx57(Fragment16, { children: renderProviderUnavailableState?.({
30480
30592
  provider: disabledProviderTarget.provider,
30481
30593
  providerLabel: labels.emptyProviderForProvider?.(
30482
30594
  disabledProviderTarget.provider
@@ -30488,7 +30600,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30488
30600
  disabledProviderTarget.provider
30489
30601
  ),
30490
30602
  unavailableReason: disabledProviderTarget.unavailableReason ?? null
30491
- }) }) : /* @__PURE__ */ jsx56(
30603
+ }) }) : /* @__PURE__ */ jsx57(
30492
30604
  AgentGUIEmptyHomePane,
30493
30605
  {
30494
30606
  provider: emptyHeroProvider,
@@ -30511,7 +30623,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30511
30623
  onSelectSuggestion: handleSelectHomeSuggestion,
30512
30624
  onSelectSuggestionAction: handleHomeSuggestionAction
30513
30625
  }
30514
- ) : /* @__PURE__ */ jsx56(
30626
+ ) : /* @__PURE__ */ jsx57(
30515
30627
  AgentGUIConversationTimelinePane,
30516
30628
  {
30517
30629
  conversation,
@@ -30529,7 +30641,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30529
30641
  )
30530
30642
  }
30531
30643
  ),
30532
- hasActiveConversation ? /* @__PURE__ */ jsx56(
30644
+ hasActiveConversation ? /* @__PURE__ */ jsx57(
30533
30645
  AgentGUIBottomDockPane,
30534
30646
  {
30535
30647
  bottomDockRef,
@@ -30561,13 +30673,12 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30561
30673
  // agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
30562
30674
  import { memo as memo13, useCallback as useCallback46, useEffect as useEffect35, useRef as useRef37, useState as useState32 } from "react";
30563
30675
  import { ConfirmationDialog as ConfirmationDialog2 } from "@tutti-os/ui-system";
30564
- import { jsx as jsx57, jsxs as jsxs42 } from "react/jsx-runtime";
30676
+ import { jsx as jsx58, jsxs as jsxs42 } from "react/jsx-runtime";
30565
30677
  var AgentGUIRenameConversationDialog = memo13(
30566
30678
  function AgentGUIRenameConversationDialog2({
30567
30679
  conversation,
30568
30680
  open,
30569
30681
  labels,
30570
- uiLanguage,
30571
30682
  onOpenChange,
30572
30683
  onRename
30573
30684
  }) {
@@ -30586,8 +30697,8 @@ var AgentGUIRenameConversationDialog = memo13(
30586
30697
  setIsSaving(false);
30587
30698
  return;
30588
30699
  }
30589
- setTitle(conversationPlainTitle(conversation, labels, uiLanguage));
30590
- }, [conversation, labels, open, uiLanguage]);
30700
+ setTitle(conversation.title);
30701
+ }, [conversation, open]);
30591
30702
  useEffect35(() => {
30592
30703
  if (!open) {
30593
30704
  return;
@@ -30618,7 +30729,7 @@ var AgentGUIRenameConversationDialog = memo13(
30618
30729
  setIsSaving(false);
30619
30730
  });
30620
30731
  }, [conversation, onOpenChange, onRename, trimmedTitle]);
30621
- return /* @__PURE__ */ jsx57(
30732
+ return /* @__PURE__ */ jsx58(
30622
30733
  ConfirmationDialog2,
30623
30734
  {
30624
30735
  cancelLabel: labels.cancel,
@@ -30628,7 +30739,7 @@ var AgentGUIRenameConversationDialog = memo13(
30628
30739
  confirmLabel: labels.renameSessionSave,
30629
30740
  description: labels.renameSessionDescription,
30630
30741
  footer: /* @__PURE__ */ jsxs42("div", { className: "flex justify-end gap-2", children: [
30631
- /* @__PURE__ */ jsx57(
30742
+ /* @__PURE__ */ jsx58(
30632
30743
  Button,
30633
30744
  {
30634
30745
  disabled: isSaving,
@@ -30666,7 +30777,7 @@ var AgentGUIRenameConversationDialog = memo13(
30666
30777
  children: labels.cancel
30667
30778
  }
30668
30779
  ),
30669
- /* @__PURE__ */ jsx57(
30780
+ /* @__PURE__ */ jsx58(
30670
30781
  Button,
30671
30782
  {
30672
30783
  className: "shadow-none",
@@ -30721,7 +30832,7 @@ var AgentGUIRenameConversationDialog = memo13(
30721
30832
  title: labels.renameSessionTitle,
30722
30833
  onConfirm: confirmRename,
30723
30834
  onOpenChange,
30724
- children: /* @__PURE__ */ jsx57(
30835
+ children: /* @__PURE__ */ jsx58(
30725
30836
  "input",
30726
30837
  {
30727
30838
  ref: inputRef,
@@ -30743,6 +30854,66 @@ var AgentGUIRenameConversationDialog = memo13(
30743
30854
  }
30744
30855
  );
30745
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
+
30746
30917
  // agent-gui/agentGuiNode/view/useAgentGUIWorkspaceReferencePicker.ts
30747
30918
  import { useCallback as useCallback47, useMemo as useMemo36, useRef as useRef38, useState as useState33 } from "react";
30748
30919
  import { createRichTextMentionHref } from "@tutti-os/ui-rich-text/core";
@@ -31122,9 +31293,10 @@ function useAgentGUINodeEngagement(input) {
31122
31293
  }
31123
31294
 
31124
31295
  // agent-gui/agentGuiNode/AgentGUINodeView.tsx
31125
- import { jsx as jsx58, jsxs as jsxs43 } from "react/jsx-runtime";
31296
+ import { jsx as jsx60, jsxs as jsxs43 } from "react/jsx-runtime";
31126
31297
  function AgentGUINodeView({
31127
31298
  viewModel,
31299
+ referenceProvenanceFilter = null,
31128
31300
  renderSidebarFooter,
31129
31301
  renderProviderRailEmpty,
31130
31302
  renderProviderUnavailableState,
@@ -31560,7 +31732,7 @@ function AgentGUINodeView({
31560
31732
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
31561
31733
  inert: conversationRailCollapsed ? true : void 0,
31562
31734
  children: [
31563
- /* @__PURE__ */ jsx58(
31735
+ /* @__PURE__ */ jsx60(
31564
31736
  AgentGUIProviderRail,
31565
31737
  {
31566
31738
  activeConversation: viewModel.rail.activeConversation,
@@ -31584,7 +31756,7 @@ function AgentGUINodeView({
31584
31756
  onRequestComposerFocus: requestComposerFocus
31585
31757
  }
31586
31758
  ),
31587
- renderSidebarFooter ? /* @__PURE__ */ jsx58(
31759
+ renderSidebarFooter ? /* @__PURE__ */ jsx60(
31588
31760
  "div",
31589
31761
  {
31590
31762
  className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailSidebarFooter} nodrag tsh-desktop-no-drag`,
@@ -31595,12 +31767,12 @@ function AgentGUINodeView({
31595
31767
  })
31596
31768
  }
31597
31769
  ) : null,
31598
- shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx58(
31770
+ shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx60(
31599
31771
  "div",
31600
31772
  {
31601
31773
  className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailConfigFooter} nodrag tsh-desktop-no-drag`,
31602
31774
  "data-testid": "agent-gui-config-footer",
31603
- children: shouldShowProviderRailConfigMenu ? /* @__PURE__ */ jsx58(
31775
+ children: shouldShowProviderRailConfigMenu ? /* @__PURE__ */ jsx60(
31604
31776
  AgentGUIConfigMenu,
31605
31777
  {
31606
31778
  environmentSetupVisible,
@@ -31619,7 +31791,7 @@ function AgentGUINodeView({
31619
31791
  onOpenAgentEnvSetup: openAgentEnvSetup,
31620
31792
  onOpenAgentSettings: openAgentSettings
31621
31793
  }
31622
- ) : /* @__PURE__ */ jsx58(
31794
+ ) : /* @__PURE__ */ jsx60(
31623
31795
  "button",
31624
31796
  {
31625
31797
  type: "button",
@@ -31628,7 +31800,7 @@ function AgentGUINodeView({
31628
31800
  title: labels.agentSettingsMenu,
31629
31801
  disabled: previewMode,
31630
31802
  onClick: openAgentSettings,
31631
- children: /* @__PURE__ */ jsx58(
31803
+ children: /* @__PURE__ */ jsx60(
31632
31804
  SettingsLinedIcon,
31633
31805
  {
31634
31806
  "aria-hidden": "true",
@@ -31643,21 +31815,21 @@ function AgentGUINodeView({
31643
31815
  ]
31644
31816
  }
31645
31817
  ) : null,
31646
- /* @__PURE__ */ jsx58(
31818
+ /* @__PURE__ */ jsx60(
31647
31819
  "aside",
31648
31820
  {
31649
31821
  id: "agent-gui-conversation-rail",
31650
31822
  className: `${AgentGUINode_styles_default.railPanel}${conversationRailCollapsed ? ` ${AgentGUINode_styles_default.railPanelCollapsed}` : ""}`,
31651
31823
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
31652
31824
  inert: conversationRailCollapsed ? true : void 0,
31653
- children: /* @__PURE__ */ jsx58(
31825
+ children: /* @__PURE__ */ jsx60(
31654
31826
  AgentGUIConversationRailController,
31655
31827
  {
31656
31828
  ...conversationRailStoreState,
31657
31829
  conversations: viewModel.rail.conversations,
31658
31830
  userProjects: viewModel.rail.userProjects,
31659
31831
  workspaceId: viewModel.shell.workspaceId,
31660
- footer: accountMenuState?.user ? /* @__PURE__ */ jsx58(
31832
+ footer: accountMenuState?.user ? /* @__PURE__ */ jsx60(
31661
31833
  AgentGUIAccountRailMenu,
31662
31834
  {
31663
31835
  accountMenuState,
@@ -31669,7 +31841,7 @@ function AgentGUINodeView({
31669
31841
  )
31670
31842
  }
31671
31843
  ),
31672
- /* @__PURE__ */ jsx58(
31844
+ /* @__PURE__ */ jsx60(
31673
31845
  "div",
31674
31846
  {
31675
31847
  id: "agent-gui-conversation-rail-resize",
@@ -31693,10 +31865,11 @@ function AgentGUINodeView({
31693
31865
  onPointerUp: endConversationRailResize
31694
31866
  }
31695
31867
  ),
31696
- /* @__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(
31697
31869
  AgentGUIDetailPane,
31698
31870
  {
31699
31871
  viewModel,
31872
+ referenceProvenanceFilter,
31700
31873
  composerEngagement,
31701
31874
  actions,
31702
31875
  labels,
@@ -31730,41 +31903,31 @@ function AgentGUINodeView({
31730
31903
  ]
31731
31904
  }
31732
31905
  ),
31733
- referenceSourceAggregator ? /* @__PURE__ */ jsx58(
31734
- ReferenceSourcePicker,
31906
+ /* @__PURE__ */ jsx60(
31907
+ AgentGUIReferencePickerSurface,
31735
31908
  {
31736
31909
  aggregator: referenceSourceAggregator,
31737
31910
  copy: workspaceFileReferenceCopy ?? fallbackWorkspaceFileReferenceCopy,
31911
+ fileAdapter: workspaceFileReferenceAdapter,
31912
+ fileManagerCopy: workspaceFileManagerCopy,
31913
+ initialPath: viewModel.composer.composerSettings.selectedProjectPath,
31738
31914
  initialTarget: workspaceReferencePickerTarget,
31739
31915
  isNodeSelectable: isWorkspaceReferencePickerNodeSelectable,
31740
- fileManagerCopy: workspaceFileManagerCopy ?? void 0,
31741
31916
  open: workspaceReferencePickerOpen,
31917
+ provenanceFilter: referenceProvenanceFilter,
31742
31918
  resolveEntryIconUrl: resolveWorkspaceReferenceEntryIconUrl,
31743
31919
  workspaceId: viewModel.shell.workspaceId,
31744
31920
  onClose: closeWorkspaceReferencePicker,
31745
31921
  onConfirm: confirmWorkspaceReferencePicker,
31746
31922
  onConfirmBundles: confirmWorkspaceReferenceBundles
31747
31923
  }
31748
- ) : /* @__PURE__ */ jsx58(
31749
- WorkspaceFileReferencePicker,
31750
- {
31751
- copy: workspaceFileReferenceCopy ?? fallbackWorkspaceFileReferenceCopy,
31752
- fileAdapter: workspaceFileReferenceAdapter ?? void 0,
31753
- initialPath: viewModel.composer.composerSettings.selectedProjectPath,
31754
- open: workspaceReferencePickerOpen,
31755
- scoped: true,
31756
- workspaceId: viewModel.shell.workspaceId,
31757
- onClose: closeWorkspaceReferencePicker,
31758
- onConfirm: confirmWorkspaceReferencePicker
31759
- }
31760
31924
  ),
31761
- /* @__PURE__ */ jsx58(
31925
+ /* @__PURE__ */ jsx60(
31762
31926
  AgentGUIRenameConversationDialog,
31763
31927
  {
31764
31928
  conversation: renameConversationTarget,
31765
31929
  open: renameConversationDialogOpen && renameConversationTarget !== null,
31766
31930
  labels,
31767
- uiLanguage,
31768
31931
  onOpenChange: (open) => {
31769
31932
  setRenameConversationDialogOpen(open);
31770
31933
  if (!open) {
@@ -31775,7 +31938,7 @@ function AgentGUINodeView({
31775
31938
  }
31776
31939
  )
31777
31940
  ] });
31778
- return previewMode ? content : /* @__PURE__ */ jsx58(TooltipProvider4, { children: content });
31941
+ return previewMode ? content : /* @__PURE__ */ jsx60(TooltipProvider5, { children: content });
31779
31942
  }
31780
31943
 
31781
31944
  // agent-gui/workspaceDesktop/view/desktopDockAgentProbeTooltipModel.ts
@@ -31956,7 +32119,7 @@ import {
31956
32119
  useState as useState35
31957
32120
  } from "react";
31958
32121
  import { createPortal as createPortal5 } from "react-dom";
31959
- 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";
31960
32123
  var POPOVER_MIN_VIEWPORT_INSET_PX = 16;
31961
32124
  var POPOVER_DEFAULT_WIDTH_PX = 260;
31962
32125
  function dockAgentProbeLineKey(line) {
@@ -31970,7 +32133,7 @@ function renderDockAgentProbeLine(line) {
31970
32133
  line.primary,
31971
32134
  line.secondary ? /* @__PURE__ */ jsxs44(Fragment17, { children: [
31972
32135
  " ",
31973
- /* @__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 })
31974
32137
  ] }) : null
31975
32138
  ] });
31976
32139
  }
@@ -32054,7 +32217,7 @@ function AgentProbeInfoPopover({
32054
32217
  if (lines.length === 0) {
32055
32218
  return null;
32056
32219
  }
32057
- const popover = /* @__PURE__ */ jsx59(
32220
+ const popover = /* @__PURE__ */ jsx61(
32058
32221
  "div",
32059
32222
  {
32060
32223
  ref: popoverRef,
@@ -32063,7 +32226,7 @@ function AgentProbeInfoPopover({
32063
32226
  style: popoverStyle ?? void 0,
32064
32227
  onMouseEnter: openPopover,
32065
32228
  onMouseLeave: closeIfPointerLeavesPopover,
32066
- 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) => {
32067
32230
  const label = getDockAgentProbeLineLabel(line);
32068
32231
  const valueText = formatDockAgentProbeLineText(line);
32069
32232
  return /* @__PURE__ */ jsxs44(
@@ -32072,8 +32235,8 @@ function AgentProbeInfoPopover({
32072
32235
  className: "desktop-dock-popup__agent-info-item",
32073
32236
  "data-has-label": label ? "true" : "false",
32074
32237
  children: [
32075
- label ? /* @__PURE__ */ jsx59("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
32076
- /* @__PURE__ */ jsx59(
32238
+ label ? /* @__PURE__ */ jsx61("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
32239
+ /* @__PURE__ */ jsx61(
32077
32240
  "span",
32078
32241
  {
32079
32242
  className: "desktop-dock-popup__agent-info-value",
@@ -32108,7 +32271,7 @@ function AgentProbeInfoPopover({
32108
32271
  },
32109
32272
  onBlur: () => setIsOpen(false),
32110
32273
  children: [
32111
- /* @__PURE__ */ jsx59(Info3, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
32274
+ /* @__PURE__ */ jsx61(Info3, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
32112
32275
  isOpen ? createPortal5(popover, document.body) : null
32113
32276
  ]
32114
32277
  }
@@ -32319,7 +32482,7 @@ function areAgentGUINodePropsEqual(previous, next) {
32319
32482
  const pc = previous.hostCapabilities, nc = next.hostCapabilities;
32320
32483
  const pa = previous.hostActions, na = next.hostActions;
32321
32484
  const ps = previous.renderSlots, ns = next.renderSlots;
32322
- 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;
32323
32486
  }
32324
32487
 
32325
32488
  // agent-gui/agentGuiNode/AgentGUINode.labels.ts
@@ -32724,6 +32887,9 @@ function useAgentGUIViewLabels(input) {
32724
32887
  loadingConversation: t("agentHost.agentGui.loadingConversation"),
32725
32888
  scrollToBottom: t("agentHost.agentGui.scrollToBottom"),
32726
32889
  fallbackAgentTitle,
32890
+ untitledConversationTitle: t(
32891
+ "agentHost.workspaceAgentsUntitledConversation"
32892
+ ),
32727
32893
  sectionToday: t("agentHost.agentGui.sectionToday"),
32728
32894
  sectionYesterday: t("agentHost.agentGui.sectionYesterday"),
32729
32895
  sectionEarlier: t("agentHost.agentGui.sectionEarlier"),
@@ -33162,7 +33328,7 @@ function resolveAgentGUIRailStatusProvider(input) {
33162
33328
  }
33163
33329
 
33164
33330
  // agent-gui/agentGuiNode/AgentGUINode.tsx
33165
- import { jsx as jsx60, jsxs as jsxs45 } from "react/jsx-runtime";
33331
+ import { jsx as jsx62, jsxs as jsxs45 } from "react/jsx-runtime";
33166
33332
  var EMPTY_SLASH_STATUS_QUOTAS = [];
33167
33333
  var AgentGUINode = memo14(function AgentGUINode2({
33168
33334
  identity,
@@ -33225,8 +33391,25 @@ var AgentGUINode = memo14(function AgentGUINode2({
33225
33391
  managedAgentsState,
33226
33392
  contextMentionProviders,
33227
33393
  workspaceAppIcons,
33228
- disabledHomeSuggestions
33394
+ disabledHomeSuggestions,
33395
+ referenceProvenanceFilterEnabled = false
33229
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;
33230
33413
  const {
33231
33414
  onLinkAction,
33232
33415
  onHandoffConversation,
@@ -33565,7 +33748,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33565
33748
  previewMode,
33566
33749
  railStatusProvider
33567
33750
  ]);
33568
- return /* @__PURE__ */ jsx60(
33751
+ return /* @__PURE__ */ jsx62(
33569
33752
  WorkspaceNodeWindow,
33570
33753
  {
33571
33754
  nodeId,
@@ -33582,7 +33765,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33582
33765
  bodyClassName: `${AgentGUINode_styles_default.shell} nodrag size-full min-h-0 min-w-0 !bg-transparent p-0`,
33583
33766
  hideHeader: embedded,
33584
33767
  titleAccessory: /* @__PURE__ */ jsxs45("span", { className: "inline-flex flex-none items-center gap-1", children: [
33585
- /* @__PURE__ */ jsx60(
33768
+ /* @__PURE__ */ jsx62(
33586
33769
  AgentProbeInfoPopover,
33587
33770
  {
33588
33771
  lines: agentProbeLines,
@@ -33591,7 +33774,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33591
33774
  onOpen: handleAgentProbeInfoOpen
33592
33775
  }
33593
33776
  ),
33594
- /* @__PURE__ */ jsx60(
33777
+ /* @__PURE__ */ jsx62(
33595
33778
  CanvasNodeGhostIconButton,
33596
33779
  {
33597
33780
  "aria-label": isConversationRailCollapsed ? t("agentHost.agentGui.expandConversationRail") : t("agentHost.agentGui.collapseConversationRail"),
@@ -33603,7 +33786,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33603
33786
  event.stopPropagation();
33604
33787
  handleConversationRailToggle();
33605
33788
  },
33606
- children: /* @__PURE__ */ jsx60(
33789
+ children: /* @__PURE__ */ jsx62(
33607
33790
  CanvasNodePanelLinedIcon,
33608
33791
  {
33609
33792
  width: 18,
@@ -33627,7 +33810,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33627
33810
  renderedWidth,
33628
33811
  railAutoCollapseWidthPx
33629
33812
  );
33630
- return /* @__PURE__ */ jsx60(
33813
+ return /* @__PURE__ */ jsx62(
33631
33814
  AgentGUINodeView,
33632
33815
  {
33633
33816
  viewModel,
@@ -33688,7 +33871,8 @@ var AgentGUINode = memo14(function AgentGUINode2({
33688
33871
  resolveWorkspaceReferenceInitialTarget,
33689
33872
  workspaceFileReferenceCopy,
33690
33873
  contextMentionProviders,
33691
- workspaceAppIcons
33874
+ workspaceAppIcons,
33875
+ referenceProvenanceFilter
33692
33876
  }
33693
33877
  );
33694
33878
  }
@@ -33697,7 +33881,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33697
33881
  }, areAgentGUINodePropsEqual);
33698
33882
 
33699
33883
  // AgentGUI.tsx
33700
- import { jsx as jsx61 } from "react/jsx-runtime";
33884
+ import { jsx as jsx63 } from "react/jsx-runtime";
33701
33885
  var AgentGUI = memo15(function AgentGUI2({
33702
33886
  agentActivityRuntime,
33703
33887
  agentHostApi,
@@ -33727,15 +33911,15 @@ var AgentGUI = memo15(function AgentGUI2({
33727
33911
  providerRailEmpty: renderAgentsEmpty
33728
33912
  }
33729
33913
  };
33730
- const content = /* @__PURE__ */ jsx61(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx61(
33914
+ const content = /* @__PURE__ */ jsx63(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx63(
33731
33915
  AgentActivityHostProvider,
33732
33916
  {
33733
33917
  agentActivityRuntime,
33734
33918
  agentHostApi,
33735
- children: /* @__PURE__ */ jsx61(AgentGUINode, { ...nodeProps })
33919
+ children: /* @__PURE__ */ jsx63(AgentGUINode, { ...nodeProps })
33736
33920
  }
33737
33921
  ) });
33738
- 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 });
33739
33923
  });
33740
33924
 
33741
33925
  export {
@@ -33748,4 +33932,4 @@ export {
33748
33932
  resolveAgentGUIAgentTarget,
33749
33933
  AgentGUI
33750
33934
  };
33751
- //# sourceMappingURL=chunk-PLCHNOXL.js.map
33935
+ //# sourceMappingURL=chunk-BQJOYTW2.js.map