@tutti-os/agent-gui 0.0.216 → 0.0.217

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 (70) hide show
  1. package/README.md +6 -0
  2. package/dist/{agentFileMentionContracts-BeBex-Sf.d.ts → AgentMentionSearchContracts-y1_u9cPi.d.ts} +73 -1
  3. package/dist/{AgentRichTextReadonly-IPPNAAWG.js → AgentRichTextReadonly-WZHUIARR.js} +7 -7
  4. package/dist/agent-conversation/index.js +9 -9
  5. package/dist/agent-gui.d.ts +16 -3
  6. package/dist/agent-gui.js +23 -22
  7. package/dist/agent-message-center/index.js +6 -6
  8. package/dist/app/renderer/agentactivity.css +93 -69
  9. package/dist/{chunk-VMPPZO5C.js → chunk-2QF3RBR4.js} +4 -4
  10. package/dist/{chunk-DTP2OMCE.js → chunk-44OCOBJS.js} +9 -11
  11. package/dist/chunk-44OCOBJS.js.map +1 -0
  12. package/dist/chunk-6GX57XB5.js +135 -0
  13. package/dist/chunk-6GX57XB5.js.map +1 -0
  14. package/dist/{chunk-EZRQMJTX.js → chunk-FS7EMOVD.js} +4 -4
  15. package/dist/{chunk-6A6OVD66.js → chunk-G2KRK7Z5.js} +44 -18
  16. package/dist/chunk-G2KRK7Z5.js.map +1 -0
  17. package/dist/{chunk-YY5WM3OE.js → chunk-GDLM6FLK.js} +90 -47
  18. package/dist/chunk-GDLM6FLK.js.map +1 -0
  19. package/dist/{chunk-UERICUWM.js → chunk-GLVENTN6.js} +2 -2
  20. package/dist/{chunk-B4TM2HYJ.js → chunk-JQOQETPN.js} +5 -5
  21. package/dist/{chunk-QFYOJMEQ.js → chunk-M6WEFXPL.js} +2 -2
  22. package/dist/{chunk-AOK22J62.js → chunk-N2M4B3G3.js} +2 -2
  23. package/dist/{chunk-DLN33TPF.js → chunk-NXQGAXIE.js} +8 -8
  24. package/dist/{chunk-MOCBHFJ2.js → chunk-O4QFGCLU.js} +42 -118
  25. package/dist/chunk-O4QFGCLU.js.map +1 -0
  26. package/dist/{chunk-Z5UJC4Q3.js → chunk-PPAV2TB4.js} +3 -3
  27. package/dist/{chunk-4CHBM3G3.js → chunk-SUVMLCED.js} +5 -5
  28. package/dist/{chunk-KJA3HHUJ.js → chunk-TKECUCUW.js} +529 -291
  29. package/dist/chunk-TKECUCUW.js.map +1 -0
  30. package/dist/{chunk-P2RIZAK5.js → chunk-ZXEICU6J.js} +3 -1
  31. package/dist/chunk-ZXEICU6J.js.map +1 -0
  32. package/dist/context-mention-palette/index.d.ts +3 -3
  33. package/dist/context-mention-palette/index.js +12 -12
  34. package/dist/headerLayout-CP4ujEbo.d.ts +14 -0
  35. package/dist/i18n/index.d.ts +2 -0
  36. package/dist/i18n/index.js +2 -2
  37. package/dist/index.d.ts +77 -46
  38. package/dist/index.js +46 -39
  39. package/dist/index.js.map +1 -1
  40. package/dist/layout.d.ts +7 -0
  41. package/dist/layout.js +9 -0
  42. package/dist/layout.js.map +1 -0
  43. package/dist/mention-search.d.ts +6 -73
  44. package/dist/mention-search.js +8 -8
  45. package/dist/workbench/browser-element-context/index.js +2 -2
  46. package/dist/workbench/contribution.js +7 -6
  47. package/dist/workbench/index.d.ts +3 -1
  48. package/dist/workbench/index.js +10 -9
  49. package/dist/workbench/launch.js +2 -2
  50. package/dist/workbench/sessionTitle.js +2 -2
  51. package/dist/workbench/tool-sidebar/index.d.ts +14 -13
  52. package/dist/workbench/tool-sidebar/index.js +66 -55
  53. package/dist/workbench/tool-sidebar/index.js.map +1 -1
  54. package/package.json +23 -16
  55. package/dist/chunk-6A6OVD66.js.map +0 -1
  56. package/dist/chunk-DTP2OMCE.js.map +0 -1
  57. package/dist/chunk-KJA3HHUJ.js.map +0 -1
  58. package/dist/chunk-MOCBHFJ2.js.map +0 -1
  59. package/dist/chunk-P2RIZAK5.js.map +0 -1
  60. package/dist/chunk-YY5WM3OE.js.map +0 -1
  61. /package/dist/{AgentRichTextReadonly-IPPNAAWG.js.map → AgentRichTextReadonly-WZHUIARR.js.map} +0 -0
  62. /package/dist/{chunk-VMPPZO5C.js.map → chunk-2QF3RBR4.js.map} +0 -0
  63. /package/dist/{chunk-EZRQMJTX.js.map → chunk-FS7EMOVD.js.map} +0 -0
  64. /package/dist/{chunk-UERICUWM.js.map → chunk-GLVENTN6.js.map} +0 -0
  65. /package/dist/{chunk-B4TM2HYJ.js.map → chunk-JQOQETPN.js.map} +0 -0
  66. /package/dist/{chunk-QFYOJMEQ.js.map → chunk-M6WEFXPL.js.map} +0 -0
  67. /package/dist/{chunk-AOK22J62.js.map → chunk-N2M4B3G3.js.map} +0 -0
  68. /package/dist/{chunk-DLN33TPF.js.map → chunk-NXQGAXIE.js.map} +0 -0
  69. /package/dist/{chunk-Z5UJC4Q3.js.map → chunk-PPAV2TB4.js.map} +0 -0
  70. /package/dist/{chunk-4CHBM3G3.js.map → chunk-SUVMLCED.js.map} +0 -0
@@ -5,17 +5,9 @@ import {
5
5
  createWorkspaceQueryCache
6
6
  } from "./chunk-A4WCTHWS.js";
7
7
  import {
8
- AGENT_GUI_COLLAPSED_MIN_WIDTH_PX,
9
- AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,
10
- AGENT_GUI_DETAIL_MIN_WIDTH_PX,
11
8
  AGENT_GUI_WORKBENCH_OPEN_EXTERNAL_IMPORT_EVENT,
12
- clampAgentGUIConversationRailWidthPx,
13
- resolveAgentGUIConversationRailMaxWidthPx,
14
- resolveAgentGUIExpandedWindowFrame,
15
- resolveAgentGuiSessionProviderFlatIconUrl,
16
- resolveNextAgentGUIConversationRailWidthPx,
17
- shouldAutoCollapseAgentGUIConversationRail
18
- } from "./chunk-MOCBHFJ2.js";
9
+ resolveAgentGuiSessionProviderFlatIconUrl
10
+ } from "./chunk-O4QFGCLU.js";
19
11
  import {
20
12
  AGENT_PROVIDERS,
21
13
  AGENT_PROVIDER_LABEL,
@@ -31,10 +23,25 @@ import {
31
23
  resolveAgentGUIFirstUserMessageDisplayPrompt,
32
24
  resolveAgentGUIProviderDisplayLabel,
33
25
  resolveAgentGUIProviderIdentity
34
- } from "./chunk-VMPPZO5C.js";
26
+ } from "./chunk-2QF3RBR4.js";
35
27
  import {
36
28
  resolveAgentGuiWorkbenchProviderLabel
37
29
  } from "./chunk-MGSRWYRN.js";
30
+ import {
31
+ AgentInteractivePromptSurface,
32
+ PLAN_IMPLEMENTATION_ACTION_FEEDBACK,
33
+ PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
34
+ PLAN_IMPLEMENTATION_ACTION_SKIP,
35
+ approvalOptionDisplayLabel,
36
+ dispatchAgentPlanPromptAction,
37
+ latestPlanTurnId,
38
+ normalizePlanIssueBudgetPreset,
39
+ planImplementationPromptFromPlanTurn,
40
+ planIssueBudgetPresetsEqual
41
+ } from "./chunk-FS7EMOVD.js";
42
+ import {
43
+ useEngineSelector
44
+ } from "./chunk-EVQ4JY3N.js";
38
45
  import {
39
46
  AgentConversationFlow,
40
47
  AgentVisibleErrorPresentationProvider,
@@ -70,7 +77,7 @@ import {
70
77
  toLocalShortDateTime,
71
78
  updateAgentComposerDraft,
72
79
  useProjectedAgentConversation
73
- } from "./chunk-YY5WM3OE.js";
80
+ } from "./chunk-GDLM6FLK.js";
74
81
  import {
75
82
  agentRichTextContentToPromptText,
76
83
  createAgentRichTextInputExtensions,
@@ -80,7 +87,20 @@ import {
80
87
  plainTextToAgentRichTextInlineContent,
81
88
  skillDescriptionForDisplay,
82
89
  skillTriggerForPrefix
83
- } from "./chunk-DLN33TPF.js";
90
+ } from "./chunk-NXQGAXIE.js";
91
+ import {
92
+ AgentMessageMarkdown,
93
+ ZoomableImage,
94
+ blobToBase64,
95
+ normalizeAgentApprovalPurpose,
96
+ resolveWorkspaceLinkAction
97
+ } from "./chunk-PPAV2TB4.js";
98
+ import {
99
+ AgentTargetPresentationProvider,
100
+ cn,
101
+ resolveAgentTargetPresentation,
102
+ useAgentTargetPresentations
103
+ } from "./chunk-LQMIEH4C.js";
84
104
  import {
85
105
  AgentEnvPanelActionProvider
86
106
  } from "./chunk-N4HLBSMJ.js";
@@ -95,18 +115,31 @@ import {
95
115
  AgentFileMentionPalette,
96
116
  agentMentionItemKey,
97
117
  isAgentMentionItemDisabled
98
- } from "./chunk-DTP2OMCE.js";
118
+ } from "./chunk-44OCOBJS.js";
99
119
  import {
100
120
  normalizeAgentGUIAgents,
101
121
  projectAgentGUIAgentsToTargets
102
122
  } from "./chunk-3MVSOLX3.js";
123
+ import {
124
+ AGENT_GUI_COLLAPSED_MIN_WIDTH_PX,
125
+ AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,
126
+ AGENT_GUI_DETAIL_MIN_WIDTH_PX,
127
+ clampAgentGUIConversationRailWidthPx,
128
+ resolveAgentGUIConversationRailMaxWidthPx,
129
+ resolveAgentGUIConversationRailPresentation,
130
+ resolveAgentGUIExpandedWindowFrame,
131
+ resolveNextAgentGUIConversationRailWidthPx
132
+ } from "./chunk-6GX57XB5.js";
103
133
  import {
104
134
  AGENT_MENTION_FILTER_TAB_ORDER,
105
135
  AgentMentionSearchController,
106
136
  DEFAULT_AGENT_MENTION_FILTER,
107
137
  agentGuiScheduler,
108
138
  buildWorkspaceAgentActivityListViewModel
109
- } from "./chunk-6A6OVD66.js";
139
+ } from "./chunk-G2KRK7Z5.js";
140
+ import {
141
+ resolveWorkspaceAgentSessionSortTimeUnixMs
142
+ } from "./chunk-YMXYBG7U.js";
110
143
  import {
111
144
  AGENT_RICH_TEXT_CARET_ANCHOR,
112
145
  agentComposerFileMentionReferences,
@@ -123,38 +156,7 @@ import {
123
156
  parseMentionItemFromHref,
124
157
  remainingAgentComposerPromptAssetSlots,
125
158
  updateAgentComposerFileMentions
126
- } from "./chunk-B4TM2HYJ.js";
127
- import {
128
- AgentInteractivePromptSurface,
129
- PLAN_IMPLEMENTATION_ACTION_FEEDBACK,
130
- PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
131
- PLAN_IMPLEMENTATION_ACTION_SKIP,
132
- approvalOptionDisplayLabel,
133
- dispatchAgentPlanPromptAction,
134
- latestPlanTurnId,
135
- normalizePlanIssueBudgetPreset,
136
- planImplementationPromptFromPlanTurn,
137
- planIssueBudgetPresetsEqual
138
- } from "./chunk-EZRQMJTX.js";
139
- import {
140
- useEngineSelector
141
- } from "./chunk-EVQ4JY3N.js";
142
- import {
143
- AgentMessageMarkdown,
144
- ZoomableImage,
145
- blobToBase64,
146
- normalizeAgentApprovalPurpose,
147
- resolveWorkspaceLinkAction
148
- } from "./chunk-Z5UJC4Q3.js";
149
- import {
150
- AgentTargetPresentationProvider,
151
- cn,
152
- resolveAgentTargetPresentation,
153
- useAgentTargetPresentations
154
- } from "./chunk-LQMIEH4C.js";
155
- import {
156
- resolveWorkspaceAgentSessionSortTimeUnixMs
157
- } from "./chunk-YMXYBG7U.js";
159
+ } from "./chunk-JQOQETPN.js";
158
160
  import {
159
161
  AgentActivityHostProvider,
160
162
  getOptionalAgentHostApi,
@@ -163,7 +165,7 @@ import {
163
165
  useAgentHostApi,
164
166
  useOptionalAgentActivityRuntime,
165
167
  useOptionalAgentHostApi
166
- } from "./chunk-QFYOJMEQ.js";
168
+ } from "./chunk-M6WEFXPL.js";
167
169
  import {
168
170
  MANAGED_AGENT_ICON_FALLBACK_URL,
169
171
  MANAGED_AGENT_ICON_URLS,
@@ -173,7 +175,7 @@ import {
173
175
  AgentGuiI18nProvider,
174
176
  translate,
175
177
  useTranslation
176
- } from "./chunk-UERICUWM.js";
178
+ } from "./chunk-GLVENTN6.js";
177
179
  import {
178
180
  isBetaAgentProvider,
179
181
  normalizeManagedAgentProvider
@@ -183,20 +185,20 @@ import {
183
185
  resolveProviderIconAsset
184
186
  } from "./chunk-QNE2ZPPV.js";
185
187
  import {
188
+ agentGUIProviderIdentityDisplayName,
186
189
  migratedAgentGUIProviderIdentityCatalog,
187
190
  resolveAgentGUIProviderCatalogIdentity,
188
191
  resolveMigratedAgentGUIProviderIdentity
189
192
  } from "./chunk-O433KXLK.js";
190
193
 
191
194
  // AgentGUI.tsx
192
- import { memo as memo15, useMemo as useMemo51 } from "react";
195
+ import { memo as memo15, useMemo as useMemo52 } from "react";
193
196
  import { TooltipProvider as TooltipProvider8 } from "@tutti-os/ui-system";
194
197
 
195
198
  // agent-gui/agentGuiNode/AgentGUINode.tsx
196
- import { memo as memo14, useCallback as useCallback68, useMemo as useMemo50, useRef as useRef61 } from "react";
199
+ import { memo as memo14, useCallback as useCallback68, useMemo as useMemo51, useRef as useRef61 } from "react";
197
200
  import { createWorkspaceUserProjectI18nRuntime } from "@tutti-os/workspace-user-project/i18n";
198
201
  import { createWorkspaceFileManagerI18nRuntime } from "@tutti-os/workspace-file-manager";
199
- import { useReferenceProvenanceFilterCatalog } from "@tutti-os/workspace-file-reference/react";
200
202
 
201
203
  // utils/workspaceNodeSizing.ts
202
204
  var MIN_SIZE_BY_KIND = {
@@ -7743,6 +7745,53 @@ function useAgentGUIControllerRefs(input) {
7743
7745
  import { selectEngineSession as selectEngineSession4 } from "@tutti-os/agent-activity-core";
7744
7746
  import { useCallback as useCallback20 } from "react";
7745
7747
 
7748
+ // agent-gui/agentGuiNode/controller/agentGuiNewConversationRequest.ts
7749
+ function requestAgentGUINewConversation(input) {
7750
+ if (input.options && "projectPath" in input.options) {
7751
+ input.createConversation(input.options);
7752
+ return true;
7753
+ }
7754
+ const selection = resolveAgentGUINewConversationProjectSelection({
7755
+ activeConversationId: input.activeConversationId,
7756
+ conversations: input.conversations,
7757
+ transientConversation: input.transientConversation
7758
+ });
7759
+ if (selection.kind === "unresolved") {
7760
+ return false;
7761
+ }
7762
+ if (selection.kind === "preserve_home") {
7763
+ input.createConversation(input.options ?? {});
7764
+ return true;
7765
+ }
7766
+ input.createConversation({
7767
+ ...input.options,
7768
+ projectPath: selection.projectPath
7769
+ });
7770
+ return true;
7771
+ }
7772
+ function resolveAgentGUINewConversationProjectSelection(input) {
7773
+ if (input.activeConversationId === null) {
7774
+ return { kind: "preserve_home" };
7775
+ }
7776
+ const activeConversation = resolveConversationSummaryById(
7777
+ input.conversations,
7778
+ input.activeConversationId,
7779
+ input.transientConversation
7780
+ );
7781
+ if (!activeConversation) {
7782
+ return { kind: "unresolved" };
7783
+ }
7784
+ const sectionKey = activeConversation.railSectionKey?.trim() ?? "";
7785
+ if (sectionKey === "conversations") {
7786
+ return { kind: "replace", projectPath: null };
7787
+ }
7788
+ const projectPath = activeConversation.cwd.trim();
7789
+ if (!sectionKey || !projectPath) {
7790
+ return { kind: "unresolved" };
7791
+ }
7792
+ return { kind: "replace", projectPath };
7793
+ }
7794
+
7746
7795
  // agent-gui/agentGuiNode/controller/useAgentGUIComposerSettingsActions.ts
7747
7796
  import {
7748
7797
  selectEngineSession as selectEngineSession2,
@@ -10475,7 +10524,7 @@ function useAgentGUIOperationActions(input) {
10475
10524
  ...input,
10476
10525
  getCachedComposerOptions: () => input.providerComposerOptions
10477
10526
  });
10478
- const { createConversation } = useAgentGUIConversationHome({
10527
+ const { createConversation: enterConversationHome } = useAgentGUIConversationHome({
10479
10528
  ...input,
10480
10529
  submitPrefillPrompt: (prompt) => {
10481
10530
  queueMicrotask(() => {
@@ -10483,9 +10532,32 @@ function useAgentGUIOperationActions(input) {
10483
10532
  });
10484
10533
  }
10485
10534
  });
10535
+ const createConversation = useCallback20(
10536
+ (options) => {
10537
+ if (requestAgentGUINewConversation({
10538
+ activeConversationId: input.activeConversationIdRef.current,
10539
+ conversations: input.conversationsRef.current,
10540
+ createConversation: enterConversationHome,
10541
+ options,
10542
+ transientConversation: input.transientConversation
10543
+ })) {
10544
+ return;
10545
+ }
10546
+ input.setDetailError(
10547
+ translate("agentHost.agentGui.sessionActivationFailed")
10548
+ );
10549
+ },
10550
+ [
10551
+ enterConversationHome,
10552
+ input.activeConversationIdRef,
10553
+ input.conversationsRef,
10554
+ input.setDetailError,
10555
+ input.transientConversation
10556
+ ]
10557
+ );
10486
10558
  const continueInNewConversation = useAgentGUIContinueConversation({
10487
10559
  ...input,
10488
- createConversation
10560
+ createConversation: enterConversationHome
10489
10561
  });
10490
10562
  const isSessionMarkedNonResumable = useCallback20(
10491
10563
  (agentSessionId) => {
@@ -15231,6 +15303,7 @@ function conversationPlainTitle(conversation, labels, uiLanguage) {
15231
15303
  import { useState as useState9 } from "react";
15232
15304
  import { Gauge, Wrench } from "lucide-react";
15233
15305
  import { Popover, PopoverContent, PopoverTrigger } from "@tutti-os/ui-system";
15306
+ import { MoreHorizontalIcon } from "@tutti-os/ui-system/icons";
15234
15307
 
15235
15308
  // agent-gui/agentGuiNode/AgentProbeUsageFreshness.tsx
15236
15309
  import { RefreshCw } from "lucide-react";
@@ -15416,6 +15489,8 @@ function AgentGUIConfigMenu({
15416
15489
  const providerFlatIconUrl = resolveAgentGuiSessionProviderFlatIconUrl(
15417
15490
  provider ?? void 0
15418
15491
  );
15492
+ const providerDisplayTitle = provider?.trim() ? labels.slashStatusProviderAccount(provider.trim()) : null;
15493
+ const accountTitle = providerDisplayTitle ?? labels.slashStatusAccount;
15419
15494
  return /* @__PURE__ */ jsxs7(
15420
15495
  Popover,
15421
15496
  {
@@ -15436,7 +15511,7 @@ function AgentGUIConfigMenu({
15436
15511
  "aria-label": labels.agentConfig,
15437
15512
  className: `${AgentGUINode_styles_default.providerRailConfigButton} nodrag tsh-desktop-no-drag`,
15438
15513
  title: labels.agentConfig,
15439
- children: /* @__PURE__ */ jsx14(SettingsLinedIcon, { "aria-hidden": "true", width: 18, height: 18 })
15514
+ children: /* @__PURE__ */ jsx14(MoreHorizontalIcon, { "aria-hidden": "true", width: 18, height: 18 })
15440
15515
  }
15441
15516
  ) }),
15442
15517
  /* @__PURE__ */ jsx14(
@@ -15461,7 +15536,7 @@ function AgentGUIConfigMenu({
15461
15536
  }
15462
15537
  }
15463
15538
  ) : null,
15464
- /* @__PURE__ */ jsx14("span", { className: "text-[13px] font-semibold leading-4", children: labels.slashStatusAccount })
15539
+ /* @__PURE__ */ jsx14("span", { className: "text-[13px] font-semibold leading-4", children: accountTitle })
15465
15540
  ] }),
15466
15541
  /* @__PURE__ */ jsx14("span", { className: "text-[13px] leading-5 text-[var(--text-secondary)]", children: providerAuthAccountLabel })
15467
15542
  ] }),
@@ -22672,14 +22747,20 @@ function ComposerMenuOptionItems({
22672
22747
  "ml-1 inline-flex size-5 shrink-0 items-center justify-center rounded-[4px] text-[var(--agent-gui-text-tertiary)] transition-opacity hover:text-[var(--text-secondary)]",
22673
22748
  isFavorite ? "text-[var(--tutti-purple)] opacity-100 hover:text-[var(--tutti-purple)]" : "opacity-0 group-hover/composer-option:opacity-100 group-data-[highlighted]/composer-option:opacity-100"
22674
22749
  ),
22675
- onPointerDown: (event) => {
22676
- event.preventDefault();
22677
- event.stopPropagation();
22750
+ onPointerUp: (event) => {
22751
+ const shouldToggle = event.button === 0 && !event.ctrlKey;
22752
+ if (shouldToggle) {
22753
+ event.stopPropagation();
22754
+ onToggleFavorite(option.value);
22755
+ }
22678
22756
  },
22679
22757
  onClick: (event) => {
22680
22758
  event.preventDefault();
22681
22759
  event.stopPropagation();
22682
- onToggleFavorite(option.value);
22760
+ const isKeyboardActivation = event.detail === 0;
22761
+ if (isKeyboardActivation) {
22762
+ onToggleFavorite(option.value);
22763
+ }
22683
22764
  },
22684
22765
  children: /* @__PURE__ */ jsx25(
22685
22766
  Star,
@@ -22703,6 +22784,11 @@ function ComposerMenuOptionItems({
22703
22784
  ),
22704
22785
  "data-agent-model-option": showModelTooltip ? "true" : void 0,
22705
22786
  onPointerDown: (event) => {
22787
+ if (event.target instanceof Element && event.target.closest(
22788
+ '[data-agent-model-favorite-toggle="true"]'
22789
+ )) {
22790
+ return;
22791
+ }
22706
22792
  if (event.button === 0 && !event.ctrlKey) {
22707
22793
  event.preventDefault();
22708
22794
  onSelect(option.value);
@@ -25814,7 +25900,7 @@ function ComposerTuttiModeChip({
25814
25900
  className: cn(
25815
25901
  AgentGUINode_styles_default.composerMenuTrigger,
25816
25902
  "group w-auto !gap-1.5",
25817
- updating ? "cursor-wait opacity-70" : "cursor-pointer"
25903
+ updating ? "cursor-wait" : "cursor-pointer"
25818
25904
  ),
25819
25905
  children: [
25820
25906
  /* @__PURE__ */ jsx37(
@@ -27222,7 +27308,7 @@ function AgentComposerView(input) {
27222
27308
  onEditQueuedPrompt,
27223
27309
  onPromptImagesUnsupported,
27224
27310
  onRequestWorkspaceReferences,
27225
- referenceProvenanceFilter,
27311
+ referenceProvenanceFilters,
27226
27312
  selectProjectDirectory,
27227
27313
  onProjectPathChange = () => {
27228
27314
  },
@@ -27558,10 +27644,10 @@ function AgentComposerView(input) {
27558
27644
  onNavigateHierarchy: navigateFileMentionHierarchy,
27559
27645
  onNavigateIntoItem: navigateIntoFileMentionItem,
27560
27646
  onOpenReferences: onRequestWorkspaceReferences ? handleOpenReferencesForEntity : void 0,
27561
- provenanceFilterControl: referenceProvenanceFilter ? /* @__PURE__ */ jsx43(
27647
+ provenanceFilterControl: referenceProvenanceFilters ? /* @__PURE__ */ jsx43(
27562
27648
  AgentReferenceProvenanceFilterControl,
27563
27649
  {
27564
- filter: referenceProvenanceFilter
27650
+ filter: referenceProvenanceFilters.byFilter[input.mentionSearchState.filter]
27565
27651
  }
27566
27652
  ) : void 0
27567
27653
  }
@@ -27787,7 +27873,7 @@ function AgentComposerView(input) {
27787
27873
  import { useEffect as useEffect26, useMemo as useMemo33, useRef as useRef39, useState as useState25 } from "react";
27788
27874
  import { useRichTextMentionService } from "@tutti-os/ui-rich-text/editor";
27789
27875
  var EMPTY_AGENT_CONTEXT_MENTION_PROVIDERS = [];
27790
- function useAgentMentionSearchController(referenceProvenanceFilter) {
27876
+ function useAgentMentionSearchController(referenceProvenanceFilters) {
27791
27877
  const mentionService = useRichTextMentionService();
27792
27878
  const contextMentionProviders = useMemo33(
27793
27879
  () => mentionService?.listProviders().filter(isAgentContextMentionProvider) ?? EMPTY_AGENT_CONTEXT_MENTION_PROVIDERS,
@@ -27797,16 +27883,24 @@ function useAgentMentionSearchController(referenceProvenanceFilter) {
27797
27883
  const mentionControllerRef = useRef39(
27798
27884
  null
27799
27885
  );
27886
+ const sessionProvenanceFilter = referenceProvenanceFilters?.byFilter.session.snapshot.value ?? null;
27887
+ const fileProvenanceFilter = referenceProvenanceFilters?.byFilter.file.snapshot.value ?? null;
27888
+ const issueProvenanceFilter = referenceProvenanceFilters?.byFilter.issue.snapshot.value ?? null;
27889
+ const agentProvenanceFilter = referenceProvenanceFilters?.byFilter.agent.snapshot.value ?? null;
27890
+ const appProvenanceFilter = referenceProvenanceFilters?.byFilter.app.snapshot.value ?? null;
27891
+ const provenanceCatalog = referenceProvenanceFilters?.byFilter.session.snapshot.catalog ?? null;
27800
27892
  useEffect26(() => {
27801
27893
  const controller = new AgentMentionSearchController({
27802
27894
  contextMentionProviders
27803
27895
  });
27804
- controller.setProvenanceCatalog(
27805
- referenceProvenanceFilter?.snapshot.catalog ?? null
27806
- );
27807
- controller.setProvenanceFilter(
27808
- referenceProvenanceFilter?.snapshot.value ?? null
27809
- );
27896
+ controller.setProvenanceCatalog(provenanceCatalog);
27897
+ controller.setProvenanceFilters({
27898
+ session: sessionProvenanceFilter,
27899
+ file: fileProvenanceFilter,
27900
+ issue: issueProvenanceFilter,
27901
+ agent: agentProvenanceFilter,
27902
+ app: appProvenanceFilter
27903
+ });
27810
27904
  mentionControllerRef.current = controller;
27811
27905
  const unsubscribe = controller.subscribe(setMentionSearchState);
27812
27906
  return () => {
@@ -27816,15 +27910,21 @@ function useAgentMentionSearchController(referenceProvenanceFilter) {
27816
27910
  };
27817
27911
  }, [contextMentionProviders]);
27818
27912
  useEffect26(() => {
27819
- mentionControllerRef.current?.setProvenanceCatalog(
27820
- referenceProvenanceFilter?.snapshot.catalog ?? null
27821
- );
27822
- mentionControllerRef.current?.setProvenanceFilter(
27823
- referenceProvenanceFilter?.snapshot.value ?? null
27824
- );
27913
+ mentionControllerRef.current?.setProvenanceCatalog(provenanceCatalog);
27914
+ mentionControllerRef.current?.setProvenanceFilters({
27915
+ session: sessionProvenanceFilter,
27916
+ file: fileProvenanceFilter,
27917
+ issue: issueProvenanceFilter,
27918
+ agent: agentProvenanceFilter,
27919
+ app: appProvenanceFilter
27920
+ });
27825
27921
  }, [
27826
- referenceProvenanceFilter?.snapshot.catalog,
27827
- referenceProvenanceFilter?.snapshot.value
27922
+ provenanceCatalog,
27923
+ sessionProvenanceFilter,
27924
+ fileProvenanceFilter,
27925
+ issueProvenanceFilter,
27926
+ agentProvenanceFilter,
27927
+ appProvenanceFilter
27828
27928
  ]);
27829
27929
  return { mentionControllerRef, mentionSearchState };
27830
27930
  }
@@ -28334,7 +28434,7 @@ function AgentComposer(props) {
28334
28434
  prepareExternalPromptFiles = null,
28335
28435
  promptAssetLimit = null,
28336
28436
  onRequestGitBranches = null,
28337
- referenceProvenanceFilter = null
28437
+ referenceProvenanceFilters = null
28338
28438
  } = props;
28339
28439
  const draftPrompt = agentComposerDraftPrompt(draftContent);
28340
28440
  const goalDraftObjective = canGoalControl ? goalDraftObjectiveFromPrompt(draftPrompt) : null;
@@ -28415,7 +28515,7 @@ function AgentComposer(props) {
28415
28515
  });
28416
28516
  draftByScopeKeyRef.current[draftScopeKey] = draftContent;
28417
28517
  const promptTipRef = useRef42(null);
28418
- const { mentionControllerRef, mentionSearchState } = useAgentMentionSearchController(referenceProvenanceFilter);
28518
+ const { mentionControllerRef, mentionSearchState } = useAgentMentionSearchController(referenceProvenanceFilters);
28419
28519
  const editorHandleRef = useRef42(null);
28420
28520
  const wasActiveRef = useRef42(isActive);
28421
28521
  const lastComposerFocusRequestRef = useRef42(null);
@@ -33290,7 +33390,7 @@ import {
33290
33390
  CreateChatIcon,
33291
33391
  FolderIcon,
33292
33392
  FolderOpenLinedIcon,
33293
- MoreHorizontalIcon
33393
+ MoreHorizontalIcon as MoreHorizontalIcon2
33294
33394
  } from "@tutti-os/ui-system/icons";
33295
33395
 
33296
33396
  // agent-gui/agentGuiNode/view/agentGUIConversationRailSectionPresentationContext.tsx
@@ -33464,7 +33564,7 @@ var ProjectMenuButton = forwardRef5(
33464
33564
  size: "sm",
33465
33565
  title: "",
33466
33566
  disabled: projectActionLocked || disabled,
33467
- children: /* @__PURE__ */ jsx62(MoreHorizontalIcon, { "aria-hidden": "true" })
33567
+ children: /* @__PURE__ */ jsx62(MoreHorizontalIcon2, { "aria-hidden": "true" })
33468
33568
  }
33469
33569
  );
33470
33570
  }
@@ -33585,7 +33685,7 @@ function ConversationMenuTrigger({
33585
33685
  "aria-label": accessibleName,
33586
33686
  size: "sm",
33587
33687
  title: "",
33588
- children: /* @__PURE__ */ jsx62(MoreHorizontalIcon, { "aria-hidden": "true" })
33688
+ children: /* @__PURE__ */ jsx62(MoreHorizontalIcon2, { "aria-hidden": "true" })
33589
33689
  }
33590
33690
  ) }) }) }),
33591
33691
  /* @__PURE__ */ jsx62(
@@ -38132,8 +38232,94 @@ function projectTuttiIntensityPreview(intensity) {
38132
38232
  };
38133
38233
  }
38134
38234
 
38235
+ // agent-gui/agentGuiNode/composer/TuttiIntensityStarStream.tsx
38236
+ import { jsx as jsx73 } from "react/jsx-runtime";
38237
+ var STAR_POOL_SIZE = 14;
38238
+ function buildStarSpecs() {
38239
+ let seed = 49734321;
38240
+ const next = () => {
38241
+ seed |= 0;
38242
+ seed = seed + 1831565813 | 0;
38243
+ let t = Math.imul(seed ^ seed >>> 15, 1 | seed);
38244
+ t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t;
38245
+ return ((t ^ t >>> 14) >>> 0) / 4294967296;
38246
+ };
38247
+ return Array.from({ length: STAR_POOL_SIZE }, (_, index) => ({
38248
+ size: 6 + Math.round(next() * 5),
38249
+ topOffset: Math.round((next() - 0.5) * 12),
38250
+ // Spread spawn phases evenly across the pool, then add jitter.
38251
+ delayRatio: (index + next() * 0.8) / STAR_POOL_SIZE,
38252
+ durationJitter: 0.8 + next() * 0.45,
38253
+ drift: Math.round((next() - 0.5) * 6)
38254
+ }));
38255
+ }
38256
+ var STAR_SPECS = buildStarSpecs();
38257
+ function activeStarCount(intensity) {
38258
+ if (intensity <= 0) {
38259
+ return 0;
38260
+ }
38261
+ return Math.min(
38262
+ STAR_POOL_SIZE,
38263
+ Math.max(1, Math.round(1 + intensity / 100 * (STAR_POOL_SIZE - 1)))
38264
+ );
38265
+ }
38266
+ function baseDurationSeconds(intensity) {
38267
+ const quantized = Math.round(intensity / 10) * 10;
38268
+ return 2.8 - quantized / 100 * 1.6;
38269
+ }
38270
+ function TuttiIntensityStarStream({
38271
+ intensity,
38272
+ tier
38273
+ }) {
38274
+ const activeCount = activeStarCount(intensity);
38275
+ const baseDuration = baseDurationSeconds(intensity);
38276
+ return /* @__PURE__ */ jsx73(
38277
+ "div",
38278
+ {
38279
+ "aria-hidden": "true",
38280
+ className: "agent-gui-intensity-star-stream",
38281
+ "data-agent-tutti-budget-star-stream": tier,
38282
+ style: {
38283
+ // The overlay matches the slider track box; the stream fills from
38284
+ // the track start up to just before the handle's left edge.
38285
+ "--agent-gui-star-stream-width": `calc(${intensity}% - 24px)`,
38286
+ // Stars and their glow are always white, regardless of tier.
38287
+ color: "var(--white-stationary)"
38288
+ },
38289
+ children: STAR_SPECS.map((spec, index) => {
38290
+ const duration = baseDuration * spec.durationJitter;
38291
+ return /* @__PURE__ */ jsx73(
38292
+ "svg",
38293
+ {
38294
+ className: "agent-gui-intensity-star-stream__star",
38295
+ style: {
38296
+ width: spec.size,
38297
+ height: spec.size,
38298
+ top: `calc(50% - ${spec.size / 2}px + ${spec.topOffset}px)`,
38299
+ visibility: index < activeCount ? "visible" : "hidden",
38300
+ "--agent-gui-star-duration": `${duration}s`,
38301
+ "--agent-gui-star-delay": `${-duration * spec.delayRatio}s`,
38302
+ "--agent-gui-star-drift": `${spec.drift}px`
38303
+ },
38304
+ viewBox: "0 0 24 24",
38305
+ fill: "none",
38306
+ children: /* @__PURE__ */ jsx73(
38307
+ "path",
38308
+ {
38309
+ d: "M11.2696 1.50911C11.5206 0.830794 12.4805 0.830794 12.7315 1.50911L13.876 4.60189C14.8231 7.16058 16.8406 9.17847 19.3994 10.1253L22.4922 11.2699C23.1693 11.5213 23.1695 12.4795 22.4922 12.7308L19.3994 13.8753C16.8403 14.8223 14.823 16.8406 13.876 19.3997L12.7315 22.4915C12.4804 23.1694 11.5209 23.1692 11.2696 22.4915L10.126 19.3997C9.17911 16.8408 7.16046 14.8224 4.60159 13.8753L1.50882 12.7308C0.831157 12.4796 0.831096 11.521 1.50882 11.2699L4.60159 10.1253C7.1605 9.17836 9.17903 7.16078 10.126 4.60189L11.2696 1.50911Z",
38310
+ fill: "currentColor"
38311
+ }
38312
+ )
38313
+ },
38314
+ index
38315
+ );
38316
+ })
38317
+ }
38318
+ );
38319
+ }
38320
+
38135
38321
  // agent-gui/agentGuiNode/composer/TuttiBudgetPopover.tsx
38136
- import { jsx as jsx73, jsxs as jsxs52 } from "react/jsx-runtime";
38322
+ import { jsx as jsx74, jsxs as jsxs52 } from "react/jsx-runtime";
38137
38323
  var tierTone = {
38138
38324
  cost: {
38139
38325
  sliderHandleUrl: tutti_intensity_handle_cost_default,
@@ -38179,7 +38365,7 @@ function TuttiBudgetPopover({
38179
38365
  setOpen(nextOpen);
38180
38366
  },
38181
38367
  children: [
38182
- /* @__PURE__ */ jsx73(PopoverTrigger3, { asChild: true, children }),
38368
+ /* @__PURE__ */ jsx74(PopoverTrigger3, { asChild: true, children }),
38183
38369
  /* @__PURE__ */ jsxs52(
38184
38370
  PopoverContent4,
38185
38371
  {
@@ -38191,7 +38377,7 @@ function TuttiBudgetPopover({
38191
38377
  setOpen(false);
38192
38378
  },
38193
38379
  children: [
38194
- /* @__PURE__ */ jsx73("div", { className: "text-[13px] font-semibold text-[var(--text-primary)]", children: labels.title }),
38380
+ /* @__PURE__ */ jsx74("div", { className: "text-[13px] font-semibold text-[var(--text-primary)]", children: labels.title }),
38195
38381
  /* @__PURE__ */ jsxs52(
38196
38382
  "div",
38197
38383
  {
@@ -38199,8 +38385,8 @@ function TuttiBudgetPopover({
38199
38385
  "data-agent-tutti-budget-preview": preview.tier,
38200
38386
  children: [
38201
38387
  /* @__PURE__ */ jsxs52("div", { className: "flex items-center justify-between gap-2 text-[12px] text-[var(--text-secondary)]", children: [
38202
- /* @__PURE__ */ jsx73("span", { children: labels.intensityLabel }),
38203
- /* @__PURE__ */ jsx73(
38388
+ /* @__PURE__ */ jsx74("span", { children: labels.intensityLabel }),
38389
+ /* @__PURE__ */ jsx74(
38204
38390
  "span",
38205
38391
  {
38206
38392
  className: "text-[var(--text-primary)] tabular-nums",
@@ -38210,45 +38396,54 @@ function TuttiBudgetPopover({
38210
38396
  )
38211
38397
  ] }),
38212
38398
  /* @__PURE__ */ jsxs52("div", { className: "mt-3", children: [
38213
- /* @__PURE__ */ jsx73(
38214
- Slider,
38215
- {
38216
- "aria-label": labels.intensityLabel,
38217
- className: `-mx-1 w-[calc(100%_+_8px)] [&_[data-slot=slider-range]]:bg-transparent [&_[data-slot=slider-track]]:mx-1 [&_[data-slot=slider-track]]:h-5 [&_[data-slot=slider-track]]:bg-[linear-gradient(90deg,var(--state-success)_0%,var(--accent-codex)_50%,var(--tutti-purple)_100%)] [&_[data-slot=slider-thumb]]:size-10 [&_[data-slot=slider-thumb]]:border-transparent [&_[data-slot=slider-thumb]]:bg-transparent [&_[data-slot=slider-thumb]]:bg-[image:var(--tutti-intensity-handle-url)] [&_[data-slot=slider-thumb]]:bg-contain [&_[data-slot=slider-thumb]]:bg-center [&_[data-slot=slider-thumb]]:bg-no-repeat [&_[data-slot=slider-thumb]]:shadow-none [&_[data-slot=slider-thumb]]:hover:ring-0 [&_[data-slot=slider-thumb]]:focus-visible:ring-0 [&_[data-slot=slider-thumb]]:-translate-y-1 [&_[data-slot=slider-thumb]]:cursor-grab [&_[data-slot=slider-thumb]]:active:cursor-grabbing`,
38218
- style: {
38219
- "--tutti-intensity-handle-url": `url("${previewTone.sliderHandleUrl}")`
38220
- },
38221
- "data-agent-tutti-budget-intensity-slider": "true",
38222
- "data-agent-tutti-budget-slider-tone": preview.tier,
38223
- max: 100,
38224
- min: 0,
38225
- step: 1,
38226
- value: [draftIntensity],
38227
- onValueChange: (values) => {
38228
- const next = values[0] ?? draftIntensity;
38229
- setDraftIntensity(next);
38230
- onChange(next);
38399
+ /* @__PURE__ */ jsxs52("div", { className: "relative", children: [
38400
+ /* @__PURE__ */ jsx74(
38401
+ TuttiIntensityStarStream,
38402
+ {
38403
+ intensity: draftIntensity,
38404
+ tier: preview.tier
38231
38405
  }
38232
- }
38233
- ),
38406
+ ),
38407
+ /* @__PURE__ */ jsx74(
38408
+ Slider,
38409
+ {
38410
+ "aria-label": labels.intensityLabel,
38411
+ className: `-mx-1 w-[calc(100%_+_8px)] [&_[data-slot=slider-range]]:bg-transparent [&_[data-slot=slider-track]]:mx-1 [&_[data-slot=slider-track]]:h-5 [&_[data-slot=slider-track]]:bg-[linear-gradient(90deg,var(--state-success)_0%,var(--accent-codex)_50%,var(--tutti-purple)_100%)] [&_[data-slot=slider-thumb]]:size-10 [&_[data-slot=slider-thumb]]:border-transparent [&_[data-slot=slider-thumb]]:bg-transparent [&_[data-slot=slider-thumb]]:bg-[image:var(--tutti-intensity-handle-url)] [&_[data-slot=slider-thumb]]:bg-contain [&_[data-slot=slider-thumb]]:bg-center [&_[data-slot=slider-thumb]]:bg-no-repeat [&_[data-slot=slider-thumb]]:shadow-none [&_[data-slot=slider-thumb]]:hover:ring-0 [&_[data-slot=slider-thumb]]:focus-visible:ring-0 [&_[data-slot=slider-thumb]]:-translate-y-1 [&_[data-slot=slider-thumb]]:cursor-grab [&_[data-slot=slider-thumb]]:active:cursor-grabbing [&_[data-slot=slider-thumb]]:z-[2]`,
38412
+ style: {
38413
+ "--tutti-intensity-handle-url": `url("${previewTone.sliderHandleUrl}")`
38414
+ },
38415
+ "data-agent-tutti-budget-intensity-slider": "true",
38416
+ "data-agent-tutti-budget-slider-tone": preview.tier,
38417
+ max: 100,
38418
+ min: 0,
38419
+ step: 1,
38420
+ value: [draftIntensity],
38421
+ onValueChange: (values) => {
38422
+ const next = values[0] ?? draftIntensity;
38423
+ setDraftIntensity(next);
38424
+ onChange(next);
38425
+ }
38426
+ }
38427
+ )
38428
+ ] }),
38234
38429
  /* @__PURE__ */ jsxs52("div", { className: "mt-3 flex items-center justify-between gap-2 text-[11px] font-medium", children: [
38235
- /* @__PURE__ */ jsx73("span", { className: "text-[var(--state-success)]", children: labels.previewCost }),
38236
- /* @__PURE__ */ jsx73("span", { className: "text-[var(--accent-codex)]", children: labels.previewBalance }),
38237
- /* @__PURE__ */ jsx73("span", { className: "text-[var(--tutti-purple)]", children: labels.previewPowerful })
38430
+ /* @__PURE__ */ jsx74("span", { className: "text-[var(--state-success)]", children: labels.previewCost }),
38431
+ /* @__PURE__ */ jsx74("span", { className: "text-[var(--accent-codex)]", children: labels.previewBalance }),
38432
+ /* @__PURE__ */ jsx74("span", { className: "text-[var(--tutti-purple)]", children: labels.previewPowerful })
38238
38433
  ] })
38239
38434
  ] }),
38240
- /* @__PURE__ */ jsx73(
38435
+ /* @__PURE__ */ jsx74(
38241
38436
  "div",
38242
38437
  {
38243
38438
  "aria-live": "polite",
38244
38439
  className: "mt-2 border-t border-[var(--line-2)] pt-2",
38245
- children: /* @__PURE__ */ jsx73("span", { className: "text-[12px] font-medium text-[var(--text-secondary)]", children: labels.previewTitle })
38440
+ children: /* @__PURE__ */ jsx74("span", { className: "text-[12px] font-medium text-[var(--text-secondary)]", children: labels.previewTitle })
38246
38441
  }
38247
38442
  ),
38248
38443
  /* @__PURE__ */ jsxs52("div", { className: "mt-2 grid grid-cols-2 gap-2 text-[11px]", children: [
38249
38444
  /* @__PURE__ */ jsxs52("div", { className: "min-w-0", children: [
38250
- /* @__PURE__ */ jsx73("div", { className: "text-[var(--text-tertiary)]", children: labels.modelStrengthLabel }),
38251
- /* @__PURE__ */ jsx73(
38445
+ /* @__PURE__ */ jsx74("div", { className: "text-[var(--text-tertiary)]", children: labels.modelStrengthLabel }),
38446
+ /* @__PURE__ */ jsx74(
38252
38447
  "div",
38253
38448
  {
38254
38449
  className: `truncate text-[13px] font-medium ${previewTone.valueClassName}`,
@@ -38258,8 +38453,8 @@ function TuttiBudgetPopover({
38258
38453
  )
38259
38454
  ] }),
38260
38455
  /* @__PURE__ */ jsxs52("div", { className: "min-w-0", children: [
38261
- /* @__PURE__ */ jsx73("div", { className: "text-[var(--text-tertiary)]", children: labels.agentCountLabel }),
38262
- /* @__PURE__ */ jsx73(
38456
+ /* @__PURE__ */ jsx74("div", { className: "text-[var(--text-tertiary)]", children: labels.agentCountLabel }),
38457
+ /* @__PURE__ */ jsx74(
38263
38458
  "div",
38264
38459
  {
38265
38460
  className: "truncate text-[13px] font-medium text-[var(--text-primary)]",
@@ -38269,7 +38464,7 @@ function TuttiBudgetPopover({
38269
38464
  )
38270
38465
  ] })
38271
38466
  ] }),
38272
- /* @__PURE__ */ jsx73("p", { className: "mt-2 mb-0 text-[11px] leading-[1.35] text-[var(--text-tertiary)]", children: labels.previewHint })
38467
+ /* @__PURE__ */ jsx74("p", { className: "mt-2 mb-0 text-[11px] leading-[1.35] text-[var(--text-tertiary)]", children: labels.previewHint })
38273
38468
  ]
38274
38469
  }
38275
38470
  )
@@ -38282,7 +38477,7 @@ function TuttiBudgetPopover({
38282
38477
  }
38283
38478
 
38284
38479
  // agent-gui/agentGuiNode/TuttiWorkflowDock.tsx
38285
- import { Fragment as Fragment22, jsx as jsx74, jsxs as jsxs53 } from "react/jsx-runtime";
38480
+ import { Fragment as Fragment22, jsx as jsx75, jsxs as jsxs53 } from "react/jsx-runtime";
38286
38481
  function countIssueTasks(issue, status) {
38287
38482
  return issue.tasks.filter((task) => task.status === status).length;
38288
38483
  }
@@ -38344,15 +38539,10 @@ function TuttiWorkflowDock({
38344
38539
  };
38345
38540
  const title = review !== null ? labels.reviewTitle : phase.kind === "materializing" ? labels.materializingTitle : execution !== null ? execution.issue.title : labels.errorTitle;
38346
38541
  const summary = review !== null ? `${review.panel.title} \xB7 ${review.intensityDiverged ? labels.reviewHintReplan : labels.reviewHint}` : phase.kind === "materializing" ? `${phase.title} \xB7 ${labels.materializingHint}` : execution !== null ? issueSummary(labels, execution.issue) : failure?.message ?? "";
38347
- const icon = review !== null ? /* @__PURE__ */ jsx74(TaskIcon, { "aria-hidden": true, className: "size-3.5" }) : phase.kind === "materializing" ? /* @__PURE__ */ jsx74(LoaderCircle, { "aria-hidden": true, className: "size-3.5 animate-spin" }) : execution !== null ? countIssueTasks(execution.issue, "running") > 0 ? /* @__PURE__ */ jsx74(LoaderCircle, { "aria-hidden": true, className: "size-3.5 animate-spin" }) : /* @__PURE__ */ jsx74(ListChecks4, { "aria-hidden": true, className: "size-3.5" }) : /* @__PURE__ */ jsx74(AlertTriangle, { "aria-hidden": true, className: "size-3.5" });
38542
+ const icon = review !== null ? /* @__PURE__ */ jsx75(TaskIcon, { "aria-hidden": true, className: "size-3.5" }) : phase.kind === "materializing" ? /* @__PURE__ */ jsx75(LoaderCircle, { "aria-hidden": true, className: "size-3.5 animate-spin" }) : execution !== null ? countIssueTasks(execution.issue, "running") > 0 ? /* @__PURE__ */ jsx75(LoaderCircle, { "aria-hidden": true, className: "size-3.5 animate-spin" }) : /* @__PURE__ */ jsx75(ListChecks4, { "aria-hidden": true, className: "size-3.5" }) : /* @__PURE__ */ jsx75(AlertTriangle, { "aria-hidden": true, className: "size-3.5" });
38348
38543
  const reviewTier = reviewDisplayIntensity !== null ? projectTuttiIntensityPreview(reviewDisplayIntensity).tier : null;
38349
- const reviewTierLabel = reviewTier !== null ? {
38350
- cost: intensityPopoverLabels.previewCost,
38351
- balance: intensityPopoverLabels.previewBalance,
38352
- powerful: intensityPopoverLabels.previewPowerful
38353
- }[reviewTier] : null;
38354
38544
  const actions = review !== null ? /* @__PURE__ */ jsxs53(Fragment22, { children: [
38355
- /* @__PURE__ */ jsx74(
38545
+ /* @__PURE__ */ jsx75(
38356
38546
  TuttiBudgetPopover,
38357
38547
  {
38358
38548
  intensity: reviewDisplayIntensity ?? review.intensity,
@@ -38369,21 +38559,32 @@ function TuttiWorkflowDock({
38369
38559
  "data-testid": "agent-gui-tutti-workflow-intensity",
38370
38560
  className: cn(
38371
38561
  "flex items-center gap-1 rounded-md px-1.5 py-0.5 transition-colors",
38372
- "hover:bg-[var(--transparency-hover)]",
38373
38562
  "data-[state=open]:bg-[color-mix(in_srgb,var(--tutti-purple)_12%,transparent)] data-[state=open]:text-[var(--tutti-purple)]"
38374
38563
  ),
38375
38564
  children: [
38376
- /* @__PURE__ */ jsx74(Gauge2, { "aria-hidden": true, className: "size-3.5" }),
38565
+ /* @__PURE__ */ jsx75(Gauge2, { "aria-hidden": true, className: "size-3.5" }),
38377
38566
  /* @__PURE__ */ jsxs53("span", { className: "flex items-center gap-0.5", children: [
38378
- reviewTierLabel !== null ? /* @__PURE__ */ jsx74("span", { className: "text-[11px]", children: reviewTierLabel }) : null,
38379
- /* @__PURE__ */ jsx74("span", { className: "inline-block w-[3ch] text-left text-[11px] tabular-nums", children: reviewDisplayIntensity ?? review.intensity })
38567
+ /* @__PURE__ */ jsx75("span", { className: "grid text-[11px]", children: [
38568
+ ["cost", intensityPopoverLabels.previewCost],
38569
+ ["balance", intensityPopoverLabels.previewBalance],
38570
+ ["powerful", intensityPopoverLabels.previewPowerful]
38571
+ ].map(([tier, label]) => /* @__PURE__ */ jsx75(
38572
+ "span",
38573
+ {
38574
+ "aria-hidden": tier !== reviewTier,
38575
+ className: tier === reviewTier ? "[grid-area:1/1]" : "invisible [grid-area:1/1]",
38576
+ children: label
38577
+ },
38578
+ tier
38579
+ )) }),
38580
+ /* @__PURE__ */ jsx75("span", { className: "inline-block w-[3ch] text-left text-[11px] tabular-nums", children: reviewDisplayIntensity ?? review.intensity })
38380
38581
  ] })
38381
38582
  ]
38382
38583
  }
38383
38584
  )
38384
38585
  }
38385
38586
  ),
38386
- /* @__PURE__ */ jsx74(
38587
+ /* @__PURE__ */ jsx75(
38387
38588
  "button",
38388
38589
  {
38389
38590
  type: "button",
@@ -38393,7 +38594,7 @@ function TuttiWorkflowDock({
38393
38594
  "aria-label": labels.cancel,
38394
38595
  "data-testid": "agent-gui-tutti-workflow-cancel",
38395
38596
  className: "flex size-5 items-center justify-center rounded-md transition-colors hover:bg-[var(--transparency-hover)]",
38396
- children: /* @__PURE__ */ jsx74(X6, { "aria-hidden": true, className: "size-3.5" })
38597
+ children: /* @__PURE__ */ jsx75(X6, { "aria-hidden": true, className: "size-3.5" })
38397
38598
  }
38398
38599
  )
38399
38600
  ] }) : phase.kind === "error" && phase.retryable ? /* @__PURE__ */ jsxs53(
@@ -38405,12 +38606,12 @@ function TuttiWorkflowDock({
38405
38606
  "aria-label": labels.retry,
38406
38607
  "data-testid": "agent-gui-tutti-workflow-retry",
38407
38608
  children: [
38408
- /* @__PURE__ */ jsx74(RotateCcw, { "aria-hidden": true, className: "size-3.5" }),
38609
+ /* @__PURE__ */ jsx75(RotateCcw, { "aria-hidden": true, className: "size-3.5" }),
38409
38610
  labels.retry
38410
38611
  ]
38411
38612
  }
38412
38613
  ) : null;
38413
- return /* @__PURE__ */ jsx74(
38614
+ return /* @__PURE__ */ jsx75(
38414
38615
  AgentComposerDisclosureCard,
38415
38616
  {
38416
38617
  actions,
@@ -38423,7 +38624,7 @@ function TuttiWorkflowDock({
38423
38624
  summary,
38424
38625
  testId: "agent-gui-tutti-workflow-dock",
38425
38626
  title,
38426
- children: review !== null ? /* @__PURE__ */ jsx74(
38627
+ children: review !== null ? /* @__PURE__ */ jsx75(
38427
38628
  TuttiModePlanPanel,
38428
38629
  {
38429
38630
  assignmentCatalog,
@@ -38440,17 +38641,17 @@ function TuttiWorkflowDock({
38440
38641
  className: "grid min-h-28 place-items-center gap-2 text-center text-sm text-muted-foreground",
38441
38642
  role: "status",
38442
38643
  children: [
38443
- /* @__PURE__ */ jsx74(
38644
+ /* @__PURE__ */ jsx75(
38444
38645
  LoaderCircle,
38445
38646
  {
38446
38647
  "aria-hidden": true,
38447
38648
  className: "size-5 animate-spin text-[var(--tutti-purple)]"
38448
38649
  }
38449
38650
  ),
38450
- /* @__PURE__ */ jsx74("span", { children: labels.materializingHint })
38651
+ /* @__PURE__ */ jsx75("span", { children: labels.materializingHint })
38451
38652
  ]
38452
38653
  }
38453
- ) : execution !== null ? /* @__PURE__ */ jsx74(
38654
+ ) : execution !== null ? /* @__PURE__ */ jsx75(
38454
38655
  TuttiPlanIssuePanel,
38455
38656
  {
38456
38657
  embedded: true,
@@ -38461,7 +38662,7 @@ function TuttiWorkflowDock({
38461
38662
  onOpenIssue,
38462
38663
  onOpenTask
38463
38664
  }
38464
- ) : /* @__PURE__ */ jsx74(
38665
+ ) : /* @__PURE__ */ jsx75(
38465
38666
  "div",
38466
38667
  {
38467
38668
  className: "rounded-md border border-[color-mix(in_srgb,var(--state-danger)_45%,transparent)] px-4 py-3 text-sm text-muted-foreground",
@@ -38474,7 +38675,7 @@ function TuttiWorkflowDock({
38474
38675
  }
38475
38676
 
38476
38677
  // agent-gui/agentGuiNode/view/AgentGUIBottomDockPane.tsx
38477
- import { Fragment as Fragment23, jsx as jsx75, jsxs as jsxs54 } from "react/jsx-runtime";
38678
+ import { Fragment as Fragment23, jsx as jsx76, jsxs as jsxs54 } from "react/jsx-runtime";
38478
38679
  var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38479
38680
  bottomDockRef,
38480
38681
  showScrollToBottom,
@@ -38513,11 +38714,11 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38513
38714
  const goalIsOptimistic = sessionChrome.rawState?.goalIsOptimistic === true;
38514
38715
  const showGoalBanner = isGoalBannerVisible(goalObjective, goalStatus);
38515
38716
  const workflowPhase = tuttiWorkflowDock.phase;
38516
- return /* @__PURE__ */ jsx75(
38717
+ return /* @__PURE__ */ jsx76(
38517
38718
  AgentComposerRegion,
38518
38719
  {
38519
38720
  regionRef: bottomDockRef,
38520
- floating: showScrollToBottom ? /* @__PURE__ */ jsx75(
38721
+ floating: showScrollToBottom ? /* @__PURE__ */ jsx76(
38521
38722
  "button",
38522
38723
  {
38523
38724
  type: "button",
@@ -38530,15 +38731,15 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38530
38731
  title: scrollToBottomLabel,
38531
38732
  onPointerDown: (event) => event.stopPropagation(),
38532
38733
  onClick: onScrollToBottom,
38533
- children: /* @__PURE__ */ jsx75(ChevronsDown, { "aria-hidden": "true", size: 15, strokeWidth: 2.2 })
38734
+ children: /* @__PURE__ */ jsx76(ChevronsDown, { "aria-hidden": "true", size: 15, strokeWidth: 2.2 })
38534
38735
  }
38535
38736
  ) : null,
38536
- lifted: bottomDockLiftedPrompt ? /* @__PURE__ */ jsx75(
38737
+ lifted: bottomDockLiftedPrompt ? /* @__PURE__ */ jsx76(
38537
38738
  "div",
38538
38739
  {
38539
38740
  className: AgentGUINode_styles_default.bottomDockPrompt,
38540
38741
  "data-testid": "agent-gui-bottom-dock-active-prompt",
38541
- children: /* @__PURE__ */ jsx75(
38742
+ children: /* @__PURE__ */ jsx76(
38542
38743
  AgentInteractivePromptSurface,
38543
38744
  {
38544
38745
  prompt: bottomDockLiftedPrompt,
@@ -38553,7 +38754,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38553
38754
  }
38554
38755
  ) : null,
38555
38756
  accessories: /* @__PURE__ */ jsxs54(Fragment23, { children: [
38556
- inlineNoticeChrome ? /* @__PURE__ */ jsx75(
38757
+ inlineNoticeChrome ? /* @__PURE__ */ jsx76(
38557
38758
  AgentSessionChrome,
38558
38759
  {
38559
38760
  chrome: inlineNoticeChrome,
@@ -38565,7 +38766,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38565
38766
  labels: chromeLabels
38566
38767
  }
38567
38768
  ) : null,
38568
- /* @__PURE__ */ jsx75(
38769
+ /* @__PURE__ */ jsx76(
38569
38770
  AgentSessionChrome,
38570
38771
  {
38571
38772
  chrome: sessionChrome,
@@ -38577,7 +38778,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38577
38778
  labels: chromeLabels
38578
38779
  }
38579
38780
  ),
38580
- showGoalBanner ? /* @__PURE__ */ jsx75(
38781
+ showGoalBanner ? /* @__PURE__ */ jsx76(
38581
38782
  AgentGoalBanner,
38582
38783
  {
38583
38784
  objective: goalObjective,
@@ -38592,7 +38793,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38592
38793
  onClearGoal: () => onGoalControl("clear")
38593
38794
  }
38594
38795
  ) : null,
38595
- workflowPhase ? /* @__PURE__ */ jsx75(
38796
+ workflowPhase ? /* @__PURE__ */ jsx76(
38596
38797
  TuttiWorkflowDock,
38597
38798
  {
38598
38799
  assignmentCatalog: tuttiWorkflowDock.assignmentCatalog,
@@ -38629,12 +38830,12 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38629
38830
  }
38630
38831
  ) : null
38631
38832
  ] }),
38632
- primary: bottomDockReplacementPrompt ? /* @__PURE__ */ jsx75(
38833
+ primary: bottomDockReplacementPrompt ? /* @__PURE__ */ jsx76(
38633
38834
  "div",
38634
38835
  {
38635
38836
  className: AgentGUINode_styles_default.bottomDockPrompt,
38636
38837
  "data-testid": "agent-gui-bottom-dock-active-prompt",
38637
- children: /* @__PURE__ */ jsx75(
38838
+ children: /* @__PURE__ */ jsx76(
38638
38839
  AgentInteractivePromptSurface,
38639
38840
  {
38640
38841
  prompt: bottomDockReplacementPrompt,
@@ -38647,7 +38848,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38647
38848
  }
38648
38849
  )
38649
38850
  }
38650
- ) : /* @__PURE__ */ jsx75(AgentComposer, { ...composerProps })
38851
+ ) : /* @__PURE__ */ jsx76(AgentComposer, { ...composerProps })
38651
38852
  }
38652
38853
  );
38653
38854
  });
@@ -38660,14 +38861,14 @@ import {
38660
38861
  ToastTitle,
38661
38862
  ToastViewport
38662
38863
  } from "@tutti-os/ui-system";
38663
- import { jsx as jsx76, jsxs as jsxs55 } from "react/jsx-runtime";
38864
+ import { jsx as jsx77, jsxs as jsxs55 } from "react/jsx-runtime";
38664
38865
  function AgentGUIContentToast({
38665
38866
  insetTopPx,
38666
38867
  message
38667
38868
  }) {
38668
38869
  const [open, setOpen] = useState44(true);
38669
38870
  return /* @__PURE__ */ jsxs55(ToastProvider, { children: [
38670
- /* @__PURE__ */ jsx76(
38871
+ /* @__PURE__ */ jsx77(
38671
38872
  ToastRoot,
38672
38873
  {
38673
38874
  open,
@@ -38675,10 +38876,10 @@ function AgentGUIContentToast({
38675
38876
  "data-testid": "agent-gui-content-toast",
38676
38877
  variant: "default",
38677
38878
  onOpenChange: setOpen,
38678
- children: /* @__PURE__ */ jsx76(ToastTitle, { children: message })
38879
+ children: /* @__PURE__ */ jsx77(ToastTitle, { children: message })
38679
38880
  }
38680
38881
  ),
38681
- /* @__PURE__ */ jsx76(
38882
+ /* @__PURE__ */ jsx77(
38682
38883
  ToastViewport,
38683
38884
  {
38684
38885
  className: "nodrag tsh-desktop-no-drag absolute left-0 w-full translate-x-0 px-4 [-webkit-app-region:no-drag]",
@@ -38697,7 +38898,7 @@ import { ScrollArea as ScrollArea3 } from "@tutti-os/ui-system/components";
38697
38898
 
38698
38899
  // agent-gui/agentGuiNode/view/AgentGUIConversationTimelinePane.tsx
38699
38900
  import { memo as memo10 } from "react";
38700
- import { Fragment as Fragment24, jsx as jsx77, jsxs as jsxs56 } from "react/jsx-runtime";
38901
+ import { Fragment as Fragment24, jsx as jsx78, jsxs as jsxs56 } from "react/jsx-runtime";
38701
38902
  var EMPTY_WORKSPACE_APP_ICONS3 = [];
38702
38903
  var AgentGUIConversationTimelinePane = memo10(
38703
38904
  function AgentGUIConversationTimelinePane2({
@@ -38717,16 +38918,16 @@ var AgentGUIConversationTimelinePane = memo10(
38717
38918
  }) {
38718
38919
  "use memo";
38719
38920
  return /* @__PURE__ */ jsxs56(Fragment24, { children: [
38720
- isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx77(
38921
+ isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx78(
38721
38922
  "div",
38722
38923
  {
38723
38924
  className: "mx-auto flex h-8 items-center justify-center text-[12px] text-[var(--text-secondary)]",
38724
38925
  "data-testid": "agent-gui-older-messages-loading",
38725
38926
  role: "status",
38726
- children: /* @__PURE__ */ jsx77("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
38927
+ children: /* @__PURE__ */ jsx78("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
38727
38928
  }
38728
38929
  ) : null,
38729
- /* @__PURE__ */ jsx77(
38930
+ /* @__PURE__ */ jsx78(
38730
38931
  AgentConversationFlow,
38731
38932
  {
38732
38933
  conversation,
@@ -38762,7 +38963,7 @@ function setTimelineScrollTopWithUserTransition(element, top) {
38762
38963
  }
38763
38964
 
38764
38965
  // agent-gui/agentGuiNode/view/AgentGUIDetailTimeline.tsx
38765
- import { jsx as jsx78 } from "react/jsx-runtime";
38966
+ import { jsx as jsx79 } from "react/jsx-runtime";
38766
38967
  var TIMELINE_CONTENT_STYLE = {
38767
38968
  width: "100%",
38768
38969
  minWidth: "100%",
@@ -38789,7 +38990,7 @@ var AgentGUIDetailTimeline = memo11(function AgentGUIDetailTimeline2({
38789
38990
  workspaceAppIcons
38790
38991
  }) {
38791
38992
  "use memo";
38792
- return /* @__PURE__ */ jsx78(
38993
+ return /* @__PURE__ */ jsx79(
38793
38994
  ScrollArea3,
38794
38995
  {
38795
38996
  scrollbarMode: "native",
@@ -38799,7 +39000,7 @@ var AgentGUIDetailTimeline = memo11(function AgentGUIDetailTimeline2({
38799
39000
  viewportTestId: "agent-gui-timeline",
38800
39001
  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(),
38801
39002
  viewportContentStyle: TIMELINE_CONTENT_STYLE,
38802
- children: hasActiveConversation ? /* @__PURE__ */ jsx78(
39003
+ children: hasActiveConversation ? /* @__PURE__ */ jsx79(
38803
39004
  AgentGUIConversationTimelinePane,
38804
39005
  {
38805
39006
  conversation,
@@ -39295,10 +39496,10 @@ function useAgentGUIDetailScroll(input) {
39295
39496
  import { useMemo as useMemo43 } from "react";
39296
39497
 
39297
39498
  // app/renderer/components/icons/UnavailableChatIcon.tsx
39298
- import { jsx as jsx79 } from "react/jsx-runtime";
39499
+ import { jsx as jsx80 } from "react/jsx-runtime";
39299
39500
  function UnavailableChatIcon(props) {
39300
39501
  "use memo";
39301
- return /* @__PURE__ */ jsx79(
39502
+ return /* @__PURE__ */ jsx80(
39302
39503
  "svg",
39303
39504
  {
39304
39505
  xmlns: "http://www.w3.org/2000/svg",
@@ -39306,7 +39507,7 @@ function UnavailableChatIcon(props) {
39306
39507
  fill: "currentColor",
39307
39508
  "aria-hidden": true,
39308
39509
  ...props,
39309
- children: /* @__PURE__ */ jsx79("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" })
39510
+ children: /* @__PURE__ */ jsx80("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" })
39310
39511
  }
39311
39512
  );
39312
39513
  }
@@ -39352,7 +39553,7 @@ function useAgentGUITimelineTransition(input) {
39352
39553
  }
39353
39554
 
39354
39555
  // agent-gui/agentGuiNode/view/useAgentGUIDetailModel.tsx
39355
- import { Fragment as Fragment25, jsx as jsx80, jsxs as jsxs57 } from "react/jsx-runtime";
39556
+ import { Fragment as Fragment25, jsx as jsx81, jsxs as jsxs57 } from "react/jsx-runtime";
39356
39557
  function resolveTuttiModeUpdateInlineNotice(input) {
39357
39558
  if (input.status !== "failed" && input.status !== "uncertain") return null;
39358
39559
  const localizedMessage = input.status === "failed" ? input.failedMessage : input.uncertainMessage;
@@ -39556,11 +39757,11 @@ function useAgentGUIDetailModel(input) {
39556
39757
  className: AgentGUINode_styles_default.unavailableChatEmpty,
39557
39758
  "data-testid": "agent-gui-unavailable-chat-empty",
39558
39759
  children: [
39559
- /* @__PURE__ */ jsx80(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
39560
- /* @__PURE__ */ jsx80("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
39760
+ /* @__PURE__ */ jsx81(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
39761
+ /* @__PURE__ */ jsx81("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
39561
39762
  ]
39562
39763
  }
39563
- ) : /* @__PURE__ */ jsx80(Fragment25, {}),
39764
+ ) : /* @__PURE__ */ jsx81(Fragment25, {}),
39564
39765
  [labels.conversationUnavailable, showUnavailableChatEmpty]
39565
39766
  );
39566
39767
  const chromeLabels = useMemo43(
@@ -39770,6 +39971,7 @@ function useAgentGUIDetailModel(input) {
39770
39971
  slashStatusContext: labels.slashStatusContext,
39771
39972
  slashStatusLimits: labels.slashStatusLimits,
39772
39973
  slashStatusAccount: labels.slashStatusAccount,
39974
+ slashStatusProviderAccount: labels.slashStatusProviderAccount,
39773
39975
  slashStatusClose: labels.slashStatusClose,
39774
39976
  slashStatusContextValue: labels.slashStatusContextValue,
39775
39977
  slashStatusContextUnavailable: labels.slashStatusContextUnavailable,
@@ -40226,7 +40428,7 @@ function useAgentGUITuttiWorkflow(input) {
40226
40428
  }
40227
40429
 
40228
40430
  // agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
40229
- import { Fragment as Fragment26, jsx as jsx81, jsxs as jsxs58 } from "react/jsx-runtime";
40431
+ import { Fragment as Fragment26, jsx as jsx82, jsxs as jsxs58 } from "react/jsx-runtime";
40230
40432
  var EMPTY_WORKSPACE_APP_ICONS4 = [];
40231
40433
  var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40232
40434
  shell,
@@ -40237,7 +40439,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40237
40439
  readiness,
40238
40440
  operations,
40239
40441
  homeTargetProjection,
40240
- referenceProvenanceFilter = null,
40442
+ referenceProvenanceFilters = null,
40241
40443
  composerEngagement,
40242
40444
  actions,
40243
40445
  labels,
@@ -40525,7 +40727,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40525
40727
  showStopButton,
40526
40728
  stopDisabled: stopDisabled || timelineInteractionLocked,
40527
40729
  workspaceReferencePickerOpen,
40528
- referenceProvenanceFilter,
40730
+ referenceProvenanceFilters,
40529
40731
  // Plan decisions replace the composer; approval / ask-user embed here.
40530
40732
  activePrompt: composerActivePrompt,
40531
40733
  activePromptKeyboardShortcutsEnabled: isActive,
@@ -40666,7 +40868,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40666
40868
  viewModel.detail.usage,
40667
40869
  viewModel.shell.workspaceId,
40668
40870
  viewModel.shell.workspacePath,
40669
- referenceProvenanceFilter,
40871
+ referenceProvenanceFilters,
40670
40872
  workspaceUserProjectI18n,
40671
40873
  workspaceAppIcons,
40672
40874
  selectHomeComposerAgentTargetAndFocus
@@ -40715,7 +40917,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40715
40917
  timelineScrollAnchorRef,
40716
40918
  viewModel
40717
40919
  });
40718
- const homeContent = !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx81(Fragment26, { children: renderProviderUnavailableState?.({
40920
+ const homeContent = !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx82(Fragment26, { children: renderProviderUnavailableState?.({
40719
40921
  provider: disabledProviderTarget.provider,
40720
40922
  providerLabel: labels.emptyProviderForProvider?.(
40721
40923
  disabledProviderTarget.provider
@@ -40725,7 +40927,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40725
40927
  target: disabledProviderTarget,
40726
40928
  iconUrl: resolveAgentGUIHeroIconUrl2(disabledProviderTarget.provider),
40727
40929
  unavailableReason: disabledProviderTarget.unavailableReason ?? null
40728
- }) }) : /* @__PURE__ */ jsx81(
40930
+ }) }) : /* @__PURE__ */ jsx82(
40729
40931
  AgentGUIEmptyHomePane,
40730
40932
  {
40731
40933
  provider: emptyHeroProvider,
@@ -40756,7 +40958,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40756
40958
  "aria-busy": timelineInteractionLocked || void 0,
40757
40959
  inert: timelineInteractionLocked,
40758
40960
  children: [
40759
- viewModel.operations.goalClearNoticeSequence > 0 ? /* @__PURE__ */ jsx81(
40961
+ viewModel.operations.goalClearNoticeSequence > 0 ? /* @__PURE__ */ jsx82(
40760
40962
  AgentGUIContentToast,
40761
40963
  {
40762
40964
  insetTopPx: 16,
@@ -40764,7 +40966,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40764
40966
  },
40765
40967
  viewModel.operations.goalClearNoticeSequence
40766
40968
  ) : null,
40767
- /* @__PURE__ */ jsx81(
40969
+ /* @__PURE__ */ jsx82(
40768
40970
  AgentGUIDetailTimeline,
40769
40971
  {
40770
40972
  availableSkills: viewModel.composer.availableSkills,
@@ -40785,7 +40987,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40785
40987
  workspaceAppIcons
40786
40988
  }
40787
40989
  ),
40788
- hasActiveConversation ? /* @__PURE__ */ jsx81(
40990
+ hasActiveConversation ? /* @__PURE__ */ jsx82(
40789
40991
  AgentGUIBottomDockPane,
40790
40992
  {
40791
40993
  bottomDockRef,
@@ -40824,7 +41026,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40824
41026
  // agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
40825
41027
  import { memo as memo13, useCallback as useCallback61, useEffect as useEffect35, useRef as useRef54, useState as useState49 } from "react";
40826
41028
  import { ConfirmationDialog as ConfirmationDialog4, Input as Input4 } from "@tutti-os/ui-system";
40827
- import { jsx as jsx82, jsxs as jsxs59 } from "react/jsx-runtime";
41029
+ import { jsx as jsx83, jsxs as jsxs59 } from "react/jsx-runtime";
40828
41030
  var AgentGUIRenameConversationDialog = memo13(
40829
41031
  function AgentGUIRenameConversationDialog2({
40830
41032
  conversation,
@@ -40880,7 +41082,7 @@ var AgentGUIRenameConversationDialog = memo13(
40880
41082
  setIsSaving(false);
40881
41083
  });
40882
41084
  }, [conversation, onOpenChange, onRename, trimmedTitle]);
40883
- return /* @__PURE__ */ jsx82(
41085
+ return /* @__PURE__ */ jsx83(
40884
41086
  ConfirmationDialog4,
40885
41087
  {
40886
41088
  cancelLabel: labels.cancel,
@@ -40890,7 +41092,7 @@ var AgentGUIRenameConversationDialog = memo13(
40890
41092
  confirmLabel: labels.renameSessionSave,
40891
41093
  description: labels.renameSessionDescription,
40892
41094
  footer: /* @__PURE__ */ jsxs59("div", { className: "flex justify-end gap-2", children: [
40893
- /* @__PURE__ */ jsx82(
41095
+ /* @__PURE__ */ jsx83(
40894
41096
  Button,
40895
41097
  {
40896
41098
  disabled: isSaving,
@@ -40928,7 +41130,7 @@ var AgentGUIRenameConversationDialog = memo13(
40928
41130
  children: labels.cancel
40929
41131
  }
40930
41132
  ),
40931
- /* @__PURE__ */ jsx82(
41133
+ /* @__PURE__ */ jsx83(
40932
41134
  Button,
40933
41135
  {
40934
41136
  className: "shadow-none",
@@ -40983,7 +41185,7 @@ var AgentGUIRenameConversationDialog = memo13(
40983
41185
  title: labels.renameSessionTitle,
40984
41186
  onConfirm: confirmRename,
40985
41187
  onOpenChange,
40986
- children: /* @__PURE__ */ jsx82(
41188
+ children: /* @__PURE__ */ jsx83(
40987
41189
  Input4,
40988
41190
  {
40989
41191
  ref: inputRef,
@@ -41011,7 +41213,7 @@ import {
41011
41213
  ReferenceSourcePicker,
41012
41214
  WorkspaceFileReferencePicker
41013
41215
  } from "@tutti-os/workspace-file-reference/ui";
41014
- import { jsx as jsx83 } from "react/jsx-runtime";
41216
+ import { jsx as jsx84 } from "react/jsx-runtime";
41015
41217
  function AgentGUIReferencePickerSurface({
41016
41218
  aggregator,
41017
41219
  copy,
@@ -41022,6 +41224,7 @@ function AgentGUIReferencePickerSurface({
41022
41224
  isNodeSelectable,
41023
41225
  open,
41024
41226
  purpose,
41227
+ renderDirectoryHeaderActions,
41025
41228
  resolveContentErrorAction,
41026
41229
  resolveEntryIconUrl,
41027
41230
  workspaceId,
@@ -41029,7 +41232,7 @@ function AgentGUIReferencePickerSurface({
41029
41232
  onConfirm,
41030
41233
  onConfirmBundles
41031
41234
  }) {
41032
- return aggregator ? /* @__PURE__ */ jsx83(
41235
+ return aggregator ? /* @__PURE__ */ jsx84(
41033
41236
  ReferenceSourcePicker,
41034
41237
  {
41035
41238
  aggregator,
@@ -41039,6 +41242,7 @@ function AgentGUIReferencePickerSurface({
41039
41242
  fileManagerCopy: fileManagerCopy ?? void 0,
41040
41243
  open,
41041
41244
  purpose,
41245
+ renderHeaderActions: purpose === "directory" ? renderDirectoryHeaderActions : void 0,
41042
41246
  resolveContentErrorAction,
41043
41247
  resolveEntryIconUrl,
41044
41248
  workspaceId,
@@ -41046,7 +41250,7 @@ function AgentGUIReferencePickerSurface({
41046
41250
  onConfirm,
41047
41251
  onConfirmBundles
41048
41252
  }
41049
- ) : /* @__PURE__ */ jsx83(
41253
+ ) : /* @__PURE__ */ jsx84(
41050
41254
  WorkspaceFileReferencePicker,
41051
41255
  {
41052
41256
  copy,
@@ -41063,7 +41267,7 @@ function AgentGUIReferencePickerSurface({
41063
41267
 
41064
41268
  // agent-gui/agentGuiNode/view/AgentTargetSetupRoot.tsx
41065
41269
  import { useCallback as useCallback62, useMemo as useMemo45 } from "react";
41066
- import { jsx as jsx84, jsxs as jsxs60 } from "react/jsx-runtime";
41270
+ import { jsx as jsx85, jsxs as jsxs60 } from "react/jsx-runtime";
41067
41271
  function useAgentTargetSetupRoot(input) {
41068
41272
  const { preferences } = useAgentGUIProviderRailPreferences();
41069
41273
  const homeTargetProjection = useMemo45(
@@ -41107,9 +41311,9 @@ function AgentTargetSetupRoot({
41107
41311
  controller,
41108
41312
  openEnvironmentSetup
41109
41313
  }) {
41110
- return /* @__PURE__ */ jsx84(AgentEnvPanelActionProvider, { openPanel: openEnvironmentSetup, children: /* @__PURE__ */ jsxs60(AgentTargetSetupControllerProvider, { controller, children: [
41314
+ return /* @__PURE__ */ jsx85(AgentEnvPanelActionProvider, { openPanel: openEnvironmentSetup, children: /* @__PURE__ */ jsxs60(AgentTargetSetupControllerProvider, { controller, children: [
41111
41315
  children,
41112
- /* @__PURE__ */ jsx84(
41316
+ /* @__PURE__ */ jsx85(
41113
41317
  AgentTargetSetupGate,
41114
41318
  {
41115
41319
  carouselMountedExternally: false,
@@ -41661,10 +41865,11 @@ function useAgentGUIExternalRequests(input) {
41661
41865
  }
41662
41866
 
41663
41867
  // agent-gui/agentGuiNode/AgentGUINodeView.tsx
41664
- import { jsx as jsx85, jsxs as jsxs61 } from "react/jsx-runtime";
41868
+ import { jsx as jsx86, jsxs as jsxs61 } from "react/jsx-runtime";
41665
41869
  function AgentGUINodeView({
41666
41870
  viewModel,
41667
- referenceProvenanceFilter = null,
41871
+ referenceProvenanceFilters = null,
41872
+ renderProjectDirectoryPickerHeaderActions,
41668
41873
  renderSidebarFooter,
41669
41874
  renderProviderRailEmpty,
41670
41875
  renderProviderUnavailableState,
@@ -41810,17 +42015,7 @@ function AgentGUINodeView({
41810
42015
  }, []);
41811
42016
  const requestCreateConversation = useStableEventCallback(
41812
42017
  (options) => {
41813
- const source = options?.source;
41814
- if (options && "projectPath" in options) {
41815
- createConversationAction(options);
41816
- } else if (viewModel.composer.composerSettings.selectedProjectPath) {
41817
- createConversationAction({
41818
- projectPath: viewModel.composer.composerSettings.selectedProjectPath,
41819
- source: source ?? "selected_project"
41820
- });
41821
- } else {
41822
- createConversationAction({ source: source ?? "rail_toolbar" });
41823
- }
42018
+ createConversationAction(options);
41824
42019
  requestComposerFocus();
41825
42020
  }
41826
42021
  );
@@ -42073,7 +42268,7 @@ function AgentGUINodeView({
42073
42268
  }),
42074
42269
  [targetPresentationKey, viewModel.shell.workspaceId]
42075
42270
  );
42076
- const content = /* @__PURE__ */ jsx85(AgentTargetPresentationProvider, { agentTargets: agentTargetPresentations, children: /* @__PURE__ */ jsxs61(
42271
+ const content = /* @__PURE__ */ jsx86(AgentTargetPresentationProvider, { agentTargets: agentTargetPresentations, children: /* @__PURE__ */ jsxs61(
42077
42272
  AgentTargetSetupRoot,
42078
42273
  {
42079
42274
  controller: targetSetupController,
@@ -42095,7 +42290,7 @@ function AgentGUINodeView({
42095
42290
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
42096
42291
  inert: conversationRailCollapsed ? true : void 0,
42097
42292
  children: [
42098
- /* @__PURE__ */ jsx85(
42293
+ /* @__PURE__ */ jsx86(
42099
42294
  AgentGUIProviderRail,
42100
42295
  {
42101
42296
  activeConversation: viewModel.rail.activeConversation,
@@ -42118,7 +42313,7 @@ function AgentGUINodeView({
42118
42313
  onRequestComposerFocus: requestComposerFocus
42119
42314
  }
42120
42315
  ),
42121
- renderSidebarFooter ? /* @__PURE__ */ jsx85(
42316
+ renderSidebarFooter ? /* @__PURE__ */ jsx86(
42122
42317
  "div",
42123
42318
  {
42124
42319
  className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailSidebarFooter} nodrag tsh-desktop-no-drag`,
@@ -42129,12 +42324,12 @@ function AgentGUINodeView({
42129
42324
  })
42130
42325
  }
42131
42326
  ) : null,
42132
- shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx85(
42327
+ shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx86(
42133
42328
  "div",
42134
42329
  {
42135
42330
  className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailConfigFooter} nodrag tsh-desktop-no-drag`,
42136
42331
  "data-testid": "agent-gui-config-footer",
42137
- children: /* @__PURE__ */ jsx85(
42332
+ children: /* @__PURE__ */ jsx86(
42138
42333
  AgentGUIConfigMenu,
42139
42334
  {
42140
42335
  environmentSetupVisible,
@@ -42160,14 +42355,14 @@ function AgentGUINodeView({
42160
42355
  ]
42161
42356
  }
42162
42357
  ),
42163
- /* @__PURE__ */ jsx85(
42358
+ /* @__PURE__ */ jsx86(
42164
42359
  "aside",
42165
42360
  {
42166
42361
  id: "agent-gui-conversation-rail",
42167
42362
  className: `${AgentGUINode_styles_default.railPanel}${conversationRailCollapsed ? ` ${AgentGUINode_styles_default.railPanelCollapsed}` : ""}`,
42168
42363
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
42169
42364
  inert: conversationRailCollapsed ? true : void 0,
42170
- children: /* @__PURE__ */ jsx85(
42365
+ children: /* @__PURE__ */ jsx86(
42171
42366
  AgentGUIConversationRailController,
42172
42367
  {
42173
42368
  ...conversationRailStoreState,
@@ -42180,7 +42375,7 @@ function AgentGUINodeView({
42180
42375
  )
42181
42376
  }
42182
42377
  ),
42183
- /* @__PURE__ */ jsx85(
42378
+ /* @__PURE__ */ jsx86(
42184
42379
  "div",
42185
42380
  {
42186
42381
  id: "agent-gui-conversation-rail-resize",
@@ -42204,7 +42399,7 @@ function AgentGUINodeView({
42204
42399
  onPointerUp: endConversationRailResize
42205
42400
  }
42206
42401
  ),
42207
- /* @__PURE__ */ jsx85("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx85(
42402
+ /* @__PURE__ */ jsx86("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx86(
42208
42403
  AgentGUIDetailPane,
42209
42404
  {
42210
42405
  shell: viewModel.shell,
@@ -42215,7 +42410,7 @@ function AgentGUINodeView({
42215
42410
  readiness: viewModel.readiness,
42216
42411
  operations: viewModel.operations,
42217
42412
  homeTargetProjection,
42218
- referenceProvenanceFilter,
42413
+ referenceProvenanceFilters,
42219
42414
  composerEngagement,
42220
42415
  actions,
42221
42416
  labels,
@@ -42251,7 +42446,7 @@ function AgentGUINodeView({
42251
42446
  ]
42252
42447
  }
42253
42448
  ),
42254
- /* @__PURE__ */ jsx85(
42449
+ /* @__PURE__ */ jsx86(
42255
42450
  AgentGUIReferencePickerSurface,
42256
42451
  {
42257
42452
  aggregator: workspaceReferencePickerAggregator,
@@ -42263,6 +42458,7 @@ function AgentGUINodeView({
42263
42458
  isNodeSelectable: isWorkspaceReferencePickerNodeSelectable,
42264
42459
  open: workspaceReferencePickerOpen,
42265
42460
  purpose: workspaceReferencePickerPurpose,
42461
+ renderDirectoryHeaderActions: renderProjectDirectoryPickerHeaderActions,
42266
42462
  resolveContentErrorAction: resolveReferenceContentErrorAction,
42267
42463
  resolveEntryIconUrl: resolveWorkspaceReferenceEntryIconUrl,
42268
42464
  workspaceId: viewModel.shell.workspaceId,
@@ -42271,7 +42467,7 @@ function AgentGUINodeView({
42271
42467
  onConfirmBundles: workspaceReferencePickerPurpose === "reference" ? confirmWorkspaceReferenceBundles : void 0
42272
42468
  }
42273
42469
  ),
42274
- /* @__PURE__ */ jsx85(
42470
+ /* @__PURE__ */ jsx86(
42275
42471
  AgentGUIRenameConversationDialog,
42276
42472
  {
42277
42473
  conversation: renameConversationTarget,
@@ -42289,7 +42485,7 @@ function AgentGUINodeView({
42289
42485
  ]
42290
42486
  }
42291
42487
  ) });
42292
- return /* @__PURE__ */ jsx85(TooltipProvider7, { children: content });
42488
+ return /* @__PURE__ */ jsx86(TooltipProvider7, { children: content });
42293
42489
  }
42294
42490
 
42295
42491
  // agent-gui/workspaceDesktop/view/AgentProbeInfoPopover.tsx
@@ -42302,7 +42498,7 @@ import {
42302
42498
  useState as useState52
42303
42499
  } from "react";
42304
42500
  import { createPortal as createPortal5 } from "react-dom";
42305
- import { Fragment as Fragment27, jsx as jsx86, jsxs as jsxs62 } from "react/jsx-runtime";
42501
+ import { Fragment as Fragment27, jsx as jsx87, jsxs as jsxs62 } from "react/jsx-runtime";
42306
42502
  var POPOVER_MIN_VIEWPORT_INSET_PX = 16;
42307
42503
  var POPOVER_DEFAULT_WIDTH_PX = 260;
42308
42504
  function dockAgentProbeLineKey(line) {
@@ -42316,7 +42512,7 @@ function renderDockAgentProbeLine(line) {
42316
42512
  line.primary,
42317
42513
  line.secondary ? /* @__PURE__ */ jsxs62(Fragment27, { children: [
42318
42514
  " ",
42319
- /* @__PURE__ */ jsx86("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
42515
+ /* @__PURE__ */ jsx87("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
42320
42516
  ] }) : null
42321
42517
  ] });
42322
42518
  }
@@ -42409,7 +42605,7 @@ function AgentProbeInfoPopover({
42409
42605
  if (lines.length === 0) {
42410
42606
  return null;
42411
42607
  }
42412
- const popover = /* @__PURE__ */ jsx86(
42608
+ const popover = /* @__PURE__ */ jsx87(
42413
42609
  "div",
42414
42610
  {
42415
42611
  ref: popoverRef,
@@ -42418,7 +42614,7 @@ function AgentProbeInfoPopover({
42418
42614
  style: popoverStyle ?? void 0,
42419
42615
  onMouseEnter: openPopover,
42420
42616
  onMouseLeave: closeIfPointerLeavesPopover,
42421
- children: /* @__PURE__ */ jsx86("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
42617
+ children: /* @__PURE__ */ jsx87("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
42422
42618
  const label = getDockAgentProbeLineLabel(line);
42423
42619
  const valueText = formatDockAgentProbeLineText(line);
42424
42620
  return /* @__PURE__ */ jsxs62(
@@ -42427,8 +42623,8 @@ function AgentProbeInfoPopover({
42427
42623
  className: "desktop-dock-popup__agent-info-item",
42428
42624
  "data-has-label": label ? "true" : "false",
42429
42625
  children: [
42430
- label ? /* @__PURE__ */ jsx86("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
42431
- /* @__PURE__ */ jsx86(
42626
+ label ? /* @__PURE__ */ jsx87("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
42627
+ /* @__PURE__ */ jsx87(
42432
42628
  "span",
42433
42629
  {
42434
42630
  className: "desktop-dock-popup__agent-info-value",
@@ -42463,38 +42659,13 @@ function AgentProbeInfoPopover({
42463
42659
  },
42464
42660
  onBlur: closePopover,
42465
42661
  children: [
42466
- /* @__PURE__ */ jsx86(Info2, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
42662
+ /* @__PURE__ */ jsx87(Info2, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
42467
42663
  isOpen ? createPortal5(popover, document.body) : null
42468
42664
  ]
42469
42665
  }
42470
42666
  );
42471
42667
  }
42472
42668
 
42473
- // agent-gui/agentGuiNode/model/agentReferenceProvenanceCatalog.ts
42474
- function resolveAgentGUIReferenceProvenanceFilterCatalog(input) {
42475
- if (input.injectedCatalog !== void 0) {
42476
- return input.injectedCatalog;
42477
- }
42478
- if (!input.legacyAgentFilterEnabled) {
42479
- return null;
42480
- }
42481
- return {
42482
- enabledDimensions: ["agent"],
42483
- agentOptions: (input.agentTargets ?? []).flatMap((target) => {
42484
- const agentTargetId = target.agentTargetId?.trim();
42485
- return agentTargetId ? [
42486
- {
42487
- disabled: target.disabled,
42488
- iconUrl: target.iconUrl,
42489
- id: agentTargetId,
42490
- label: target.label
42491
- }
42492
- ] : [];
42493
- }),
42494
- memberOptions: []
42495
- };
42496
- }
42497
-
42498
42669
  // agent-gui/agentGuiNode/AgentGUINode.types.ts
42499
42670
  function agentGuiStateEquals(left, right) {
42500
42671
  return left === right || left.provider === right.provider && (left.agentTargetId ?? null) === (right.agentTargetId ?? null) && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId && stringRecordsEqual(
@@ -42552,7 +42723,7 @@ function areAgentGUINodePropsEqual(previous, next) {
42552
42723
  const pc = previous.hostCapabilities, nc = next.hostCapabilities;
42553
42724
  const pa = previous.hostActions, na = next.hostActions;
42554
42725
  const ps = previous.renderSlots, ns = next.renderSlots;
42555
- return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.resolveExternalPromptEntries === nw.resolveExternalPromptEntries && pw.prepareExternalPromptFiles === nw.prepareExternalPromptFiles && pw.promptAssetLimit === nw.promptAssetLimit && pw.projectDirectorySourceAggregator === nw.projectDirectorySourceAggregator && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceContentErrorAction === nw.resolveReferenceContentErrorAction && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.sessionAction === nr.sessionAction && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentStatusController === nr.agentStatusController && pc.capabilityMenuState === nc.capabilityMenuState && pc.capabilityControlsReadOnly === nc.capabilityControlsReadOnly && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.handoffAgentTargets === nc.handoffAgentTargets && pc.handoffAgentTargetsLoading === nc.handoffAgentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.targetConnectionSource === nc.targetConnectionSource && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.mentionService === nc.mentionService && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onAgentEnvPanelOpen === na.onAgentEnvPanelOpen && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && pa.onConversationRailLayoutChange === na.onConversationRailLayoutChange && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
42726
+ return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.resolveExternalPromptEntries === nw.resolveExternalPromptEntries && pw.prepareExternalPromptFiles === nw.prepareExternalPromptFiles && pw.promptAssetLimit === nw.promptAssetLimit && pw.projectDirectorySourceAggregator === nw.projectDirectorySourceAggregator && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceContentErrorAction === nw.resolveReferenceContentErrorAction && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.conversationRailAutoCollapseMode === nf.conversationRailAutoCollapseMode && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.sessionAction === nr.sessionAction && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentStatusController === nr.agentStatusController && pc.capabilityMenuState === nc.capabilityMenuState && pc.capabilityControlsReadOnly === nc.capabilityControlsReadOnly && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.handoffAgentTargets === nc.handoffAgentTargets && pc.handoffAgentTargetsLoading === nc.handoffAgentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.targetConnectionSource === nc.targetConnectionSource && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.mentionService === nc.mentionService && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onAgentEnvPanelOpen === na.onAgentEnvPanelOpen && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && pa.onConversationRailLayoutChange === na.onConversationRailLayoutChange && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.projectDirectoryPickerHeaderActions === ns.projectDirectoryPickerHeaderActions && ps.sidebarFooter === ns.sidebarFooter;
42556
42727
  }
42557
42728
 
42558
42729
  // agent-gui/agentGuiNode/AgentGUIMentionServiceBoundary.tsx
@@ -42599,7 +42770,7 @@ function composeAgentGUIMentionService(input) {
42599
42770
  }
42600
42771
 
42601
42772
  // agent-gui/agentGuiNode/AgentGUIMentionServiceBoundary.tsx
42602
- import { jsx as jsx87 } from "react/jsx-runtime";
42773
+ import { jsx as jsx88 } from "react/jsx-runtime";
42603
42774
  function AgentGUIMentionServiceBoundary({
42604
42775
  children,
42605
42776
  service
@@ -42615,7 +42786,7 @@ function AgentGUIMentionServiceBoundary({
42615
42786
  if (!effectiveService || effectiveService === inheritedService) {
42616
42787
  return children;
42617
42788
  }
42618
- return /* @__PURE__ */ jsx87(RichTextMentionServiceProvider, { service: effectiveService, children });
42789
+ return /* @__PURE__ */ jsx88(RichTextMentionServiceProvider, { service: effectiveService, children });
42619
42790
  }
42620
42791
 
42621
42792
  // agent-gui/agentGuiNode/AgentGUINode.labels.ts
@@ -43276,6 +43447,15 @@ function useAgentGUIViewLabels(input) {
43276
43447
  slashStatusContext: t("agentHost.agentGui.slashStatusContext"),
43277
43448
  slashStatusLimits: t("agentHost.agentGui.slashStatusLimits"),
43278
43449
  slashStatusAccount: t("agentHost.agentGui.slashStatusAccount"),
43450
+ slashStatusProviderAccount: (provider) => {
43451
+ const identity = resolveAgentGUIProviderCatalogIdentity(provider);
43452
+ if (!identity) {
43453
+ return null;
43454
+ }
43455
+ return t("agentHost.agentGui.slashStatusProviderAccount", {
43456
+ provider: agentGUIProviderIdentityDisplayName(identity, t)
43457
+ });
43458
+ },
43279
43459
  slashStatusClose: t("agentHost.agentGui.slashStatusClose"),
43280
43460
  slashStatusContextValue: (input2) => t("agentHost.agentGui.slashStatusContextValue", {
43281
43461
  percentLeft: input2.percentLeft,
@@ -43743,13 +43923,68 @@ function useAgentGUIWorkspaceFileReferenceCopy(t) {
43743
43923
  );
43744
43924
  }
43745
43925
 
43746
- // agent-gui/agentGuiNode/AgentGUINode.tsx
43747
- import { jsx as jsx88, jsxs as jsxs63 } from "react/jsx-runtime";
43926
+ // agent-gui/agentGuiNode/composer/useAgentMentionProvenanceFilters.ts
43927
+ import { useMemo as useMemo50 } from "react";
43928
+ import { useReferenceProvenanceFilterCatalog } from "@tutti-os/workspace-file-reference/react";
43929
+
43930
+ // agent-gui/agentGuiNode/model/agentReferenceProvenanceCatalog.ts
43931
+ function resolveAgentGUIReferenceProvenanceFilterCatalog(input) {
43932
+ if (input.injectedCatalog !== void 0) {
43933
+ return input.injectedCatalog;
43934
+ }
43935
+ if (!input.legacyAgentFilterEnabled) {
43936
+ return null;
43937
+ }
43938
+ return {
43939
+ enabledDimensions: ["agent"],
43940
+ agentOptions: (input.agentTargets ?? []).flatMap((target) => {
43941
+ const agentTargetId = target.agentTargetId?.trim();
43942
+ return agentTargetId ? [
43943
+ {
43944
+ disabled: target.disabled,
43945
+ iconUrl: target.iconUrl,
43946
+ id: agentTargetId,
43947
+ label: target.label
43948
+ }
43949
+ ] : [];
43950
+ }),
43951
+ memberOptions: []
43952
+ };
43953
+ }
43954
+
43955
+ // agent-gui/agentGuiNode/composer/useAgentMentionProvenanceFilters.ts
43748
43956
  var DISABLED_REFERENCE_PROVENANCE_CATALOG = {
43749
43957
  enabledDimensions: [],
43750
43958
  agentOptions: [],
43751
43959
  memberOptions: []
43752
43960
  };
43961
+ function useAgentMentionProvenanceFilters(input) {
43962
+ const catalog = useMemo50(
43963
+ () => resolveAgentGUIReferenceProvenanceFilterCatalog(input),
43964
+ [input.agentTargets, input.injectedCatalog, input.legacyAgentFilterEnabled]
43965
+ );
43966
+ const effectiveCatalog = catalog ?? DISABLED_REFERENCE_PROVENANCE_CATALOG;
43967
+ const session = useReferenceProvenanceFilterCatalog(effectiveCatalog);
43968
+ const file = useReferenceProvenanceFilterCatalog(effectiveCatalog);
43969
+ const issue = useReferenceProvenanceFilterCatalog(effectiveCatalog);
43970
+ const agent = useReferenceProvenanceFilterCatalog(effectiveCatalog);
43971
+ const app = useReferenceProvenanceFilterCatalog(effectiveCatalog);
43972
+ return useMemo50(
43973
+ () => session.snapshot.catalog.enabledDimensions.length === 0 ? null : {
43974
+ byFilter: {
43975
+ session,
43976
+ file,
43977
+ issue,
43978
+ agent,
43979
+ app
43980
+ }
43981
+ },
43982
+ [agent, app, file, issue, session]
43983
+ );
43984
+ }
43985
+
43986
+ // agent-gui/agentGuiNode/AgentGUINode.tsx
43987
+ import { jsx as jsx89, jsxs as jsxs63 } from "react/jsx-runtime";
43753
43988
  var AgentGUINode = memo14(function AgentGUINode2({
43754
43989
  identity,
43755
43990
  workspace,
@@ -43787,10 +44022,8 @@ var AgentGUINode = memo14(function AgentGUINode2({
43787
44022
  isMaximized = false,
43788
44023
  isActive,
43789
44024
  isVisible = true,
43790
- embedded = false,
43791
- conversationRailAutoCollapseWidthPx = null
44025
+ embedded = false
43792
44026
  } = frame;
43793
- const railAutoCollapseWidthPx = conversationRailAutoCollapseWidthPx ?? void 0;
43794
44027
  const widthRef = useRef61(width);
43795
44028
  widthRef.current = width;
43796
44029
  const {
@@ -43822,15 +44055,11 @@ var AgentGUINode = memo14(function AgentGUINode2({
43822
44055
  referenceProvenanceFilterCatalog: injectedReferenceProvenanceFilterCatalog,
43823
44056
  referenceProvenanceFilterEnabled = false
43824
44057
  } = hostCapabilities;
43825
- const referenceProvenanceFilterCatalog = resolveAgentGUIReferenceProvenanceFilterCatalog({
44058
+ const referenceProvenanceFilters = useAgentMentionProvenanceFilters({
43826
44059
  agentTargets,
43827
44060
  injectedCatalog: injectedReferenceProvenanceFilterCatalog,
43828
44061
  legacyAgentFilterEnabled: referenceProvenanceFilterEnabled
43829
44062
  });
43830
- const referenceProvenanceFilterBinding = useReferenceProvenanceFilterCatalog(
43831
- referenceProvenanceFilterCatalog ?? DISABLED_REFERENCE_PROVENANCE_CATALOG
43832
- );
43833
- const referenceProvenanceFilter = referenceProvenanceFilterBinding.snapshot.catalog.enabledDimensions.length > 0 ? referenceProvenanceFilterBinding : null;
43834
44063
  const {
43835
44064
  onLinkAction,
43836
44065
  onHandoffConversation,
@@ -43850,16 +44079,17 @@ var AgentGUINode = memo14(function AgentGUINode2({
43850
44079
  onConversationRailLayoutChange
43851
44080
  } = hostActions;
43852
44081
  const {
44082
+ projectDirectoryPickerHeaderActions: renderProjectDirectoryPickerHeaderActions,
43853
44083
  providerRailEmpty: renderProviderRailEmpty,
43854
44084
  providerUnavailableState: renderProviderUnavailableState,
43855
44085
  sidebarFooter: renderSidebarFooter
43856
44086
  } = renderSlots;
43857
44087
  const { i18n, locale, t } = useTranslation();
43858
- const workspaceUserProjectI18n = useMemo50(
44088
+ const workspaceUserProjectI18n = useMemo51(
43859
44089
  () => createWorkspaceUserProjectI18nRuntime(i18n),
43860
44090
  [i18n]
43861
44091
  );
43862
- const workspaceFileManagerI18n = useMemo50(
44092
+ const workspaceFileManagerI18n = useMemo51(
43863
44093
  () => typeof i18n?.t === "function" ? createWorkspaceFileManagerI18nRuntime(i18n) : null,
43864
44094
  [i18n]
43865
44095
  );
@@ -43912,10 +44142,15 @@ var AgentGUINode = memo14(function AgentGUINode2({
43912
44142
  },
43913
44143
  [onUpdateNode]
43914
44144
  );
43915
- const isConversationRailManuallyCollapsed = state.conversationRailCollapsed === true;
43916
- const isConversationRailAutoCollapsed = shouldAutoCollapseAgentGUIConversationRail(width, railAutoCollapseWidthPx);
43917
- const isConversationRailCollapsed = isConversationRailManuallyCollapsed || isConversationRailAutoCollapsed;
43918
- const minSize = useMemo50(
44145
+ const conversationRailPresentation = resolveAgentGUIConversationRailPresentation({
44146
+ autoCollapseMode: frame.conversationRailAutoCollapseMode,
44147
+ containerWidthPx: width,
44148
+ conversationRailCollapsed: state.conversationRailCollapsed,
44149
+ conversationRailWidthPx: state.conversationRailWidthPx
44150
+ });
44151
+ const isConversationRailAutoCollapsed = conversationRailPresentation.isAutoCollapsed;
44152
+ const isConversationRailCollapsed = conversationRailPresentation.isCollapsed;
44153
+ const minSize = useMemo51(
43919
44154
  () => ({
43920
44155
  ...resolveCanonicalNodeMinSize("agentGui"),
43921
44156
  width: AGENT_GUI_COLLAPSED_MIN_WIDTH_PX
@@ -43999,7 +44234,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
43999
44234
  },
44000
44235
  [actions, onUpdateNode]
44001
44236
  );
44002
- const viewActions = useMemo50(
44237
+ const viewActions = useMemo51(
44003
44238
  () => ({
44004
44239
  ...actions,
44005
44240
  createConversation: handleCreateConversation
@@ -44042,7 +44277,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44042
44277
  t,
44043
44278
  viewModel
44044
44279
  });
44045
- return /* @__PURE__ */ jsx88(AgentGUIMentionServiceBoundary, { service: mentionService, children: /* @__PURE__ */ jsx88(
44280
+ return /* @__PURE__ */ jsx89(AgentGUIMentionServiceBoundary, { service: mentionService, children: /* @__PURE__ */ jsx89(
44046
44281
  WorkspaceNodeWindow,
44047
44282
  {
44048
44283
  nodeId,
@@ -44059,7 +44294,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44059
44294
  bodyClassName: `${AgentGUINode_styles_default.shell} nodrag size-full min-h-0 min-w-0 !bg-transparent p-0`,
44060
44295
  hideHeader: embedded,
44061
44296
  titleAccessory: /* @__PURE__ */ jsxs63("span", { className: "inline-flex flex-none items-center gap-1", children: [
44062
- /* @__PURE__ */ jsx88(
44297
+ /* @__PURE__ */ jsx89(
44063
44298
  AgentProbeInfoPopover,
44064
44299
  {
44065
44300
  lines: agentProbeLines,
@@ -44069,7 +44304,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44069
44304
  onClose: handleAgentProbeInfoClose
44070
44305
  }
44071
44306
  ),
44072
- /* @__PURE__ */ jsx88(
44307
+ /* @__PURE__ */ jsx89(
44073
44308
  CanvasNodeGhostIconButton,
44074
44309
  {
44075
44310
  "aria-label": isConversationRailCollapsed ? t("agentHost.agentGui.expandConversationRail") : t("agentHost.agentGui.collapseConversationRail"),
@@ -44081,7 +44316,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44081
44316
  event.stopPropagation();
44082
44317
  handleConversationRailToggle();
44083
44318
  },
44084
- children: /* @__PURE__ */ jsx88(
44319
+ children: /* @__PURE__ */ jsx89(
44085
44320
  CanvasNodePanelLinedIcon,
44086
44321
  {
44087
44322
  width: 18,
@@ -44101,11 +44336,13 @@ var AgentGUINode = memo14(function AgentGUINode2({
44101
44336
  onToggleMaximize,
44102
44337
  children: (renderFrame) => {
44103
44338
  const renderedWidth = renderFrame.size.width;
44104
- const isRenderedConversationRailCollapsed = isConversationRailCollapsed || shouldAutoCollapseAgentGUIConversationRail(
44105
- renderedWidth,
44106
- railAutoCollapseWidthPx
44107
- );
44108
- return /* @__PURE__ */ jsx88(
44339
+ const isRenderedConversationRailCollapsed = isConversationRailCollapsed || resolveAgentGUIConversationRailPresentation({
44340
+ autoCollapseMode: frame.conversationRailAutoCollapseMode,
44341
+ containerWidthPx: renderedWidth,
44342
+ conversationRailCollapsed: state.conversationRailCollapsed,
44343
+ conversationRailWidthPx: state.conversationRailWidthPx
44344
+ }).isCollapsed;
44345
+ return /* @__PURE__ */ jsx89(
44109
44346
  AgentGUINodeView,
44110
44347
  {
44111
44348
  viewModel,
@@ -44177,7 +44414,8 @@ var AgentGUINode = memo14(function AgentGUINode2({
44177
44414
  resolveWorkspaceReferenceInitialTarget,
44178
44415
  workspaceFileReferenceCopy,
44179
44416
  workspaceAppIcons,
44180
- referenceProvenanceFilter
44417
+ referenceProvenanceFilters,
44418
+ renderProjectDirectoryPickerHeaderActions
44181
44419
  }
44182
44420
  );
44183
44421
  }
@@ -44186,7 +44424,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44186
44424
  }, areAgentGUINodePropsEqual);
44187
44425
 
44188
44426
  // AgentGUI.tsx
44189
- import { jsx as jsx89 } from "react/jsx-runtime";
44427
+ import { jsx as jsx90 } from "react/jsx-runtime";
44190
44428
  var AgentGUI = memo15(function AgentGUI2({
44191
44429
  agentActivityRuntime,
44192
44430
  agentHostApi,
@@ -44200,16 +44438,16 @@ var AgentGUI = memo15(function AgentGUI2({
44200
44438
  locale,
44201
44439
  ...props
44202
44440
  }) {
44203
- const normalizedAgents = useMemo51(
44441
+ const normalizedAgents = useMemo52(
44204
44442
  () => normalizeAgentGUIAgents(agentDirectory.agents),
44205
44443
  [agentDirectory.agents]
44206
44444
  );
44207
- const agentTargets = useMemo51(
44445
+ const agentTargets = useMemo52(
44208
44446
  () => projectAgentGUIAgentsToTargets(normalizedAgents),
44209
44447
  [normalizedAgents]
44210
44448
  );
44211
44449
  const effectiveHandoffAgentDirectory = handoffAgentDirectory ?? agentDirectory;
44212
- const normalizedHandoffAgents = useMemo51(
44450
+ const normalizedHandoffAgents = useMemo52(
44213
44451
  () => effectiveHandoffAgentDirectory.agents === agentDirectory.agents ? normalizedAgents : normalizeAgentGUIAgents(effectiveHandoffAgentDirectory.agents),
44214
44452
  [
44215
44453
  agentDirectory.agents,
@@ -44217,13 +44455,13 @@ var AgentGUI = memo15(function AgentGUI2({
44217
44455
  normalizedAgents
44218
44456
  ]
44219
44457
  );
44220
- const handoffAgentTargets = useMemo51(
44458
+ const handoffAgentTargets = useMemo52(
44221
44459
  () => normalizedHandoffAgents === normalizedAgents ? agentTargets : projectAgentGUIAgentsToTargets(normalizedHandoffAgents),
44222
44460
  [agentTargets, normalizedAgents, normalizedHandoffAgents]
44223
44461
  );
44224
44462
  const hostCapabilities = props.hostCapabilities;
44225
44463
  const renderSlots = props.renderSlots;
44226
- const nodeHostCapabilities = useMemo51(
44464
+ const nodeHostCapabilities = useMemo52(
44227
44465
  () => ({
44228
44466
  ...hostCapabilities,
44229
44467
  agentTargets,
@@ -44246,7 +44484,7 @@ var AgentGUI = memo15(function AgentGUI2({
44246
44484
  hostCapabilities
44247
44485
  ]
44248
44486
  );
44249
- const nodeRenderSlots = useMemo51(
44487
+ const nodeRenderSlots = useMemo52(
44250
44488
  () => ({
44251
44489
  ...renderSlots,
44252
44490
  providerRailEmpty: renderAgentsEmpty
@@ -44258,21 +44496,21 @@ var AgentGUI = memo15(function AgentGUI2({
44258
44496
  hostCapabilities: nodeHostCapabilities,
44259
44497
  renderSlots: nodeRenderSlots
44260
44498
  };
44261
- const content = /* @__PURE__ */ jsx89(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx89(TuttiModePlanReviewRuntimeProvider, { runtime: tuttiModePlanReviewRuntime, children: /* @__PURE__ */ jsx89(
44499
+ const content = /* @__PURE__ */ jsx90(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx90(TuttiModePlanReviewRuntimeProvider, { runtime: tuttiModePlanReviewRuntime, children: /* @__PURE__ */ jsx90(
44262
44500
  AgentActivityHostProvider,
44263
44501
  {
44264
44502
  agentActivityRuntime,
44265
44503
  agentHostApi,
44266
- children: /* @__PURE__ */ jsx89(
44504
+ children: /* @__PURE__ */ jsx90(
44267
44505
  AgentVisibleErrorPresentationProvider,
44268
44506
  {
44269
44507
  value: props.hostCapabilities?.visibleErrorPresentationOverrides,
44270
- children: /* @__PURE__ */ jsx89(AgentGUINode, { ...nodeProps })
44508
+ children: /* @__PURE__ */ jsx90(AgentGUINode, { ...nodeProps })
44271
44509
  }
44272
44510
  )
44273
44511
  }
44274
44512
  ) }) });
44275
- return /* @__PURE__ */ jsx89(TooltipProvider8, { delayDuration: 120, skipDelayDuration: 0, children: content });
44513
+ return /* @__PURE__ */ jsx90(TooltipProvider8, { delayDuration: 120, skipDelayDuration: 0, children: content });
44276
44514
  });
44277
44515
 
44278
44516
  export {
@@ -44288,4 +44526,4 @@ export {
44288
44526
  AgentHandoffMenu,
44289
44527
  AgentGUI
44290
44528
  };
44291
- //# sourceMappingURL=chunk-KJA3HHUJ.js.map
44529
+ //# sourceMappingURL=chunk-TKECUCUW.js.map