@tutti-os/agent-gui 0.0.214 → 0.0.216

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 (65) hide show
  1. package/README.md +3 -5
  2. package/dist/{AgentRichTextReadonly-TASIMIK4.js → AgentRichTextReadonly-IPPNAAWG.js} +6 -6
  3. package/dist/agent-conversation/index.d.ts +3 -5
  4. package/dist/agent-conversation/index.js +8 -8
  5. package/dist/agent-gui.d.ts +2 -9
  6. package/dist/agent-gui.js +15 -15
  7. package/dist/agent-message-center/index.d.ts +2 -3
  8. package/dist/agent-message-center/index.js +7 -7
  9. package/dist/{agentGuiNodeTypes-BMcpfKTn.d.ts → agentGuiNodeTypes-DW7T--Y8.d.ts} +1 -1
  10. package/dist/app/renderer/agentactivity.css +68 -34
  11. package/dist/{chunk-ISC67YBJ.js → chunk-6A6OVD66.js} +4 -4
  12. package/dist/{chunk-AD2RTSMS.js → chunk-AOK22J62.js} +2 -2
  13. package/dist/{chunk-2HYADTQP.js → chunk-B4TM2HYJ.js} +2 -2
  14. package/dist/{chunk-G2QO6HPB.js → chunk-DLN33TPF.js} +23 -9
  15. package/dist/chunk-DLN33TPF.js.map +1 -0
  16. package/dist/{chunk-XERDRMSF.js → chunk-DTP2OMCE.js} +4 -4
  17. package/dist/{chunk-7SSORDQY.js → chunk-EZRQMJTX.js} +8 -14
  18. package/dist/chunk-EZRQMJTX.js.map +1 -0
  19. package/dist/{chunk-RLFO3NJV.js → chunk-KJA3HHUJ.js} +529 -809
  20. package/dist/chunk-KJA3HHUJ.js.map +1 -0
  21. package/dist/chunk-LQMIEH4C.js +100 -0
  22. package/dist/chunk-LQMIEH4C.js.map +1 -0
  23. package/dist/{chunk-ZNHMWCO4.js → chunk-MOCBHFJ2.js} +5 -74
  24. package/dist/chunk-MOCBHFJ2.js.map +1 -0
  25. package/dist/{chunk-QVLEP54U.js → chunk-P2RIZAK5.js} +3 -3
  26. package/dist/chunk-P2RIZAK5.js.map +1 -0
  27. package/dist/{chunk-YBIT37P5.js → chunk-QFYOJMEQ.js} +2 -2
  28. package/dist/{chunk-BYHNJQYH.js → chunk-UERICUWM.js} +2 -2
  29. package/dist/{chunk-L4E2Y52A.js → chunk-VMPPZO5C.js} +5 -44
  30. package/dist/chunk-VMPPZO5C.js.map +1 -0
  31. package/dist/{chunk-FEUU4YMY.js → chunk-YY5WM3OE.js} +5707 -5727
  32. package/dist/chunk-YY5WM3OE.js.map +1 -0
  33. package/dist/{chunk-LQKLBDBK.js → chunk-Z5UJC4Q3.js} +43 -15
  34. package/dist/chunk-Z5UJC4Q3.js.map +1 -0
  35. package/dist/context-mention-palette/index.js +7 -7
  36. package/dist/{contribution-DfeuQHH6.d.ts → contribution-D4lcOjSU.d.ts} +2 -14
  37. package/dist/i18n/index.d.ts +2 -2
  38. package/dist/i18n/index.js +2 -2
  39. package/dist/index.d.ts +80 -80
  40. package/dist/index.js +15 -15
  41. package/dist/mention-search.js +5 -5
  42. package/dist/workbench/contribution.d.ts +1 -1
  43. package/dist/workbench/contribution.js +3 -5
  44. package/dist/workbench/index.d.ts +2 -2
  45. package/dist/workbench/index.js +3 -5
  46. package/dist/workbench/sessionTitle.js +2 -2
  47. package/dist/{workspaceLinkActions-COfr61YO.d.ts → workspaceLinkActions-CzsbvGmC.d.ts} +78 -71
  48. package/package.json +14 -14
  49. package/dist/chunk-7SSORDQY.js.map +0 -1
  50. package/dist/chunk-FEUU4YMY.js.map +0 -1
  51. package/dist/chunk-G2QO6HPB.js.map +0 -1
  52. package/dist/chunk-L4E2Y52A.js.map +0 -1
  53. package/dist/chunk-LQKLBDBK.js.map +0 -1
  54. package/dist/chunk-QVLEP54U.js.map +0 -1
  55. package/dist/chunk-RLFO3NJV.js.map +0 -1
  56. package/dist/chunk-ZNHMWCO4.js.map +0 -1
  57. package/dist/chunk-ZVYUTXQJ.js +0 -43
  58. package/dist/chunk-ZVYUTXQJ.js.map +0 -1
  59. /package/dist/{AgentRichTextReadonly-TASIMIK4.js.map → AgentRichTextReadonly-IPPNAAWG.js.map} +0 -0
  60. /package/dist/{chunk-ISC67YBJ.js.map → chunk-6A6OVD66.js.map} +0 -0
  61. /package/dist/{chunk-AD2RTSMS.js.map → chunk-AOK22J62.js.map} +0 -0
  62. /package/dist/{chunk-2HYADTQP.js.map → chunk-B4TM2HYJ.js.map} +0 -0
  63. /package/dist/{chunk-XERDRMSF.js.map → chunk-DTP2OMCE.js.map} +0 -0
  64. /package/dist/{chunk-YBIT37P5.js.map → chunk-QFYOJMEQ.js.map} +0 -0
  65. /package/dist/{chunk-BYHNJQYH.js.map → chunk-UERICUWM.js.map} +0 -0
@@ -15,7 +15,7 @@ import {
15
15
  resolveAgentGuiSessionProviderFlatIconUrl,
16
16
  resolveNextAgentGUIConversationRailWidthPx,
17
17
  shouldAutoCollapseAgentGUIConversationRail
18
- } from "./chunk-ZNHMWCO4.js";
18
+ } from "./chunk-MOCBHFJ2.js";
19
19
  import {
20
20
  AGENT_PROVIDERS,
21
21
  AGENT_PROVIDER_LABEL,
@@ -31,7 +31,7 @@ import {
31
31
  resolveAgentGUIFirstUserMessageDisplayPrompt,
32
32
  resolveAgentGUIProviderDisplayLabel,
33
33
  resolveAgentGUIProviderIdentity
34
- } from "./chunk-L4E2Y52A.js";
34
+ } from "./chunk-VMPPZO5C.js";
35
35
  import {
36
36
  resolveAgentGuiWorkbenchProviderLabel
37
37
  } from "./chunk-MGSRWYRN.js";
@@ -70,7 +70,7 @@ import {
70
70
  toLocalShortDateTime,
71
71
  updateAgentComposerDraft,
72
72
  useProjectedAgentConversation
73
- } from "./chunk-FEUU4YMY.js";
73
+ } from "./chunk-YY5WM3OE.js";
74
74
  import {
75
75
  agentRichTextContentToPromptText,
76
76
  createAgentRichTextInputExtensions,
@@ -80,7 +80,7 @@ import {
80
80
  plainTextToAgentRichTextInlineContent,
81
81
  skillDescriptionForDisplay,
82
82
  skillTriggerForPrefix
83
- } from "./chunk-G2QO6HPB.js";
83
+ } from "./chunk-DLN33TPF.js";
84
84
  import {
85
85
  AgentEnvPanelActionProvider
86
86
  } from "./chunk-N4HLBSMJ.js";
@@ -95,7 +95,7 @@ import {
95
95
  AgentFileMentionPalette,
96
96
  agentMentionItemKey,
97
97
  isAgentMentionItemDisabled
98
- } from "./chunk-XERDRMSF.js";
98
+ } from "./chunk-DTP2OMCE.js";
99
99
  import {
100
100
  normalizeAgentGUIAgents,
101
101
  projectAgentGUIAgentsToTargets
@@ -106,7 +106,7 @@ import {
106
106
  DEFAULT_AGENT_MENTION_FILTER,
107
107
  agentGuiScheduler,
108
108
  buildWorkspaceAgentActivityListViewModel
109
- } from "./chunk-ISC67YBJ.js";
109
+ } from "./chunk-6A6OVD66.js";
110
110
  import {
111
111
  AGENT_RICH_TEXT_CARET_ANCHOR,
112
112
  agentComposerFileMentionReferences,
@@ -123,7 +123,7 @@ import {
123
123
  parseMentionItemFromHref,
124
124
  remainingAgentComposerPromptAssetSlots,
125
125
  updateAgentComposerFileMentions
126
- } from "./chunk-2HYADTQP.js";
126
+ } from "./chunk-B4TM2HYJ.js";
127
127
  import {
128
128
  AgentInteractivePromptSurface,
129
129
  PLAN_IMPLEMENTATION_ACTION_FEEDBACK,
@@ -135,7 +135,7 @@ import {
135
135
  normalizePlanIssueBudgetPreset,
136
136
  planImplementationPromptFromPlanTurn,
137
137
  planIssueBudgetPresetsEqual
138
- } from "./chunk-7SSORDQY.js";
138
+ } from "./chunk-EZRQMJTX.js";
139
139
  import {
140
140
  useEngineSelector
141
141
  } from "./chunk-EVQ4JY3N.js";
@@ -145,13 +145,13 @@ import {
145
145
  blobToBase64,
146
146
  normalizeAgentApprovalPurpose,
147
147
  resolveWorkspaceLinkAction
148
- } from "./chunk-LQKLBDBK.js";
148
+ } from "./chunk-Z5UJC4Q3.js";
149
149
  import {
150
150
  AgentTargetPresentationProvider,
151
151
  cn,
152
152
  resolveAgentTargetPresentation,
153
153
  useAgentTargetPresentations
154
- } from "./chunk-ZVYUTXQJ.js";
154
+ } from "./chunk-LQMIEH4C.js";
155
155
  import {
156
156
  resolveWorkspaceAgentSessionSortTimeUnixMs
157
157
  } from "./chunk-YMXYBG7U.js";
@@ -163,7 +163,7 @@ import {
163
163
  useAgentHostApi,
164
164
  useOptionalAgentActivityRuntime,
165
165
  useOptionalAgentHostApi
166
- } from "./chunk-YBIT37P5.js";
166
+ } from "./chunk-QFYOJMEQ.js";
167
167
  import {
168
168
  MANAGED_AGENT_ICON_FALLBACK_URL,
169
169
  MANAGED_AGENT_ICON_URLS,
@@ -173,7 +173,7 @@ import {
173
173
  AgentGuiI18nProvider,
174
174
  translate,
175
175
  useTranslation
176
- } from "./chunk-BYHNJQYH.js";
176
+ } from "./chunk-UERICUWM.js";
177
177
  import {
178
178
  isBetaAgentProvider,
179
179
  normalizeManagedAgentProvider
@@ -6290,7 +6290,6 @@ function useAgentGUIConversationRouting(input) {
6290
6290
  intent,
6291
6291
  openSessionRequest,
6292
6292
  pendingOpenSessionRequestRef,
6293
- previewMode,
6294
6293
  selectConversation,
6295
6294
  sessionEngine,
6296
6295
  setIntent,
@@ -6332,7 +6331,7 @@ function useAgentGUIConversationRouting(input) {
6332
6331
  );
6333
6332
  useEffect3(() => {
6334
6333
  const normalizedOpenSessionRequest = normalizeAgentGUIOpenSessionRequest(openSessionRequest);
6335
- if (!previewMode && normalizedOpenSessionRequest && handledOpenSessionSequenceRef.current !== normalizedOpenSessionRequest.sequence) {
6334
+ if (normalizedOpenSessionRequest && handledOpenSessionSequenceRef.current !== normalizedOpenSessionRequest.sequence) {
6336
6335
  handledOpenSessionSequenceRef.current = normalizedOpenSessionRequest.sequence;
6337
6336
  pendingOpenSessionRequestRef.current = normalizedOpenSessionRequest;
6338
6337
  }
@@ -6390,7 +6389,6 @@ function useAgentGUIConversationRouting(input) {
6390
6389
  hasLoadedConversations,
6391
6390
  intent,
6392
6391
  openSessionRequest,
6393
- previewMode,
6394
6392
  selectConversation,
6395
6393
  transientConversation
6396
6394
  ]);
@@ -7284,9 +7282,6 @@ function useAgentGUIComposerCapabilities(input) {
7284
7282
  }
7285
7283
 
7286
7284
  // agent-gui/agentGuiNode/controller/useAgentGUIComposerOptionsSync.ts
7287
- import {
7288
- selectLatestActivationForSession as selectLatestActivationForSession4
7289
- } from "@tutti-os/agent-activity-core";
7290
7285
  import { useCallback as useCallback8, useEffect as useEffect5, useRef as useRef9 } from "react";
7291
7286
 
7292
7287
  // host/agentHostEventBus.ts
@@ -7449,7 +7444,6 @@ function subscribeCoalesced(type, options, callback) {
7449
7444
 
7450
7445
  // agent-gui/agentGuiNode/controller/useAgentGUIComposerOptionsSync.ts
7451
7446
  function useAgentGUIComposerOptionsSync(input) {
7452
- const previousActiveConversationIdRef = useRef9(input.activeConversationId);
7453
7447
  const previousIsCreatingConversationRef = useRef9(
7454
7448
  input.isCreatingConversation
7455
7449
  );
@@ -7542,7 +7536,6 @@ function useAgentGUIComposerOptionsSync(input) {
7542
7536
  );
7543
7537
  input.loadDraftComposerOptionsRef.current = loadDraftComposerOptions;
7544
7538
  useEffect5(() => {
7545
- if (input.previewMode) return void 0;
7546
7539
  return subscribeCoalesced(
7547
7540
  "agent-model-catalog-invalidated",
7548
7541
  {
@@ -7570,9 +7563,8 @@ function useAgentGUIComposerOptionsSync(input) {
7570
7563
  });
7571
7564
  }
7572
7565
  );
7573
- }, [input.loadSessionState, input.previewMode, loadDraftComposerOptions]);
7566
+ }, [input.loadSessionState, loadDraftComposerOptions]);
7574
7567
  useEffect5(() => {
7575
- if (input.previewMode) return void 0;
7576
7568
  return subscribe("agent-composer-defaults-invalidated", (event) => {
7577
7569
  const selectedTarget = composerTargetDataForConversation({
7578
7570
  activeConversationId: input.activeConversationIdRef.current,
@@ -7599,17 +7591,13 @@ function useAgentGUIComposerOptionsSync(input) {
7599
7591
  }, [
7600
7592
  input.defaultReasoningEffort,
7601
7593
  input.onComposerDefaultsAuthorityReloadedRef,
7602
- input.previewMode,
7603
7594
  loadComposerOptionsForTarget
7604
7595
  ]);
7605
7596
  useEffect5(() => {
7606
- if (input.previewMode) return;
7607
- const conversationActivated = input.activeConversationId !== null && previousActiveConversationIdRef.current !== input.activeConversationId;
7608
7597
  const conversationCreationSettled = previousIsCreatingConversationRef.current && !input.isCreatingConversation;
7609
- previousActiveConversationIdRef.current = input.activeConversationId;
7610
7598
  previousIsCreatingConversationRef.current = input.isCreatingConversation;
7611
7599
  loadDraftComposerOptions(
7612
- conversationActivated || conversationCreationSettled || input.providerComposerOptions?.behavior?.prewarmDraftSession === true && input.isComposerHome ? { force: true } : void 0
7600
+ conversationCreationSettled || input.providerComposerOptions?.behavior?.prewarmDraftSession === true && input.isComposerHome ? { force: true } : void 0
7613
7601
  );
7614
7602
  }, [
7615
7603
  input.activeConversationId,
@@ -7617,13 +7605,12 @@ function useAgentGUIComposerOptionsSync(input) {
7617
7605
  input.composerTargetData.provider,
7618
7606
  input.isComposerHome,
7619
7607
  input.isCreatingConversation,
7620
- input.previewMode,
7621
7608
  input.providerComposerOptions?.behavior?.prewarmDraftSession,
7622
7609
  input.selectedProjectPath,
7623
7610
  loadDraftComposerOptions
7624
7611
  ]);
7625
7612
  useEffect5(() => {
7626
- if (!input.previewMode) {
7613
+ {
7627
7614
  void input.syncConversationListProjection(
7628
7615
  input.dataRef.current.lastActiveAgentSessionId
7629
7616
  );
@@ -7632,28 +7619,8 @@ function useAgentGUIComposerOptionsSync(input) {
7632
7619
  input.conversationFilter,
7633
7620
  input.currentUserId,
7634
7621
  input.data.provider,
7635
- input.previewMode,
7636
7622
  input.syncConversationListProjection
7637
7623
  ]);
7638
- useEffect5(() => {
7639
- if (input.previewMode || !input.activeConversationId) return;
7640
- const activation = selectLatestActivationForSession4(
7641
- input.sessionEngine.getSnapshot(),
7642
- input.activeConversationId
7643
- );
7644
- if (activation?.status === "failed" || activation?.status === "canceled" || activation?.status === "requested" || activation?.status === "uncertain") {
7645
- return;
7646
- }
7647
- input.reloadSelectedConversation(input.activeConversationId, {
7648
- reloadConversations: false,
7649
- reloadDetail: true
7650
- });
7651
- }, [
7652
- input.activeConversationId,
7653
- input.previewMode,
7654
- input.reloadSelectedConversation,
7655
- input.sessionEngine
7656
- ]);
7657
7624
  return { loadDraftComposerOptions, reloadComposerOptionsForTarget };
7658
7625
  }
7659
7626
 
@@ -8756,7 +8723,6 @@ function useAgentGUIConversationHome({
8756
8723
  submitPrefillPrompt,
8757
8724
  persistActiveConversation,
8758
8725
  prefillPromptRequest,
8759
- previewMode,
8760
8726
  reportActiveConversationCleared,
8761
8727
  selectedComposerTargetDataRef,
8762
8728
  selectedProjectPathRef,
@@ -8862,9 +8828,6 @@ function useAgentGUIConversationHome({
8862
8828
  ]
8863
8829
  );
8864
8830
  useEffect6(() => {
8865
- if (previewMode) {
8866
- return;
8867
- }
8868
8831
  const resolvedAppendRequest = resolveAgentGUIComposerAppendRequest({
8869
8832
  activeConversationId: activeConversationIdRef.current,
8870
8833
  draftByScopeKey: draftByScopeKeyRef.current,
@@ -8977,7 +8940,6 @@ function useAgentGUIConversationHome({
8977
8940
  onDataChangeRef,
8978
8941
  persistActiveConversation,
8979
8942
  prefillPromptRequest,
8980
- previewMode,
8981
8943
  selectedComposerTargetDataRef,
8982
8944
  selectedProjectPathRef,
8983
8945
  setConversationFilter,
@@ -9186,7 +9148,7 @@ function useAgentGUIConversationMetadataActions(input) {
9186
9148
  // agent-gui/agentGuiNode/controller/useAgentGUINewConversationActivation.ts
9187
9149
  import {
9188
9150
  isPendingActivationViable as isPendingActivationViable5,
9189
- selectLatestActivationForSession as selectLatestActivationForSession5,
9151
+ selectLatestActivationForSession as selectLatestActivationForSession4,
9190
9152
  selectTuttiModeDraftIsActive,
9191
9153
  selectTuttiModeDraftOrchestrationIntensity
9192
9154
  } from "@tutti-os/agent-activity-core";
@@ -9323,7 +9285,7 @@ function useAgentGUINewConversationActivation(input) {
9323
9285
  };
9324
9286
  const prewarmedSessionId = normalizedInitialContent.length > 0 && snapshotComposerOptions?.behavior?.prewarmDraftSession === true ? draftAgentSessionIdFromComposerOptions(snapshotComposerOptions) : null;
9325
9287
  const agentSessionId = prewarmedSessionId && activation.stateFor(prewarmedSessionId) === "inactive" && isPendingActivationViable5(
9326
- selectLatestActivationForSession5(
9288
+ selectLatestActivationForSession4(
9327
9289
  sessionEngine.getSnapshot(),
9328
9290
  prewarmedSessionId
9329
9291
  )
@@ -9566,16 +9528,12 @@ var QueuedPromptImageLoadOwner = class {
9566
9528
  function useAgentGUIQueueActions({
9567
9529
  activeConversationIdRef,
9568
9530
  agentActivityRuntime,
9569
- previewMode,
9570
9531
  sessionEngine,
9571
9532
  setDraftByScopeKey,
9572
9533
  workspaceId
9573
9534
  }) {
9574
9535
  const removeQueuedPrompt = useCallback17(
9575
9536
  (queuedPromptId) => {
9576
- if (previewMode) {
9577
- return;
9578
- }
9579
9537
  const agentSessionId = activeConversationIdRef.current;
9580
9538
  const normalizedQueuedPromptId = queuedPromptId.trim();
9581
9539
  if (!agentSessionId || !normalizedQueuedPromptId) {
@@ -9598,13 +9556,13 @@ function useAgentGUIQueueActions({
9598
9556
  }
9599
9557
  );
9600
9558
  },
9601
- [activeConversationIdRef, previewMode, sessionEngine]
9559
+ [activeConversationIdRef, sessionEngine]
9602
9560
  );
9603
9561
  const editQueuedPrompt = useCallback17(
9604
9562
  (queuedPromptId) => {
9605
9563
  const agentSessionId = activeConversationIdRef.current;
9606
9564
  const normalizedQueuedPromptId = queuedPromptId.trim();
9607
- if (previewMode || !agentSessionId || !normalizedQueuedPromptId) {
9565
+ if (!agentSessionId || !normalizedQueuedPromptId) {
9608
9566
  return;
9609
9567
  }
9610
9568
  const queuedPrompt = selectEngineQueuedPrompt(
@@ -9689,7 +9647,6 @@ function useAgentGUIQueueActions({
9689
9647
  [
9690
9648
  activeConversationIdRef,
9691
9649
  agentActivityRuntime,
9692
- previewMode,
9693
9650
  sessionEngine,
9694
9651
  setDraftByScopeKey,
9695
9652
  workspaceId
@@ -9699,7 +9656,7 @@ function useAgentGUIQueueActions({
9699
9656
  (queuedPromptId) => {
9700
9657
  const agentSessionId = activeConversationIdRef.current;
9701
9658
  const normalizedQueuedPromptId = queuedPromptId.trim();
9702
- if (previewMode || !agentSessionId || !normalizedQueuedPromptId) {
9659
+ if (!agentSessionId || !normalizedQueuedPromptId) {
9703
9660
  return;
9704
9661
  }
9705
9662
  sessionEngine.dispatch({
@@ -9711,7 +9668,7 @@ function useAgentGUIQueueActions({
9711
9668
  type: "queue/sendNowRequested"
9712
9669
  });
9713
9670
  },
9714
- [activeConversationIdRef, previewMode, sessionEngine]
9671
+ [activeConversationIdRef, sessionEngine]
9715
9672
  );
9716
9673
  return {
9717
9674
  editQueuedPrompt,
@@ -9925,7 +9882,6 @@ function useAgentGUIGoalControlActions(input) {
9925
9882
  );
9926
9883
  const goalControl = useCallback18(
9927
9884
  (action, objective, submittedDraftScopeKey) => {
9928
- if (input.previewMode) return;
9929
9885
  const agentSessionId = input.activeConversationIdRef.current;
9930
9886
  if (!agentSessionId) return;
9931
9887
  const submittedDraftSnapshot = submittedDraftScopeKey ? {
@@ -9976,7 +9932,6 @@ function useAgentGUIGoalControlActions(input) {
9976
9932
  input.agentActivityRuntime,
9977
9933
  input.draftByScopeKeyRef,
9978
9934
  input.isCurrentConversation,
9979
- input.previewMode,
9980
9935
  input.setDetailError,
9981
9936
  input.setDraftByScopeKey,
9982
9937
  input.setGoalClearNoticeSequence,
@@ -10028,7 +9983,6 @@ function useAgentGUISubmitInteractionActions(input) {
10028
9983
  isSessionMarkedNonResumable,
10029
9984
  persistActiveConversation,
10030
9985
  planActionsRef,
10031
- previewMode,
10032
9986
  promptImagesSupported,
10033
9987
  optimisticGoalControl,
10034
9988
  sessionEngine,
@@ -10050,7 +10004,6 @@ function useAgentGUISubmitInteractionActions(input) {
10050
10004
  draftByScopeKeyRef,
10051
10005
  isCurrentConversation,
10052
10006
  optimisticGoalControl,
10053
- previewMode,
10054
10007
  sessionEngine,
10055
10008
  setDetailError,
10056
10009
  setDraftByScopeKey,
@@ -10239,9 +10192,6 @@ function useAgentGUISubmitInteractionActions(input) {
10239
10192
  );
10240
10193
  const submitPrompt = useCallback19(
10241
10194
  (content, displayPrompt, options) => {
10242
- if (previewMode) {
10243
- return;
10244
- }
10245
10195
  const agentSessionId = activeConversationIdRef.current;
10246
10196
  const normalizedContent = normalizeAgentPromptContentBlocks(content);
10247
10197
  if (normalizedContent.length === 0) {
@@ -10367,7 +10317,6 @@ function useAgentGUISubmitInteractionActions(input) {
10367
10317
  agentActivityRuntime,
10368
10318
  beginOptimisticGoalControl,
10369
10319
  conversationListQuery,
10370
- previewMode,
10371
10320
  promptImagesSupported,
10372
10321
  goalControl,
10373
10322
  persistActiveConversation,
@@ -11888,7 +11837,7 @@ function useAgentGUIConversationPresentation(input) {
11888
11837
  input.workspacePath
11889
11838
  ]);
11890
11839
  useEffect9(() => {
11891
- if (input.previewMode || input.agentTargetsLoading || !input.activeConversationId) {
11840
+ if (input.agentTargetsLoading || !input.activeConversationId) {
11892
11841
  return;
11893
11842
  }
11894
11843
  const summary = resolveConversationSummaryById(
@@ -11943,7 +11892,6 @@ function useAgentGUIConversationPresentation(input) {
11943
11892
  input.normalizedExplicitProviderTargets,
11944
11893
  input.normalizedProviderTargets,
11945
11894
  input.onDataChangeRef,
11946
- input.previewMode,
11947
11895
  input.agentTargetsLoading,
11948
11896
  input.shouldUseStaticProviderTargets,
11949
11897
  input.transientConversation
@@ -11976,7 +11924,6 @@ function useAgentGUIProviderHome(input) {
11976
11924
  }, []);
11977
11925
  const resetHomeComposerAgentTargetToDefault = useCallback21(() => {
11978
11926
  const currentInput = inputRef.current;
11979
- if (currentInput.previewMode) return;
11980
11927
  const nextTarget = resolveDefaultHomeComposerTarget();
11981
11928
  if (!nextTarget) return;
11982
11929
  const nextTargetIsExplicit = currentInput.normalizedExplicitProviderTargets.some(
@@ -12023,7 +11970,6 @@ function useAgentGUIProviderHome(input) {
12023
11970
  const selectHomeComposerAgentTarget = useCallback21(
12024
11971
  (selection) => {
12025
11972
  const currentInput = inputRef.current;
12026
- if (currentInput.previewMode) return;
12027
11973
  const nextTarget = resolveAgentGUIAgentTarget({
12028
11974
  agentTargetId: selection.agentTargetId,
12029
11975
  defaultAgentTargetId: currentInput.defaultAgentTargetId,
@@ -12102,7 +12048,7 @@ function useAgentGUIProviderHome(input) {
12102
12048
  []
12103
12049
  );
12104
12050
  useEffect10(() => {
12105
- if (input.previewMode || input.activeConversationId !== null || input.conversationFilter.kind !== "all" || input.homeComposerTargetOverride !== null || agentGUINodeDataHasComposerTarget(input.data) || !input.providerReadinessGates || !input.firstReadyHomeComposerProviderTarget) {
12051
+ if (input.activeConversationId !== null || input.conversationFilter.kind !== "all" || input.homeComposerTargetOverride !== null || agentGUINodeDataHasComposerTarget(input.data) || !input.providerReadinessGates || !input.firstReadyHomeComposerProviderTarget) {
12106
12052
  return;
12107
12053
  }
12108
12054
  const readyTarget = input.firstReadyHomeComposerProviderTarget;
@@ -12129,7 +12075,6 @@ function useAgentGUIProviderHome(input) {
12129
12075
  input.effectiveSelectedProviderTarget,
12130
12076
  input.firstReadyHomeComposerProviderTarget,
12131
12077
  input.homeComposerTargetOverride,
12132
- input.previewMode,
12133
12078
  input.providerReadinessGates,
12134
12079
  selectHomeComposerAgentTarget
12135
12080
  ]);
@@ -12227,38 +12172,6 @@ function useAgentGUIProviderHome(input) {
12227
12172
  },
12228
12173
  [selectHomeComposerAgentTarget]
12229
12174
  );
12230
- useEffect10(() => {
12231
- if (input.previewMode || input.agentTargetsLoading || input.activeConversationId === null || input.conversationFilter.kind !== "agentTarget" || input.isLoadingConversations || !input.conversationListInitialized) {
12232
- return;
12233
- }
12234
- if (input.conversations.some(
12235
- (conversation) => matchesAgentGUIConversationSummaryFilter(
12236
- conversation,
12237
- input.conversationFilter
12238
- )
12239
- )) {
12240
- return;
12241
- }
12242
- const filterAgentTargetId = input.conversationFilter.agentTargetId;
12243
- const target = input.normalizedProviderTargets.find(
12244
- (candidate) => (candidate.agentTargetId?.trim() ?? "") === filterAgentTargetId
12245
- );
12246
- if (!target) return;
12247
- selectHomeComposerAgentTarget({
12248
- provider: target.provider,
12249
- agentTargetId: filterAgentTargetId
12250
- });
12251
- }, [
12252
- input.activeConversationId,
12253
- input.conversationFilter,
12254
- input.conversationListInitialized,
12255
- input.conversations,
12256
- input.isLoadingConversations,
12257
- input.normalizedProviderTargets,
12258
- input.previewMode,
12259
- input.agentTargetsLoading,
12260
- selectHomeComposerAgentTarget
12261
- ]);
12262
12175
  return {
12263
12176
  resetHomeComposerAgentTargetToDefault,
12264
12177
  selectConversationFilterTarget,
@@ -13007,7 +12920,7 @@ import {
13007
12920
  selectEngineSessionReconcile as selectEngineSessionReconcile2,
13008
12921
  selectEngineSessionSettingsUpdate as selectEngineSessionSettingsUpdate2,
13009
12922
  selectEngineSubmitAvailability,
13010
- selectLatestActivationForSession as selectLatestActivationForSession6,
12923
+ selectLatestActivationForSession as selectLatestActivationForSession5,
13011
12924
  selectLatestPendingSubmitForSession,
13012
12925
  selectPendingSubmitsForSession as selectPendingSubmitsForSession4,
13013
12926
  selectSessionHasUnconfirmedSubmit,
@@ -13044,7 +12957,7 @@ function useAgentGUISessionEngineState(input) {
13044
12957
  );
13045
12958
  const activePendingActivation = useEngineSelector(
13046
12959
  sessionEngine,
13047
- (state) => selectLatestActivationForSession6(state, activeConversationId)
12960
+ (state) => selectLatestActivationForSession5(state, activeConversationId)
13048
12961
  );
13049
12962
  const isCreatingConversation = isPendingNewConversationActivation(
13050
12963
  activePendingActivation
@@ -13223,7 +13136,7 @@ var SESSION_SETTINGS_STATUS_SHOWS_OPTIMISTIC_VALUE = {
13223
13136
 
13224
13137
  // agent-gui/agentGuiNode/controller/useAgentGUISessionDetailTransport.ts
13225
13138
  import {
13226
- selectLatestActivationForSession as selectLatestActivationForSession7
13139
+ selectLatestActivationForSession as selectLatestActivationForSession6
13227
13140
  } from "@tutti-os/agent-activity-core";
13228
13141
  import { useCallback as useCallback25, useMemo as useMemo18 } from "react";
13229
13142
 
@@ -13530,7 +13443,7 @@ function useAgentGUISessionDetailTransport(input) {
13530
13443
  windowHasTurnMissingUserPrompt
13531
13444
  },
13532
13445
  reload: {
13533
- getActivationStatus: (agentSessionId) => selectLatestActivationForSession7(
13446
+ getActivationStatus: (agentSessionId) => selectLatestActivationForSession6(
13534
13447
  sessionEngine.getSnapshot(),
13535
13448
  agentSessionId
13536
13449
  )?.status ?? null,
@@ -13806,7 +13719,6 @@ function useAgentGUINodeController({
13806
13719
  composerAppendRequest = null,
13807
13720
  openSessionRequest = null,
13808
13721
  prefillPromptRequest = null,
13809
- previewMode = false,
13810
13722
  onDataChange,
13811
13723
  onRememberComposerDefaults,
13812
13724
  onShowMessage
@@ -14019,7 +13931,6 @@ function useAgentGUINodeController({
14019
13931
  const {
14020
13932
  loadSessionState,
14021
13933
  markSelectedConversationDetailPending,
14022
- reloadSelectedConversation,
14023
13934
  resolveSessionMessages
14024
13935
  } = sessionDetailTransport;
14025
13936
  const storedActiveMessages = activeConversationId ? resolveSessionMessages(activeConversationId) : EMPTY_AGENT_GUI_MESSAGES;
@@ -14094,7 +14005,7 @@ function useAgentGUINodeController({
14094
14005
  }
14095
14006
  };
14096
14007
  void loadUserProjects();
14097
- const unsubscribe = previewMode ? void 0 : api?.subscribe?.(() => {
14008
+ const unsubscribe = api?.subscribe?.(() => {
14098
14009
  setIsUserProjectMutationPending(
14099
14010
  readAgentGUIUserProjectMutationPending(api)
14100
14011
  );
@@ -14106,7 +14017,6 @@ function useAgentGUINodeController({
14106
14017
  };
14107
14018
  }, [
14108
14019
  agentHostApi.userProjects,
14109
- previewMode,
14110
14020
  setIsUserProjectMutationPending,
14111
14021
  setUserProjectsSnapshot
14112
14022
  ]);
@@ -14181,9 +14091,6 @@ function useAgentGUINodeController({
14181
14091
  [agentActivityRuntime, workspaceId]
14182
14092
  );
14183
14093
  useEffect13(() => {
14184
- if (previewMode) {
14185
- return;
14186
- }
14187
14094
  if (!hasLoadedConversations) {
14188
14095
  return;
14189
14096
  }
@@ -14194,12 +14101,7 @@ function useAgentGUINodeController({
14194
14101
  onDataChangeRef.current(
14195
14102
  (current) => current.conversationCount === nextConversationCount ? current : { ...current, conversationCount: nextConversationCount }
14196
14103
  );
14197
- }, [
14198
- conversations.length,
14199
- hasLoadedConversations,
14200
- previewMode,
14201
- transientConversation
14202
- ]);
14104
+ }, [conversations.length, hasLoadedConversations, transientConversation]);
14203
14105
  useAgentGUIConversationRouting({
14204
14106
  activeConversationIdRef,
14205
14107
  conversationListQuery,
@@ -14210,7 +14112,6 @@ function useAgentGUINodeController({
14210
14112
  intent,
14211
14113
  openSessionRequest,
14212
14114
  pendingOpenSessionRequestRef,
14213
- previewMode,
14214
14115
  selectConversation,
14215
14116
  sessionEngine,
14216
14117
  setIntent,
@@ -14234,13 +14135,10 @@ function useAgentGUINodeController({
14234
14135
  loadDraftComposerOptionsRef,
14235
14136
  loadSessionState,
14236
14137
  onComposerDefaultsAuthorityReloadedRef,
14237
- previewMode,
14238
14138
  providerComposerOptions,
14239
- reloadSelectedConversation,
14240
14139
  selectedComposerTargetDataRef,
14241
14140
  selectedProjectPath,
14242
14141
  selectedProjectPathRef,
14243
- sessionEngine,
14244
14142
  syncConversationListProjection,
14245
14143
  workspaceId,
14246
14144
  workspacePath
@@ -14275,7 +14173,6 @@ function useAgentGUINodeController({
14275
14173
  planActionsRef,
14276
14174
  planImplementationTurnIdRef,
14277
14175
  prefillPromptRequest,
14278
- previewMode,
14279
14176
  reportActiveConversationCleared: reportAgentGUIActiveConversationCleared,
14280
14177
  sessionEngine,
14281
14178
  setUserProjectsSnapshot,
@@ -14315,7 +14212,6 @@ function useAgentGUINodeController({
14315
14212
  currentUserId,
14316
14213
  codeFor: activation.codeFor,
14317
14214
  composerTargetProvider: composerTargetData.provider,
14318
- conversationListInitialized: conversationListState?.initialized === true,
14319
14215
  data,
14320
14216
  defaultAgentTargetId,
14321
14217
  errorFor: activation.errorFor,
@@ -14328,7 +14224,6 @@ function useAgentGUINodeController({
14328
14224
  operationActions,
14329
14225
  persistActiveConversation,
14330
14226
  planImplementationTurnIdRef,
14331
- previewMode,
14332
14227
  providerRailMode,
14333
14228
  providerReadinessGates,
14334
14229
  targetConnectionSource,
@@ -14854,7 +14749,7 @@ var EMPTY_STATUS_STORE = {
14854
14749
  };
14855
14750
  var selectStatusSnapshot = (snapshot) => snapshot;
14856
14751
  function useAgentGUIStatus(input) {
14857
- const { agentStatusController, previewMode, t, viewModel } = input;
14752
+ const { agentStatusController, t, viewModel } = input;
14858
14753
  const agentStatusSnapshot = useEngineSelector(
14859
14754
  agentStatusController ?? EMPTY_STATUS_STORE,
14860
14755
  selectStatusSnapshot
@@ -14923,11 +14818,11 @@ function useAgentGUIStatus(input) {
14923
14818
  );
14924
14819
  const requestStatus = useCallback29(
14925
14820
  (request) => {
14926
- if (!previewMode) {
14821
+ {
14927
14822
  agentStatusController?.open(request);
14928
14823
  }
14929
14824
  },
14930
- [agentStatusController, previewMode]
14825
+ [agentStatusController]
14931
14826
  );
14932
14827
  const closeStatus = useCallback29(
14933
14828
  (reason) => {
@@ -15193,7 +15088,6 @@ var styles = {
15193
15088
  conversationStatusGlyph: "agent-gui-node__conversation-status-glyph",
15194
15089
  conversationTime: "agent-gui-node__conversation-time",
15195
15090
  conversationTitle: "agent-gui-node__conversation-title",
15196
- conversationTitleMentionIcon: "agent-gui-node__conversation-title-mention-icon",
15197
15091
  conversationTitleRow: "agent-gui-node__conversation-title-row",
15198
15092
  conversationUnreadLamp: "agent-gui-node__conversation-unread-lamp",
15199
15093
  detail: "agent-gui-node__detail",
@@ -15503,7 +15397,6 @@ import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs7 } from "react/jsx-ru
15503
15397
  function AgentGUIConfigMenu({
15504
15398
  environmentSetupVisible,
15505
15399
  labels,
15506
- previewMode,
15507
15400
  providerScopedActionsVisible,
15508
15401
  slashStatusLimits,
15509
15402
  slashStatusLimitsLoading,
@@ -15543,7 +15436,6 @@ function AgentGUIConfigMenu({
15543
15436
  "aria-label": labels.agentConfig,
15544
15437
  className: `${AgentGUINode_styles_default.providerRailConfigButton} nodrag tsh-desktop-no-drag`,
15545
15438
  title: labels.agentConfig,
15546
- disabled: previewMode,
15547
15439
  children: /* @__PURE__ */ jsx14(SettingsLinedIcon, { "aria-hidden": "true", width: 18, height: 18 })
15548
15440
  }
15549
15441
  ) }),
@@ -15605,7 +15497,7 @@ function AgentGUIConfigMenu({
15605
15497
  capturedAtUnixMs: slashStatusUsageCapturedAtUnixMs,
15606
15498
  isLoading: slashStatusLimitsLoading,
15607
15499
  didFail: slashStatusUsageDidFail,
15608
- disabled: previewMode || !onAgentUsageRefresh,
15500
+ disabled: !onAgentUsageRefresh,
15609
15501
  onRefresh: () => onAgentUsageRefresh?.(),
15610
15502
  labels: {
15611
15503
  justUpdated: labels.slashStatusUsageJustUpdated,
@@ -15637,7 +15529,6 @@ function AgentGUIConfigMenu({
15637
15529
  type: "button",
15638
15530
  "data-testid": "agent-gui-config-env-setup",
15639
15531
  className: "nodrag flex h-7 w-full items-center gap-2 rounded-[6px] px-2 text-[13px] text-[var(--text-primary)] transition-colors hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-focus)] disabled:text-[var(--text-tertiary)] [-webkit-app-region:no-drag]",
15640
- disabled: previewMode,
15641
15532
  onClick: () => onOpenAgentEnvSetup(),
15642
15533
  children: [
15643
15534
  /* @__PURE__ */ jsx14(Wrench, { "aria-hidden": "true", size: 16, strokeWidth: 1.8 }),
@@ -15651,7 +15542,6 @@ function AgentGUIConfigMenu({
15651
15542
  type: "button",
15652
15543
  "data-testid": "agent-gui-config-settings",
15653
15544
  className: "nodrag flex h-7 w-full items-center gap-2 rounded-[6px] px-2 text-[13px] text-[var(--text-primary)] transition-colors hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-focus)] disabled:text-[var(--text-tertiary)] [-webkit-app-region:no-drag]",
15654
- disabled: previewMode,
15655
15545
  onClick: () => onOpenAgentSettings(),
15656
15546
  children: [
15657
15547
  /* @__PURE__ */ jsx14(SettingsLinedIcon, { "aria-hidden": "true", width: 16, height: 16 }),
@@ -18491,7 +18381,6 @@ function useComposerLayout({
18491
18381
  projectMissingProbeEnabled,
18492
18382
  showFileMentionPalette,
18493
18383
  showFloatingCommandMenu,
18494
- previewMode,
18495
18384
  promptTips,
18496
18385
  promptTipsPrefix,
18497
18386
  composerSettings,
@@ -18522,10 +18411,6 @@ function useComposerLayout({
18522
18411
  "--agent-gui-prompt-tip-cycle-duration": `${promptTips.length * PROMPT_TIP_CYCLE_STEP_MS}ms`
18523
18412
  } : void 0;
18524
18413
  useLayoutEffect2(() => {
18525
- if (previewMode) {
18526
- setIsPromptTipOverflowing(false);
18527
- return;
18528
- }
18529
18414
  if (!activePromptTipId) {
18530
18415
  setIsPromptTipOverflowing(false);
18531
18416
  return;
@@ -18546,7 +18431,7 @@ function useComposerLayout({
18546
18431
  return () => {
18547
18432
  resizeObserver?.disconnect();
18548
18433
  };
18549
- }, [activePromptTipId, activePromptTipText, previewMode]);
18434
+ }, [activePromptTipId, activePromptTipText]);
18550
18435
  const measureDockComposer = useCallback33(() => {
18551
18436
  composerMeasurementFrameRef.current = null;
18552
18437
  if (isHeroLayout) {
@@ -20271,7 +20156,6 @@ import { useMemo as useMemo27 } from "react";
20271
20156
  function useComposerProviderTargets(input) {
20272
20157
  const {
20273
20158
  layoutMode,
20274
- previewMode,
20275
20159
  provider,
20276
20160
  agentTargets,
20277
20161
  handoffAgentTargets,
@@ -20327,7 +20211,7 @@ function useComposerProviderTargets(input) {
20327
20211
  const providerSelectDisabled = providerSelectReadonly || composerControlsHardDisabled || inputDisabled;
20328
20212
  const handoffDisabled = composerControlsHardDisabled || inputDisabled || !onHandoffConversation || handoffMenuTargets.length === 0;
20329
20213
  const showProviderSelect = !isHeroLayout && selectedProviderSwitchTarget !== null && providerMenuTargets.length > 0;
20330
- const showHandoffSelect = showProviderSelect && providerSelectReadonly && !previewMode;
20214
+ const showHandoffSelect = showProviderSelect && providerSelectReadonly;
20331
20215
  return {
20332
20216
  composerClassName,
20333
20217
  effectiveHandoffLabel,
@@ -21387,7 +21271,6 @@ function AgentQueuedPromptText({
21387
21271
  className: "agent-gui-node__composer-queued-prompt-markdown",
21388
21272
  inline: true,
21389
21273
  onLinkClick,
21390
- previewMode: true,
21391
21274
  workspaceAppIcons
21392
21275
  }
21393
21276
  )
@@ -21656,7 +21539,6 @@ function AgentQueuedPromptPanel({
21656
21539
 
21657
21540
  // agent-gui/agentGuiNode/AgentComposerSettingsMenus.tsx
21658
21541
  import { Fragment as Fragment9, useEffect as useEffect21, useState as useState17 } from "react";
21659
- import { ChevronDown as ChevronDown3 } from "lucide-react";
21660
21542
  import { prepareWorkspaceUserProjectSelection } from "@tutti-os/workspace-user-project/core";
21661
21543
  import {
21662
21544
  Select,
@@ -22419,7 +22301,6 @@ function ComposerOptionInfoTooltip({
22419
22301
  function AgentModelReasoningDropdown({
22420
22302
  composerSettings,
22421
22303
  disabled = false,
22422
- previewMode = false,
22423
22304
  labels,
22424
22305
  modelHistoryTargetId = null,
22425
22306
  onSettingsChange
@@ -22530,9 +22411,6 @@ function AgentModelReasoningDropdown({
22530
22411
  ]
22531
22412
  }
22532
22413
  );
22533
- if (previewMode) {
22534
- return trigger;
22535
- }
22536
22414
  return /* @__PURE__ */ jsxs18(DropdownMenu3, { open: menuOpen, onOpenChange: handleMenuOpenChange, children: [
22537
22415
  isModelLoading ? (
22538
22416
  // The trigger is disabled while loading, so pointer events never reach
@@ -22605,7 +22483,7 @@ function AgentModelReasoningDropdown({
22605
22483
  options: menu.model.favoriteOptions,
22606
22484
  selectedValue: menu.model.selectedValue,
22607
22485
  descriptionPresentation: modelDescriptionPresentation,
22608
- tooltipsEnabled: !previewMode,
22486
+ tooltipsEnabled: true,
22609
22487
  favoriteValues: favoriteValueSet,
22610
22488
  onToggleFavorite: handleToggleFavoriteModel,
22611
22489
  onSelect: applyModelSelection
@@ -22627,7 +22505,7 @@ function AgentModelReasoningDropdown({
22627
22505
  options: menu.model.recentOptions,
22628
22506
  selectedValue: menu.model.selectedValue,
22629
22507
  descriptionPresentation: modelDescriptionPresentation,
22630
- tooltipsEnabled: !previewMode,
22508
+ tooltipsEnabled: true,
22631
22509
  favoriteValues: favoriteValueSet,
22632
22510
  onToggleFavorite: handleToggleFavoriteModel,
22633
22511
  onSelect: applyModelSelection
@@ -22643,7 +22521,7 @@ function AgentModelReasoningDropdown({
22643
22521
  options: group.options,
22644
22522
  selectedValue: menu.model.selectedValue,
22645
22523
  descriptionPresentation: modelDescriptionPresentation,
22646
- tooltipsEnabled: !previewMode,
22524
+ tooltipsEnabled: true,
22647
22525
  favoriteValues: favoriteValueSet,
22648
22526
  onToggleFavorite: handleToggleFavoriteModel,
22649
22527
  onSelect: applyModelSelection
@@ -22655,7 +22533,7 @@ function AgentModelReasoningDropdown({
22655
22533
  options: menu.model.options,
22656
22534
  selectedValue: menu.model.selectedValue,
22657
22535
  descriptionPresentation: modelDescriptionPresentation,
22658
- tooltipsEnabled: !previewMode,
22536
+ tooltipsEnabled: true,
22659
22537
  favoriteValues: favoriteValueSet,
22660
22538
  onToggleFavorite: handleToggleFavoriteModel,
22661
22539
  onSelect: applyModelSelection
@@ -22693,7 +22571,7 @@ function AgentModelReasoningDropdown({
22693
22571
  {
22694
22572
  options: menu.reasoning.options,
22695
22573
  selectedValue: menu.reasoning.selectedValue,
22696
- tooltipsEnabled: !previewMode,
22574
+ tooltipsEnabled: true,
22697
22575
  onSelect: (value) => applySettingsChange({ reasoningEffort: value })
22698
22576
  }
22699
22577
  )
@@ -22723,7 +22601,7 @@ function AgentModelReasoningDropdown({
22723
22601
  options: menu.speed.options,
22724
22602
  selectedValue: menu.speed.selectedValue,
22725
22603
  descriptionPresentation: "inline",
22726
- tooltipsEnabled: !previewMode,
22604
+ tooltipsEnabled: true,
22727
22605
  onSelect: (value) => applySettingsChange({ speed: value })
22728
22606
  }
22729
22607
  )
@@ -22925,17 +22803,10 @@ function ComposerModelOptionTooltip({
22925
22803
 
22926
22804
  // agent-gui/agentGuiNode/AgentComposerProjectMenu.tsx
22927
22805
  import { useMemo as useMemo28 } from "react";
22928
- import { ChevronDown as ChevronDown2 } from "lucide-react";
22929
22806
  import {
22930
- WorkspaceUserProjectSelect,
22931
- resolveWorkspaceUserProjectSelectLabels
22807
+ WorkspaceUserProjectSelect
22932
22808
  } from "@tutti-os/workspace-user-project/ui";
22933
- import {
22934
- FolderIcon,
22935
- NewWorkspaceLinedIcon,
22936
- NoWorkspaceLinedIcon,
22937
- cn as cn3
22938
- } from "@tutti-os/ui-system";
22809
+ import { NewWorkspaceLinedIcon, cn as cn3 } from "@tutti-os/ui-system";
22939
22810
 
22940
22811
  // agent-gui/agentGuiNode/agentGuiUserProjectSelectionApi.ts
22941
22812
  function createAgentGUIUserProjectSelectionApi({
@@ -22952,16 +22823,11 @@ function createAgentGUIUserProjectSelectionApi({
22952
22823
  }
22953
22824
 
22954
22825
  // agent-gui/agentGuiNode/AgentComposerProjectMenu.tsx
22955
- import { jsx as jsx26, jsxs as jsxs19 } from "react/jsx-runtime";
22956
- function basenameProjectPath(path) {
22957
- const normalized = path.trim().replaceAll("\\", "/").replace(/\/+$/, "");
22958
- return normalized.split("/").filter(Boolean).at(-1) ?? path;
22959
- }
22826
+ import { jsx as jsx26 } from "react/jsx-runtime";
22960
22827
  function AgentProjectDropdown({
22961
22828
  composerSettings,
22962
22829
  labels,
22963
22830
  i18n,
22964
- previewMode = false,
22965
22831
  selectProjectDirectory,
22966
22832
  onDismissAutoFocus,
22967
22833
  onProjectMissingChange,
@@ -22969,55 +22835,13 @@ function AgentProjectDropdown({
22969
22835
  }) {
22970
22836
  "use memo";
22971
22837
  const agentHostApi = useAgentHostApi();
22972
- const resolvedLabels = useMemo28(
22973
- () => resolveWorkspaceUserProjectSelectLabels(i18n, labels),
22974
- [i18n, labels]
22975
- );
22976
22838
  const userProjectApi = useMemo28(
22977
22839
  () => createAgentGUIUserProjectSelectionApi({
22978
22840
  selectProjectDirectory,
22979
- userProjects: previewMode ? null : agentHostApi.userProjects
22841
+ userProjects: agentHostApi.userProjects
22980
22842
  }),
22981
- [agentHostApi.userProjects, previewMode, selectProjectDirectory]
22843
+ [agentHostApi.userProjects, selectProjectDirectory]
22982
22844
  );
22983
- if (previewMode) {
22984
- const selectedPath = composerSettings.selectedProjectPath?.trim() ?? "";
22985
- const triggerLabel = selectedPath ? basenameProjectPath(selectedPath) : resolvedLabels.noProject;
22986
- return /* @__PURE__ */ jsxs19(
22987
- "button",
22988
- {
22989
- type: "button",
22990
- "aria-label": composerSettings.projectLocked ? resolvedLabels.projectLocked : resolvedLabels.projectLabel,
22991
- className: cn3(
22992
- "w-auto max-w-full",
22993
- AgentGUINode_styles_default.composerMenuTrigger,
22994
- "text-[var(--agent-gui-text-tertiary)]"
22995
- ),
22996
- children: [
22997
- /* @__PURE__ */ jsxs19(
22998
- "span",
22999
- {
23000
- className: "workspace-user-project-trigger-label",
23001
- "data-workspace-user-project-trigger-label": "true",
23002
- children: [
23003
- selectedPath ? /* @__PURE__ */ jsx26(FolderIcon, { "aria-hidden": true, className: "shrink-0", size: 15 }) : /* @__PURE__ */ jsx26(
23004
- NoWorkspaceLinedIcon,
23005
- {
23006
- "aria-hidden": true,
23007
- className: "shrink-0",
23008
- "data-agent-project-trigger-no-workspace-icon": "true",
23009
- size: 15
23010
- }
23011
- ),
23012
- /* @__PURE__ */ jsx26("span", { className: "min-w-0 truncate", children: triggerLabel })
23013
- ]
23014
- }
23015
- ),
23016
- /* @__PURE__ */ jsx26(ChevronDown2, { "aria-hidden": "true", className: "shrink-0", size: 16 })
23017
- ]
23018
- }
23019
- );
23020
- }
23021
22845
  return /* @__PURE__ */ jsx26(
23022
22846
  WorkspaceUserProjectSelect,
23023
22847
  {
@@ -23057,13 +22881,12 @@ function AgentProjectDropdown({
23057
22881
  }
23058
22882
 
23059
22883
  // agent-gui/agentGuiNode/AgentComposerSettingsMenus.tsx
23060
- import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
22884
+ import { jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
23061
22885
  function AgentPermissionModeDropdown({
23062
22886
  composerSettings,
23063
22887
  disabled = false,
23064
22888
  disabledTooltip,
23065
22889
  onLinkAction,
23066
- previewMode = false,
23067
22890
  provider,
23068
22891
  labels,
23069
22892
  onSettingsChange
@@ -23105,27 +22928,6 @@ function AgentPermissionModeDropdown({
23105
22928
  }
23106
22929
  commitPermissionModeId(permissionModeId);
23107
22930
  };
23108
- const trigger = /* @__PURE__ */ jsxs20(
23109
- "button",
23110
- {
23111
- type: "button",
23112
- className: cn4(
23113
- "w-auto max-w-full",
23114
- AgentGUINode_styles_default.composerMenuTrigger,
23115
- selectDisabled && "cursor-not-allowed text-[var(--agent-gui-text-tertiary)] opacity-60 hover:text-[var(--agent-gui-text-tertiary)]",
23116
- composerSettings.isSettingsLoading && "animate-pulse"
23117
- ),
23118
- "aria-label": labels.permissionLabel,
23119
- "data-permission-tone": triggerTone,
23120
- children: [
23121
- /* @__PURE__ */ jsx27("span", { className: "flex min-w-0 flex-1 items-center", children: /* @__PURE__ */ jsx27("span", { className: "truncate", children: triggerLabel }) }),
23122
- /* @__PURE__ */ jsx27(ChevronDown3, { "aria-hidden": "true", className: "shrink-0", size: 16 })
23123
- ]
23124
- }
23125
- );
23126
- if (previewMode) {
23127
- return trigger;
23128
- }
23129
22931
  const selectTrigger = /* @__PURE__ */ jsx27(
23130
22932
  SelectTrigger,
23131
22933
  {
@@ -23140,8 +22942,8 @@ function AgentPermissionModeDropdown({
23140
22942
  children: /* @__PURE__ */ jsx27("span", { className: "flex min-w-0 flex-1 items-center", children: /* @__PURE__ */ jsx27("span", { className: "truncate", children: triggerLabel }) })
23141
22943
  }
23142
22944
  );
23143
- return /* @__PURE__ */ jsxs20(Fragment9, { children: [
23144
- /* @__PURE__ */ jsxs20(
22945
+ return /* @__PURE__ */ jsxs19(Fragment9, { children: [
22946
+ /* @__PURE__ */ jsxs19(
23145
22947
  Select,
23146
22948
  {
23147
22949
  open: isSelectOpen,
@@ -23154,7 +22956,7 @@ function AgentPermissionModeDropdown({
23154
22956
  // Disabled controls do not receive pointer events. Target the tooltip
23155
22957
  // at a focusable wrapper span so hover/focus reliably surfaces the
23156
22958
  // reason, both during loading and while a turn is active.
23157
- /* @__PURE__ */ jsx27(TooltipProvider2, { delayDuration: 120, children: /* @__PURE__ */ jsxs20(Tooltip3, { children: [
22959
+ /* @__PURE__ */ jsx27(TooltipProvider2, { delayDuration: 120, children: /* @__PURE__ */ jsxs19(Tooltip3, { children: [
23158
22960
  /* @__PURE__ */ jsx27(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx27("span", { className: "inline-flex", tabIndex: 0, children: selectTrigger }) }),
23159
22961
  /* @__PURE__ */ jsx27(TooltipContent3, { side: "top", children: selectDisabledTooltip })
23160
22962
  ] }) })
@@ -23176,13 +22978,13 @@ function AgentPermissionModeDropdown({
23176
22978
  value: option.value,
23177
22979
  disabled: selectDisabled,
23178
22980
  className: cn4(AgentGUINode_styles_default.composerMenuItem, "group/composer-option"),
23179
- children: /* @__PURE__ */ jsxs20("span", { className: "flex min-w-0 items-center gap-1.5", children: [
22981
+ children: /* @__PURE__ */ jsxs19("span", { className: "flex min-w-0 items-center gap-1.5", children: [
23180
22982
  /* @__PURE__ */ jsx27("span", { className: "min-w-0 truncate", children: option.label }),
23181
22983
  option.description ? /* @__PURE__ */ jsx27(
23182
22984
  ComposerOptionInfoTooltip,
23183
22985
  {
23184
22986
  description: option.description,
23185
- tooltipsEnabled: !previewMode
22987
+ tooltipsEnabled: true
23186
22988
  }
23187
22989
  ) : null
23188
22990
  ] })
@@ -23299,11 +23101,10 @@ function normalizePermissionModeValue(value) {
23299
23101
  // agent-gui/agentGuiNode/AgentFullAccessRestoredWarning.tsx
23300
23102
  import { useState as useState18 } from "react";
23301
23103
  import { ShieldAlert, X as X2 } from "lucide-react";
23302
- import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
23104
+ import { jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
23303
23105
  function AgentFullAccessRestoredWarning({
23304
23106
  isSettingsLoading,
23305
23107
  permissionModeId,
23306
- previewMode,
23307
23108
  provider,
23308
23109
  visibleOnHome
23309
23110
  }) {
@@ -23311,11 +23112,11 @@ function AgentFullAccessRestoredWarning({
23311
23112
  const [dismissedForCurrentOpen, setDismissedForCurrentOpen] = useState18(false);
23312
23113
  const acknowledged = isCodexFullAccessWarningAcknowledged();
23313
23114
  const normalizedPermissionModeId = permissionModeId?.trim() ?? "";
23314
- const shouldShow = visibleOnHome && !previewMode && !isSettingsLoading && !dismissedForCurrentOpen && !acknowledged && requiresFullAccessSafetyConfirmation(provider, normalizedPermissionModeId);
23115
+ const shouldShow = visibleOnHome && !isSettingsLoading && !dismissedForCurrentOpen && !acknowledged && requiresFullAccessSafetyConfirmation(provider, normalizedPermissionModeId);
23315
23116
  if (!shouldShow) {
23316
23117
  return null;
23317
23118
  }
23318
- return /* @__PURE__ */ jsxs21(
23119
+ return /* @__PURE__ */ jsxs20(
23319
23120
  "section",
23320
23121
  {
23321
23122
  className: cn(
@@ -23327,7 +23128,7 @@ function AgentFullAccessRestoredWarning({
23327
23128
  role: "alert",
23328
23129
  children: [
23329
23130
  /* @__PURE__ */ jsx28(ShieldAlert, { "aria-hidden": "true", className: "size-5 shrink-0" }),
23330
- /* @__PURE__ */ jsxs21("div", { className: "min-w-[220px] flex-1", children: [
23131
+ /* @__PURE__ */ jsxs20("div", { className: "min-w-[220px] flex-1", children: [
23331
23132
  /* @__PURE__ */ jsx28("p", { className: "m-0 font-semibold leading-[1.35]", children: t("agentHost.agentGui.fullAccessRestoredWarning.title") }),
23332
23133
  /* @__PURE__ */ jsx28("p", { className: "m-0 mt-0.5 text-[13px] leading-[1.45]", children: t("agentHost.agentGui.fullAccessRestoredWarning.description") })
23333
23134
  ] }),
@@ -23977,7 +23778,7 @@ import {
23977
23778
  } from "react";
23978
23779
  import { createPortal as createPortal2 } from "react-dom";
23979
23780
  import { EditorContent } from "@tiptap/react";
23980
- import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
23781
+ import { jsx as jsx29, jsxs as jsxs21 } from "react/jsx-runtime";
23981
23782
  function AgentRichTextEditorSurface({
23982
23783
  className,
23983
23784
  contextMenu,
@@ -23991,7 +23792,7 @@ function AgentRichTextEditorSurface({
23991
23792
  placeholder,
23992
23793
  t
23993
23794
  }) {
23994
- return /* @__PURE__ */ jsxs22(
23795
+ return /* @__PURE__ */ jsxs21(
23995
23796
  "div",
23996
23797
  {
23997
23798
  className: "relative min-w-0",
@@ -24012,7 +23813,7 @@ function AgentRichTextEditorSurface({
24012
23813
  }
24013
23814
  ),
24014
23815
  contextMenu ? createPortal2(
24015
- /* @__PURE__ */ jsxs22(
23816
+ /* @__PURE__ */ jsxs21(
24016
23817
  "div",
24017
23818
  {
24018
23819
  role: "menu",
@@ -24809,7 +24610,7 @@ import {
24809
24610
  Target,
24810
24611
  ZapIcon as ZapIcon2
24811
24612
  } from "lucide-react";
24812
- import { jsx as jsx32, jsxs as jsxs23 } from "react/jsx-runtime";
24613
+ import { jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
24813
24614
  var paletteStyles = {
24814
24615
  palette: "nodrag agent-gui-node__mention-palette flex h-full min-h-0 flex-col gap-0.5 overflow-y-auto px-1 pb-1 pt-2 [-webkit-app-region:no-drag]",
24815
24616
  option: "nodrag relative flex h-7 min-h-7 w-full min-w-0 cursor-pointer select-none items-center gap-2 overflow-hidden rounded-[6px] border-0 bg-transparent px-2.5 py-0 text-left text-[13px] text-[var(--text-primary)] outline-hidden transition-colors duration-200 [-webkit-app-region:no-drag] hover:bg-[var(--transparency-block)] focus-visible:bg-[var(--transparency-block)] focus-visible:outline-none active:bg-[var(--transparency-active)] data-[highlighted]:bg-[var(--transparency-block)] data-[highlighted]:text-[var(--text-primary)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
@@ -24867,7 +24668,7 @@ function AgentSlashCommandPalette({
24867
24668
  (entry) => entry.type === "capability"
24868
24669
  );
24869
24670
  const capabilityLoadingInsertIndex = capabilitiesLoading ? capabilityLoadingIndex(entries) : -1;
24870
- const capabilityLoadingNode = capabilitiesLoading ? /* @__PURE__ */ jsxs23(Fragment10, { children: [
24671
+ const capabilityLoadingNode = capabilitiesLoading ? /* @__PURE__ */ jsxs22(Fragment10, { children: [
24871
24672
  !hasCapabilityEntries ? /* @__PURE__ */ jsx32(
24872
24673
  "div",
24873
24674
  {
@@ -24879,12 +24680,12 @@ function AgentSlashCommandPalette({
24879
24680
  children: capabilitiesGroupLabel
24880
24681
  }
24881
24682
  ) : null,
24882
- /* @__PURE__ */ jsxs23("div", { "aria-live": "polite", className: paletteStyles.loading, role: "status", children: [
24683
+ /* @__PURE__ */ jsxs22("div", { "aria-live": "polite", className: paletteStyles.loading, role: "status", children: [
24883
24684
  /* @__PURE__ */ jsx32("span", { "aria-hidden": "true", className: paletteStyles.icon, children: /* @__PURE__ */ jsx32(Spinner3, { size: 12, strokeWidth: 2 }) }),
24884
24685
  /* @__PURE__ */ jsx32("span", { children: capabilitiesLoadingLabel })
24885
24686
  ] })
24886
24687
  ] }, "capability-loading") : null;
24887
- return /* @__PURE__ */ jsxs23("div", { className: paletteStyles.palette, role: "listbox", "aria-label": label, children: [
24688
+ return /* @__PURE__ */ jsxs22("div", { className: paletteStyles.palette, role: "listbox", "aria-label": label, children: [
24888
24689
  entries.map((entry, index) => {
24889
24690
  const isHighlighted = index === highlightedIndex;
24890
24691
  const isDisabled = entry.type === "capability" && entry.disabled === true;
@@ -24908,10 +24709,10 @@ function AgentSlashCommandPalette({
24908
24709
  })
24909
24710
  }
24910
24711
  ) : null;
24911
- return /* @__PURE__ */ jsxs23(Fragment10, { children: [
24712
+ return /* @__PURE__ */ jsxs22(Fragment10, { children: [
24912
24713
  capabilityLoadingInsertIndex === index ? capabilityLoadingNode : null,
24913
24714
  groupHeader,
24914
- /* @__PURE__ */ jsxs23(
24715
+ /* @__PURE__ */ jsxs22(
24915
24716
  "div",
24916
24717
  {
24917
24718
  ref: isHighlighted ? highlightedOptionRef : null,
@@ -24946,8 +24747,8 @@ function AgentSlashCommandPalette({
24946
24747
  },
24947
24748
  children: [
24948
24749
  entryIcon ? /* @__PURE__ */ jsx32("span", { "aria-hidden": "true", className: paletteStyles.icon, children: entryIcon }) : null,
24949
- /* @__PURE__ */ jsxs23("span", { className: paletteStyles.copy, children: [
24950
- /* @__PURE__ */ jsxs23("span", { className: paletteStyles.name, children: [
24750
+ /* @__PURE__ */ jsxs22("span", { className: paletteStyles.copy, children: [
24751
+ /* @__PURE__ */ jsxs22("span", { className: paletteStyles.name, children: [
24951
24752
  /* @__PURE__ */ jsx32("span", { className: paletteStyles.primaryName, children: entry.type === "command" ? entry.primaryLabel ?? entry.label : entry.label }),
24952
24753
  entry.type === "command" && entry.secondaryLabel ? /* @__PURE__ */ jsx32("span", { className: paletteStyles.secondaryName, children: entry.secondaryLabel }) : null
24953
24754
  ] }),
@@ -25147,7 +24948,7 @@ var AgentReviewBranchController = class {
25147
24948
  };
25148
24949
 
25149
24950
  // agent-gui/agentGuiNode/AgentReviewPickerPanel.tsx
25150
- import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
24951
+ import { jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
25151
24952
  var reviewMenuStyles = {
25152
24953
  panel: "agent-gui-node__slash-status-panel nodrag flex max-h-[280px] flex-col gap-1 overflow-hidden [-webkit-app-region:no-drag]",
25153
24954
  search: "nodrag h-8 w-full shrink-0 rounded-[6px] border-0 bg-transparent px-2.5 text-[11px] leading-4 text-[var(--text-primary)] placeholder:text-[var(--text-secondary)] focus-visible:outline-none [-webkit-app-region:no-drag]",
@@ -25343,7 +25144,7 @@ function AgentReviewPickerPanel({
25343
25144
  },
25344
25145
  [entries, safeHighlightedIndex, stage, query, onClose, goBackToRoot]
25345
25146
  );
25346
- return /* @__PURE__ */ jsxs24(
25147
+ return /* @__PURE__ */ jsxs23(
25347
25148
  "section",
25348
25149
  {
25349
25150
  className: reviewMenuStyles.panel,
@@ -25395,7 +25196,7 @@ function AgentReviewPickerPanel({
25395
25196
  entry.onSelect();
25396
25197
  }
25397
25198
  },
25398
- children: /* @__PURE__ */ jsxs24("span", { className: reviewMenuStyles.copy, children: [
25199
+ children: /* @__PURE__ */ jsxs23("span", { className: reviewMenuStyles.copy, children: [
25399
25200
  /* @__PURE__ */ jsx33("span", { className: reviewMenuStyles.name, children: entry.label }),
25400
25201
  entry.description ? /* @__PURE__ */ jsx33("span", { className: reviewMenuStyles.description, children: entry.description }) : null
25401
25202
  ] })
@@ -25675,7 +25476,7 @@ var ComposerFloatingMenuSurface = forwardRef4(function ComposerFloatingMenuSurfa
25675
25476
  // agent-gui/agentGuiNode/composer/ComposerDraftAttachments.tsx
25676
25477
  import { FileText, X as X3 } from "lucide-react";
25677
25478
  import { Spinner as Spinner4 } from "@tutti-os/ui-system";
25678
- import { Fragment as Fragment11, jsx as jsx35, jsxs as jsxs25 } from "react/jsx-runtime";
25479
+ import { Fragment as Fragment11, jsx as jsx35, jsxs as jsxs24 } from "react/jsx-runtime";
25679
25480
  function ComposerDraftAttachments({
25680
25481
  draftImages,
25681
25482
  draftLargeTexts: visibleDraftLargeTexts,
@@ -25685,7 +25486,7 @@ function ComposerDraftAttachments({
25685
25486
  onExpandLargeText: expandDraftLargeTextToPrompt
25686
25487
  }) {
25687
25488
  const labels = { removeMention: removeLabel };
25688
- return /* @__PURE__ */ jsxs25(Fragment11, { children: [
25489
+ return /* @__PURE__ */ jsxs24(Fragment11, { children: [
25689
25490
  draftImages.length > 0 ? /* @__PURE__ */ jsx35(
25690
25491
  "div",
25691
25492
  {
@@ -25718,7 +25519,7 @@ function ComposerDraftAttachments({
25718
25519
  "agentHost.agentGui.pastedTextRestoreToComposer"
25719
25520
  );
25720
25521
  const canRestore = !item.uploading && item.text.trim() !== "";
25721
- return /* @__PURE__ */ jsxs25(
25522
+ return /* @__PURE__ */ jsxs24(
25722
25523
  "div",
25723
25524
  {
25724
25525
  className: cn(
@@ -25729,7 +25530,7 @@ function ComposerDraftAttachments({
25729
25530
  "data-uploading": item.uploading ? "true" : void 0,
25730
25531
  "data-upload-error": item.uploadError ? "true" : void 0,
25731
25532
  children: [
25732
- /* @__PURE__ */ jsxs25(
25533
+ /* @__PURE__ */ jsxs24(
25733
25534
  "button",
25734
25535
  {
25735
25536
  type: "button",
@@ -25748,7 +25549,7 @@ function ComposerDraftAttachments({
25748
25549
  testId: "agent-gui-composer-large-text-upload-spinner"
25749
25550
  }
25750
25551
  ) : /* @__PURE__ */ jsx35(FileText, { size: 16, strokeWidth: 2, "aria-hidden": true }) }),
25751
- /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 flex-col", children: [
25552
+ /* @__PURE__ */ jsxs24("span", { className: "flex min-w-0 flex-col", children: [
25752
25553
  /* @__PURE__ */ jsx35("span", { className: "max-w-[200px] truncate font-medium text-[var(--text-primary)]", children: preview }),
25753
25554
  /* @__PURE__ */ jsx35("span", { className: "max-w-[200px] truncate text-[11px] text-[var(--text-tertiary)]", children: attachmentStatus })
25754
25555
  ] })
@@ -25821,7 +25622,7 @@ function resolveHandoffTargetOwnershipLabel(target, labels) {
25821
25622
  }
25822
25623
 
25823
25624
  // agent-gui/agentGuiNode/composer/AgentHandoffMenu.tsx
25824
- import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
25625
+ import { jsx as jsx36, jsxs as jsxs25 } from "react/jsx-runtime";
25825
25626
  function AgentHandoffMenu({
25826
25627
  align = "start",
25827
25628
  contentClassName,
@@ -25872,7 +25673,7 @@ function AgentHandoffMenu({
25872
25673
  "w-auto max-w-[180px] [&>svg:last-child]:hidden",
25873
25674
  triggerClassName
25874
25675
  ),
25875
- children: /* @__PURE__ */ jsxs26("span", { className: "flex min-w-0 items-center gap-1.5", children: [
25676
+ children: /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 items-center gap-1.5", children: [
25876
25677
  /* @__PURE__ */ jsx36(
25877
25678
  AgentComposerHandoffIcon,
25878
25679
  {
@@ -25897,7 +25698,7 @@ function AgentHandoffMenu({
25897
25698
  onPointerDown: isolateTriggerEvents ? (event) => {
25898
25699
  event.stopPropagation();
25899
25700
  } : void 0,
25900
- children: /* @__PURE__ */ jsxs26(
25701
+ children: /* @__PURE__ */ jsxs25(
25901
25702
  Select2,
25902
25703
  {
25903
25704
  value: HANDOFF_SELECT_IDLE_VALUE,
@@ -25912,7 +25713,7 @@ function AgentHandoffMenu({
25912
25713
  onSelect(target);
25913
25714
  },
25914
25715
  children: [
25915
- tooltip ? /* @__PURE__ */ jsx36(TooltipProvider3, { delayDuration: 120, children: /* @__PURE__ */ jsxs26(Tooltip4, { children: [
25716
+ tooltip ? /* @__PURE__ */ jsx36(TooltipProvider3, { delayDuration: 120, children: /* @__PURE__ */ jsxs25(Tooltip4, { children: [
25916
25717
  /* @__PURE__ */ jsx36(TooltipTrigger4, { asChild: true, children: trigger }),
25917
25718
  /* @__PURE__ */ jsx36(TooltipContent4, { side: "top", children: tooltip })
25918
25719
  ] }) }) : trigger,
@@ -25940,8 +25741,8 @@ function AgentHandoffMenu({
25940
25741
  value: target.targetId,
25941
25742
  className: cn(AgentGUINode_styles_default.composerMenuItem, "gap-2 py-1.5"),
25942
25743
  disabled: target.disabled === true,
25943
- children: /* @__PURE__ */ jsxs26("span", { className: "flex min-w-0 items-center gap-2", children: [
25944
- /* @__PURE__ */ jsxs26("span", { className: "relative size-5 shrink-0", children: [
25744
+ children: /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 items-center gap-2", children: [
25745
+ /* @__PURE__ */ jsxs25("span", { className: "relative size-5 shrink-0", children: [
25945
25746
  /* @__PURE__ */ jsx36(
25946
25747
  "img",
25947
25748
  {
@@ -25961,9 +25762,9 @@ function AgentHandoffMenu({
25961
25762
  }
25962
25763
  ) : null
25963
25764
  ] }),
25964
- /* @__PURE__ */ jsxs26("span", { className: "flex min-w-0 flex-col gap-0.5", children: [
25765
+ /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 flex-col gap-0.5", children: [
25965
25766
  /* @__PURE__ */ jsx36("span", { className: "min-w-0 truncate", children: target.label }),
25966
- ownershipLabel || deviceSourceLabel ? /* @__PURE__ */ jsxs26("span", { className: "flex min-w-0 items-center gap-1.5 truncate text-[11px] leading-none text-[var(--agent-gui-text-secondary)]", children: [
25767
+ ownershipLabel || deviceSourceLabel ? /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 items-center gap-1.5 truncate text-[11px] leading-none text-[var(--agent-gui-text-secondary)]", children: [
25967
25768
  ownershipLabel ? /* @__PURE__ */ jsx36("span", { children: ownershipLabel }) : null,
25968
25769
  deviceSourceLabel ? /* @__PURE__ */ jsx36("span", { children: deviceSourceLabel }) : null
25969
25770
  ] }) : null
@@ -25990,7 +25791,7 @@ import { Switch } from "@tutti-os/ui-system";
25990
25791
  var tutti_mode_lined_default = "data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M6.2525%202.29982C7.33705%201.67365%208.42639%201.76315%209.30719%202.19923C10.1442%202.61379%2010.7869%203.32997%2011.1783%204.00782C11.182%204.01417%2011.1865%204.02092%2011.19%204.02735L14.6041%2010.2568C14.8975%209.82469%2015.2682%209.41791%2015.6949%209.08398C16.562%208.40562%2017.7709%207.94423%2019.1187%208.30273C20.0625%208.55396%2020.6751%209.17174%2020.9293%2010.0039C21.1566%2010.7488%2021.0723%2011.5815%2020.9039%2012.3262C20.5644%2013.8263%2019.7411%2015.5353%2019.1636%2016.7519C18.1461%2018.8959%2016.5837%2020.9345%2014.6656%2022.2089C12.7211%2023.5006%2010.3591%2024.0285%207.92243%2022.9794C6.53406%2022.3816%205.11984%2021.3547%204.02984%2020.1396C2.95362%2018.9398%202.08969%2017.4375%202.0191%2015.8711C2.00256%2015.5011%202.07428%2015.0786%202.21051%2014.707C2.32007%2014.4085%202.5283%2013.9859%202.9107%2013.6933L3.08551%2013.5761C3.52116%2013.3247%204.00247%2013.2136%204.47613%2013.2246C4.56029%2012.337%205.00243%2011.5023%205.92926%2010.9639C6.24585%2010.78%206.59784%2010.6401%206.96442%2010.5586L5.18121%207.4707C4.77623%206.76922%204.50913%205.83092%204.59723%204.89063C4.68916%203.91106%205.17521%202.92193%206.2525%202.29982ZM8.4195%203.99219C8.0585%203.81354%207.68432%203.78292%207.2525%204.03223C6.81383%204.28569%206.62867%204.64873%206.58844%205.07715C6.54458%205.54507%206.6839%206.07275%206.91364%206.4707L9.6861%2011.2724C9.72481%2011.3395%209.75419%2011.4094%209.77594%2011.4805C9.83692%2011.5617%209.89457%2011.649%209.94782%2011.7412C10.2235%2012.2194%2010.0596%2012.8313%209.58161%2013.1074C9.10351%2013.3833%208.49163%2013.219%208.2154%2012.7412C8.13017%2012.5938%208.00116%2012.508%207.78668%2012.4844C7.54655%2012.458%207.22985%2012.5217%206.93414%2012.6933C6.47716%2012.9588%206.21644%2013.6335%206.75055%2014.5586C6.80212%2014.648%206.8383%2014.7422%206.85993%2014.8379C6.88169%2014.9341%206.88921%2015.0325%206.88239%2015.1289C6.88011%2015.1605%206.87591%2015.1924%206.87067%2015.2236C6.84953%2015.3497%206.80398%2015.4712%206.73688%2015.581C6.71999%2015.6086%206.70182%2015.6361%206.68219%2015.6621C6.604%2015.7655%206.50365%2015.8558%206.38434%2015.9248C6.26484%2015.9937%206.13622%2016.0358%206.00739%2016.0517C5.97532%2016.0557%205.94278%2016.0567%205.91071%2016.0576C5.78181%2016.0609%205.65369%2016.0399%205.53375%2015.9951C5.50399%2015.984%205.47451%2015.9719%205.44586%2015.958C5.38803%2015.9299%205.33274%2015.8956%205.28082%2015.8564C5.22884%2015.8172%205.17952%2015.7725%205.13531%2015.7226C5.0915%2015.6731%205.05248%2015.618%205.01813%2015.5586C4.84584%2015.2603%204.44767%2015.1429%204.13824%2015.2851C4.12447%2015.3096%204.10645%2015.3465%204.08844%2015.3955C4.06324%2015.4643%204.04336%2015.542%204.03082%2015.6172C4.01804%2015.6941%204.01585%2015.7518%204.01715%2015.7812C4.05847%2016.6992%204.59721%2017.777%205.5191%2018.8046C6.42748%2019.8172%207.60728%2020.6662%208.71344%2021.1425C10.3938%2021.8659%2012.0425%2021.5504%2013.5592%2020.5429C15.1019%2019.5179%2016.4527%2017.7999%2017.357%2015.8945C17.965%2014.6134%2018.6735%2013.1231%2018.9537%2011.8847C19.0949%2011.2602%2019.0921%2010.8367%2019.0162%2010.5879C18.967%2010.4271%2018.8907%2010.3115%2018.6051%2010.2353C18.0234%2010.0806%2017.4482%2010.2526%2016.9283%2010.6592C16.3901%2011.0803%2016.0271%2011.6697%2015.9146%2012.0888C15.8847%2012.2004%2015.8355%2012.3022%2015.774%2012.3926L15.8941%2012.6133C16.1594%2013.0975%2015.9828%2013.7052%2015.4986%2013.9707C15.0144%2014.236%2014.4067%2014.0583%2014.1412%2013.5742L9.44196%204.99903C9.19845%204.58079%208.82143%204.19137%208.4195%203.99219ZM16.8004%201.13869C16.8688%200.95384%2017.1302%200.953926%2017.1988%201.13869L17.5113%201.98243C17.7695%202.67996%2018.3197%203.22996%2019.0172%203.48829L19.8609%203.80079C20.0458%203.86929%2020.0458%204.13073%2019.8609%204.19922L19.0172%204.51172C18.3197%204.77005%2017.7695%205.32004%2017.5113%206.01758L17.1988%206.86133C17.1302%207.04606%2016.8689%207.04614%2016.8004%206.86133L16.4879%206.01758C16.2296%205.31999%2015.6796%204.76998%2014.982%204.51172L14.1383%204.19922C13.9538%204.13058%2013.9538%203.86944%2014.1383%203.80079L14.982%203.48829C15.6796%203.23003%2016.2296%202.68002%2016.4879%201.98243L16.8004%201.13869Z%22%20fill%3D%22black%22%2F%3E%0A%3C%2Fsvg%3E%0A";
25991
25792
 
25992
25793
  // agent-gui/agentGuiNode/composer/ComposerTuttiModeChip.tsx
25993
- import { jsx as jsx37, jsxs as jsxs27 } from "react/jsx-runtime";
25794
+ import { jsx as jsx37, jsxs as jsxs26 } from "react/jsx-runtime";
25994
25795
  function ComposerTuttiModeChip({
25995
25796
  active,
25996
25797
  updating,
@@ -26003,7 +25804,7 @@ function ComposerTuttiModeChip({
26003
25804
  if (!onTuttiModeChange || !tuttiModeSupported) {
26004
25805
  return null;
26005
25806
  }
26006
- return /* @__PURE__ */ jsxs27(
25807
+ return /* @__PURE__ */ jsxs26(
26007
25808
  "label",
26008
25809
  {
26009
25810
  htmlFor: switchId,
@@ -26053,14 +25854,13 @@ function ComposerTuttiModeChip({
26053
25854
  }
26054
25855
 
26055
25856
  // agent-gui/agentGuiNode/composer/ComposerFooter.tsx
26056
- import { Fragment as Fragment12, jsx as jsx38, jsxs as jsxs28 } from "react/jsx-runtime";
25857
+ import { Fragment as Fragment12, jsx as jsx38, jsxs as jsxs27 } from "react/jsx-runtime";
26057
25858
  function ComposerFooter({
26058
25859
  workspaceId: _workspaceId,
26059
25860
  labels,
26060
25861
  provider,
26061
25862
  composerSettings,
26062
25863
  usage,
26063
- previewMode,
26064
25864
  compactSupported,
26065
25865
  hasCompactableContext,
26066
25866
  composerControlsHardDisabled,
@@ -26101,31 +25901,10 @@ function ComposerFooter({
26101
25901
  onClearPlanMode
26102
25902
  }) {
26103
25903
  const showSettingsLoadingPlaceholders = composerSettings.isSettingsLoading;
26104
- return /* @__PURE__ */ jsx38(Fragment12, { children: /* @__PURE__ */ jsxs28("div", { className: AgentGUINode_styles_default.composerFooter, children: [
26105
- /* @__PURE__ */ jsxs28("div", { className: composerStyles.footerGroup, children: [
26106
- /* @__PURE__ */ jsxs28("div", { className: "inline-flex shrink-0 items-center gap-1", children: [
26107
- previewMode ? /* @__PURE__ */ jsx38(TooltipProvider4, { delayDuration: 120, children: /* @__PURE__ */ jsxs28(Tooltip5, { children: [
26108
- /* @__PURE__ */ jsx38(TooltipTrigger5, { asChild: true, children: /* @__PURE__ */ jsx38(
26109
- "button",
26110
- {
26111
- type: "button",
26112
- "aria-label": labels.referenceWorkspaceFiles,
26113
- className: cn(
26114
- AgentGUINode_styles_default.composerMenuTrigger,
26115
- AgentGUINode_styles_default.composerReferenceTrigger,
26116
- "group w-auto justify-center text-[var(--agent-gui-text-secondary)]"
26117
- ),
26118
- children: /* @__PURE__ */ jsx38(
26119
- AgentComposerMaskIcon,
26120
- {
26121
- iconUrl: add_lined_default,
26122
- marker: "reference-add"
26123
- }
26124
- )
26125
- }
26126
- ) }),
26127
- /* @__PURE__ */ jsx38(TooltipContent5, { side: "top", children: labels.addContent })
26128
- ] }) }) : /* @__PURE__ */ jsx38(
25904
+ return /* @__PURE__ */ jsx38(Fragment12, { children: /* @__PURE__ */ jsxs27("div", { className: AgentGUINode_styles_default.composerFooter, children: [
25905
+ /* @__PURE__ */ jsxs27("div", { className: composerStyles.footerGroup, children: [
25906
+ /* @__PURE__ */ jsxs27("div", { className: "inline-flex shrink-0 items-center gap-1", children: [
25907
+ /* @__PURE__ */ jsx38(
26129
25908
  Select3,
26130
25909
  {
26131
25910
  open: false,
@@ -26141,7 +25920,7 @@ function ComposerFooter({
26141
25920
  void handleWorkspaceReferencePicker();
26142
25921
  }
26143
25922
  },
26144
- children: /* @__PURE__ */ jsx38(TooltipProvider4, { delayDuration: 120, children: /* @__PURE__ */ jsxs28(Tooltip5, { children: [
25923
+ children: /* @__PURE__ */ jsx38(TooltipProvider4, { delayDuration: 120, children: /* @__PURE__ */ jsxs27(Tooltip5, { children: [
26145
25924
  /* @__PURE__ */ jsx38(TooltipTrigger5, { asChild: true, children: /* @__PURE__ */ jsx38("span", { className: "inline-flex", children: /* @__PURE__ */ jsx38(
26146
25925
  SelectTrigger3,
26147
25926
  {
@@ -26165,7 +25944,7 @@ function ComposerFooter({
26165
25944
  ] }) })
26166
25945
  }
26167
25946
  ),
26168
- /* @__PURE__ */ jsx38(TooltipProvider4, { delayDuration: 120, children: /* @__PURE__ */ jsxs28(Tooltip5, { children: [
25947
+ /* @__PURE__ */ jsx38(TooltipProvider4, { delayDuration: 120, children: /* @__PURE__ */ jsxs27(Tooltip5, { children: [
26169
25948
  /* @__PURE__ */ jsx38(TooltipTrigger5, { asChild: true, children: /* @__PURE__ */ jsx38(
26170
25949
  "button",
26171
25950
  {
@@ -26231,7 +26010,7 @@ function ComposerFooter({
26231
26010
  onHandoffConversation?.(target);
26232
26011
  }
26233
26012
  }
26234
- ) : showProviderSelect && selectedProviderSwitchTarget ? /* @__PURE__ */ jsxs28(
26013
+ ) : showProviderSelect && selectedProviderSwitchTarget ? /* @__PURE__ */ jsxs27(
26235
26014
  Select3,
26236
26015
  {
26237
26016
  value: selectedProviderSwitchTarget.targetId,
@@ -26260,7 +26039,7 @@ function ComposerFooter({
26260
26039
  AgentGUINode_styles_default.composerProviderSelect,
26261
26040
  "w-auto max-w-[180px]"
26262
26041
  ),
26263
- children: /* @__PURE__ */ jsxs28("span", { className: "flex min-w-0 items-center gap-1.5", children: [
26042
+ children: /* @__PURE__ */ jsxs27("span", { className: "flex min-w-0 items-center gap-1.5", children: [
26264
26043
  /* @__PURE__ */ jsx38(
26265
26044
  "img",
26266
26045
  {
@@ -26286,7 +26065,7 @@ function ComposerFooter({
26286
26065
  {
26287
26066
  value: target.targetId,
26288
26067
  className: cn(AgentGUINode_styles_default.composerMenuItem, "gap-2"),
26289
- children: /* @__PURE__ */ jsxs28("span", { className: "flex min-w-0 items-center gap-1.5", children: [
26068
+ children: /* @__PURE__ */ jsxs27("span", { className: "flex min-w-0 items-center gap-1.5", children: [
26290
26069
  /* @__PURE__ */ jsx38(
26291
26070
  "img",
26292
26071
  {
@@ -26321,7 +26100,7 @@ function ComposerFooter({
26321
26100
  "disabled:cursor-not-allowed disabled:opacity-60"
26322
26101
  ),
26323
26102
  onClick: onClearPlanMode,
26324
- children: /* @__PURE__ */ jsxs28("span", { className: "flex min-w-0 items-center gap-1.5 overflow-hidden", children: [
26103
+ children: /* @__PURE__ */ jsxs27("span", { className: "flex min-w-0 items-center gap-1.5 overflow-hidden", children: [
26325
26104
  /* @__PURE__ */ jsx38(
26326
26105
  RemovableBadgeIcon,
26327
26106
  {
@@ -26346,8 +26125,8 @@ function ComposerFooter({
26346
26125
  "disabled:cursor-not-allowed disabled:opacity-60"
26347
26126
  ),
26348
26127
  onClick: clearGoalModeBadge,
26349
- children: /* @__PURE__ */ jsxs28("span", { className: "flex min-w-0 items-center gap-1.5 overflow-hidden", children: [
26350
- /* @__PURE__ */ jsxs28("span", { className: "relative flex size-3.5 shrink-0 items-center justify-center", children: [
26128
+ children: /* @__PURE__ */ jsxs27("span", { className: "flex min-w-0 items-center gap-1.5 overflow-hidden", children: [
26129
+ /* @__PURE__ */ jsxs27("span", { className: "relative flex size-3.5 shrink-0 items-center justify-center", children: [
26351
26130
  /* @__PURE__ */ jsx38(
26352
26131
  Target2,
26353
26132
  {
@@ -26375,14 +26154,14 @@ function ComposerFooter({
26375
26154
  }
26376
26155
  ) : null
26377
26156
  ] }),
26378
- /* @__PURE__ */ jsxs28("div", { className: composerStyles.footerGroupRight, children: [
26157
+ /* @__PURE__ */ jsxs27("div", { className: composerStyles.footerGroupRight, children: [
26379
26158
  usage && usage.percentUsed !== null ? /* @__PURE__ */ jsx38(
26380
26159
  AgentUsageChip,
26381
26160
  {
26382
26161
  percentUsed: usage.percentUsed,
26383
26162
  usedTokens: usage.usedTokens,
26384
26163
  totalTokens: usage.totalTokens,
26385
- tooltipsEnabled: !previewMode,
26164
+ tooltipsEnabled: true,
26386
26165
  compactSupported: compactSupported ?? false,
26387
26166
  compactDisabled: !hasCompactableContext || composerControlsHardDisabled || isSendingTurn,
26388
26167
  onCompact: () => onSubmit(textPromptContent("/compact")),
@@ -26402,7 +26181,6 @@ function ComposerFooter({
26402
26181
  disabled: permissionModeControlsDisabled,
26403
26182
  disabledTooltip: permissionModeControlsDisabled ? labels.permissionModeChangeUnavailableDuringTurn : void 0,
26404
26183
  onLinkAction,
26405
- previewMode,
26406
26184
  provider,
26407
26185
  labels: {
26408
26186
  permissionLabel: labels.permissionLabel,
@@ -26416,7 +26194,6 @@ function ComposerFooter({
26416
26194
  {
26417
26195
  composerSettings,
26418
26196
  disabled: settingsControlsDisabled,
26419
- previewMode,
26420
26197
  labels: {
26421
26198
  modelLabel: labels.modelLabel,
26422
26199
  modelSelectionLabel: labels.modelSelectionLabel,
@@ -26453,7 +26230,7 @@ function ComposerFooter({
26453
26230
  ] }) });
26454
26231
  }
26455
26232
  function RemovableBadgeIcon({ icon }) {
26456
- return /* @__PURE__ */ jsxs28("span", { className: "relative flex size-3.5 shrink-0 items-center justify-center", children: [
26233
+ return /* @__PURE__ */ jsxs27("span", { className: "relative flex size-3.5 shrink-0 items-center justify-center", children: [
26457
26234
  /* @__PURE__ */ jsx38(
26458
26235
  "span",
26459
26236
  {
@@ -26520,7 +26297,7 @@ import {
26520
26297
  Spinner as Spinner5,
26521
26298
  Textarea
26522
26299
  } from "@tutti-os/ui-system";
26523
- import { jsx as jsx39, jsxs as jsxs29 } from "react/jsx-runtime";
26300
+ import { jsx as jsx39, jsxs as jsxs28 } from "react/jsx-runtime";
26524
26301
  var MAX_TITLE_CODE_POINTS = 80;
26525
26302
  var MAX_CONTENT_BYTES = 32 * 1024;
26526
26303
  function AgentQuickPromptEditorDialog({
@@ -26555,7 +26332,7 @@ function AgentQuickPromptEditorDialog({
26555
26332
  controller.closeDialog();
26556
26333
  }
26557
26334
  },
26558
- children: /* @__PURE__ */ jsxs29(
26335
+ children: /* @__PURE__ */ jsxs28(
26559
26336
  DialogContent,
26560
26337
  {
26561
26338
  className: "sm:max-w-[560px]",
@@ -26570,11 +26347,11 @@ function AgentQuickPromptEditorDialog({
26570
26347
  if (controller.isSaving) event.preventDefault();
26571
26348
  },
26572
26349
  children: [
26573
- /* @__PURE__ */ jsxs29(DialogHeader, { children: [
26350
+ /* @__PURE__ */ jsxs28(DialogHeader, { children: [
26574
26351
  /* @__PURE__ */ jsx39(DialogTitle, { children: source ? labels.editTitle : labels.createTitle }),
26575
26352
  /* @__PURE__ */ jsx39(DialogDescription, { className: "sr-only", children: labels.contentPlaceholder })
26576
26353
  ] }),
26577
- /* @__PURE__ */ jsxs29(
26354
+ /* @__PURE__ */ jsxs28(
26578
26355
  "form",
26579
26356
  {
26580
26357
  className: "flex min-h-0 flex-col gap-3",
@@ -26583,7 +26360,7 @@ function AgentQuickPromptEditorDialog({
26583
26360
  void submit();
26584
26361
  },
26585
26362
  children: [
26586
- /* @__PURE__ */ jsxs29("label", { className: "flex flex-col gap-1.5 text-[13px] text-[var(--text-secondary)]", children: [
26363
+ /* @__PURE__ */ jsxs28("label", { className: "flex flex-col gap-1.5 text-[13px] text-[var(--text-secondary)]", children: [
26587
26364
  /* @__PURE__ */ jsx39("span", { children: labels.titleLabel }),
26588
26365
  /* @__PURE__ */ jsx39(
26589
26366
  Input,
@@ -26601,7 +26378,7 @@ function AgentQuickPromptEditorDialog({
26601
26378
  }
26602
26379
  )
26603
26380
  ] }),
26604
- /* @__PURE__ */ jsxs29("label", { className: "flex min-h-0 flex-col gap-1.5 text-[13px] text-[var(--text-secondary)]", children: [
26381
+ /* @__PURE__ */ jsxs28("label", { className: "flex min-h-0 flex-col gap-1.5 text-[13px] text-[var(--text-secondary)]", children: [
26605
26382
  /* @__PURE__ */ jsx39("span", { children: labels.contentLabel }),
26606
26383
  /* @__PURE__ */ jsx39(
26607
26384
  Textarea,
@@ -26619,7 +26396,7 @@ function AgentQuickPromptEditorDialog({
26619
26396
  )
26620
26397
  ] }),
26621
26398
  validationError || mutationError ? /* @__PURE__ */ jsx39("p", { className: "text-[12px] text-[var(--state-danger)]", role: "alert", children: validationError ?? mutationError }) : null,
26622
- /* @__PURE__ */ jsxs29(DialogFooter, { children: [
26399
+ /* @__PURE__ */ jsxs28(DialogFooter, { children: [
26623
26400
  /* @__PURE__ */ jsx39(
26624
26401
  Button4,
26625
26402
  {
@@ -26643,7 +26420,7 @@ function AgentQuickPromptEditorDialog({
26643
26420
  children: labels.cancel
26644
26421
  }
26645
26422
  ),
26646
- /* @__PURE__ */ jsxs29(Button4, { disabled: controller.isSaving, size: "dialog", type: "submit", children: [
26423
+ /* @__PURE__ */ jsxs28(Button4, { disabled: controller.isSaving, size: "dialog", type: "submit", children: [
26647
26424
  controller.isSaving ? /* @__PURE__ */ jsx39(Spinner5, { size: 14 }) : null,
26648
26425
  controller.isSaving ? labels.saving : labels.save
26649
26426
  ] })
@@ -26692,7 +26469,7 @@ import {
26692
26469
  EditIcon,
26693
26470
  GripVerticalIcon
26694
26471
  } from "@tutti-os/ui-system/icons";
26695
- import { Fragment as Fragment13, jsx as jsx40, jsxs as jsxs30 } from "react/jsx-runtime";
26472
+ import { Fragment as Fragment13, jsx as jsx40, jsxs as jsxs29 } from "react/jsx-runtime";
26696
26473
  function AgentQuickPromptRow({
26697
26474
  handleRef,
26698
26475
  isSorting,
@@ -26711,16 +26488,16 @@ function AgentQuickPromptRow({
26711
26488
  const editAction = usePrimaryPointerAction(onEdit);
26712
26489
  const deleteAction = usePrimaryPointerAction(onDelete);
26713
26490
  const actionRevealClass = "opacity-100 transition-opacity [@media(hover:hover)]:opacity-0 [@media(hover:hover)]:group-hover/quick-prompt-row:opacity-100 group-has-[:focus-visible]/quick-prompt-row:opacity-100 focus-visible:opacity-100";
26714
- const promptContent = /* @__PURE__ */ jsxs30("span", { className: "flex min-w-0 flex-col items-start gap-0.5", children: [
26491
+ const promptContent = /* @__PURE__ */ jsxs29("span", { className: "flex min-w-0 flex-col items-start gap-0.5", children: [
26715
26492
  /* @__PURE__ */ jsx40("span", { className: "w-full truncate font-medium text-[var(--text-primary)]", children: prompt.title }),
26716
26493
  /* @__PURE__ */ jsx40("span", { className: "line-clamp-2 w-full text-[12px] leading-[1.35] text-[var(--text-secondary)]", children: prompt.content })
26717
26494
  ] });
26718
- return /* @__PURE__ */ jsxs30("div", { className: "group/quick-prompt-row flex min-w-0 items-start gap-1 rounded-md hover:bg-[var(--transparency-hover)]", children: [
26495
+ return /* @__PURE__ */ jsxs29("div", { className: "group/quick-prompt-row flex min-w-0 items-start gap-1 rounded-md hover:bg-[var(--transparency-hover)]", children: [
26719
26496
  showReorderHandle ? /* @__PURE__ */ jsx40(
26720
26497
  "div",
26721
26498
  {
26722
26499
  className: `mt-1.5 flex size-6 shrink-0 items-center justify-center ${reorderDisabled ? "cursor-not-allowed" : ""}`,
26723
- children: /* @__PURE__ */ jsxs30(Tooltip6, { children: [
26500
+ children: /* @__PURE__ */ jsxs29(Tooltip6, { children: [
26724
26501
  /* @__PURE__ */ jsx40(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx40(SortableItemHandle, { asChild: true, disabled: reorderDisabled, children: /* @__PURE__ */ jsx40(
26725
26502
  BareIconButton,
26726
26503
  {
@@ -26754,8 +26531,8 @@ function AgentQuickPromptRow({
26754
26531
  children: promptContent
26755
26532
  }
26756
26533
  ),
26757
- !isSorting ? /* @__PURE__ */ jsxs30(Fragment13, { children: [
26758
- /* @__PURE__ */ jsxs30(Tooltip6, { children: [
26534
+ !isSorting ? /* @__PURE__ */ jsxs29(Fragment13, { children: [
26535
+ /* @__PURE__ */ jsxs29(Tooltip6, { children: [
26759
26536
  /* @__PURE__ */ jsx40(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx40(
26760
26537
  BareIconButton,
26761
26538
  {
@@ -26770,7 +26547,7 @@ function AgentQuickPromptRow({
26770
26547
  ) }),
26771
26548
  /* @__PURE__ */ jsx40(TooltipContent6, { side: "top", children: labels.edit })
26772
26549
  ] }),
26773
- /* @__PURE__ */ jsxs30(Tooltip6, { children: [
26550
+ /* @__PURE__ */ jsxs29(Tooltip6, { children: [
26774
26551
  /* @__PURE__ */ jsx40(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx40(
26775
26552
  BareIconButton,
26776
26553
  {
@@ -26932,7 +26709,7 @@ function AgentQuickPromptList({
26932
26709
  }
26933
26710
 
26934
26711
  // agent-gui/agentGuiNode/composer/quickPrompts/AgentQuickPromptPopover.tsx
26935
- import { Fragment as Fragment14, jsx as jsx42, jsxs as jsxs31 } from "react/jsx-runtime";
26712
+ import { Fragment as Fragment14, jsx as jsx42, jsxs as jsxs30 } from "react/jsx-runtime";
26936
26713
  function AgentQuickPromptPopover({
26937
26714
  controller,
26938
26715
  disabled
@@ -26991,8 +26768,8 @@ function AgentQuickPromptPopover({
26991
26768
  controller.openCreate({ title: template.title, content: template.content });
26992
26769
  };
26993
26770
  const isTemplateView = view === "templates";
26994
- return /* @__PURE__ */ jsxs31(Fragment14, { children: [
26995
- /* @__PURE__ */ jsxs31(
26771
+ return /* @__PURE__ */ jsxs30(Fragment14, { children: [
26772
+ /* @__PURE__ */ jsxs30(
26996
26773
  Popover3,
26997
26774
  {
26998
26775
  modal: false,
@@ -27005,8 +26782,8 @@ function AgentQuickPromptPopover({
27005
26782
  controller.setPopoverOpen(open);
27006
26783
  },
27007
26784
  children: [
27008
- /* @__PURE__ */ jsx42(TooltipProvider5, { delayDuration: 120, children: /* @__PURE__ */ jsxs31(Tooltip7, { children: [
27009
- /* @__PURE__ */ jsx42(TooltipTrigger7, { asChild: true, children: /* @__PURE__ */ jsx42("span", { className: "inline-flex shrink-0", children: /* @__PURE__ */ jsx42(PopoverTrigger2, { asChild: true, children: /* @__PURE__ */ jsxs31(
26785
+ /* @__PURE__ */ jsx42(TooltipProvider5, { delayDuration: 120, children: /* @__PURE__ */ jsxs30(Tooltip7, { children: [
26786
+ /* @__PURE__ */ jsx42(TooltipTrigger7, { asChild: true, children: /* @__PURE__ */ jsx42("span", { className: "inline-flex shrink-0", children: /* @__PURE__ */ jsx42(PopoverTrigger2, { asChild: true, children: /* @__PURE__ */ jsxs30(
27010
26787
  Button6,
27011
26788
  {
27012
26789
  "aria-label": labels.triggerTooltip,
@@ -27022,7 +26799,7 @@ function AgentQuickPromptPopover({
27022
26799
  ) }) }) }),
27023
26800
  /* @__PURE__ */ jsx42(TooltipContent7, { side: "top", children: labels.triggerTooltip })
27024
26801
  ] }) }),
27025
- /* @__PURE__ */ jsxs31(
26802
+ /* @__PURE__ */ jsxs30(
27026
26803
  PopoverContent3,
27027
26804
  {
27028
26805
  "aria-labelledby": titleId,
@@ -27047,7 +26824,7 @@ function AgentQuickPromptPopover({
27047
26824
  preserveExternalFocusRef.current = false;
27048
26825
  },
27049
26826
  children: [
27050
- /* @__PURE__ */ jsxs31("div", { className: "flex shrink-0 items-center justify-between gap-2 border-b border-[var(--border-1)] px-3 py-2.5", children: [
26827
+ /* @__PURE__ */ jsxs30("div", { className: "flex shrink-0 items-center justify-between gap-2 border-b border-[var(--border-1)] px-3 py-2.5", children: [
27051
26828
  /* @__PURE__ */ jsx42(
27052
26829
  "h2",
27053
26830
  {
@@ -27056,7 +26833,7 @@ function AgentQuickPromptPopover({
27056
26833
  children: isTemplateView ? labels.recommendedTemplatesTitle : labels.title
27057
26834
  }
27058
26835
  ),
27059
- isTemplateView ? /* @__PURE__ */ jsxs31(
26836
+ isTemplateView ? /* @__PURE__ */ jsxs30(
27060
26837
  Button6,
27061
26838
  {
27062
26839
  size: "sm",
@@ -27068,7 +26845,7 @@ function AgentQuickPromptPopover({
27068
26845
  labels.returnToPrompts
27069
26846
  ]
27070
26847
  }
27071
- ) : /* @__PURE__ */ jsx42("div", { className: "flex items-center gap-1", children: isSorting ? /* @__PURE__ */ jsxs31(
26848
+ ) : /* @__PURE__ */ jsx42("div", { className: "flex items-center gap-1", children: isSorting ? /* @__PURE__ */ jsxs30(
27072
26849
  Button6,
27073
26850
  {
27074
26851
  disabled: controller.isInteractionLocked,
@@ -27081,8 +26858,8 @@ function AgentQuickPromptPopover({
27081
26858
  labels.finishSorting
27082
26859
  ]
27083
26860
  }
27084
- ) : /* @__PURE__ */ jsxs31(Fragment14, { children: [
27085
- /* @__PURE__ */ jsxs31(
26861
+ ) : /* @__PURE__ */ jsxs30(Fragment14, { children: [
26862
+ /* @__PURE__ */ jsxs30(
27086
26863
  Button6,
27087
26864
  {
27088
26865
  disabled: controller.isInteractionLocked || !controller.showReorderHandles,
@@ -27096,7 +26873,7 @@ function AgentQuickPromptPopover({
27096
26873
  ]
27097
26874
  }
27098
26875
  ),
27099
- /* @__PURE__ */ jsxs31(
26876
+ /* @__PURE__ */ jsxs30(
27100
26877
  Button6,
27101
26878
  {
27102
26879
  disabled: controller.isInteractionLocked,
@@ -27123,7 +26900,7 @@ function AgentQuickPromptPopover({
27123
26900
  )
27124
26901
  ] }) })
27125
26902
  ] }),
27126
- !isTemplateView ? /* @__PURE__ */ jsxs31("div", { className: "relative shrink-0 px-3 py-2.5", children: [
26903
+ !isTemplateView ? /* @__PURE__ */ jsxs30("div", { className: "relative shrink-0 px-3 py-2.5", children: [
27127
26904
  /* @__PURE__ */ jsx42(
27128
26905
  SearchIcon,
27129
26906
  {
@@ -27150,7 +26927,7 @@ function AgentQuickPromptPopover({
27150
26927
  }
27151
26928
  )
27152
26929
  ] }) : null,
27153
- !isTemplateView && snapshot.status === "error" && snapshot.prompts.length > 0 ? /* @__PURE__ */ jsxs31(
26930
+ !isTemplateView && snapshot.status === "error" && snapshot.prompts.length > 0 ? /* @__PURE__ */ jsxs30(
27154
26931
  "div",
27155
26932
  {
27156
26933
  className: "flex shrink-0 items-center justify-between gap-2 px-3 pb-2 text-[12px] text-[var(--state-danger)]",
@@ -27170,7 +26947,7 @@ function AgentQuickPromptPopover({
27170
26947
  ]
27171
26948
  }
27172
26949
  ) : null,
27173
- !isTemplateView && controller.reorderError ? /* @__PURE__ */ jsxs31(
26950
+ !isTemplateView && controller.reorderError ? /* @__PURE__ */ jsxs30(
27174
26951
  "div",
27175
26952
  {
27176
26953
  className: "flex shrink-0 items-center justify-between gap-2 px-3 pb-2 text-[12px] text-[var(--state-danger)]",
@@ -27236,7 +27013,7 @@ function AgentQuickPromptPopover({
27236
27013
  onSelect: requestTemplate,
27237
27014
  selectionRequestedOnPointerDownRef: templateRequestedOnPointerDownRef
27238
27015
  }
27239
- ) : controller.filteredPrompts.length === 0 ? /* @__PURE__ */ jsx42(PromptState, { label: labels.noResults }) : /* @__PURE__ */ jsxs31("div", { className: "flex flex-col gap-0.5", children: [
27016
+ ) : controller.filteredPrompts.length === 0 ? /* @__PURE__ */ jsx42(PromptState, { label: labels.noResults }) : /* @__PURE__ */ jsxs30("div", { className: "flex flex-col gap-0.5", children: [
27240
27017
  /* @__PURE__ */ jsx42(
27241
27018
  AgentQuickPromptList,
27242
27019
  {
@@ -27284,7 +27061,7 @@ function AgentQuickPromptPopover({
27284
27061
  confirmBusy: controller.isDeleting,
27285
27062
  confirmLabel: controller.isDeleting ? labels.deleting : labels.deleteConfirm,
27286
27063
  description: controller.promptToDelete ? labels.deleteDescription(controller.promptToDelete.title) : void 0,
27287
- footer: /* @__PURE__ */ jsxs31(DialogFooter2, { children: [
27064
+ footer: /* @__PURE__ */ jsxs30(DialogFooter2, { children: [
27288
27065
  /* @__PURE__ */ jsx42(
27289
27066
  Button6,
27290
27067
  {
@@ -27326,12 +27103,12 @@ function RecommendedTemplateList({
27326
27103
  onSelect,
27327
27104
  selectionRequestedOnPointerDownRef
27328
27105
  }) {
27329
- return /* @__PURE__ */ jsxs31("section", { className: "flex flex-col gap-1 px-1 pt-2", children: [
27330
- /* @__PURE__ */ jsxs31("div", { className: "px-2 pb-1", children: [
27106
+ return /* @__PURE__ */ jsxs30("section", { className: "flex flex-col gap-1 px-1 pt-2", children: [
27107
+ /* @__PURE__ */ jsxs30("div", { className: "px-2 pb-1", children: [
27331
27108
  /* @__PURE__ */ jsx42("h3", { className: "text-[13px] font-medium text-[var(--text-primary)]", children: labels.recommendedTemplatesTitle }),
27332
27109
  /* @__PURE__ */ jsx42("p", { className: "pt-0.5 text-[12px] leading-[1.35] text-[var(--text-secondary)]", children: labels.recommendedTemplatesDescription })
27333
27110
  ] }),
27334
- labels.recommendedTemplates.map((template, index) => /* @__PURE__ */ jsxs31(
27111
+ labels.recommendedTemplates.map((template, index) => /* @__PURE__ */ jsxs30(
27335
27112
  Button6,
27336
27113
  {
27337
27114
  ref: index === 0 ? firstTemplateRef : void 0,
@@ -27353,11 +27130,11 @@ function RecommendedTemplateList({
27353
27130
  onSelect(template);
27354
27131
  },
27355
27132
  children: [
27356
- /* @__PURE__ */ jsxs31("span", { className: "flex min-w-0 flex-col items-start gap-0.5", children: [
27133
+ /* @__PURE__ */ jsxs30("span", { className: "flex min-w-0 flex-col items-start gap-0.5", children: [
27357
27134
  /* @__PURE__ */ jsx42("span", { className: "w-full truncate font-medium text-[var(--text-primary)]", children: template.title }),
27358
27135
  /* @__PURE__ */ jsx42("span", { className: "line-clamp-2 w-full text-[12px] leading-[1.35] text-[var(--text-secondary)]", children: template.description })
27359
27136
  ] }),
27360
- /* @__PURE__ */ jsxs31("span", { className: "flex shrink-0 items-center gap-1 text-[12px] text-[var(--text-secondary)]", children: [
27137
+ /* @__PURE__ */ jsxs30("span", { className: "flex shrink-0 items-center gap-1 text-[12px] text-[var(--text-secondary)]", children: [
27361
27138
  labels.useTemplate,
27362
27139
  /* @__PURE__ */ jsx42(ArrowRightIcon, { "data-icon": "inline-end" })
27363
27140
  ] })
@@ -27372,7 +27149,7 @@ function TemplateEntry({
27372
27149
  disabled,
27373
27150
  label
27374
27151
  }) {
27375
- return /* @__PURE__ */ jsxs31(
27152
+ return /* @__PURE__ */ jsxs30(
27376
27153
  Button6,
27377
27154
  {
27378
27155
  ...action,
@@ -27410,7 +27187,7 @@ function PromptState({
27410
27187
  icon,
27411
27188
  label
27412
27189
  }) {
27413
- return /* @__PURE__ */ jsxs31("div", { className: "flex min-h-[180px] flex-col items-center justify-center gap-2 px-4 text-center text-[13px] text-[var(--text-secondary)]", children: [
27190
+ return /* @__PURE__ */ jsxs30("div", { className: "flex min-h-[180px] flex-col items-center justify-center gap-2 px-4 text-center text-[13px] text-[var(--text-secondary)]", children: [
27414
27191
  icon,
27415
27192
  /* @__PURE__ */ jsx42("span", { children: label }),
27416
27193
  action
@@ -27418,7 +27195,7 @@ function PromptState({
27418
27195
  }
27419
27196
 
27420
27197
  // agent-gui/agentGuiNode/composer/AgentComposerView.tsx
27421
- import { jsx as jsx43, jsxs as jsxs32 } from "react/jsx-runtime";
27198
+ import { jsx as jsx43, jsxs as jsxs31 } from "react/jsx-runtime";
27422
27199
  function AgentComposerView(input) {
27423
27200
  const {
27424
27201
  provider,
@@ -27435,7 +27212,6 @@ function AgentComposerView(input) {
27435
27212
  workspaceAppIcons = EMPTY_WORKSPACE_APP_ICONS,
27436
27213
  activePromptKeyboardShortcutsEnabled = true,
27437
27214
  promptImagesSupported = true,
27438
- previewMode = false,
27439
27215
  layoutMode = "dock",
27440
27216
  providerSelectLabel = "",
27441
27217
  labels,
@@ -27538,7 +27314,7 @@ function AgentComposerView(input) {
27538
27314
  visibleActivePrompt,
27539
27315
  visibleDraftLargeTexts
27540
27316
  } = input.presentation;
27541
- return /* @__PURE__ */ jsxs32(
27317
+ return /* @__PURE__ */ jsxs31(
27542
27318
  "form",
27543
27319
  {
27544
27320
  ref: input.composerRef,
@@ -27560,7 +27336,6 @@ function AgentComposerView(input) {
27560
27336
  embedded: true,
27561
27337
  edgeGlow: true,
27562
27338
  keyboardShortcuts: activePromptKeyboardShortcutsEnabled,
27563
- previewMode,
27564
27339
  isSubmitting: isSubmittingPrompt,
27565
27340
  onSubmit: submitInteractivePromptAndDismiss,
27566
27341
  labels: {
@@ -27631,12 +27406,11 @@ function AgentComposerView(input) {
27631
27406
  {
27632
27407
  isSettingsLoading: composerSettings.isSettingsLoading,
27633
27408
  permissionModeId: composerSettings.selectedPermissionModeValue ?? composerSettings.draftSettings.permissionModeId,
27634
- previewMode,
27635
27409
  provider,
27636
27410
  visibleOnHome: isHeroLayout
27637
27411
  }
27638
27412
  ),
27639
- /* @__PURE__ */ jsxs32(
27413
+ /* @__PURE__ */ jsxs31(
27640
27414
  "div",
27641
27415
  {
27642
27416
  className: cn(
@@ -27657,7 +27431,7 @@ function AgentComposerView(input) {
27657
27431
  description: labels.projectMissingDescription
27658
27432
  }
27659
27433
  ) : null,
27660
- /* @__PURE__ */ jsxs32(
27434
+ /* @__PURE__ */ jsxs31(
27661
27435
  "div",
27662
27436
  {
27663
27437
  ref: input.inputShellRef,
@@ -27667,14 +27441,14 @@ function AgentComposerView(input) {
27667
27441
  title: inputDisabled && disabledReasonText ? disabledReasonText : void 0,
27668
27442
  style: inputShellStyle,
27669
27443
  children: [
27670
- /* @__PURE__ */ jsxs32(
27444
+ /* @__PURE__ */ jsxs31(
27671
27445
  Popover4,
27672
27446
  {
27673
27447
  open: input.showFileMentionPalette,
27674
27448
  onOpenChange: input.setIsPaletteOpen,
27675
27449
  modal: false,
27676
27450
  children: [
27677
- /* @__PURE__ */ jsx43(PopoverAnchor2, { asChild: true, children: /* @__PURE__ */ jsxs32(
27451
+ /* @__PURE__ */ jsx43(PopoverAnchor2, { asChild: true, children: /* @__PURE__ */ jsxs31(
27678
27452
  "div",
27679
27453
  {
27680
27454
  ref: input.promptInputAreaRef,
@@ -27697,7 +27471,7 @@ function AgentComposerView(input) {
27697
27471
  onExpandLargeText: expandDraftLargeTextToPrompt
27698
27472
  }
27699
27473
  ),
27700
- /* @__PURE__ */ jsxs32(
27474
+ /* @__PURE__ */ jsxs31(
27701
27475
  "div",
27702
27476
  {
27703
27477
  className: cn(
@@ -27909,7 +27683,6 @@ function AgentComposerView(input) {
27909
27683
  provider,
27910
27684
  composerSettings,
27911
27685
  usage,
27912
- previewMode,
27913
27686
  compactSupported,
27914
27687
  hasCompactableContext,
27915
27688
  composerControlsHardDisabled,
@@ -27959,7 +27732,7 @@ function AgentComposerView(input) {
27959
27732
  ]
27960
27733
  }
27961
27734
  ),
27962
- showProjectRow ? /* @__PURE__ */ jsxs32(
27735
+ showProjectRow ? /* @__PURE__ */ jsxs31(
27963
27736
  "div",
27964
27737
  {
27965
27738
  className: AgentGUINode_styles_default.composerProjectRow,
@@ -27970,7 +27743,6 @@ function AgentComposerView(input) {
27970
27743
  {
27971
27744
  composerSettings,
27972
27745
  i18n: workspaceUserProjectI18n,
27973
- previewMode,
27974
27746
  labels: {
27975
27747
  projectLocked: labels.projectLocked,
27976
27748
  projectMissingDescription: labels.projectMissingDescription
@@ -27986,7 +27758,7 @@ function AgentComposerView(input) {
27986
27758
  {
27987
27759
  className: AgentGUINode_styles_default.composerPromptTips,
27988
27760
  "data-testid": "agent-gui-prompt-tips",
27989
- children: !previewMode && input.isPromptTipOverflowing && promptTipNode ? /* @__PURE__ */ jsx43(TooltipProvider6, { delayDuration: 0, children: /* @__PURE__ */ jsxs32(Tooltip8, { children: [
27761
+ children: input.isPromptTipOverflowing && promptTipNode ? /* @__PURE__ */ jsx43(TooltipProvider6, { delayDuration: 0, children: /* @__PURE__ */ jsxs31(Tooltip8, { children: [
27990
27762
  /* @__PURE__ */ jsx43(TooltipTrigger8, { asChild: true, children: promptTipNode }),
27991
27763
  /* @__PURE__ */ jsx43(
27992
27764
  TooltipContent8,
@@ -28409,7 +28181,9 @@ function useScopedProjectMissingState(scopeKey) {
28409
28181
  if (identityRef.current !== identity) {
28410
28182
  return;
28411
28183
  }
28412
- setResult({ identity, isMissing });
28184
+ setResult(
28185
+ (current) => current.identity === identity && current.isMissing === isMissing ? current : { identity, isMissing }
28186
+ );
28413
28187
  },
28414
28188
  [identity]
28415
28189
  );
@@ -28528,7 +28302,6 @@ function AgentComposer(props) {
28528
28302
  projectMissingProbeEnabled = true,
28529
28303
  uiLanguage = "en",
28530
28304
  isActive = true,
28531
- previewMode = false,
28532
28305
  workspaceReferencePickerOpen = false,
28533
28306
  promptImagesSupported = true,
28534
28307
  canGoalControl = true,
@@ -28620,13 +28393,13 @@ function AgentComposer(props) {
28620
28393
  goalDraftObjective ?? draftPrompt
28621
28394
  );
28622
28395
  const [fileMentionSuggestion, setFileMentionSuggestion] = useState28(null);
28623
- const [isSelectedProjectMissing, setIsSelectedProjectMissing] = useScopedProjectMissingState(draftScopeKey);
28396
+ const selectedProjectPath = composerSettings.selectedProjectPath?.trim() ?? "";
28397
+ const [isSelectedProjectMissing, setIsSelectedProjectMissing] = useScopedProjectMissingState(selectedProjectPath);
28624
28398
  const [isSlashStatusPanelOpen, setIsSlashStatusPanelOpen] = useState28(false);
28625
28399
  const slashStatusAgentSessionId = slashStatus?.agentSessionId ?? null;
28626
28400
  const previousSlashStatusAgentSessionIdRef = useRef42(
28627
28401
  slashStatusAgentSessionId
28628
28402
  );
28629
- const selectedProjectPath = composerSettings.selectedProjectPath?.trim() ?? "";
28630
28403
  const selectedProjectSectionKey = composerSettings.selectedProjectSectionKey?.trim() ?? "";
28631
28404
  const previousSelectedProjectPathRef = useRef42(selectedProjectPath);
28632
28405
  const composerRef = useRef42(null);
@@ -28889,7 +28662,6 @@ function AgentComposer(props) {
28889
28662
  );
28890
28663
  const providerState = useComposerProviderTargets({
28891
28664
  layoutMode,
28892
- previewMode,
28893
28665
  provider,
28894
28666
  agentTargets,
28895
28667
  handoffAgentTargets,
@@ -28948,7 +28720,6 @@ function AgentComposer(props) {
28948
28720
  projectMissingProbeEnabled,
28949
28721
  showFileMentionPalette,
28950
28722
  showFloatingCommandMenu,
28951
- previewMode,
28952
28723
  promptTips,
28953
28724
  promptTipsPrefix: labels.promptTipsPrefix,
28954
28725
  composerSettings,
@@ -29050,7 +28821,7 @@ function AgentComposer(props) {
29050
28821
  // agent-gui/agentGuiNode/AgentHomeSuggestions.tsx
29051
28822
  import { memo, useState as useState29 } from "react";
29052
28823
  import { ArrowLeftRight, Code, Compass, Import, Pencil, X as X5 } from "lucide-react";
29053
- import { jsx as jsx45, jsxs as jsxs33 } from "react/jsx-runtime";
28824
+ import { jsx as jsx45, jsxs as jsxs32 } from "react/jsx-runtime";
29054
28825
  function TuttiIcon(props) {
29055
28826
  return /* @__PURE__ */ jsx45(
29056
28827
  "svg",
@@ -29167,12 +28938,12 @@ var AgentHomeSuggestions = memo(function AgentHomeSuggestions2({
29167
28938
  (category) => category.id === activeCategoryId && !isDirectCategory(category)
29168
28939
  ) ?? null;
29169
28940
  const ActiveCategoryIcon = activeCategory?.icon ? CATEGORY_ICON[activeCategory.icon] : null;
29170
- return /* @__PURE__ */ jsxs33("div", { className: AgentGUINode_styles_default.emptyHeroSuggestions, children: [
28941
+ return /* @__PURE__ */ jsxs32("div", { className: AgentGUINode_styles_default.emptyHeroSuggestions, children: [
29171
28942
  /* @__PURE__ */ jsx45("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsChips, children: categories.map((category) => {
29172
28943
  const Icon = category.icon ? CATEGORY_ICON[category.icon] : null;
29173
28944
  const direct = isDirectCategory(category);
29174
28945
  const isActive = !direct && category.id === activeCategory?.id;
29175
- return /* @__PURE__ */ jsxs33(
28946
+ return /* @__PURE__ */ jsxs32(
29176
28947
  "button",
29177
28948
  {
29178
28949
  type: "button",
@@ -29206,9 +28977,9 @@ var AgentHomeSuggestions = memo(function AgentHomeSuggestions2({
29206
28977
  category.id
29207
28978
  );
29208
28979
  }) }),
29209
- activeCategory ? /* @__PURE__ */ jsxs33("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCard, children: [
29210
- /* @__PURE__ */ jsxs33("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCardHeader, children: [
29211
- /* @__PURE__ */ jsxs33("span", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCardTitle, children: [
28980
+ activeCategory ? /* @__PURE__ */ jsxs32("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCard, children: [
28981
+ /* @__PURE__ */ jsxs32("div", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCardHeader, children: [
28982
+ /* @__PURE__ */ jsxs32("span", { className: AgentGUINode_styles_default.emptyHeroSuggestionsCardTitle, children: [
29212
28983
  ActiveCategoryIcon ? /* @__PURE__ */ jsx45(
29213
28984
  ActiveCategoryIcon,
29214
28985
  {
@@ -29278,7 +29049,7 @@ function createFallbackAgentGUIAgentAvatar(input) {
29278
29049
 
29279
29050
  // agent-gui/agentGuiNode/view/AgentGUIEmptyHeroCarouselStage.tsx
29280
29051
  import { Component as Component3 } from "react";
29281
- import { jsx as jsx46, jsxs as jsxs34 } from "react/jsx-runtime";
29052
+ import { jsx as jsx46, jsxs as jsxs33 } from "react/jsx-runtime";
29282
29053
  var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
29283
29054
  alignmentActive = false;
29284
29055
  animationFrame = null;
@@ -29312,7 +29083,7 @@ var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
29312
29083
  providerSelectLabel
29313
29084
  } = this.props;
29314
29085
  const hasCarousel = items.length > 1;
29315
- return /* @__PURE__ */ jsxs34("div", { ref: this.setStage, className: AgentGUINode_styles_default.emptyHeroCarouselStage, children: [
29086
+ return /* @__PURE__ */ jsxs33("div", { ref: this.setStage, className: AgentGUINode_styles_default.emptyHeroCarouselStage, children: [
29316
29087
  hasCarousel ? /* @__PURE__ */ jsx46("div", { ref: this.setLayer, className: AgentGUINode_styles_default.emptyHeroCarouselLayer, children: /* @__PURE__ */ jsx46(
29317
29088
  AgentGUIHeroAgentCarousel,
29318
29089
  {
@@ -29353,9 +29124,7 @@ var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
29353
29124
  this.syncAlignment();
29354
29125
  }
29355
29126
  canAlign() {
29356
- return Boolean(
29357
- !this.props.previewMode && this.props.items.length > 1 && this.stage && this.layer
29358
- );
29127
+ return Boolean(this.props.items.length > 1 && this.stage && this.layer);
29359
29128
  }
29360
29129
  stopAlignment() {
29361
29130
  this.alignmentActive = false;
@@ -29645,7 +29414,7 @@ function createClientActionId() {
29645
29414
  }
29646
29415
 
29647
29416
  // agent-gui/agentGuiNode/view/AgentTargetSetupGate.tsx
29648
- import { Fragment as Fragment15, jsx as jsx48, jsxs as jsxs35 } from "react/jsx-runtime";
29417
+ import { Fragment as Fragment15, jsx as jsx48, jsxs as jsxs34 } from "react/jsx-runtime";
29649
29418
  function AgentTargetSetupGate({
29650
29419
  children,
29651
29420
  carouselMountedExternally,
@@ -29696,8 +29465,8 @@ function AgentTargetSetupGate({
29696
29465
  const accountDetail = account ? [account.displayName, account.organization].filter(Boolean).join(" \xB7 ") : void 0;
29697
29466
  const setupDescription = setupChecking ? t("agentHost.agentGui.targetSetupChecking") : snapshot?.status === "auth_required" ? t("agentHost.agentGui.targetSetupAuthRequired") : snapshot?.status === "ready" ? t("agentHost.agentGui.targetSetupReady") : t("agentHost.agentGui.targetSetupDescription");
29698
29467
  const authenticationAvailable = snapshot?.status === "auth_required" || snapshot?.status === "ready";
29699
- return /* @__PURE__ */ jsxs35(Fragment15, { children: [
29700
- gateVisible && setupBlocked ? /* @__PURE__ */ jsx48("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs35(
29468
+ return /* @__PURE__ */ jsxs34(Fragment15, { children: [
29469
+ gateVisible && setupBlocked ? /* @__PURE__ */ jsx48("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs34(
29701
29470
  "div",
29702
29471
  {
29703
29472
  className: cn5(AgentGUINode_styles_default.emptyHeroBody, AgentGUINode_styles_default.emptyProviderGate),
@@ -29736,7 +29505,7 @@ function AgentTargetSetupGate({
29736
29505
  provider: providerLabel
29737
29506
  }),
29738
29507
  description: setupDescription,
29739
- footer: /* @__PURE__ */ jsxs35(
29508
+ footer: /* @__PURE__ */ jsxs34(
29740
29509
  Button7,
29741
29510
  {
29742
29511
  size: "dialog",
@@ -29749,13 +29518,13 @@ function AgentTargetSetupGate({
29749
29518
  ]
29750
29519
  }
29751
29520
  ),
29752
- children: /* @__PURE__ */ jsxs35("div", { className: "flex flex-col gap-4", children: [
29521
+ children: /* @__PURE__ */ jsxs34("div", { className: "flex flex-col gap-4", children: [
29753
29522
  /* @__PURE__ */ jsx48("p", { className: "m-0 text-[13px] text-[var(--text-secondary)]", children: statusLabel2 ?? (snapshot?.status === "ready" ? t("agentHost.agentGui.targetSetupComplete", {
29754
29523
  provider: providerLabel
29755
29524
  }) : t("agentHost.agentGui.targetSetupRemaining", {
29756
29525
  provider: providerLabel
29757
29526
  })) }),
29758
- /* @__PURE__ */ jsxs35("ol", { className: "m-0 flex list-none flex-col divide-y divide-[var(--border-1)] p-0", children: [
29527
+ /* @__PURE__ */ jsxs34("ol", { className: "m-0 flex list-none flex-col divide-y divide-[var(--border-1)] p-0", children: [
29759
29528
  /* @__PURE__ */ jsx48(
29760
29529
  SetupTrackRow,
29761
29530
  {
@@ -29805,9 +29574,9 @@ function AgentTargetSetupGate({
29805
29574
  children: authenticatePending ? t("agentHost.agentGui.targetSetupAuthStarting") : snapshot?.status === "ready" ? t("agentHost.agentGui.targetSetupReauthenticate") : t("agentHost.agentGui.targetSetupAuthenticate")
29806
29575
  }
29807
29576
  ) : void 0,
29808
- children: snapshot?.status === "auth_required" && authMethods.length > 0 ? /* @__PURE__ */ jsxs35("label", { className: "mt-2 flex flex-col gap-1 text-[12px] text-[var(--text-secondary)]", children: [
29577
+ children: snapshot?.status === "auth_required" && authMethods.length > 0 ? /* @__PURE__ */ jsxs34("label", { className: "mt-2 flex flex-col gap-1 text-[12px] text-[var(--text-secondary)]", children: [
29809
29578
  t("agentHost.agentGui.targetSetupAuthMethod"),
29810
- /* @__PURE__ */ jsxs35(
29579
+ /* @__PURE__ */ jsxs34(
29811
29580
  Select4,
29812
29581
  {
29813
29582
  value: effectiveAuthMethodId,
@@ -29836,7 +29605,7 @@ function AgentTargetSetupGate({
29836
29605
  }
29837
29606
  )
29838
29607
  ] }),
29839
- failed || snapshot?.status === "failed" || actionFailed ? /* @__PURE__ */ jsxs35("p", { className: "m-0 text-[12px] text-[var(--state-danger)]", children: [
29608
+ failed || snapshot?.status === "failed" || actionFailed ? /* @__PURE__ */ jsxs34("p", { className: "m-0 text-[12px] text-[var(--state-danger)]", children: [
29840
29609
  /* @__PURE__ */ jsx48("span", { className: "block", children: snapshot?.action?.kind === "authenticate" ? t("agentHost.agentGui.targetSetupAuthFailed") : t("agentHost.agentGui.targetSetupFailed") }),
29841
29610
  snapshot?.action?.errorMessage?.trim() ? /* @__PURE__ */ jsx48("span", { className: "mt-1 block break-words text-[var(--text-secondary)]", children: snapshot.action.errorMessage.trim() }) : null
29842
29611
  ] }) : null
@@ -29859,15 +29628,15 @@ function SetupTrackRow({
29859
29628
  status,
29860
29629
  warning = false
29861
29630
  }) {
29862
- return /* @__PURE__ */ jsxs35(
29631
+ return /* @__PURE__ */ jsxs34(
29863
29632
  "li",
29864
29633
  {
29865
29634
  "data-status": status,
29866
29635
  className: `flex items-start gap-2.5 py-3 ${status === "pending" ? "opacity-50" : ""}`,
29867
29636
  children: [
29868
29637
  /* @__PURE__ */ jsx48("span", { className: "mt-0.5 shrink-0", children: /* @__PURE__ */ jsx48(AgentSetupStepIcon, { status, warning }) }),
29869
- /* @__PURE__ */ jsxs35("span", { className: "min-w-0 flex-1", children: [
29870
- /* @__PURE__ */ jsxs35("span", { className: "flex min-w-0 items-baseline gap-2", children: [
29638
+ /* @__PURE__ */ jsxs34("span", { className: "min-w-0 flex-1", children: [
29639
+ /* @__PURE__ */ jsxs34("span", { className: "flex min-w-0 items-baseline gap-2", children: [
29871
29640
  /* @__PURE__ */ jsx48(
29872
29641
  "span",
29873
29642
  {
@@ -29924,7 +29693,7 @@ function targetSetupPhaseLabel(t, phase) {
29924
29693
 
29925
29694
  // agent-gui/agentGuiNode/view/AgentGUIAgentTargetName.tsx
29926
29695
  import { cn as cn6 } from "@tutti-os/ui-system";
29927
- import { Fragment as Fragment16, jsx as jsx49, jsxs as jsxs36 } from "react/jsx-runtime";
29696
+ import { Fragment as Fragment16, jsx as jsx49, jsxs as jsxs35 } from "react/jsx-runtime";
29928
29697
  function projectAgentGUIAgentTargetName(input) {
29929
29698
  const agentLabel = input.target.label.trim();
29930
29699
  const ownerLabel = input.target.ownership === "shared" ? input.target.ownerLabel?.trim() || null : null;
@@ -29950,7 +29719,7 @@ function AgentGUIAgentTargetName({
29950
29719
  {
29951
29720
  className: cn6("flex min-w-0 max-w-full items-baseline", className),
29952
29721
  title: presentation.fullLabel,
29953
- children: presentation.ownerLabel ? /* @__PURE__ */ jsxs36(Fragment16, { children: [
29722
+ children: presentation.ownerLabel ? /* @__PURE__ */ jsxs35(Fragment16, { children: [
29954
29723
  /* @__PURE__ */ jsx49(
29955
29724
  "span",
29956
29725
  {
@@ -29959,7 +29728,7 @@ function AgentGUIAgentTargetName({
29959
29728
  children: presentation.ownerLabel
29960
29729
  }
29961
29730
  ),
29962
- /* @__PURE__ */ jsxs36(
29731
+ /* @__PURE__ */ jsxs35(
29963
29732
  "span",
29964
29733
  {
29965
29734
  className: "shrink-0 whitespace-pre",
@@ -29976,7 +29745,7 @@ function AgentGUIAgentTargetName({
29976
29745
  }
29977
29746
 
29978
29747
  // agent-gui/agentGuiNode/view/AgentGUIEmptyState.tsx
29979
- import { Fragment as Fragment17, jsx as jsx50, jsxs as jsxs37 } from "react/jsx-runtime";
29748
+ import { Fragment as Fragment17, jsx as jsx50, jsxs as jsxs36 } from "react/jsx-runtime";
29980
29749
  function resolveAgentGUIHeroIconUrl2(provider) {
29981
29750
  const normalizedProvider = normalizeManagedAgentProvider(provider);
29982
29751
  return MANAGED_AGENT_ICON_URLS[normalizedProvider] ?? MANAGED_AGENT_ICON_FALLBACK_URL;
@@ -30000,7 +29769,6 @@ var AgentGUIEmptyHomePane = memo2(function AgentGUIEmptyHomePane2({
30000
29769
  agentTargets,
30001
29770
  selectedAgentTarget,
30002
29771
  onProviderSelect,
30003
- previewMode,
30004
29772
  labels,
30005
29773
  ...heroProps
30006
29774
  }) {
@@ -30028,7 +29796,6 @@ var AgentGUIEmptyHomePane = memo2(function AgentGUIEmptyHomePane2({
30028
29796
  activeAgentTargetId: selectedAgentTarget?.agentTargetId ?? selectedAgentTarget?.targetId,
30029
29797
  items: avatarPresentations,
30030
29798
  onProviderSelect,
30031
- previewMode,
30032
29799
  providerSelectLabel: labels.providerSwitchLabel,
30033
29800
  children: /* @__PURE__ */ jsx50(
30034
29801
  AgentTargetSetupGate,
@@ -30105,7 +29872,7 @@ var AgentGUIEmptyHeroPane = memo2(function AgentGUIEmptyHeroPane2({
30105
29872
  const heroIconAnimationKey = heroAvatarPresentations.map(
30106
29873
  (avatar) => `${avatar.agentTargetId}:${avatar.iconUrl}:${avatar.badge?.iconUrl ?? ""}`
30107
29874
  ).join("|");
30108
- return /* @__PURE__ */ jsx50("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs37("div", { className: AgentGUINode_styles_default.emptyHeroBody, children: [
29875
+ return /* @__PURE__ */ jsx50("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs36("div", { className: AgentGUINode_styles_default.emptyHeroBody, children: [
30109
29876
  /* @__PURE__ */ jsx50(
30110
29877
  "div",
30111
29878
  {
@@ -30200,7 +29967,7 @@ var AgentGUIProviderReadinessGatePane = memo2(
30200
29967
  const titleLabel = gate.status === "not_installed" || gate.status === "auth_required" ? emptyLabel : content.title;
30201
29968
  const action = resolveAgentGUIProviderReadinessAction(gate.status);
30202
29969
  const pendingLabel = pendingAction === "install" ? labels.providerGatePendingInstall : pendingAction === "login" ? labels.providerGatePendingLogin : pendingAction === "refresh" ? labels.providerGatePendingRefresh : null;
30203
- return /* @__PURE__ */ jsx50("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs37(
29970
+ return /* @__PURE__ */ jsx50("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs36(
30204
29971
  "div",
30205
29972
  {
30206
29973
  className: cn7(AgentGUINode_styles_default.emptyHeroBody, AgentGUINode_styles_default.emptyProviderGate),
@@ -30322,7 +30089,7 @@ function AgentGUIAgentAvatarVisual({
30322
30089
  imageClassName,
30323
30090
  presentation
30324
30091
  }) {
30325
- return /* @__PURE__ */ jsxs37(
30092
+ return /* @__PURE__ */ jsxs36(
30326
30093
  "span",
30327
30094
  {
30328
30095
  "aria-hidden": "true",
@@ -30368,9 +30135,9 @@ function EmptyHeroTitle({
30368
30135
  const selectedAgentTargetId = selectedAgentTarget?.targetId ?? `local:${selectedAgentTarget?.provider ?? ""}`;
30369
30136
  const canSwitchProvider = agentTargets.length > 1 && selectedAgentTarget && onProviderSelect;
30370
30137
  const providerName = label.slice(providerStart, providerEnd);
30371
- return /* @__PURE__ */ jsxs37(Fragment17, { children: [
30138
+ return /* @__PURE__ */ jsxs36(Fragment17, { children: [
30372
30139
  label.slice(0, providerStart),
30373
- canSwitchProvider ? /* @__PURE__ */ jsxs37(
30140
+ canSwitchProvider ? /* @__PURE__ */ jsxs36(
30374
30141
  Select5,
30375
30142
  {
30376
30143
  value: selectedAgentTargetId,
@@ -30417,7 +30184,7 @@ function EmptyHeroTitle({
30417
30184
  {
30418
30185
  value: target.targetId,
30419
30186
  className: cn7(AgentGUINode_styles_default.composerMenuItem, "gap-2"),
30420
- children: /* @__PURE__ */ jsxs37("span", { className: "flex min-w-0 items-center gap-1.5", children: [
30187
+ children: /* @__PURE__ */ jsxs36("span", { className: "flex min-w-0 items-center gap-1.5", children: [
30421
30188
  /* @__PURE__ */ jsx50(
30422
30189
  "img",
30423
30190
  {
@@ -30472,7 +30239,7 @@ import {
30472
30239
  DialogTitle as DialogTitle2,
30473
30240
  toast as toast3
30474
30241
  } from "@tutti-os/ui-system";
30475
- import { jsx as jsx51, jsxs as jsxs38 } from "react/jsx-runtime";
30242
+ import { jsx as jsx51, jsxs as jsxs37 } from "react/jsx-runtime";
30476
30243
  var AGENT_MANAGER_LONG_PRESS_MOVE_TOLERANCE_PX = 8;
30477
30244
  var AGENT_MANAGER_DROP_HYSTERESIS_PX = 8;
30478
30245
  function AgentGUIProviderManagerDialog({
@@ -30695,7 +30462,7 @@ function AgentGUIProviderManagerDialog({
30695
30462
  };
30696
30463
  const disabledDropBlocked = dragState?.source === "available" && (finalAvailableAgent || running.has(dragState.targetId));
30697
30464
  const disabledDropBlockedByRunning = dragState?.source === "available" && running.has(dragState.targetId);
30698
- return /* @__PURE__ */ jsx51(Dialog2, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs38(
30465
+ return /* @__PURE__ */ jsx51(Dialog2, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs37(
30699
30466
  DialogContent2,
30700
30467
  {
30701
30468
  className: "nodrag tsh-desktop-no-drag flex max-h-[min(680px,calc(100vh-32px))] flex-col gap-0 overflow-hidden p-0 [-webkit-app-region:no-drag] sm:max-w-[520px]",
@@ -30710,17 +30477,17 @@ function AgentGUIProviderManagerDialog({
30710
30477
  setEditing(false);
30711
30478
  },
30712
30479
  children: [
30713
- /* @__PURE__ */ jsxs38(DialogHeader2, { className: "shrink-0 border-b border-[var(--border-1)] px-5 py-4", children: [
30480
+ /* @__PURE__ */ jsxs37(DialogHeader2, { className: "shrink-0 border-b border-[var(--border-1)] px-5 py-4", children: [
30714
30481
  /* @__PURE__ */ jsx51(DialogTitle2, { children: labels.manageAgentsTitle }),
30715
30482
  /* @__PURE__ */ jsx51(DialogDescription2, { children: labels.manageAgentsDescription })
30716
30483
  ] }),
30717
- /* @__PURE__ */ jsxs38(
30484
+ /* @__PURE__ */ jsxs37(
30718
30485
  "div",
30719
30486
  {
30720
30487
  className: "min-h-0 flex-1 overflow-y-auto px-5 py-4",
30721
30488
  onClick: exitEditingFromBlankSpace,
30722
30489
  children: [
30723
- /* @__PURE__ */ jsxs38(
30490
+ /* @__PURE__ */ jsxs37(
30724
30491
  "section",
30725
30492
  {
30726
30493
  "aria-labelledby": "agent-manager-available-heading",
@@ -30749,7 +30516,7 @@ function AgentGUIProviderManagerDialog({
30749
30516
  children: availableTargets.map((target) => {
30750
30517
  const label = target.label.trim() || target.provider;
30751
30518
  const targetRunning = running.has(target.targetId);
30752
- return /* @__PURE__ */ jsxs38(
30519
+ return /* @__PURE__ */ jsxs37(
30753
30520
  "div",
30754
30521
  {
30755
30522
  "aria-label": labels.dragAgentToReorder(label),
@@ -30838,7 +30605,7 @@ function AgentGUIProviderManagerDialog({
30838
30605
  ]
30839
30606
  }
30840
30607
  ),
30841
- /* @__PURE__ */ jsxs38(
30608
+ /* @__PURE__ */ jsxs37(
30842
30609
  "section",
30843
30610
  {
30844
30611
  "aria-labelledby": "agent-manager-disabled-heading",
@@ -30872,7 +30639,7 @@ function AgentGUIProviderManagerDialog({
30872
30639
  role: "list",
30873
30640
  children: disabledTargets.map((target) => {
30874
30641
  const label = target.label.trim() || target.provider;
30875
- return /* @__PURE__ */ jsxs38(
30642
+ return /* @__PURE__ */ jsxs37(
30876
30643
  "div",
30877
30644
  {
30878
30645
  "aria-label": labels.dragAgentToReorder(label),
@@ -31013,7 +30780,7 @@ function useAgentGUIProviderRailPreferences() {
31013
30780
  }
31014
30781
 
31015
30782
  // agent-gui/agentGuiNode/view/AgentGUIProviderRail.tsx
31016
- import { jsx as jsx52, jsxs as jsxs39 } from "react/jsx-runtime";
30783
+ import { jsx as jsx52, jsxs as jsxs38 } from "react/jsx-runtime";
31017
30784
  var agentGUIProviderRailCatalog = [
31018
30785
  ...migratedAgentGUIProviderIdentityCatalog
31019
30786
  ].sort((left, right) => left.target.sortOrder - right.target.sortOrder);
@@ -31086,7 +30853,6 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31086
30853
  labels,
31087
30854
  managerOpen,
31088
30855
  onManagerOpenChange,
31089
- previewMode,
31090
30856
  selectedAgentTarget,
31091
30857
  agentTargets,
31092
30858
  agentTargetsLoading,
@@ -31193,7 +30959,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31193
30959
  }, [setProviderRailDragState]);
31194
30960
  const handleProviderRailDragStart = useCallback50(
31195
30961
  (event, target) => {
31196
- if (previewMode || agentTargetsLoading) {
30962
+ if (agentTargetsLoading) {
31197
30963
  event.preventDefault();
31198
30964
  return;
31199
30965
  }
@@ -31205,11 +30971,11 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31205
30971
  position: null
31206
30972
  });
31207
30973
  },
31208
- [previewMode, agentTargetsLoading, setProviderRailDragState]
30974
+ [agentTargetsLoading, setProviderRailDragState]
31209
30975
  );
31210
30976
  const handleProviderRailDragOver = useCallback50(
31211
30977
  (event, target) => {
31212
- if (previewMode || agentTargetsLoading || !dragState) {
30978
+ if (agentTargetsLoading || !dragState) {
31213
30979
  return;
31214
30980
  }
31215
30981
  event.preventDefault();
@@ -31237,7 +31003,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31237
31003
  position
31238
31004
  });
31239
31005
  },
31240
- [dragState, previewMode, agentTargetsLoading, setProviderRailDragState]
31006
+ [dragState, agentTargetsLoading, setProviderRailDragState]
31241
31007
  );
31242
31008
  const commitProviderRailDragDrop = useCallback50(
31243
31009
  (event) => {
@@ -31247,7 +31013,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31247
31013
  overTargetId: null,
31248
31014
  position: null
31249
31015
  } : null);
31250
- if (previewMode || agentTargetsLoading || !activeDragState) {
31016
+ if (agentTargetsLoading || !activeDragState) {
31251
31017
  clearProviderRailDragState();
31252
31018
  return;
31253
31019
  }
@@ -31309,7 +31075,6 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31309
31075
  clearProviderRailDragState,
31310
31076
  dragState,
31311
31077
  persistProviderRailPreferences,
31312
- previewMode,
31313
31078
  agentTargetsLoading,
31314
31079
  effectiveProviderRailPreferences,
31315
31080
  visibleProviderTiles
@@ -31371,7 +31136,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31371
31136
  const handleProviderRailContainerDragOver = useCallback50(
31372
31137
  (event) => {
31373
31138
  const activeDragState = dragStateRef.current ?? dragState;
31374
- if (!activeDragState || previewMode || agentTargetsLoading) {
31139
+ if (!activeDragState || agentTargetsLoading) {
31375
31140
  return;
31376
31141
  }
31377
31142
  event.preventDefault();
@@ -31410,7 +31175,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31410
31175
  position
31411
31176
  });
31412
31177
  },
31413
- [dragState, previewMode, agentTargetsLoading, setProviderRailDragState]
31178
+ [dragState, agentTargetsLoading, setProviderRailDragState]
31414
31179
  );
31415
31180
  const providerManagerDialog = /* @__PURE__ */ jsx52(
31416
31181
  AgentGUIProviderManagerDialog,
@@ -31426,7 +31191,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31426
31191
  }
31427
31192
  );
31428
31193
  if (providerRailMode === "exact" && !agentTargetsLoading && visibleProviderTiles.length === 0 && renderProviderRailEmpty) {
31429
- return /* @__PURE__ */ jsxs39(
31194
+ return /* @__PURE__ */ jsxs38(
31430
31195
  "div",
31431
31196
  {
31432
31197
  className: AgentGUINode_styles_default.providerRail,
@@ -31441,8 +31206,8 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31441
31206
  }
31442
31207
  );
31443
31208
  }
31444
- return /* @__PURE__ */ jsxs39("div", { className: AgentGUINode_styles_default.providerRail, children: [
31445
- /* @__PURE__ */ jsxs39(
31209
+ return /* @__PURE__ */ jsxs38("div", { className: AgentGUINode_styles_default.providerRail, children: [
31210
+ /* @__PURE__ */ jsxs38(
31446
31211
  "div",
31447
31212
  {
31448
31213
  className: "flex min-h-0 w-full flex-col items-center",
@@ -31452,7 +31217,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31452
31217
  onDragOver: handleProviderRailContainerDragOver,
31453
31218
  onDrop: commitProviderRailDragDrop,
31454
31219
  children: [
31455
- /* @__PURE__ */ jsxs39(
31220
+ /* @__PURE__ */ jsxs38(
31456
31221
  "button",
31457
31222
  {
31458
31223
  type: "button",
@@ -31461,7 +31226,6 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31461
31226
  "aria-selected": allTileSelected,
31462
31227
  className: AgentGUINode_styles_default.providerRailTile,
31463
31228
  "data-selected": allTileSelected ? "true" : "false",
31464
- disabled: previewMode,
31465
31229
  onClick: selectAllProviders,
31466
31230
  children: [
31467
31231
  /* @__PURE__ */ jsx52(
@@ -31522,13 +31286,12 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31522
31286
  "data-provider-tile": "true",
31523
31287
  "data-provider-target-id": target.targetId,
31524
31288
  "data-selected": providerSelected ? "true" : "false",
31525
- disabled: previewMode,
31526
- draggable: !previewMode && !agentTargetsLoading,
31289
+ draggable: !agentTargetsLoading,
31527
31290
  onClick: () => selectAgentTargetTile(target),
31528
31291
  onDragEnd: clearProviderRailDragState,
31529
31292
  onDragOver: (event) => handleProviderRailDragOver(event, target),
31530
31293
  onDragStart: (event) => handleProviderRailDragStart(event, target),
31531
- children: /* @__PURE__ */ jsxs39("span", { className: AgentGUINode_styles_default.providerRailAvatar, children: [
31294
+ children: /* @__PURE__ */ jsxs38("span", { className: AgentGUINode_styles_default.providerRailAvatar, children: [
31532
31295
  /* @__PURE__ */ jsx52(
31533
31296
  AgentGUIProviderIconVisual,
31534
31297
  {
@@ -31562,10 +31325,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
31562
31325
  },
31563
31326
  `${target.provider}:${target.targetId}`
31564
31327
  );
31565
- if (previewMode) {
31566
- return tile;
31567
- }
31568
- return /* @__PURE__ */ jsxs39(Tooltip9, { children: [
31328
+ return /* @__PURE__ */ jsxs38(Tooltip9, { children: [
31569
31329
  /* @__PURE__ */ jsx52(TooltipTrigger9, { asChild: true, children: tile }),
31570
31330
  /* @__PURE__ */ jsx52(TooltipContent9, { side: "right", sideOffset: -4, children: label })
31571
31331
  ] }, `${target.provider}:${target.targetId}:tooltip`);
@@ -31599,7 +31359,7 @@ var styles3 = {
31599
31359
  var RoomIssueNode_styles_default = styles3;
31600
31360
 
31601
31361
  // agent-gui/RoomIssueNode/TaskSearchField.tsx
31602
- import { jsx as jsx53, jsxs as jsxs40 } from "react/jsx-runtime";
31362
+ import { jsx as jsx53, jsxs as jsxs39 } from "react/jsx-runtime";
31603
31363
  function TaskSearchField({
31604
31364
  ariaLabel,
31605
31365
  className,
@@ -31613,7 +31373,7 @@ function TaskSearchField({
31613
31373
  "use memo";
31614
31374
  const { t } = useTranslation();
31615
31375
  const searchInput = useComposedInputValue({ onCommit: onChange, value });
31616
- return /* @__PURE__ */ jsxs40(
31376
+ return /* @__PURE__ */ jsxs39(
31617
31377
  "div",
31618
31378
  {
31619
31379
  className: `${RoomIssueNode_styles_default.searchField} ${className ?? ""}`.trim(),
@@ -31668,7 +31428,7 @@ function isTaskSearchImeComposing(event) {
31668
31428
  }
31669
31429
 
31670
31430
  // agent-gui/agentGuiNode/AgentConversationListSkeleton.tsx
31671
- import { jsx as jsx54, jsxs as jsxs41 } from "react/jsx-runtime";
31431
+ import { jsx as jsx54, jsxs as jsxs40 } from "react/jsx-runtime";
31672
31432
  var SKELETON_ROWS = [
31673
31433
  { id: "first", size: "long" },
31674
31434
  { id: "second", size: "medium" },
@@ -31687,7 +31447,7 @@ function AgentConversationListSkeleton({
31687
31447
  role: "status",
31688
31448
  "aria-label": label,
31689
31449
  "data-testid": "agent-gui-conversation-list-loading-skeleton",
31690
- children: SKELETON_ROWS.map((row) => /* @__PURE__ */ jsxs41(
31450
+ children: SKELETON_ROWS.map((row) => /* @__PURE__ */ jsxs40(
31691
31451
  "div",
31692
31452
  {
31693
31453
  className: "agent-gui-node__conversation-list-skeleton-row",
@@ -32529,7 +32289,7 @@ import { memo as memo6, useCallback as useCallback55 } from "react";
32529
32289
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailItem.tsx
32530
32290
  import { memo as memo4, useCallback as useCallback53, useMemo as useMemo39 } from "react";
32531
32291
  import { ExternalLink as ExternalLink2 } from "lucide-react";
32532
- import { IssueIcon, NewWorkspaceLinedIcon as NewWorkspaceLinedIcon2, cn as cn8 } from "@tutti-os/ui-system";
32292
+ import { NewWorkspaceLinedIcon as NewWorkspaceLinedIcon2, cn as cn8 } from "@tutti-os/ui-system";
32533
32293
  import { WorkspaceUserProjectSelect as WorkspaceUserProjectSelect2 } from "@tutti-os/workspace-user-project/ui";
32534
32294
  import { BareIconButton as BareIconButton3 } from "@tutti-os/ui-system/components";
32535
32295
 
@@ -32815,7 +32575,7 @@ function renderAgentConversationCopyHtml(markdown) {
32815
32575
  }
32816
32576
 
32817
32577
  // agent-gui/agentGuiNode/view/AgentGUIConversationActionsMenu.tsx
32818
- import { Fragment as Fragment19, jsx as jsx59, jsxs as jsxs42 } from "react/jsx-runtime";
32578
+ import { Fragment as Fragment19, jsx as jsx59, jsxs as jsxs41 } from "react/jsx-runtime";
32819
32579
  var menuContentClassName = "w-max min-w-44 nodrag [-webkit-app-region:no-drag]";
32820
32580
  async function writeTextAndHtmlWithWebClipboard(text, html) {
32821
32581
  if (typeof navigator === "undefined" || typeof navigator.clipboard?.write !== "function" || typeof ClipboardItem === "undefined") {
@@ -33072,7 +32832,7 @@ function AgentGUIConversationActionsDropdown({
33072
32832
  moreSessionActionsLabel
33073
32833
  }) {
33074
32834
  const [open, setOpen] = useState34(false);
33075
- return /* @__PURE__ */ jsxs42(DropdownMenu4, { onOpenChange: setOpen, children: [
32835
+ return /* @__PURE__ */ jsxs41(DropdownMenu4, { onOpenChange: setOpen, children: [
33076
32836
  /* @__PURE__ */ jsx59(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx59(
33077
32837
  BareIconButton2,
33078
32838
  {
@@ -33102,7 +32862,7 @@ function AgentGUIConversationActionsContextMenu({
33102
32862
  menu
33103
32863
  }) {
33104
32864
  const [open, setOpen] = useState34(false);
33105
- return /* @__PURE__ */ jsxs42(ContextMenu, { onOpenChange: setOpen, children: [
32865
+ return /* @__PURE__ */ jsxs41(ContextMenu, { onOpenChange: setOpen, children: [
33106
32866
  /* @__PURE__ */ jsx59(ContextMenuTrigger, { asChild: true, children }),
33107
32867
  open ? /* @__PURE__ */ jsx59(ContextMenuContent, { className: menuContentClassName, children: /* @__PURE__ */ jsx59(ContextActionGroups, { groups: menu.groups }) }) : null
33108
32868
  ] }, menu.resetKey);
@@ -33110,14 +32870,14 @@ function AgentGUIConversationActionsContextMenu({
33110
32870
  function DropdownActionGroups({
33111
32871
  groups
33112
32872
  }) {
33113
- return /* @__PURE__ */ jsx59(Fragment19, { children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxs42(Fragment18, { children: [
32873
+ return /* @__PURE__ */ jsx59(Fragment19, { children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxs41(Fragment18, { children: [
33114
32874
  groupIndex > 0 ? /* @__PURE__ */ jsx59(DropdownMenuSeparator2, {}) : null,
33115
32875
  group.map((entry) => (
33116
32876
  // onClick/onPointerUp mirror onSelect so the action survives
33117
32877
  // workbench dead clicks (pointerup arrives but the click event
33118
32878
  // is swallowed); the shared runner's pending ref dedups the
33119
32879
  // overlapping events of one gesture.
33120
- /* @__PURE__ */ jsxs42(
32880
+ /* @__PURE__ */ jsxs41(
33121
32881
  DropdownMenuItem3,
33122
32882
  {
33123
32883
  disabled: entry.disabled,
@@ -33145,11 +32905,11 @@ function DropdownActionGroups({
33145
32905
  function ContextActionGroups({
33146
32906
  groups
33147
32907
  }) {
33148
- return /* @__PURE__ */ jsx59(Fragment19, { children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxs42(Fragment18, { children: [
32908
+ return /* @__PURE__ */ jsx59(Fragment19, { children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxs41(Fragment18, { children: [
33149
32909
  groupIndex > 0 ? /* @__PURE__ */ jsx59(ContextMenuSeparator, {}) : null,
33150
32910
  group.map((entry) => (
33151
32911
  // Same dead-click fallbacks as DropdownActionGroups.
33152
- /* @__PURE__ */ jsxs42(
32912
+ /* @__PURE__ */ jsxs41(
33153
32913
  ContextMenuItem,
33154
32914
  {
33155
32915
  disabled: entry.disabled,
@@ -33176,7 +32936,7 @@ function ContextActionGroups({
33176
32936
  }
33177
32937
 
33178
32938
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailItem.tsx
33179
- import { Fragment as Fragment20, jsx as jsx60, jsxs as jsxs43 } from "react/jsx-runtime";
32939
+ import { Fragment as Fragment20, jsx as jsx60, jsxs as jsxs42 } from "react/jsx-runtime";
33180
32940
  function agentGUIConversationIconPresentation(provider, agentTargetId, workspaceId, agentTargets) {
33181
32941
  const targetPresentation = resolveAgentTargetPresentation({
33182
32942
  agentTargetId: agentTargetId ?? "",
@@ -33195,8 +32955,7 @@ function agentGUIConversationIconPresentation(provider, agentTargetId, workspace
33195
32955
  return providerIconUrl ? { kind: "mask", url: providerIconUrl } : null;
33196
32956
  }
33197
32957
  function agentGUIConversationRailTitle(item, labels, uiLanguage) {
33198
- const title = conversationPlainTitle(item, labels, uiLanguage);
33199
- return item.titleLeadingMentionKind === "task" ? title.replace(/^@\s*/, "") : title;
32958
+ return conversationPlainTitle(item, labels, uiLanguage);
33200
32959
  }
33201
32960
  var AgentGUIConversationRailItem = memo4(
33202
32961
  function AgentGUIConversationRailItem2({
@@ -33206,7 +32965,6 @@ var AgentGUIConversationRailItem = memo4(
33206
32965
  isDeletingConversation,
33207
32966
  isRailInteractionLocked,
33208
32967
  labels,
33209
- previewMode,
33210
32968
  uiLanguage,
33211
32969
  workspaceId,
33212
32970
  registerItemElement,
@@ -33269,7 +33027,7 @@ var AgentGUIConversationRailItem = memo4(
33269
33027
  }
33270
33028
  };
33271
33029
  const canMarkUnread = Boolean(
33272
- !previewMode && !item.hasUnreadCompletion && item.isImported !== true && (item.unreadCompletionKey || item.status === "completed" || item.status === "ready")
33030
+ !item.hasUnreadCompletion && item.isImported !== true && (item.unreadCompletionKey || item.status === "completed" || item.status === "ready")
33273
33031
  );
33274
33032
  const menu = useConversationActionGroups({
33275
33033
  canMarkUnread,
@@ -33282,7 +33040,7 @@ var AgentGUIConversationRailItem = memo4(
33282
33040
  onOpenConversationWindow,
33283
33041
  onRequestRenameConversation
33284
33042
  });
33285
- const row = /* @__PURE__ */ jsxs43(
33043
+ const row = /* @__PURE__ */ jsxs42(
33286
33044
  "div",
33287
33045
  {
33288
33046
  ref: setItemElement,
@@ -33299,7 +33057,7 @@ var AgentGUIConversationRailItem = memo4(
33299
33057
  },
33300
33058
  onMouseLeave: handleMouseLeave,
33301
33059
  children: [
33302
- /* @__PURE__ */ jsxs43(
33060
+ /* @__PURE__ */ jsxs42(
33303
33061
  "button",
33304
33062
  {
33305
33063
  type: "button",
@@ -33310,7 +33068,7 @@ var AgentGUIConversationRailItem = memo4(
33310
33068
  handleRequestRename();
33311
33069
  },
33312
33070
  children: [
33313
- /* @__PURE__ */ jsxs43("span", { className: AgentGUINode_styles_default.conversationTitleRow, children: [
33071
+ /* @__PURE__ */ jsxs42("span", { className: AgentGUINode_styles_default.conversationTitleRow, children: [
33314
33072
  conversationIcon?.kind === "mask" ? /* @__PURE__ */ jsx60(
33315
33073
  "span",
33316
33074
  {
@@ -33337,22 +33095,13 @@ var AgentGUIConversationRailItem = memo4(
33337
33095
  src: conversationIcon.url
33338
33096
  }
33339
33097
  ) : null,
33340
- item.titleLeadingMentionKind === "task" ? /* @__PURE__ */ jsx60(
33341
- "span",
33342
- {
33343
- "aria-hidden": "true",
33344
- className: AgentGUINode_styles_default.conversationTitleMentionIcon,
33345
- "data-agent-gui-conversation-title-mention-icon": item.titleLeadingMentionKind,
33346
- children: /* @__PURE__ */ jsx60(IssueIcon, {})
33347
- }
33348
- ) : null,
33349
33098
  /* @__PURE__ */ jsx60("span", { className: AgentGUINode_styles_default.conversationTitle, children: agentGUIConversationRailTitle(item, labels, uiLanguage) })
33350
33099
  ] }),
33351
33100
  /* @__PURE__ */ jsx60(AgentGUIConversationRailRelativeTime, { item, labels })
33352
33101
  ]
33353
33102
  }
33354
33103
  ),
33355
- previewMode ? null : /* @__PURE__ */ jsx60("div", { className: AgentGUINode_styles_default.conversationActions, children: isPendingDeleteConversation ? /* @__PURE__ */ jsx60(
33104
+ /* @__PURE__ */ jsx60("div", { className: AgentGUINode_styles_default.conversationActions, children: isPendingDeleteConversation ? /* @__PURE__ */ jsx60(
33356
33105
  "button",
33357
33106
  {
33358
33107
  type: "button",
@@ -33368,7 +33117,7 @@ var AgentGUIConversationRailItem = memo4(
33368
33117
  },
33369
33118
  children: /* @__PURE__ */ jsx60("span", { className: AgentGUINode_styles_default.conversationDeleteConfirmText, children: labels.deleteSessionConfirm })
33370
33119
  }
33371
- ) : /* @__PURE__ */ jsxs43(Fragment20, { children: [
33120
+ ) : /* @__PURE__ */ jsxs42(Fragment20, { children: [
33372
33121
  onOpenConversationWindow ? /* @__PURE__ */ jsx60(
33373
33122
  BareIconButton3,
33374
33123
  {
@@ -33441,9 +33190,6 @@ var AgentGUIConversationRailItem = memo4(
33441
33190
  ]
33442
33191
  }
33443
33192
  );
33444
- if (previewMode) {
33445
- return row;
33446
- }
33447
33193
  return /* @__PURE__ */ jsx60(AgentGUIConversationActionsContextMenu, { menu, children: row });
33448
33194
  }
33449
33195
  );
@@ -33462,9 +33208,9 @@ function AgentGUIProjectRailHeader({
33462
33208
  }),
33463
33209
  [agentHostApi.userProjects, selectProjectDirectory]
33464
33210
  );
33465
- return /* @__PURE__ */ jsxs43("div", { className: AgentGUINode_styles_default.projectRailHeader, children: [
33211
+ return /* @__PURE__ */ jsxs42("div", { className: AgentGUINode_styles_default.projectRailHeader, children: [
33466
33212
  /* @__PURE__ */ jsx60("div", { className: AgentGUINode_styles_default.projectRailTitle, children: /* @__PURE__ */ jsx60("span", { children: workspaceUserProjectI18n.tFirst(["projectSelect.projectLabel"]) }) }),
33467
- /* @__PURE__ */ jsxs43("div", { className: AgentGUINode_styles_default.projectRailAddProject, children: [
33213
+ /* @__PURE__ */ jsxs42("div", { className: AgentGUINode_styles_default.projectRailAddProject, children: [
33468
33214
  /* @__PURE__ */ jsx60(
33469
33215
  WorkspaceUserProjectSelect2,
33470
33216
  {
@@ -33542,7 +33288,7 @@ import {
33542
33288
  } from "@tutti-os/ui-system/components";
33543
33289
  import {
33544
33290
  CreateChatIcon,
33545
- FolderIcon as FolderIcon2,
33291
+ FolderIcon,
33546
33292
  FolderOpenLinedIcon,
33547
33293
  MoreHorizontalIcon
33548
33294
  } from "@tutti-os/ui-system/icons";
@@ -33605,7 +33351,7 @@ function readSectionPresentationValue(value, name) {
33605
33351
  }
33606
33352
 
33607
33353
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailSectionHeader.tsx
33608
- import { jsx as jsx62, jsxs as jsxs44 } from "react/jsx-runtime";
33354
+ import { jsx as jsx62, jsxs as jsxs43 } from "react/jsx-runtime";
33609
33355
  function HeaderFrame({
33610
33356
  children,
33611
33357
  isProjectSection,
@@ -33636,7 +33382,7 @@ var HeaderIdentity = memo5(function HeaderIdentity2({
33636
33382
  if (!isProjectSection) {
33637
33383
  return /* @__PURE__ */ jsx62("div", { className: AgentGUINode_styles_default.conversationSectionToggle, children: /* @__PURE__ */ jsx62("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: /* @__PURE__ */ jsx62("span", { children: sectionLabel }) }) });
33638
33384
  }
33639
- return /* @__PURE__ */ jsxs44(
33385
+ return /* @__PURE__ */ jsxs43(
33640
33386
  "button",
33641
33387
  {
33642
33388
  type: "button",
@@ -33652,9 +33398,9 @@ var HeaderIdentity = memo5(function HeaderIdentity2({
33652
33398
  className: AgentGUINode_styles_default.conversationSectionChevron
33653
33399
  }
33654
33400
  ),
33655
- /* @__PURE__ */ jsxs44("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: [
33401
+ /* @__PURE__ */ jsxs43("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: [
33656
33402
  isSectionCollapsed ? /* @__PURE__ */ jsx62(
33657
- FolderIcon2,
33403
+ FolderIcon,
33658
33404
  {
33659
33405
  "aria-hidden": "true",
33660
33406
  className: AgentGUINode_styles_default.conversationSectionLabelIcon,
@@ -33677,8 +33423,7 @@ var HeaderIdentity = memo5(function HeaderIdentity2({
33677
33423
  var CreateAction = memo5(function CreateAction2({
33678
33424
  createConversationDisabled,
33679
33425
  createConversationLabel,
33680
- onCreateConversation,
33681
- previewMode
33426
+ onCreateConversation
33682
33427
  }) {
33683
33428
  "use memo";
33684
33429
  const button = /* @__PURE__ */ jsx62(
@@ -33693,10 +33438,7 @@ var CreateAction = memo5(function CreateAction2({
33693
33438
  children: /* @__PURE__ */ jsx62(CreateChatIcon, { "aria-hidden": "true" })
33694
33439
  }
33695
33440
  );
33696
- if (previewMode) {
33697
- return /* @__PURE__ */ jsx62("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: button });
33698
- }
33699
- return /* @__PURE__ */ jsxs44(Tooltip10, { children: [
33441
+ return /* @__PURE__ */ jsxs43(Tooltip10, { children: [
33700
33442
  /* @__PURE__ */ jsx62(TooltipTrigger10, { asChild: true, children: /* @__PURE__ */ jsx62("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: button }) }),
33701
33443
  /* @__PURE__ */ jsx62(
33702
33444
  TooltipContent10,
@@ -33729,14 +33471,10 @@ var ProjectMenuButton = forwardRef5(
33729
33471
  );
33730
33472
  ProjectMenuButton.displayName = "ProjectMenuButton";
33731
33473
  function ProjectMenuTrigger({
33732
- labels,
33733
- previewMode
33474
+ labels
33734
33475
  }) {
33735
33476
  const accessibleName = labels.projectSectionMoreActions;
33736
- if (previewMode) {
33737
- return /* @__PURE__ */ jsx62(DropdownMenuTrigger5, { asChild: true, children: /* @__PURE__ */ jsx62("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx62(ProjectMenuButton, { accessibleName }) }) });
33738
- }
33739
- return /* @__PURE__ */ jsxs44(Tooltip10, { children: [
33477
+ return /* @__PURE__ */ jsxs43(Tooltip10, { children: [
33740
33478
  /* @__PURE__ */ jsx62(TooltipTrigger10, { asChild: true, children: /* @__PURE__ */ jsx62("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx62(DropdownMenuTrigger5, { asChild: true, children: /* @__PURE__ */ jsx62(ProjectMenuButton, { accessibleName }) }) }) }),
33741
33479
  /* @__PURE__ */ jsx62(
33742
33480
  TooltipContent10,
@@ -33760,7 +33498,7 @@ function ProjectMenuContent({
33760
33498
  }) {
33761
33499
  const batchDeletionDisabled = useAgentGUIConversationRailSectionBatchDeletionDisabled();
33762
33500
  const projectActionLocked = useAgentGUIConversationRailSectionProjectActionLocked();
33763
- return /* @__PURE__ */ jsxs44(
33501
+ return /* @__PURE__ */ jsxs43(
33764
33502
  DropdownMenuContent5,
33765
33503
  {
33766
33504
  align: "end",
@@ -33816,12 +33554,11 @@ var ProjectMenu = memo5(function ProjectMenu2({
33816
33554
  onRequestBatchDeletion,
33817
33555
  onToggleProjectPinned,
33818
33556
  open,
33819
- previewMode,
33820
33557
  projectPinned
33821
33558
  }) {
33822
33559
  "use memo";
33823
- return /* @__PURE__ */ jsxs44(DropdownMenu5, { onOpenChange, children: [
33824
- /* @__PURE__ */ jsx62(ProjectMenuTrigger, { labels, previewMode }),
33560
+ return /* @__PURE__ */ jsxs43(DropdownMenu5, { onOpenChange, children: [
33561
+ /* @__PURE__ */ jsx62(ProjectMenuTrigger, { labels }),
33825
33562
  open ? /* @__PURE__ */ jsx62(
33826
33563
  ProjectMenuContent,
33827
33564
  {
@@ -33837,23 +33574,10 @@ var ProjectMenu = memo5(function ProjectMenu2({
33837
33574
  ] });
33838
33575
  });
33839
33576
  function ConversationMenuTrigger({
33840
- labels,
33841
- previewMode
33577
+ labels
33842
33578
  }) {
33843
33579
  const accessibleName = labels.conversationsSectionMoreActions;
33844
- if (previewMode) {
33845
- return /* @__PURE__ */ jsx62(DropdownMenuTrigger5, { asChild: true, children: /* @__PURE__ */ jsx62("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx62(
33846
- BareIconButton4,
33847
- {
33848
- className: AgentGUINode_styles_default.conversationSectionMoreButton,
33849
- "aria-label": accessibleName,
33850
- size: "sm",
33851
- title: "",
33852
- children: /* @__PURE__ */ jsx62(MoreHorizontalIcon, { "aria-hidden": "true" })
33853
- }
33854
- ) }) });
33855
- }
33856
- return /* @__PURE__ */ jsxs44(Tooltip10, { children: [
33580
+ return /* @__PURE__ */ jsxs43(Tooltip10, { children: [
33857
33581
  /* @__PURE__ */ jsx62(TooltipTrigger10, { asChild: true, children: /* @__PURE__ */ jsx62("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx62(DropdownMenuTrigger5, { asChild: true, children: /* @__PURE__ */ jsx62(
33858
33582
  BareIconButton4,
33859
33583
  {
@@ -33902,11 +33626,10 @@ function ConversationMenu({
33902
33626
  labels,
33903
33627
  onOpenChange,
33904
33628
  onRequestBatchDeletion,
33905
- open,
33906
- previewMode
33629
+ open
33907
33630
  }) {
33908
- return /* @__PURE__ */ jsxs44(DropdownMenu5, { onOpenChange, children: [
33909
- /* @__PURE__ */ jsx62(ConversationMenuTrigger, { labels, previewMode }),
33631
+ return /* @__PURE__ */ jsxs43(DropdownMenu5, { onOpenChange, children: [
33632
+ /* @__PURE__ */ jsx62(ConversationMenuTrigger, { labels }),
33910
33633
  open ? /* @__PURE__ */ jsx62(
33911
33634
  ConversationMenuContent,
33912
33635
  {
@@ -33935,7 +33658,6 @@ var AgentGUIConversationRailSectionHeader = memo5(
33935
33658
  onRequestBatchDeletion,
33936
33659
  onToggleCollapsed,
33937
33660
  onToggleProjectPinned,
33938
- previewMode,
33939
33661
  projectPinned,
33940
33662
  sectionLabel
33941
33663
  }) {
@@ -33950,7 +33672,7 @@ var AgentGUIConversationRailSectionHeader = memo5(
33950
33672
  [onProjectMenuOpenChange]
33951
33673
  );
33952
33674
  const isProjectSection = kind === "project";
33953
- return /* @__PURE__ */ jsxs44(
33675
+ return /* @__PURE__ */ jsxs43(
33954
33676
  HeaderFrame,
33955
33677
  {
33956
33678
  isProjectSection,
@@ -33968,7 +33690,7 @@ var AgentGUIConversationRailSectionHeader = memo5(
33968
33690
  sectionLabel
33969
33691
  }
33970
33692
  ),
33971
- canCreateConversation ? /* @__PURE__ */ jsxs44(
33693
+ canCreateConversation ? /* @__PURE__ */ jsxs43(
33972
33694
  "div",
33973
33695
  {
33974
33696
  className: AgentGUINode_styles_default.conversationSectionActions,
@@ -33979,8 +33701,7 @@ var AgentGUIConversationRailSectionHeader = memo5(
33979
33701
  {
33980
33702
  createConversationDisabled,
33981
33703
  createConversationLabel,
33982
- onCreateConversation,
33983
- previewMode
33704
+ onCreateConversation
33984
33705
  }
33985
33706
  ),
33986
33707
  hasProjectPath ? /* @__PURE__ */ jsx62(
@@ -33994,7 +33715,6 @@ var AgentGUIConversationRailSectionHeader = memo5(
33994
33715
  onRequestBatchDeletion,
33995
33716
  onToggleProjectPinned,
33996
33717
  open: projectMenuOpen,
33997
- previewMode,
33998
33718
  projectPinned
33999
33719
  }
34000
33720
  ) : null,
@@ -34004,8 +33724,7 @@ var AgentGUIConversationRailSectionHeader = memo5(
34004
33724
  labels,
34005
33725
  onOpenChange: setConversationMenuOpen,
34006
33726
  onRequestBatchDeletion,
34007
- open: conversationMenuOpen,
34008
- previewMode
33727
+ open: conversationMenuOpen
34009
33728
  }
34010
33729
  ) : null
34011
33730
  ]
@@ -34018,7 +33737,7 @@ var AgentGUIConversationRailSectionHeader = memo5(
34018
33737
  );
34019
33738
 
34020
33739
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailSection.tsx
34021
- import { jsx as jsx63, jsxs as jsxs45 } from "react/jsx-runtime";
33740
+ import { jsx as jsx63, jsxs as jsxs44 } from "react/jsx-runtime";
34022
33741
  var AgentGUIConversationRailSection = memo6(
34023
33742
  function AgentGUIConversationRailSection2({
34024
33743
  section,
@@ -34029,7 +33748,6 @@ var AgentGUIConversationRailSection = memo6(
34029
33748
  isSectionCollapsed,
34030
33749
  activeConversationId,
34031
33750
  pendingDeleteConversationId,
34032
- previewMode,
34033
33751
  isDeletingConversation,
34034
33752
  isLoadingMoreConversations,
34035
33753
  isRailInteractionLocked,
@@ -34196,7 +33914,7 @@ var AgentGUIConversationRailSection = memo6(
34196
33914
  path: projectPath
34197
33915
  });
34198
33916
  });
34199
- return /* @__PURE__ */ jsxs45(
33917
+ return /* @__PURE__ */ jsxs44(
34200
33918
  "section",
34201
33919
  {
34202
33920
  className: AgentGUINode_styles_default.conversationSection,
@@ -34226,7 +33944,6 @@ var AgentGUIConversationRailSection = memo6(
34226
33944
  onRequestBatchDeletion: handleRequestBatchDeletion,
34227
33945
  onToggleCollapsed: handleToggleCollapsed,
34228
33946
  onToggleProjectPinned: handleToggleProjectPinned,
34229
- previewMode,
34230
33947
  projectPinned,
34231
33948
  sectionLabel: section.label
34232
33949
  }
@@ -34236,7 +33953,7 @@ var AgentGUIConversationRailSection = memo6(
34236
33953
  {
34237
33954
  className: AgentGUINode_styles_default.conversationSectionItems,
34238
33955
  "aria-hidden": isSectionCollapsed ? "true" : void 0,
34239
- children: /* @__PURE__ */ jsxs45("div", { className: AgentGUINode_styles_default.conversationSectionItemsInner, children: [
33956
+ children: /* @__PURE__ */ jsxs44("div", { className: AgentGUINode_styles_default.conversationSectionItemsInner, children: [
34240
33957
  !isSectionCollapsed && visibleItems.length === 0 ? /* @__PURE__ */ jsx63("div", { className: AgentGUINode_styles_default.conversationSectionEmpty, children: labels.emptyProjectConversations }) : null,
34241
33958
  visibleItems.map((item) => /* @__PURE__ */ jsx63(
34242
33959
  AgentGUIConversationRailItem,
@@ -34247,7 +33964,6 @@ var AgentGUIConversationRailSection = memo6(
34247
33964
  isRailInteractionLocked,
34248
33965
  item,
34249
33966
  labels,
34250
- previewMode,
34251
33967
  registerItemElement,
34252
33968
  uiLanguage,
34253
33969
  workspaceId,
@@ -34262,7 +33978,7 @@ var AgentGUIConversationRailSection = memo6(
34262
33978
  },
34263
33979
  item.id
34264
33980
  )),
34265
- canShowMore || canShowLess ? /* @__PURE__ */ jsxs45("div", { className: AgentGUINode_styles_default.conversationSectionPagination, children: [
33981
+ canShowMore || canShowLess ? /* @__PURE__ */ jsxs44("div", { className: AgentGUINode_styles_default.conversationSectionPagination, children: [
34266
33982
  canShowMore ? /* @__PURE__ */ jsx63(
34267
33983
  "button",
34268
33984
  {
@@ -34495,7 +34211,7 @@ function useAgentGUIProjectMenuState(isRailInteractionLocked, isUserProjectMutat
34495
34211
  }
34496
34212
 
34497
34213
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailPane.tsx
34498
- import { jsx as jsx65, jsxs as jsxs46 } from "react/jsx-runtime";
34214
+ import { jsx as jsx65, jsxs as jsxs45 } from "react/jsx-runtime";
34499
34215
  function useDelayedBoolean(value, delayMs) {
34500
34216
  const [delayedValue, setDelayedValue] = useState37(false);
34501
34217
  useEffect29(() => {
@@ -34525,7 +34241,6 @@ var AgentGUIConversationRailPane = memo7(
34525
34241
  labels,
34526
34242
  workspaceUserProjectI18n,
34527
34243
  uiLanguage,
34528
- previewMode,
34529
34244
  createConversationDisabled,
34530
34245
  isCollapsed,
34531
34246
  conversationFilter,
@@ -34587,7 +34302,7 @@ var AgentGUIConversationRailPane = memo7(
34587
34302
  const hasConversationQuery = conversationQuery.trim().length > 0;
34588
34303
  const backendSearchActive = hasConversationQuery && railSearch.enabled;
34589
34304
  const railInteractionsLocked = isInteractionLocked();
34590
- const projectDragBaseLocked = railInteractionsLocked || isDeletingConversation || isDeletingProjectConversations || isRequestingBatchDeletion || isUserProjectMutationPending || pendingDeleteConversationId !== null || pendingProjectAction !== null || projectMenuOpen || previewMode;
34305
+ const projectDragBaseLocked = railInteractionsLocked || isDeletingConversation || isDeletingProjectConversations || isRequestingBatchDeletion || isUserProjectMutationPending || pendingDeleteConversationId !== null || pendingProjectAction !== null || projectMenuOpen;
34591
34306
  const backendSearchConversations = backendSearchActive ? railSearch.sessionIds.flatMap((id) => {
34592
34307
  const conversation = railConversationEntitiesById.get(id);
34593
34308
  return conversation ? [conversation] : [];
@@ -34785,14 +34500,14 @@ var AgentGUIConversationRailPane = memo7(
34785
34500
  useEffect29(() => {
34786
34501
  return installProjectDragGlobalListeners();
34787
34502
  }, [installProjectDragGlobalListeners]);
34788
- return /* @__PURE__ */ jsxs46(
34503
+ return /* @__PURE__ */ jsxs45(
34789
34504
  "aside",
34790
34505
  {
34791
34506
  ref: railElementRef,
34792
34507
  className: AgentGUINode_styles_default.rail,
34793
34508
  "aria-hidden": isCollapsed ? "true" : void 0,
34794
34509
  children: [
34795
- /* @__PURE__ */ jsxs46("div", { className: AgentGUINode_styles_default.railToolbar, children: [
34510
+ /* @__PURE__ */ jsxs45("div", { className: AgentGUINode_styles_default.railToolbar, children: [
34796
34511
  /* @__PURE__ */ jsx65(
34797
34512
  TaskSearchField,
34798
34513
  {
@@ -34801,7 +34516,7 @@ var AgentGUIConversationRailPane = memo7(
34801
34516
  onChange: onConversationQueryChange
34802
34517
  }
34803
34518
  ),
34804
- /* @__PURE__ */ jsxs46(
34519
+ /* @__PURE__ */ jsxs45(
34805
34520
  Button,
34806
34521
  {
34807
34522
  type: "button",
@@ -34834,7 +34549,7 @@ var AgentGUIConversationRailPane = memo7(
34834
34549
  {
34835
34550
  label: labels.loadingConversations
34836
34551
  }
34837
- ) : shouldShowConversationSearchError ? /* @__PURE__ */ jsxs46("div", { className: AgentGUINode_styles_default.emptyState, children: [
34552
+ ) : shouldShowConversationSearchError ? /* @__PURE__ */ jsxs45("div", { className: AgentGUINode_styles_default.emptyState, children: [
34838
34553
  /* @__PURE__ */ jsx65("span", { children: labels.searchFailed }),
34839
34554
  /* @__PURE__ */ jsx65(
34840
34555
  SystemButton,
@@ -34846,7 +34561,7 @@ var AgentGUIConversationRailPane = memo7(
34846
34561
  children: labels.retrySearch
34847
34562
  }
34848
34563
  )
34849
- ] }) : shouldShowConversationEmptyState ? /* @__PURE__ */ jsx65("div", { className: AgentGUINode_styles_default.emptyState, children: /* @__PURE__ */ jsx65("span", { children: conversationQuery.trim() ? labels.searchNoConversations : conversations.length === 0 ? labels.noConversations : labels.conversationUnavailable }) }) : /* @__PURE__ */ jsxs46("fieldset", { className: "contents", disabled: railInteractionsLocked, children: [
34564
+ ] }) : shouldShowConversationEmptyState ? /* @__PURE__ */ jsx65("div", { className: AgentGUINode_styles_default.emptyState, children: /* @__PURE__ */ jsx65("span", { children: conversationQuery.trim() ? labels.searchNoConversations : conversations.length === 0 ? labels.noConversations : labels.conversationUnavailable }) }) : /* @__PURE__ */ jsxs45("fieldset", { className: "contents", disabled: railInteractionsLocked, children: [
34850
34565
  groupedConversations.map((section, sectionIndex) => {
34851
34566
  const projectPath = section.kind === "project" ? section.project?.path ?? "" : "";
34852
34567
  const projectLabel = section.kind === "project" ? section.label : "";
@@ -34880,7 +34595,7 @@ var AgentGUIConversationRailPane = memo7(
34880
34595
  ).length + (activeOverlayCountsTowardTotal && !activeOverlayIsCanonical ? 1 : 0);
34881
34596
  const sectionHasMore = searchSectionHasMore || !conversationQuery.trim() && sectionPageState?.hasMore === true;
34882
34597
  const batchDeletionDisabled = !batchDeletionAvailable || hasConversationQuery || section.items.length === 0 && !sectionHasMore || isDeletingProjectConversations || isRequestingBatchDeletion;
34883
- return /* @__PURE__ */ jsxs46(Fragment21, { children: [
34598
+ return /* @__PURE__ */ jsxs45(Fragment21, { children: [
34884
34599
  showPinnedProjectHeader ? /* @__PURE__ */ jsx65("div", { className: AgentGUINode_styles_default.pinnedProjectRailHeader, children: labels.sectionPinned }) : null,
34885
34600
  showProjectRailHeader ? /* @__PURE__ */ jsx65(
34886
34601
  AgentGUIProjectRailHeader,
@@ -34919,7 +34634,6 @@ var AgentGUIConversationRailPane = memo7(
34919
34634
  isSectionCollapsed,
34920
34635
  labels,
34921
34636
  pendingDeleteConversationId,
34922
- previewMode,
34923
34637
  projectLabel,
34924
34638
  projectPath,
34925
34639
  registerItemElement: railViewState.registerConversationItemElement,
@@ -35566,7 +35280,6 @@ function resolveConversationRailQueryScope(workspaceId, scope) {
35566
35280
  scopeKey: JSON.stringify([
35567
35281
  workspaceId,
35568
35282
  scope.conversationFilter.kind === "agentTarget" ? `agentTarget:${scope.conversationFilter.agentTargetId.trim()}` : "all",
35569
- scope.previewMode,
35570
35283
  agentTargetId,
35571
35284
  projectCollectionKey
35572
35285
  ])
@@ -35807,7 +35520,7 @@ var AgentGUIConversationRailQueryController = class {
35807
35520
  }
35808
35521
  loadMoreSectionConversations = (section) => {
35809
35522
  const scopeKey = this.railSectionQueryKey;
35810
- if (this.scope?.previewMode || !scopeKey || this.publicationBlocked() || this.queryState.pending || this.queryState.resolvedScopeKey !== scopeKey) {
35523
+ if (!scopeKey || this.publicationBlocked() || this.queryState.pending || this.queryState.resolvedScopeKey !== scopeKey) {
35811
35524
  return;
35812
35525
  }
35813
35526
  const currentPageState = this.queryState.sectionPageStates.get(section.id);
@@ -36186,11 +35899,11 @@ var AgentGUIConversationRailQueryController = class {
36186
35899
  }
36187
35900
  runtimeSectionsEnabled() {
36188
35901
  return Boolean(
36189
- !this.scope?.previewMode && this.runtime.listSessionSections && this.runtime.listSessionSectionPage
35902
+ this.runtime.listSessionSections && this.runtime.listSessionSectionPage
36190
35903
  );
36191
35904
  }
36192
35905
  searchEnabled() {
36193
- return Boolean(!this.scope?.previewMode && this.runtime.listSessionsPage);
35906
+ return Boolean(this.runtime.listSessionsPage);
36194
35907
  }
36195
35908
  publishIfReady(state = this.engine.getSnapshot(), force = false) {
36196
35909
  if (this.publicationBlocked()) return;
@@ -36259,7 +35972,6 @@ function useAgentGUIConversationRailQuery({
36259
35972
  conversationFilter,
36260
35973
  conversationQuery,
36261
35974
  nodeId,
36262
- previewMode,
36263
35975
  registerInteractionLockProbe,
36264
35976
  sectionAgentTargetFallbackId,
36265
35977
  userProjects,
@@ -36310,7 +36022,6 @@ function useAgentGUIConversationRailQuery({
36310
36022
  useEffect30(() => {
36311
36023
  controller.configure({
36312
36024
  conversationFilter,
36313
- previewMode,
36314
36025
  sectionAgentTargetFallbackId,
36315
36026
  userProjects
36316
36027
  });
@@ -36319,7 +36030,6 @@ function useAgentGUIConversationRailQuery({
36319
36030
  controller,
36320
36031
  conversationFilter,
36321
36032
  conversationQuery,
36322
- previewMode,
36323
36033
  sectionAgentTargetFallbackId,
36324
36034
  userProjects
36325
36035
  ]);
@@ -36331,13 +36041,11 @@ function useAgentGUIConversationRailQuery({
36331
36041
  const requestedRailScopeKey = useMemo41(
36332
36042
  () => resolveConversationRailQueryScope(workspaceId, {
36333
36043
  conversationFilter,
36334
- previewMode,
36335
36044
  sectionAgentTargetFallbackId,
36336
36045
  userProjects
36337
36046
  }).scopeKey,
36338
36047
  [
36339
36048
  conversationFilter,
36340
- previewMode,
36341
36049
  sectionAgentTargetFallbackId,
36342
36050
  userProjects,
36343
36051
  workspaceId
@@ -36346,7 +36054,7 @@ function useAgentGUIConversationRailQuery({
36346
36054
  return useMemo41(
36347
36055
  () => ({
36348
36056
  ...querySnapshot,
36349
- batchDeletionAvailable: !previewMode && batchDeletionCapability.available,
36057
+ batchDeletionAvailable: batchDeletionCapability.available,
36350
36058
  isInteractionLocked: controller.isInteractionLocked,
36351
36059
  loadMoreSectionConversations: controller.loadMoreSectionConversations,
36352
36060
  railSearch: {
@@ -36360,7 +36068,6 @@ function useAgentGUIConversationRailQuery({
36360
36068
  [
36361
36069
  batchDeletionCapability.available,
36362
36070
  controller,
36363
- previewMode,
36364
36071
  querySnapshot,
36365
36072
  requestedRailScopeKey
36366
36073
  ]
@@ -36380,7 +36087,6 @@ var AgentGUIConversationRailController = memo8(
36380
36087
  conversationFilter: props.conversationFilter,
36381
36088
  conversationQuery,
36382
36089
  nodeId: props.nodeId,
36383
- previewMode: props.previewMode,
36384
36090
  registerInteractionLockProbe: props.registerInteractionLockProbe,
36385
36091
  sectionAgentTargetFallbackId: props.sectionAgentTargetFallbackId,
36386
36092
  userProjects: props.userProjects,
@@ -36614,7 +36320,7 @@ import { ChevronsDown } from "lucide-react";
36614
36320
  import { cn as cn12 } from "@tutti-os/ui-system";
36615
36321
 
36616
36322
  // agent-gui/agentGuiNode/AgentComposerRegion.tsx
36617
- import { jsxs as jsxs47 } from "react/jsx-runtime";
36323
+ import { jsxs as jsxs46 } from "react/jsx-runtime";
36618
36324
  function AgentComposerRegion({
36619
36325
  accessories,
36620
36326
  floating,
@@ -36622,7 +36328,7 @@ function AgentComposerRegion({
36622
36328
  primary,
36623
36329
  regionRef
36624
36330
  }) {
36625
- return /* @__PURE__ */ jsxs47(
36331
+ return /* @__PURE__ */ jsxs46(
36626
36332
  "div",
36627
36333
  {
36628
36334
  ref: regionRef,
@@ -36641,7 +36347,7 @@ function AgentComposerRegion({
36641
36347
  // agent-gui/agentGuiNode/AgentGoalBanner.tsx
36642
36348
  import { useEffect as useEffect31, useState as useState39 } from "react";
36643
36349
  import { CirclePause, CirclePlay, Pencil as Pencil3, Target as Target3, Trash2 } from "lucide-react";
36644
- import { jsx as jsx67, jsxs as jsxs48 } from "react/jsx-runtime";
36350
+ import { jsx as jsx67, jsxs as jsxs47 } from "react/jsx-runtime";
36645
36351
  var RESUMABLE_GOAL_STATUSES = /* @__PURE__ */ new Set([
36646
36352
  "paused",
36647
36353
  "blocked",
@@ -36757,8 +36463,8 @@ function AgentGoalBanner({
36757
36463
  className: cn(AgentGUIChrome_styles_default.chromeCard, AgentGUIChrome_styles_default.chromeCardMuted),
36758
36464
  role: "status",
36759
36465
  "data-testid": "agent-gui-goal-banner",
36760
- children: /* @__PURE__ */ jsxs48("div", { className: AgentGUIChrome_styles_default.chromeMetaRow, children: [
36761
- /* @__PURE__ */ jsxs48("div", { className: AgentGUIChrome_styles_default.chromeMessageSlot, children: [
36466
+ children: /* @__PURE__ */ jsxs47("div", { className: AgentGUIChrome_styles_default.chromeMetaRow, children: [
36467
+ /* @__PURE__ */ jsxs47("div", { className: AgentGUIChrome_styles_default.chromeMessageSlot, children: [
36762
36468
  /* @__PURE__ */ jsx67("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: /* @__PURE__ */ jsx67(Target3, { "aria-hidden": true, className: "size-3.5" }) }),
36763
36469
  editDraft !== null ? /* @__PURE__ */ jsx67(
36764
36470
  "input",
@@ -36780,7 +36486,7 @@ function AgentGoalBanner({
36780
36486
  },
36781
36487
  onBlur: () => setEditDraft(null)
36782
36488
  }
36783
- ) : /* @__PURE__ */ jsxs48(
36489
+ ) : /* @__PURE__ */ jsxs47(
36784
36490
  "p",
36785
36491
  {
36786
36492
  className: cn(AgentGUIChrome_styles_default.chromeMessage, AgentGUIChrome_styles_default.chromeNoticeMessage),
@@ -36799,7 +36505,7 @@ function AgentGoalBanner({
36799
36505
  }
36800
36506
  )
36801
36507
  ] }),
36802
- hasActions ? /* @__PURE__ */ jsxs48("div", { className: AgentGUIChrome_styles_default.chromeGoalActions, children: [
36508
+ hasActions ? /* @__PURE__ */ jsxs47("div", { className: AgentGUIChrome_styles_default.chromeGoalActions, children: [
36803
36509
  onEditObjective !== void 0 && editDraft === null ? /* @__PURE__ */ jsx67(
36804
36510
  "button",
36805
36511
  {
@@ -37075,7 +36781,7 @@ import {
37075
36781
  Switch as Switch2,
37076
36782
  cn as cn9
37077
36783
  } from "@tutti-os/ui-system";
37078
- import { jsx as jsx69, jsxs as jsxs49 } from "react/jsx-runtime";
36784
+ import { jsx as jsx69, jsxs as jsxs48 } from "react/jsx-runtime";
37079
36785
  var CLEAR_VALUE = "__tutti_plan_assignment_clear__";
37080
36786
  function toSelectValue(value) {
37081
36787
  return value === "" ? CLEAR_VALUE : value;
@@ -37133,13 +36839,13 @@ function TuttiModePlanTaskAssignmentEditor({
37133
36839
  const agentLabel = agentValue ? (catalog.agents ?? []).find(
37134
36840
  (agent) => agent.agentTargetId === agentValue
37135
36841
  )?.label ?? agentValue : null;
37136
- return /* @__PURE__ */ jsxs49(
36842
+ return /* @__PURE__ */ jsxs48(
37137
36843
  "div",
37138
36844
  {
37139
36845
  className: "tutti-plan-task-assignment-row mt-3 flex flex-wrap items-center gap-3 border-t border-[var(--line-2)] pt-2",
37140
36846
  "data-testid": `tutti-plan-task-assignment-${task.id}`,
37141
36847
  children: [
37142
- /* @__PURE__ */ jsxs49(
36848
+ /* @__PURE__ */ jsxs48(
37143
36849
  Select6,
37144
36850
  {
37145
36851
  disabled,
@@ -37157,7 +36863,7 @@ function TuttiModePlanTaskAssignmentEditor({
37157
36863
  value: agentLabel
37158
36864
  }
37159
36865
  ),
37160
- /* @__PURE__ */ jsxs49(AssignmentSelectContent, { children: [
36866
+ /* @__PURE__ */ jsxs48(AssignmentSelectContent, { children: [
37161
36867
  /* @__PURE__ */ jsx69(AssignmentSelectItem, { value: CLEAR_VALUE, children: labels.notSpecified }),
37162
36868
  (catalog.agents ?? []).map((agent) => /* @__PURE__ */ jsx69(
37163
36869
  AssignmentSelectItem,
@@ -37223,7 +36929,7 @@ function TuttiModePlanTaskAssignmentEditor({
37223
36929
  onChange: (value) => onEdit({ reasoningEffort: value })
37224
36930
  }
37225
36931
  ),
37226
- /* @__PURE__ */ jsxs49(
36932
+ /* @__PURE__ */ jsxs48(
37227
36933
  "label",
37228
36934
  {
37229
36935
  className: cn9(
@@ -37250,7 +36956,7 @@ function TuttiModePlanTaskAssignmentEditor({
37250
36956
  ]
37251
36957
  }
37252
36958
  ),
37253
- /* @__PURE__ */ jsxs49(
36959
+ /* @__PURE__ */ jsxs48(
37254
36960
  "label",
37255
36961
  {
37256
36962
  className: cn9(
@@ -37347,7 +37053,7 @@ function AssignmentValueSelect({
37347
37053
  }) {
37348
37054
  const known = options.some((option) => option.value === value);
37349
37055
  const selectedLabel = value ? options.find((option) => option.value === value)?.label ?? value : null;
37350
- return /* @__PURE__ */ jsxs49(
37056
+ return /* @__PURE__ */ jsxs48(
37351
37057
  Select6,
37352
37058
  {
37353
37059
  disabled,
@@ -37364,7 +37070,7 @@ function AssignmentValueSelect({
37364
37070
  value: selectedLabel
37365
37071
  }
37366
37072
  ),
37367
- /* @__PURE__ */ jsxs49(AssignmentSelectContent, { children: [
37073
+ /* @__PURE__ */ jsxs48(AssignmentSelectContent, { children: [
37368
37074
  /* @__PURE__ */ jsx69(AssignmentSelectItem, { value: CLEAR_VALUE, children: notSpecifiedLabel }),
37369
37075
  options.map((option) => /* @__PURE__ */ jsx69(AssignmentSelectItem, { value: option.value, children: option.label }, option.value)),
37370
37076
  value && !known ? /* @__PURE__ */ jsx69(AssignmentSelectItem, { value, children: value }) : null
@@ -37375,7 +37081,7 @@ function AssignmentValueSelect({
37375
37081
  }
37376
37082
 
37377
37083
  // workspaceWorkflow/tuttiModePlan/TuttiModePlanPanel.tsx
37378
- import { jsx as jsx70, jsxs as jsxs50 } from "react/jsx-runtime";
37084
+ import { jsx as jsx70, jsxs as jsxs49 } from "react/jsx-runtime";
37379
37085
  function TuttiModePlanPanel({
37380
37086
  assignmentCatalog,
37381
37087
  assignmentDrafts,
@@ -37386,7 +37092,7 @@ function TuttiModePlanPanel({
37386
37092
  onAssignmentDraftChange
37387
37093
  }) {
37388
37094
  const editable = assignmentCatalog?.agents != null && panel.actionable && onAssignmentDraftChange !== void 0;
37389
- return /* @__PURE__ */ jsxs50(
37095
+ return /* @__PURE__ */ jsxs49(
37390
37096
  Card,
37391
37097
  {
37392
37098
  className: cn10(
@@ -37395,11 +37101,11 @@ function TuttiModePlanPanel({
37395
37101
  ),
37396
37102
  "data-testid": "tutti-mode-plan-panel",
37397
37103
  children: [
37398
- /* @__PURE__ */ jsxs50(CardHeader, { children: [
37104
+ /* @__PURE__ */ jsxs49(CardHeader, { children: [
37399
37105
  /* @__PURE__ */ jsx70(CardTitle, { children: panel.title }),
37400
37106
  /* @__PURE__ */ jsx70(CardDescription, { children: panel.topicId })
37401
37107
  ] }),
37402
- /* @__PURE__ */ jsxs50(CardContent, { className: "grid gap-4", children: [
37108
+ /* @__PURE__ */ jsxs49(CardContent, { className: "grid gap-4", children: [
37403
37109
  /* @__PURE__ */ jsx70("div", { className: "prose prose-sm max-w-none text-foreground dark:prose-invert", children: /* @__PURE__ */ jsx70(
37404
37110
  ReactMarkdown2,
37405
37111
  {
@@ -37408,15 +37114,15 @@ function TuttiModePlanPanel({
37408
37114
  children: panel.markdownBody
37409
37115
  }
37410
37116
  ) }),
37411
- panel.tasks.length > 0 ? /* @__PURE__ */ jsxs50("section", { className: "grid gap-2", children: [
37117
+ panel.tasks.length > 0 ? /* @__PURE__ */ jsxs49("section", { className: "grid gap-2", children: [
37412
37118
  /* @__PURE__ */ jsx70("h4", { className: "text-xs font-medium text-foreground", children: labels.tasks }),
37413
- /* @__PURE__ */ jsx70("ol", { className: "grid gap-2", children: panel.tasks.map((task) => /* @__PURE__ */ jsxs50(
37119
+ /* @__PURE__ */ jsx70("ol", { className: "grid gap-2", children: panel.tasks.map((task) => /* @__PURE__ */ jsxs49(
37414
37120
  "li",
37415
37121
  {
37416
37122
  className: "rounded-lg border border-[var(--line-2)] bg-[var(--background-board-card)] px-4 pt-3 pb-2 text-sm",
37417
37123
  children: [
37418
- /* @__PURE__ */ jsxs50("div", { className: "flex flex-wrap items-start justify-between gap-2", children: [
37419
- /* @__PURE__ */ jsxs50("div", { className: "font-medium text-foreground", children: [
37124
+ /* @__PURE__ */ jsxs49("div", { className: "flex flex-wrap items-start justify-between gap-2", children: [
37125
+ /* @__PURE__ */ jsxs49("div", { className: "font-medium text-foreground", children: [
37420
37126
  task.ordinal,
37421
37127
  ". ",
37422
37128
  task.title
@@ -37501,7 +37207,7 @@ function priorityLabel(labels, priority) {
37501
37207
  import { useState as useState40 } from "react";
37502
37208
  import { ExternalLink as ExternalLink3, ListChecks as ListChecks3, Square } from "lucide-react";
37503
37209
  import { Button as Button9, Card as Card2, CardContent as CardContent2, CardHeader as CardHeader2, cn as cn11 } from "@tutti-os/ui-system";
37504
- import { jsx as jsx71, jsxs as jsxs51 } from "react/jsx-runtime";
37210
+ import { jsx as jsx71, jsxs as jsxs50 } from "react/jsx-runtime";
37505
37211
  var BOARD_STATUS_ORDER = [
37506
37212
  "not_started",
37507
37213
  "running",
@@ -37604,7 +37310,7 @@ function TuttiPlanIssuePanel({
37604
37310
  setStopping(false);
37605
37311
  });
37606
37312
  } : void 0;
37607
- return /* @__PURE__ */ jsxs51(
37313
+ return /* @__PURE__ */ jsxs50(
37608
37314
  Card2,
37609
37315
  {
37610
37316
  className: cn11(
@@ -37613,8 +37319,8 @@ function TuttiPlanIssuePanel({
37613
37319
  ),
37614
37320
  "data-testid": "tutti-plan-issue-panel",
37615
37321
  children: [
37616
- /* @__PURE__ */ jsx71(CardHeader2, { className: "gap-2", children: /* @__PURE__ */ jsxs51("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
37617
- /* @__PURE__ */ jsxs51("div", { className: "flex min-w-0 items-center gap-2", children: [
37322
+ /* @__PURE__ */ jsx71(CardHeader2, { className: "gap-2", children: /* @__PURE__ */ jsxs50("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
37323
+ /* @__PURE__ */ jsxs50("div", { className: "flex min-w-0 items-center gap-2", children: [
37618
37324
  /* @__PURE__ */ jsx71(
37619
37325
  ListChecks3,
37620
37326
  {
@@ -37629,7 +37335,7 @@ function TuttiPlanIssuePanel({
37629
37335
  String(running)
37630
37336
  ) })
37631
37337
  ] }),
37632
- /* @__PURE__ */ jsxs51("div", { className: "flex shrink-0 items-center gap-1.5", children: [
37338
+ /* @__PURE__ */ jsxs50("div", { className: "flex shrink-0 items-center gap-1.5", children: [
37633
37339
  /* @__PURE__ */ jsx71("div", { className: "flex items-center gap-0.5", children: ["list", "board"].map((mode) => /* @__PURE__ */ jsx71(
37634
37340
  "button",
37635
37341
  {
@@ -37646,7 +37352,7 @@ function TuttiPlanIssuePanel({
37646
37352
  },
37647
37353
  mode
37648
37354
  )) }),
37649
- stopExecution ? /* @__PURE__ */ jsxs51(
37355
+ stopExecution ? /* @__PURE__ */ jsxs50(
37650
37356
  Button9,
37651
37357
  {
37652
37358
  type: "button",
@@ -37662,7 +37368,7 @@ function TuttiPlanIssuePanel({
37662
37368
  ]
37663
37369
  }
37664
37370
  ) : null,
37665
- onOpenIssue ? /* @__PURE__ */ jsxs51(
37371
+ onOpenIssue ? /* @__PURE__ */ jsxs50(
37666
37372
  Button9,
37667
37373
  {
37668
37374
  type: "button",
@@ -37709,10 +37415,10 @@ function TaskStructureChips({
37709
37415
  if (!task.parallelizable && !task.autoAccept && dependencies.length === 0) {
37710
37416
  return null;
37711
37417
  }
37712
- return /* @__PURE__ */ jsxs51("span", { className: "flex min-w-0 flex-wrap items-center gap-1", children: [
37418
+ return /* @__PURE__ */ jsxs50("span", { className: "flex min-w-0 flex-wrap items-center gap-1", children: [
37713
37419
  task.parallelizable ? /* @__PURE__ */ jsx71("span", { className: "shrink-0 rounded-full border border-[color-mix(in_srgb,var(--tutti-purple)_36%,transparent)] px-1.5 text-[10px] leading-4 text-[var(--tutti-purple)]", children: labels.parallelizable }) : null,
37714
37420
  task.autoAccept ? /* @__PURE__ */ jsx71("span", { className: "shrink-0 rounded-full border border-[color-mix(in_srgb,var(--state-success)_42%,transparent)] px-1.5 text-[10px] leading-4 text-[var(--state-success)]", children: labels.autoAccept }) : null,
37715
- dependencies.length > 0 ? /* @__PURE__ */ jsxs51(
37421
+ dependencies.length > 0 ? /* @__PURE__ */ jsxs50(
37716
37422
  "span",
37717
37423
  {
37718
37424
  className: "min-w-0 truncate rounded-full border border-[var(--line-2)] px-1.5 text-[10px] leading-4 text-muted-foreground",
@@ -37737,7 +37443,7 @@ function TaskDecisionActions({
37737
37443
  if (!decideTask || !canRework) {
37738
37444
  return null;
37739
37445
  }
37740
- return /* @__PURE__ */ jsxs51("span", { className: "flex shrink-0 items-center gap-1", children: [
37446
+ return /* @__PURE__ */ jsxs50("span", { className: "flex shrink-0 items-center gap-1", children: [
37741
37447
  canAccept ? /* @__PURE__ */ jsx71(
37742
37448
  Button9,
37743
37449
  {
@@ -37795,14 +37501,14 @@ function TuttiPlanIssueBoard({
37795
37501
  },
37796
37502
  children: columns.map((status) => {
37797
37503
  const tasks = groups.get(status) ?? [];
37798
- return /* @__PURE__ */ jsxs51(
37504
+ return /* @__PURE__ */ jsxs50(
37799
37505
  "div",
37800
37506
  {
37801
37507
  className: "min-h-[220px] rounded-lg border border-[var(--line-2)] bg-muted/30 px-2 py-2",
37802
37508
  "data-testid": `tutti-plan-issue-column-${status}`,
37803
37509
  children: [
37804
- /* @__PURE__ */ jsxs51("div", { className: "mb-1.5 flex items-center justify-between gap-2", children: [
37805
- /* @__PURE__ */ jsxs51("span", { className: "flex min-w-0 items-center gap-1.5", children: [
37510
+ /* @__PURE__ */ jsxs50("div", { className: "mb-1.5 flex items-center justify-between gap-2", children: [
37511
+ /* @__PURE__ */ jsxs50("span", { className: "flex min-w-0 items-center gap-1.5", children: [
37806
37512
  /* @__PURE__ */ jsx71(
37807
37513
  "span",
37808
37514
  {
@@ -37819,7 +37525,7 @@ function TuttiPlanIssueBoard({
37819
37525
  ] }),
37820
37526
  /* @__PURE__ */ jsx71("div", { className: "grid gap-1.5", children: tasks.map((task) => {
37821
37527
  const openable = openTask && taskHasConversation(task);
37822
- return /* @__PURE__ */ jsxs51(
37528
+ return /* @__PURE__ */ jsxs50(
37823
37529
  "div",
37824
37530
  {
37825
37531
  role: openable ? "button" : void 0,
@@ -37869,7 +37575,7 @@ function TuttiPlanIssueList({
37869
37575
  }) {
37870
37576
  const showStages = issue.tasks.some((task) => task.parallelizable);
37871
37577
  const stages = showStages ? groupTuttiPlanIssueTasksIntoStages(issue.tasks) : [{ kind: "sequential", tasks: [...issue.tasks] }];
37872
- return /* @__PURE__ */ jsx71("div", { className: "overflow-hidden rounded-lg border border-[var(--line-2)]", children: stages.map((stage, index) => /* @__PURE__ */ jsxs51("div", { children: [
37578
+ return /* @__PURE__ */ jsx71("div", { className: "overflow-hidden rounded-lg border border-[var(--line-2)]", children: stages.map((stage, index) => /* @__PURE__ */ jsxs50("div", { children: [
37873
37579
  showStages ? /* @__PURE__ */ jsx71(
37874
37580
  "div",
37875
37581
  {
@@ -37884,7 +37590,7 @@ function TuttiPlanIssueList({
37884
37590
  stage.tasks.map((task) => {
37885
37591
  const status = boardStatusOf(task);
37886
37592
  const openable = openTask && taskHasConversation(task);
37887
- return /* @__PURE__ */ jsxs51(
37593
+ return /* @__PURE__ */ jsxs50(
37888
37594
  "div",
37889
37595
  {
37890
37596
  role: openable ? "button" : void 0,
@@ -37901,14 +37607,14 @@ function TuttiPlanIssueList({
37901
37607
  }
37902
37608
  } : void 0,
37903
37609
  children: [
37904
- /* @__PURE__ */ jsxs51("div", { className: "min-w-0 flex-1", children: [
37905
- /* @__PURE__ */ jsxs51("div", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [
37610
+ /* @__PURE__ */ jsxs50("div", { className: "min-w-0 flex-1", children: [
37611
+ /* @__PURE__ */ jsxs50("div", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [
37906
37612
  /* @__PURE__ */ jsx71("span", { className: "truncate text-xs font-medium text-foreground", children: task.title }),
37907
37613
  /* @__PURE__ */ jsx71(TaskStructureChips, { labels, task })
37908
37614
  ] }),
37909
37615
  task.content ? /* @__PURE__ */ jsx71("p", { className: "mt-1 line-clamp-2 text-[11px] text-muted-foreground", children: task.content }) : null
37910
37616
  ] }),
37911
- /* @__PURE__ */ jsxs51("span", { className: "flex shrink-0 items-center gap-2", children: [
37617
+ /* @__PURE__ */ jsxs50("span", { className: "flex shrink-0 items-center gap-2", children: [
37912
37618
  /* @__PURE__ */ jsx71(
37913
37619
  TaskDecisionActions,
37914
37620
  {
@@ -37918,7 +37624,7 @@ function TuttiPlanIssueList({
37918
37624
  deciding: decidingTaskIds.includes(task.taskId)
37919
37625
  }
37920
37626
  ),
37921
- /* @__PURE__ */ jsxs51("span", { className: "flex shrink-0 items-center gap-1.5 text-[11px] text-muted-foreground", children: [
37627
+ /* @__PURE__ */ jsxs50("span", { className: "flex shrink-0 items-center gap-1.5 text-[11px] text-muted-foreground", children: [
37922
37628
  /* @__PURE__ */ jsx71(
37923
37629
  "span",
37924
37630
  {
@@ -38301,8 +38007,8 @@ function useTuttiModePlanPanels(input) {
38301
38007
 
38302
38008
  // agent-gui/agentGuiNode/AgentComposerDisclosureCard.tsx
38303
38009
  import { useId as useId3 } from "react";
38304
- import { ChevronDown as ChevronDown4 } from "lucide-react";
38305
- import { jsx as jsx72, jsxs as jsxs52 } from "react/jsx-runtime";
38010
+ import { ChevronDown as ChevronDown2 } from "lucide-react";
38011
+ import { jsx as jsx72, jsxs as jsxs51 } from "react/jsx-runtime";
38306
38012
  function AgentComposerDisclosureCard({
38307
38013
  actions,
38308
38014
  bannerClassName,
@@ -38318,7 +38024,7 @@ function AgentComposerDisclosureCard({
38318
38024
  }) {
38319
38025
  const panelId = useId3();
38320
38026
  const disclosureLabel = expanded ? labels.collapse : labels.expand;
38321
- return /* @__PURE__ */ jsx72("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: /* @__PURE__ */ jsxs52(
38027
+ return /* @__PURE__ */ jsx72("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: /* @__PURE__ */ jsxs51(
38322
38028
  "section",
38323
38029
  {
38324
38030
  className: AgentGUIChrome_styles_default.composerDisclosure,
@@ -38334,7 +38040,7 @@ function AgentComposerDisclosureCard({
38334
38040
  children
38335
38041
  }
38336
38042
  ) : null,
38337
- /* @__PURE__ */ jsxs52(
38043
+ /* @__PURE__ */ jsxs51(
38338
38044
  "div",
38339
38045
  {
38340
38046
  className: cn(
@@ -38344,7 +38050,7 @@ function AgentComposerDisclosureCard({
38344
38050
  bannerClassName
38345
38051
  ),
38346
38052
  children: [
38347
- /* @__PURE__ */ jsxs52(
38053
+ /* @__PURE__ */ jsxs51(
38348
38054
  "button",
38349
38055
  {
38350
38056
  type: "button",
@@ -38356,7 +38062,7 @@ function AgentComposerDisclosureCard({
38356
38062
  onClick: () => onExpandedChange(!expanded),
38357
38063
  children: [
38358
38064
  /* @__PURE__ */ jsx72("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: icon }),
38359
- /* @__PURE__ */ jsxs52(
38065
+ /* @__PURE__ */ jsxs51(
38360
38066
  "span",
38361
38067
  {
38362
38068
  className: cn(AgentGUIChrome_styles_default.chromeMessage, AgentGUIChrome_styles_default.chromeNoticeMessage),
@@ -38375,7 +38081,7 @@ function AgentComposerDisclosureCard({
38375
38081
  }
38376
38082
  ),
38377
38083
  /* @__PURE__ */ jsx72(
38378
- ChevronDown4,
38084
+ ChevronDown2,
38379
38085
  {
38380
38086
  "aria-hidden": true,
38381
38087
  className: cn(
@@ -38427,7 +38133,7 @@ function projectTuttiIntensityPreview(intensity) {
38427
38133
  }
38428
38134
 
38429
38135
  // agent-gui/agentGuiNode/composer/TuttiBudgetPopover.tsx
38430
- import { jsx as jsx73, jsxs as jsxs53 } from "react/jsx-runtime";
38136
+ import { jsx as jsx73, jsxs as jsxs52 } from "react/jsx-runtime";
38431
38137
  var tierTone = {
38432
38138
  cost: {
38433
38139
  sliderHandleUrl: tutti_intensity_handle_cost_default,
@@ -38462,7 +38168,7 @@ function TuttiBudgetPopover({
38462
38168
  smallGroup: labels.agentCountBalance,
38463
38169
  maxParallel: labels.agentCountPowerful
38464
38170
  }[preview.agentCount];
38465
- return /* @__PURE__ */ jsxs53(
38171
+ return /* @__PURE__ */ jsxs52(
38466
38172
  Popover5,
38467
38173
  {
38468
38174
  open,
@@ -38474,7 +38180,7 @@ function TuttiBudgetPopover({
38474
38180
  },
38475
38181
  children: [
38476
38182
  /* @__PURE__ */ jsx73(PopoverTrigger3, { asChild: true, children }),
38477
- /* @__PURE__ */ jsxs53(
38183
+ /* @__PURE__ */ jsxs52(
38478
38184
  PopoverContent4,
38479
38185
  {
38480
38186
  align: "start",
@@ -38486,13 +38192,13 @@ function TuttiBudgetPopover({
38486
38192
  },
38487
38193
  children: [
38488
38194
  /* @__PURE__ */ jsx73("div", { className: "text-[13px] font-semibold text-[var(--text-primary)]", children: labels.title }),
38489
- /* @__PURE__ */ jsxs53(
38195
+ /* @__PURE__ */ jsxs52(
38490
38196
  "div",
38491
38197
  {
38492
38198
  className: "rounded-[8px] border border-[var(--line-2)] bg-[var(--transparency-block)] p-2.5",
38493
38199
  "data-agent-tutti-budget-preview": preview.tier,
38494
38200
  children: [
38495
- /* @__PURE__ */ jsxs53("div", { className: "flex items-center justify-between gap-2 text-[12px] text-[var(--text-secondary)]", children: [
38201
+ /* @__PURE__ */ jsxs52("div", { className: "flex items-center justify-between gap-2 text-[12px] text-[var(--text-secondary)]", children: [
38496
38202
  /* @__PURE__ */ jsx73("span", { children: labels.intensityLabel }),
38497
38203
  /* @__PURE__ */ jsx73(
38498
38204
  "span",
@@ -38503,7 +38209,7 @@ function TuttiBudgetPopover({
38503
38209
  }
38504
38210
  )
38505
38211
  ] }),
38506
- /* @__PURE__ */ jsxs53("div", { className: "mt-3", children: [
38212
+ /* @__PURE__ */ jsxs52("div", { className: "mt-3", children: [
38507
38213
  /* @__PURE__ */ jsx73(
38508
38214
  Slider,
38509
38215
  {
@@ -38525,7 +38231,7 @@ function TuttiBudgetPopover({
38525
38231
  }
38526
38232
  }
38527
38233
  ),
38528
- /* @__PURE__ */ jsxs53("div", { className: "mt-3 flex items-center justify-between gap-2 text-[11px] font-medium", children: [
38234
+ /* @__PURE__ */ jsxs52("div", { className: "mt-3 flex items-center justify-between gap-2 text-[11px] font-medium", children: [
38529
38235
  /* @__PURE__ */ jsx73("span", { className: "text-[var(--state-success)]", children: labels.previewCost }),
38530
38236
  /* @__PURE__ */ jsx73("span", { className: "text-[var(--accent-codex)]", children: labels.previewBalance }),
38531
38237
  /* @__PURE__ */ jsx73("span", { className: "text-[var(--tutti-purple)]", children: labels.previewPowerful })
@@ -38539,8 +38245,8 @@ function TuttiBudgetPopover({
38539
38245
  children: /* @__PURE__ */ jsx73("span", { className: "text-[12px] font-medium text-[var(--text-secondary)]", children: labels.previewTitle })
38540
38246
  }
38541
38247
  ),
38542
- /* @__PURE__ */ jsxs53("div", { className: "mt-2 grid grid-cols-2 gap-2 text-[11px]", children: [
38543
- /* @__PURE__ */ jsxs53("div", { className: "min-w-0", children: [
38248
+ /* @__PURE__ */ jsxs52("div", { className: "mt-2 grid grid-cols-2 gap-2 text-[11px]", children: [
38249
+ /* @__PURE__ */ jsxs52("div", { className: "min-w-0", children: [
38544
38250
  /* @__PURE__ */ jsx73("div", { className: "text-[var(--text-tertiary)]", children: labels.modelStrengthLabel }),
38545
38251
  /* @__PURE__ */ jsx73(
38546
38252
  "div",
@@ -38551,7 +38257,7 @@ function TuttiBudgetPopover({
38551
38257
  }
38552
38258
  )
38553
38259
  ] }),
38554
- /* @__PURE__ */ jsxs53("div", { className: "min-w-0", children: [
38260
+ /* @__PURE__ */ jsxs52("div", { className: "min-w-0", children: [
38555
38261
  /* @__PURE__ */ jsx73("div", { className: "text-[var(--text-tertiary)]", children: labels.agentCountLabel }),
38556
38262
  /* @__PURE__ */ jsx73(
38557
38263
  "div",
@@ -38576,7 +38282,7 @@ function TuttiBudgetPopover({
38576
38282
  }
38577
38283
 
38578
38284
  // agent-gui/agentGuiNode/TuttiWorkflowDock.tsx
38579
- import { Fragment as Fragment22, jsx as jsx74, jsxs as jsxs54 } from "react/jsx-runtime";
38285
+ import { Fragment as Fragment22, jsx as jsx74, jsxs as jsxs53 } from "react/jsx-runtime";
38580
38286
  function countIssueTasks(issue, status) {
38581
38287
  return issue.tasks.filter((task) => task.status === status).length;
38582
38288
  }
@@ -38645,14 +38351,14 @@ function TuttiWorkflowDock({
38645
38351
  balance: intensityPopoverLabels.previewBalance,
38646
38352
  powerful: intensityPopoverLabels.previewPowerful
38647
38353
  }[reviewTier] : null;
38648
- const actions = review !== null ? /* @__PURE__ */ jsxs54(Fragment22, { children: [
38354
+ const actions = review !== null ? /* @__PURE__ */ jsxs53(Fragment22, { children: [
38649
38355
  /* @__PURE__ */ jsx74(
38650
38356
  TuttiBudgetPopover,
38651
38357
  {
38652
38358
  intensity: reviewDisplayIntensity ?? review.intensity,
38653
38359
  labels: intensityPopoverLabels,
38654
38360
  onChange: handleIntensityChange,
38655
- children: /* @__PURE__ */ jsxs54(
38361
+ children: /* @__PURE__ */ jsxs53(
38656
38362
  "button",
38657
38363
  {
38658
38364
  type: "button",
@@ -38668,7 +38374,7 @@ function TuttiWorkflowDock({
38668
38374
  ),
38669
38375
  children: [
38670
38376
  /* @__PURE__ */ jsx74(Gauge2, { "aria-hidden": true, className: "size-3.5" }),
38671
- /* @__PURE__ */ jsxs54("span", { className: "flex items-center gap-0.5", children: [
38377
+ /* @__PURE__ */ jsxs53("span", { className: "flex items-center gap-0.5", children: [
38672
38378
  reviewTierLabel !== null ? /* @__PURE__ */ jsx74("span", { className: "text-[11px]", children: reviewTierLabel }) : null,
38673
38379
  /* @__PURE__ */ jsx74("span", { className: "inline-block w-[3ch] text-left text-[11px] tabular-nums", children: reviewDisplayIntensity ?? review.intensity })
38674
38380
  ] })
@@ -38690,7 +38396,7 @@ function TuttiWorkflowDock({
38690
38396
  children: /* @__PURE__ */ jsx74(X6, { "aria-hidden": true, className: "size-3.5" })
38691
38397
  }
38692
38398
  )
38693
- ] }) : phase.kind === "error" && phase.retryable ? /* @__PURE__ */ jsxs54(
38399
+ ] }) : phase.kind === "error" && phase.retryable ? /* @__PURE__ */ jsxs53(
38694
38400
  "button",
38695
38401
  {
38696
38402
  type: "button",
@@ -38728,7 +38434,7 @@ function TuttiWorkflowDock({
38728
38434
  submitting: review.submitting,
38729
38435
  onAssignmentDraftChange
38730
38436
  }
38731
- ) : phase.kind === "materializing" ? /* @__PURE__ */ jsxs54(
38437
+ ) : phase.kind === "materializing" ? /* @__PURE__ */ jsxs53(
38732
38438
  "div",
38733
38439
  {
38734
38440
  className: "grid min-h-28 place-items-center gap-2 text-center text-sm text-muted-foreground",
@@ -38768,7 +38474,7 @@ function TuttiWorkflowDock({
38768
38474
  }
38769
38475
 
38770
38476
  // agent-gui/agentGuiNode/view/AgentGUIBottomDockPane.tsx
38771
- import { Fragment as Fragment23, jsx as jsx75, jsxs as jsxs55 } from "react/jsx-runtime";
38477
+ import { Fragment as Fragment23, jsx as jsx75, jsxs as jsxs54 } from "react/jsx-runtime";
38772
38478
  var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38773
38479
  bottomDockRef,
38774
38480
  showScrollToBottom,
@@ -38798,7 +38504,6 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38798
38504
  tuttiPlanIssuePanelLabels
38799
38505
  }) {
38800
38506
  "use memo";
38801
- const previewMode = composerProps.previewMode === true;
38802
38507
  const goal = objectRecord(sessionChrome.rawState?.goal);
38803
38508
  const goalObjective = goal ? stringValue3(goal.objective) : "";
38804
38509
  const goalStatus = goal ? stringValue3(goal.status) : "";
@@ -38840,7 +38545,6 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38840
38545
  embedded: true,
38841
38546
  edgeGlow: true,
38842
38547
  keyboardShortcuts: keyboardShortcutsEnabled,
38843
- previewMode,
38844
38548
  isSubmitting: isRespondingApproval,
38845
38549
  onSubmit: onSubmitBottomDockInteractivePrompt,
38846
38550
  labels: promptLabels
@@ -38848,7 +38552,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38848
38552
  )
38849
38553
  }
38850
38554
  ) : null,
38851
- accessories: /* @__PURE__ */ jsxs55(Fragment23, { children: [
38555
+ accessories: /* @__PURE__ */ jsxs54(Fragment23, { children: [
38852
38556
  inlineNoticeChrome ? /* @__PURE__ */ jsx75(
38853
38557
  AgentSessionChrome,
38854
38558
  {
@@ -38937,7 +38641,6 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
38937
38641
  embedded: true,
38938
38642
  edgeGlow: true,
38939
38643
  keyboardShortcuts: keyboardShortcutsEnabled,
38940
- previewMode,
38941
38644
  isSubmitting: isRespondingApproval,
38942
38645
  onSubmit: onSubmitBottomDockInteractivePrompt,
38943
38646
  labels: promptLabels
@@ -38957,13 +38660,13 @@ import {
38957
38660
  ToastTitle,
38958
38661
  ToastViewport
38959
38662
  } from "@tutti-os/ui-system";
38960
- import { jsx as jsx76, jsxs as jsxs56 } from "react/jsx-runtime";
38663
+ import { jsx as jsx76, jsxs as jsxs55 } from "react/jsx-runtime";
38961
38664
  function AgentGUIContentToast({
38962
38665
  insetTopPx,
38963
38666
  message
38964
38667
  }) {
38965
38668
  const [open, setOpen] = useState44(true);
38966
- return /* @__PURE__ */ jsxs56(ToastProvider, { children: [
38669
+ return /* @__PURE__ */ jsxs55(ToastProvider, { children: [
38967
38670
  /* @__PURE__ */ jsx76(
38968
38671
  ToastRoot,
38969
38672
  {
@@ -38994,7 +38697,7 @@ import { ScrollArea as ScrollArea3 } from "@tutti-os/ui-system/components";
38994
38697
 
38995
38698
  // agent-gui/agentGuiNode/view/AgentGUIConversationTimelinePane.tsx
38996
38699
  import { memo as memo10 } from "react";
38997
- import { Fragment as Fragment24, jsx as jsx77, jsxs as jsxs57 } from "react/jsx-runtime";
38700
+ import { Fragment as Fragment24, jsx as jsx77, jsxs as jsxs56 } from "react/jsx-runtime";
38998
38701
  var EMPTY_WORKSPACE_APP_ICONS3 = [];
38999
38702
  var AgentGUIConversationTimelinePane = memo10(
39000
38703
  function AgentGUIConversationTimelinePane2({
@@ -39010,11 +38713,10 @@ var AgentGUIConversationTimelinePane = memo10(
39010
38713
  onAuthLogin,
39011
38714
  availableSkills,
39012
38715
  workspaceAppIcons = EMPTY_WORKSPACE_APP_ICONS3,
39013
- previewMode = false,
39014
38716
  labels
39015
38717
  }) {
39016
38718
  "use memo";
39017
- return /* @__PURE__ */ jsxs57(Fragment24, { children: [
38719
+ return /* @__PURE__ */ jsxs56(Fragment24, { children: [
39018
38720
  isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx77(
39019
38721
  "div",
39020
38722
  {
@@ -39038,7 +38740,6 @@ var AgentGUIConversationTimelinePane = memo10(
39038
38740
  onAuthLogin,
39039
38741
  availableSkills,
39040
38742
  workspaceAppIcons,
39041
- previewMode,
39042
38743
  labels
39043
38744
  }
39044
38745
  )
@@ -39081,7 +38782,6 @@ var AgentGUIDetailTimeline = memo11(function AgentGUIDetailTimeline2({
39081
38782
  labels,
39082
38783
  onAuthLogin,
39083
38784
  onLinkAction,
39084
- previewMode,
39085
38785
  showTimelineSkeleton,
39086
38786
  showUnavailableChatEmpty,
39087
38787
  timelineContentRef,
@@ -39111,7 +38811,6 @@ var AgentGUIDetailTimeline = memo11(function AgentGUIDetailTimeline2({
39111
38811
  onAuthLogin,
39112
38812
  availableSkills,
39113
38813
  workspaceAppIcons,
39114
- previewMode,
39115
38814
  labels: conversationFlowLabels
39116
38815
  }
39117
38816
  ) : homeContent
@@ -39139,6 +38838,52 @@ function readTimelineGeometry(timeline) {
39139
38838
  scrollHeight
39140
38839
  };
39141
38840
  }
38841
+ function readBottomDockSafeArea(bottomDock) {
38842
+ const bottomDockRect = bottomDock.getBoundingClientRect();
38843
+ let timelineVisualTop = bottomDockRect.top;
38844
+ let floatingVisualTop = bottomDockRect.top;
38845
+ bottomDock.querySelectorAll("*").forEach((element) => {
38846
+ if (element.closest(`.${AgentGUINode_styles_default.bottomDockScrollToBottom}`)) {
38847
+ return;
38848
+ }
38849
+ const rect = element.getBoundingClientRect();
38850
+ if (rect.width <= 0 || rect.height <= 0) {
38851
+ return;
38852
+ }
38853
+ if (element.closest(`.${AgentGUINode_styles_default.composerInputShell}`)) {
38854
+ if (element.matches(".agent-gui-node__composer-prompt-input-area")) {
38855
+ floatingVisualTop = Math.min(floatingVisualTop, rect.top);
38856
+ }
38857
+ return;
38858
+ }
38859
+ if (element.closest(`.${AgentGUINode_styles_default.composerDisclosurePanel}`)) {
38860
+ floatingVisualTop = Math.min(floatingVisualTop, rect.top);
38861
+ return;
38862
+ }
38863
+ floatingVisualTop = Math.min(floatingVisualTop, rect.top);
38864
+ timelineVisualTop = Math.min(timelineVisualTop, rect.top);
38865
+ });
38866
+ return {
38867
+ timelineOverflowHeight: Math.max(
38868
+ 0,
38869
+ Math.ceil(bottomDockRect.top - timelineVisualTop)
38870
+ ),
38871
+ floatingOverflowHeight: Math.max(
38872
+ 0,
38873
+ Math.ceil(bottomDockRect.top - floatingVisualTop)
38874
+ )
38875
+ };
38876
+ }
38877
+ function writeBottomDockSafeArea(timeline, safeArea) {
38878
+ timeline.style.setProperty(
38879
+ "--agent-gui-bottom-dock-safe-area",
38880
+ `${safeArea.timelineOverflowHeight}px`
38881
+ );
38882
+ safeArea.bottomDock.style.setProperty(
38883
+ "--agent-gui-bottom-dock-floating-safe-area",
38884
+ `${safeArea.floatingOverflowHeight}px`
38885
+ );
38886
+ }
39142
38887
  function useAgentGUIDetailScroll(input) {
39143
38888
  const {
39144
38889
  actions,
@@ -39157,8 +38902,10 @@ function useAgentGUIDetailScroll(input) {
39157
38902
  const [isTimelineScrolledToTop, setIsTimelineScrolledToTop] = useState45(true);
39158
38903
  const [isTimelineScrolledToBottom, setIsTimelineScrolledToBottom] = useState45(true);
39159
38904
  const bottomLockOwnerRef = useRef52(null);
38905
+ const pointerScrollConversationRef = useRef52(null);
39160
38906
  const userScrollAwayIntentConversationRef = useRef52(null);
39161
38907
  const lastShowTimelineSkeletonRef = useRef52(showTimelineSkeleton);
38908
+ const bottomDockSafeAreaRef = useRef52(null);
39162
38909
  useLayoutEffect7(() => {
39163
38910
  const timelineSkeletonChanged = lastShowTimelineSkeletonRef.current !== showTimelineSkeleton;
39164
38911
  lastShowTimelineSkeletonRef.current = showTimelineSkeleton;
@@ -39171,17 +38918,33 @@ function useAgentGUIDetailScroll(input) {
39171
38918
  timelineScrollAnchorRef.current = null;
39172
38919
  bottomLockOwnerRef.current = null;
39173
38920
  pendingPrependScrollAnchorRef.current = null;
38921
+ pointerScrollConversationRef.current = null;
39174
38922
  submittedPromptScrollConversationRef.current = null;
39175
38923
  userScrollAwayIntentConversationRef.current = null;
39176
38924
  setIsTimelineScrolledToTop(true);
39177
38925
  setIsTimelineScrolledToBottom(true);
39178
38926
  return;
39179
38927
  }
38928
+ if (activeConversationId !== viewModel.rail.activeConversationId) {
38929
+ bottomLockOwnerRef.current = null;
38930
+ return;
38931
+ }
39180
38932
  const anchor = timelineScrollAnchorRef.current;
39181
38933
  const prependAnchor = pendingPrependScrollAnchorRef.current;
39182
38934
  const shouldScrollSubmittedPromptToBottom = submittedPromptScrollConversationRef.current === activeConversationId;
39183
38935
  const conversationChanged = !anchor || anchor.conversationId !== activeConversationId;
39184
38936
  const shouldRestorePrependAnchor = prependAnchor?.conversationId === activeConversationId;
38937
+ if (!conversationChanged && bottomLockOwnerRef.current === null && anchor.scrollHeight - anchor.scrollTop - anchor.clientHeight <= AGENT_GUI_STICK_TO_BOTTOM_THRESHOLD_PX) {
38938
+ bottomLockOwnerRef.current = activeConversationId;
38939
+ }
38940
+ if (conversationChanged && showTimelineSkeleton) {
38941
+ bottomLockOwnerRef.current = activeConversationId;
38942
+ pointerScrollConversationRef.current = null;
38943
+ userScrollAwayIntentConversationRef.current = null;
38944
+ setIsTimelineScrolledToTop(true);
38945
+ setIsTimelineScrolledToBottom(true);
38946
+ return;
38947
+ }
39185
38948
  if (!conversationChanged && !shouldScrollSubmittedPromptToBottom && !shouldRestorePrependAnchor && !timelineSkeletonChanged) {
39186
38949
  return;
39187
38950
  }
@@ -39190,6 +38953,7 @@ function useAgentGUIDetailScroll(input) {
39190
38953
  let nextScrollTop;
39191
38954
  if (conversationChanged || shouldScrollSubmittedPromptToBottom) {
39192
38955
  bottomLockOwnerRef.current = activeConversationId;
38956
+ pointerScrollConversationRef.current = null;
39193
38957
  userScrollAwayIntentConversationRef.current = null;
39194
38958
  }
39195
38959
  const shouldKeepBottomLocked = bottomLockOwnerRef.current === activeConversationId;
@@ -39217,6 +38981,7 @@ function useAgentGUIDetailScroll(input) {
39217
38981
  } else {
39218
38982
  const distanceFromBottom = anchor.scrollHeight - anchor.scrollTop - anchor.clientHeight;
39219
38983
  if (distanceFromBottom <= AGENT_GUI_STICK_TO_BOTTOM_THRESHOLD_PX) {
38984
+ bottomLockOwnerRef.current = activeConversationId;
39220
38985
  setTimelineScrollTopInstantly(timeline, maxScrollTop);
39221
38986
  nextScrollTop = maxScrollTop;
39222
38987
  } else {
@@ -39240,70 +39005,46 @@ function useAgentGUIDetailScroll(input) {
39240
39005
  conversation,
39241
39006
  showTimelineSkeleton,
39242
39007
  timelineConversationId,
39008
+ viewModel.rail.activeConversationId,
39243
39009
  viewModel.detail.isLoadingOlderMessages
39244
39010
  ]);
39011
+ const hasTimelineConversation = timelineConversationId !== null;
39245
39012
  useLayoutEffect7(() => {
39246
39013
  const timeline = timelineRef.current;
39247
39014
  const bottomDock = bottomDockRef.current;
39248
- const activeConversationId = timelineConversationId;
39249
- if (!timeline || !bottomDock || !activeConversationId) {
39015
+ if (!hasTimelineConversation || !timeline || !bottomDock) {
39250
39016
  return;
39251
39017
  }
39252
39018
  let animationFrameId = null;
39253
- const syncBottomDockSafeArea = () => {
39254
- const bottomDockRect = bottomDock.getBoundingClientRect();
39255
- let timelineVisualTop = bottomDockRect.top;
39256
- let floatingVisualTop = bottomDockRect.top;
39257
- bottomDock.querySelectorAll("*").forEach((element) => {
39258
- if (element.closest(`.${AgentGUINode_styles_default.bottomDockScrollToBottom}`)) {
39259
- return;
39260
- }
39261
- const rect = element.getBoundingClientRect();
39262
- if (rect.width <= 0 || rect.height <= 0) {
39263
- return;
39264
- }
39265
- if (element.closest(`.${AgentGUINode_styles_default.composerInputShell}`)) {
39266
- if (element.matches(".agent-gui-node__composer-prompt-input-area")) {
39267
- floatingVisualTop = Math.min(floatingVisualTop, rect.top);
39268
- }
39269
- return;
39270
- }
39271
- if (element.closest(`.${AgentGUINode_styles_default.composerDisclosurePanel}`)) {
39272
- floatingVisualTop = Math.min(floatingVisualTop, rect.top);
39273
- return;
39274
- }
39275
- floatingVisualTop = Math.min(floatingVisualTop, rect.top);
39276
- timelineVisualTop = Math.min(timelineVisualTop, rect.top);
39277
- });
39278
- const timelineOverflowHeight = Math.max(
39279
- 0,
39280
- Math.ceil(bottomDockRect.top - timelineVisualTop)
39281
- );
39282
- const floatingOverflowHeight = Math.max(
39283
- 0,
39284
- Math.ceil(bottomDockRect.top - floatingVisualTop)
39285
- );
39286
- timeline.style.setProperty(
39287
- "--agent-gui-bottom-dock-safe-area",
39288
- `${timelineOverflowHeight}px`
39289
- );
39290
- bottomDock.style.setProperty(
39291
- "--agent-gui-bottom-dock-floating-safe-area",
39292
- `${floatingOverflowHeight}px`
39293
- );
39294
- };
39295
- const syncBottomDockSpace = () => {
39296
- syncBottomDockSafeArea();
39297
- if (activeConversationId !== viewModel.rail.activeConversationId) {
39298
- return;
39019
+ const resolveBottomLockConversation = () => {
39020
+ const activeConversationId = bottomLockOwnerRef.current;
39021
+ if (!activeConversationId) {
39022
+ return null;
39299
39023
  }
39300
39024
  const anchor = timelineScrollAnchorRef.current;
39301
- const bottomLocked = bottomLockOwnerRef.current === activeConversationId;
39302
39025
  if (!anchor || anchor.conversationId !== activeConversationId) {
39026
+ return null;
39027
+ }
39028
+ return activeConversationId;
39029
+ };
39030
+ const syncBottomDockSafeArea = (forceMeasurement) => {
39031
+ const cachedSafeArea = bottomDockSafeAreaRef.current;
39032
+ if (!forceMeasurement && cachedSafeArea?.bottomDock === bottomDock && cachedSafeArea.revision === bottomDockStoreRevision) {
39033
+ writeBottomDockSafeArea(timeline, cachedSafeArea);
39303
39034
  return;
39304
39035
  }
39305
- const distanceFromBottom = anchor.scrollHeight - anchor.scrollTop - anchor.clientHeight;
39306
- if (!bottomLocked && distanceFromBottom > AGENT_GUI_STICK_TO_BOTTOM_THRESHOLD_PX) {
39036
+ const measuredSafeArea = readBottomDockSafeArea(bottomDock);
39037
+ const nextSafeArea = {
39038
+ bottomDock,
39039
+ revision: bottomDockStoreRevision,
39040
+ ...measuredSafeArea
39041
+ };
39042
+ bottomDockSafeAreaRef.current = nextSafeArea;
39043
+ writeBottomDockSafeArea(timeline, nextSafeArea);
39044
+ };
39045
+ const syncConversationBottomLock = () => {
39046
+ const scheduledConversationId = resolveBottomLockConversation();
39047
+ if (!scheduledConversationId) {
39307
39048
  return;
39308
39049
  }
39309
39050
  if (animationFrameId !== null) {
@@ -39311,20 +39052,14 @@ function useAgentGUIDetailScroll(input) {
39311
39052
  }
39312
39053
  animationFrameId = window.requestAnimationFrame(() => {
39313
39054
  animationFrameId = null;
39314
- const latestAnchor = timelineScrollAnchorRef.current;
39315
- if (!latestAnchor || latestAnchor.conversationId !== activeConversationId) {
39316
- return;
39317
- }
39318
- const latestDistanceFromBottom = latestAnchor.scrollHeight - latestAnchor.scrollTop - latestAnchor.clientHeight;
39319
- const latestBottomLocked = bottomLockOwnerRef.current === activeConversationId;
39320
- if (!latestBottomLocked && latestDistanceFromBottom > AGENT_GUI_STICK_TO_BOTTOM_THRESHOLD_PX) {
39055
+ if (resolveBottomLockConversation() !== scheduledConversationId || timelineRef.current !== timeline) {
39321
39056
  return;
39322
39057
  }
39323
39058
  const geometry = readTimelineGeometry(timeline);
39324
39059
  const maxScrollTop = geometry.maxScrollTop;
39325
39060
  timeline.scrollTop = maxScrollTop;
39326
39061
  timelineScrollAnchorRef.current = {
39327
- conversationId: activeConversationId,
39062
+ conversationId: scheduledConversationId,
39328
39063
  scrollHeight: geometry.scrollHeight,
39329
39064
  scrollTop: maxScrollTop,
39330
39065
  clientHeight: geometry.clientHeight
@@ -39335,7 +39070,8 @@ function useAgentGUIDetailScroll(input) {
39335
39070
  setIsTimelineScrolledToBottom(true);
39336
39071
  });
39337
39072
  };
39338
- syncBottomDockSpace();
39073
+ syncBottomDockSafeArea(false);
39074
+ syncConversationBottomLock();
39339
39075
  if (typeof ResizeObserver === "undefined") {
39340
39076
  return () => {
39341
39077
  timeline.style.removeProperty("--agent-gui-bottom-dock-safe-area");
@@ -39347,7 +39083,10 @@ function useAgentGUIDetailScroll(input) {
39347
39083
  }
39348
39084
  };
39349
39085
  }
39350
- const observer = new ResizeObserver(syncBottomDockSpace);
39086
+ const observer = new ResizeObserver(() => {
39087
+ syncBottomDockSafeArea(true);
39088
+ syncConversationBottomLock();
39089
+ });
39351
39090
  observer.observe(bottomDock);
39352
39091
  const promptInputArea = bottomDock.querySelector(
39353
39092
  ".agent-gui-node__composer-prompt-input-area"
@@ -39365,11 +39104,7 @@ function useAgentGUIDetailScroll(input) {
39365
39104
  }
39366
39105
  observer.disconnect();
39367
39106
  };
39368
- }, [
39369
- bottomDockStoreRevision,
39370
- timelineConversationId,
39371
- viewModel.rail.activeConversationId
39372
- ]);
39107
+ }, [bottomDockStoreRevision, hasTimelineConversation]);
39373
39108
  useEffect33(() => {
39374
39109
  const timeline = timelineRef.current;
39375
39110
  const timelineContent = timelineContentRef.current;
@@ -39377,8 +39112,10 @@ function useAgentGUIDetailScroll(input) {
39377
39112
  if (!timeline || !activeConversationId) {
39378
39113
  return;
39379
39114
  }
39380
- const loadOlderMessagesNearTop = (scrollTop, scrollHeight) => {
39381
- if (activeConversationId === viewModel.rail.activeConversationId && viewModel.detail.hasOlderMessages && !viewModel.detail.isLoadingOlderMessages && scrollTop <= AGENT_GUI_TOP_HISTORY_PREFETCH_THRESHOLD_PX) {
39115
+ const loadOlderMessagesNearTop = (scrollTop, scrollHeight, clientHeight) => {
39116
+ const bottomLocked = bottomLockOwnerRef.current === activeConversationId;
39117
+ const needsMoreContentToFillViewport = scrollHeight <= clientHeight;
39118
+ if (activeConversationId === viewModel.rail.activeConversationId && viewModel.detail.hasOlderMessages && !viewModel.detail.isLoadingOlderMessages && !showTimelineSkeleton && (!bottomLocked || needsMoreContentToFillViewport) && scrollTop <= AGENT_GUI_TOP_HISTORY_PREFETCH_THRESHOLD_PX) {
39382
39119
  pendingPrependScrollAnchorRef.current = {
39383
39120
  conversationId: activeConversationId,
39384
39121
  scrollHeight,
@@ -39392,13 +39129,22 @@ function useAgentGUIDetailScroll(input) {
39392
39129
  if (!previousAnchor || previousAnchor.conversationId !== activeConversationId) {
39393
39130
  return;
39394
39131
  }
39395
- const scrollTop = timeline.scrollTop;
39396
- const inferredUserScrollAway = scrollTop < previousAnchor.scrollTop - 1;
39132
+ let scrollTop = timeline.scrollTop;
39133
+ const pointerDrivenScrollAway = pointerScrollConversationRef.current === activeConversationId && scrollTop < previousAnchor.scrollTop - 1;
39397
39134
  const explicitUserScrollAway = userScrollAwayIntentConversationRef.current === activeConversationId;
39398
- if (explicitUserScrollAway || inferredUserScrollAway) {
39135
+ if (explicitUserScrollAway || pointerDrivenScrollAway) {
39399
39136
  bottomLockOwnerRef.current = null;
39400
39137
  userScrollAwayIntentConversationRef.current = null;
39401
39138
  }
39139
+ const bottomLocked = bottomLockOwnerRef.current === activeConversationId;
39140
+ const anchoredMaxScrollTop = Math.max(
39141
+ 0,
39142
+ previousAnchor.scrollHeight - previousAnchor.clientHeight
39143
+ );
39144
+ if (bottomLocked && anchoredMaxScrollTop - scrollTop > AGENT_GUI_STICK_TO_BOTTOM_THRESHOLD_PX) {
39145
+ setTimelineScrollTopInstantly(timeline, anchoredMaxScrollTop);
39146
+ scrollTop = anchoredMaxScrollTop;
39147
+ }
39402
39148
  timelineScrollAnchorRef.current = {
39403
39149
  conversationId: activeConversationId,
39404
39150
  scrollHeight: previousAnchor.scrollHeight,
@@ -39414,7 +39160,11 @@ function useAgentGUIDetailScroll(input) {
39414
39160
  scrollTop <= AGENT_GUI_TOP_MASK_SCROLL_EPSILON_PX
39415
39161
  );
39416
39162
  setIsTimelineScrolledToBottom(effectiveAtBottom);
39417
- loadOlderMessagesNearTop(scrollTop, previousAnchor.scrollHeight);
39163
+ loadOlderMessagesNearTop(
39164
+ scrollTop,
39165
+ previousAnchor.scrollHeight,
39166
+ previousAnchor.clientHeight
39167
+ );
39418
39168
  };
39419
39169
  const syncObservedTimelineGeometry = () => {
39420
39170
  const anchor = timelineScrollAnchorRef.current;
@@ -39454,16 +39204,38 @@ function useAgentGUIDetailScroll(input) {
39454
39204
  userScrollAwayIntentConversationRef.current = activeConversationId;
39455
39205
  }
39456
39206
  };
39207
+ const captureSemanticScrollAwayIntent = (event) => {
39208
+ if (event.target instanceof Element && event.target.closest("[data-agent-transcript-scroll-away-intent]")) {
39209
+ userScrollAwayIntentConversationRef.current = activeConversationId;
39210
+ }
39211
+ };
39212
+ const capturePointerIntent = () => {
39213
+ pointerScrollConversationRef.current = activeConversationId;
39214
+ };
39215
+ const clearPointerIntent = () => {
39216
+ if (pointerScrollConversationRef.current === activeConversationId) {
39217
+ pointerScrollConversationRef.current = null;
39218
+ }
39219
+ };
39457
39220
  const initialAnchor = timelineScrollAnchorRef.current;
39458
39221
  if (initialAnchor?.conversationId === activeConversationId) {
39459
39222
  loadOlderMessagesNearTop(
39460
39223
  initialAnchor.scrollTop,
39461
- initialAnchor.scrollHeight
39224
+ initialAnchor.scrollHeight,
39225
+ initialAnchor.clientHeight
39462
39226
  );
39463
39227
  }
39464
39228
  timeline.addEventListener("scroll", captureScrollAnchor, { passive: true });
39465
39229
  timeline.addEventListener("wheel", captureWheelIntent, { passive: true });
39466
39230
  timeline.addEventListener("keydown", captureKeyboardIntent);
39231
+ timeline.addEventListener("click", captureSemanticScrollAwayIntent);
39232
+ timeline.addEventListener("pointerdown", capturePointerIntent, {
39233
+ passive: true
39234
+ });
39235
+ window.addEventListener("pointerup", clearPointerIntent, { passive: true });
39236
+ window.addEventListener("pointercancel", clearPointerIntent, {
39237
+ passive: true
39238
+ });
39467
39239
  const geometryObserver = timelineContent && typeof ResizeObserver !== "undefined" ? new ResizeObserver(syncObservedTimelineGeometry) : null;
39468
39240
  geometryObserver?.observe(timeline);
39469
39241
  if (timelineContent) {
@@ -39474,10 +39246,15 @@ function useAgentGUIDetailScroll(input) {
39474
39246
  timeline.removeEventListener("scroll", captureScrollAnchor);
39475
39247
  timeline.removeEventListener("wheel", captureWheelIntent);
39476
39248
  timeline.removeEventListener("keydown", captureKeyboardIntent);
39249
+ timeline.removeEventListener("click", captureSemanticScrollAwayIntent);
39250
+ timeline.removeEventListener("pointerdown", capturePointerIntent);
39251
+ window.removeEventListener("pointerup", clearPointerIntent);
39252
+ window.removeEventListener("pointercancel", clearPointerIntent);
39477
39253
  };
39478
39254
  }, [
39479
39255
  actions,
39480
39256
  timelineConversationId,
39257
+ showTimelineSkeleton,
39481
39258
  viewModel.rail.activeConversationId,
39482
39259
  viewModel.detail.hasOlderMessages,
39483
39260
  viewModel.detail.isLoadingOlderMessages
@@ -39575,7 +39352,7 @@ function useAgentGUITimelineTransition(input) {
39575
39352
  }
39576
39353
 
39577
39354
  // agent-gui/agentGuiNode/view/useAgentGUIDetailModel.tsx
39578
- import { Fragment as Fragment25, jsx as jsx80, jsxs as jsxs58 } from "react/jsx-runtime";
39355
+ import { Fragment as Fragment25, jsx as jsx80, jsxs as jsxs57 } from "react/jsx-runtime";
39579
39356
  function resolveTuttiModeUpdateInlineNotice(input) {
39580
39357
  if (input.status !== "failed" && input.status !== "uncertain") return null;
39581
39358
  const localizedMessage = input.status === "failed" ? input.failedMessage : input.uncertainMessage;
@@ -39773,7 +39550,7 @@ function useAgentGUIDetailModel(input) {
39773
39550
  ]
39774
39551
  );
39775
39552
  const conversationFlowEmpty = useMemo43(
39776
- () => showUnavailableChatEmpty ? /* @__PURE__ */ jsxs58(
39553
+ () => showUnavailableChatEmpty ? /* @__PURE__ */ jsxs57(
39777
39554
  "div",
39778
39555
  {
39779
39556
  className: AgentGUINode_styles_default.unavailableChatEmpty,
@@ -40230,7 +40007,6 @@ import { useState as useState47 } from "react";
40230
40007
  function useAgentGUITuttiWorkflow(input) {
40231
40008
  const {
40232
40009
  viewModel,
40233
- previewMode,
40234
40010
  labels,
40235
40011
  stableLinkAction,
40236
40012
  setTuttiModeActive,
@@ -40239,7 +40015,7 @@ function useAgentGUITuttiWorkflow(input) {
40239
40015
  submitPromptPassthrough
40240
40016
  } = input;
40241
40017
  const tuttiModePlanPanels = useTuttiModePlanPanels({
40242
- enabled: !previewMode,
40018
+ enabled: true,
40243
40019
  workspaceId: viewModel.shell.workspaceId,
40244
40020
  sourceSessionId: viewModel.rail.activeConversationId,
40245
40021
  decidedBy: viewModel.shell.currentUserId?.trim() || "local"
@@ -40450,7 +40226,7 @@ function useAgentGUITuttiWorkflow(input) {
40450
40226
  }
40451
40227
 
40452
40228
  // agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
40453
- import { Fragment as Fragment26, jsx as jsx81, jsxs as jsxs59 } from "react/jsx-runtime";
40229
+ import { Fragment as Fragment26, jsx as jsx81, jsxs as jsxs58 } from "react/jsx-runtime";
40454
40230
  var EMPTY_WORKSPACE_APP_ICONS4 = [];
40455
40231
  var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40456
40232
  shell,
@@ -40468,7 +40244,6 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40468
40244
  workspaceUserProjectI18n,
40469
40245
  uiLanguage,
40470
40246
  isActive,
40471
- previewMode,
40472
40247
  workspaceReferencePickerOpen,
40473
40248
  composerFocusRequestSequence,
40474
40249
  slashStatusLimits,
@@ -40651,7 +40426,6 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40651
40426
  const stableLinkAction = useOptionalStableEventCallback(onLinkAction);
40652
40427
  const tuttiWorkflow = useAgentGUITuttiWorkflow({
40653
40428
  viewModel,
40654
- previewMode,
40655
40429
  labels,
40656
40430
  stableLinkAction,
40657
40431
  setTuttiModeActive: actions.setTuttiModeActive,
@@ -40750,7 +40524,6 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40750
40524
  placeholder: viewModel.detail.hasSentUserMessage ? labels.followupPlaceholder : labels.initialPlaceholder,
40751
40525
  showStopButton,
40752
40526
  stopDisabled: stopDisabled || timelineInteractionLocked,
40753
- previewMode,
40754
40527
  workspaceReferencePickerOpen,
40755
40528
  referenceProvenanceFilter,
40756
40529
  // Plan decisions replace the composer; approval / ask-user embed here.
@@ -40835,7 +40608,6 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40835
40608
  onSlashStatusOpen,
40836
40609
  onSlashStatusClose,
40837
40610
  onSlashStatusRefresh,
40838
- previewMode,
40839
40611
  workspaceReferencePickerOpen,
40840
40612
  composerActivePrompt,
40841
40613
  editQueuedPrompt,
@@ -40964,7 +40736,6 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40964
40736
  onProviderSelect: canSwitchComposerProvider && viewModel.rail.activeConversationId === null ? selectHomeComposerAgentTargetAndFocus : void 0,
40965
40737
  noticeChrome: homeNoticeChrome,
40966
40738
  isRespondingApproval: isInteractionPending,
40967
- previewMode,
40968
40739
  onSubmitApprovalOption: submitApprovalOption,
40969
40740
  onRetryActivation: retryActivation,
40970
40741
  onAuthLogin: authLogin,
@@ -40978,7 +40749,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40978
40749
  onSelectSuggestionAction: handleHomeSuggestionAction
40979
40750
  }
40980
40751
  ) : null;
40981
- return /* @__PURE__ */ jsxs59(
40752
+ return /* @__PURE__ */ jsxs58(
40982
40753
  "main",
40983
40754
  {
40984
40755
  className: AgentGUINode_styles_default.detail,
@@ -41007,7 +40778,6 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
41007
40778
  labels,
41008
40779
  onAuthLogin: authLogin,
41009
40780
  onLinkAction: stableLinkAction,
41010
- previewMode,
41011
40781
  showTimelineSkeleton,
41012
40782
  showUnavailableChatEmpty,
41013
40783
  timelineContentRef,
@@ -41054,7 +40824,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
41054
40824
  // agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
41055
40825
  import { memo as memo13, useCallback as useCallback61, useEffect as useEffect35, useRef as useRef54, useState as useState49 } from "react";
41056
40826
  import { ConfirmationDialog as ConfirmationDialog4, Input as Input4 } from "@tutti-os/ui-system";
41057
- import { jsx as jsx82, jsxs as jsxs60 } from "react/jsx-runtime";
40827
+ import { jsx as jsx82, jsxs as jsxs59 } from "react/jsx-runtime";
41058
40828
  var AgentGUIRenameConversationDialog = memo13(
41059
40829
  function AgentGUIRenameConversationDialog2({
41060
40830
  conversation,
@@ -41119,7 +40889,7 @@ var AgentGUIRenameConversationDialog = memo13(
41119
40889
  confirmDisabled: !trimmedTitle,
41120
40890
  confirmLabel: labels.renameSessionSave,
41121
40891
  description: labels.renameSessionDescription,
41122
- footer: /* @__PURE__ */ jsxs60("div", { className: "flex justify-end gap-2", children: [
40892
+ footer: /* @__PURE__ */ jsxs59("div", { className: "flex justify-end gap-2", children: [
41123
40893
  /* @__PURE__ */ jsx82(
41124
40894
  Button,
41125
40895
  {
@@ -41293,7 +41063,7 @@ function AgentGUIReferencePickerSurface({
41293
41063
 
41294
41064
  // agent-gui/agentGuiNode/view/AgentTargetSetupRoot.tsx
41295
41065
  import { useCallback as useCallback62, useMemo as useMemo45 } from "react";
41296
- import { jsx as jsx84, jsxs as jsxs61 } from "react/jsx-runtime";
41066
+ import { jsx as jsx84, jsxs as jsxs60 } from "react/jsx-runtime";
41297
41067
  function useAgentTargetSetupRoot(input) {
41298
41068
  const { preferences } = useAgentGUIProviderRailPreferences();
41299
41069
  const homeTargetProjection = useMemo45(
@@ -41337,7 +41107,7 @@ function AgentTargetSetupRoot({
41337
41107
  controller,
41338
41108
  openEnvironmentSetup
41339
41109
  }) {
41340
- return /* @__PURE__ */ jsx84(AgentEnvPanelActionProvider, { openPanel: openEnvironmentSetup, children: /* @__PURE__ */ jsxs61(AgentTargetSetupControllerProvider, { controller, children: [
41110
+ return /* @__PURE__ */ jsx84(AgentEnvPanelActionProvider, { openPanel: openEnvironmentSetup, children: /* @__PURE__ */ jsxs60(AgentTargetSetupControllerProvider, { controller, children: [
41341
41111
  children,
41342
41112
  /* @__PURE__ */ jsx84(
41343
41113
  AgentTargetSetupGate,
@@ -41356,7 +41126,6 @@ import { createRichTextMentionHref } from "@tutti-os/ui-rich-text/core";
41356
41126
  function useAgentGUIWorkspaceReferencePicker(input) {
41357
41127
  const {
41358
41128
  onWorkspaceFileReferencesAdded,
41359
- previewMode,
41360
41129
  projectDirectorySourceAggregator,
41361
41130
  referenceSourceAggregator,
41362
41131
  resolveMentionReferenceTarget,
@@ -41386,9 +41155,6 @@ function useAgentGUIWorkspaceReferencePicker(input) {
41386
41155
  );
41387
41156
  const requestWorkspaceReferences = useCallback63(
41388
41157
  async (entity) => {
41389
- if (previewMode) {
41390
- return emptyReferencePickResult;
41391
- }
41392
41158
  if (!workspaceFileReferenceAdapter && !referenceSourceAggregator) {
41393
41159
  return emptyReferencePickResult;
41394
41160
  }
@@ -41409,7 +41175,6 @@ function useAgentGUIWorkspaceReferencePicker(input) {
41409
41175
  },
41410
41176
  [
41411
41177
  emptyReferencePickResult,
41412
- previewMode,
41413
41178
  referenceSourceAggregator,
41414
41179
  resolveMentionReferenceTarget,
41415
41180
  resolveWorkspaceReferenceInitialTarget,
@@ -41421,7 +41186,7 @@ function useAgentGUIWorkspaceReferencePicker(input) {
41421
41186
  ]
41422
41187
  );
41423
41188
  const requestProjectDirectory = useCallback63(async () => {
41424
- if (previewMode || !projectDirectorySourceAggregator) {
41189
+ if (!projectDirectorySourceAggregator) {
41425
41190
  return null;
41426
41191
  }
41427
41192
  setWorkspaceReferencePickerTarget(null);
@@ -41433,7 +41198,7 @@ function useAgentGUIWorkspaceReferencePicker(input) {
41433
41198
  projectDirectoryPickerResolverRef.current?.(null);
41434
41199
  projectDirectoryPickerResolverRef.current = resolve;
41435
41200
  });
41436
- }, [emptyReferencePickResult, previewMode, projectDirectorySourceAggregator]);
41201
+ }, [emptyReferencePickResult, projectDirectorySourceAggregator]);
41437
41202
  const closeWorkspaceReferencePicker = useCallback63(() => {
41438
41203
  workspaceReferencePickerResolverRef.current?.(emptyReferencePickResult);
41439
41204
  workspaceReferencePickerResolverRef.current = null;
@@ -41677,7 +41442,7 @@ var AgentGUIPanelEngagementController = class {
41677
41442
  }
41678
41443
  isExposureEligible() {
41679
41444
  const input = this.options.getInput();
41680
- return Boolean(input.onEvent) && !input.previewMode && input.contextKey === this.options.visitContextKey && input.isActive && input.isVisible && this.documentFocused && this.documentVisible && this.intersectionRatio >= AGENT_GUI_PANEL_EXPOSURE_INTERSECTION_RATIO;
41445
+ return Boolean(input.onEvent) && input.contextKey === this.options.visitContextKey && input.isActive && input.isVisible && this.documentFocused && this.documentVisible && this.intersectionRatio >= AGENT_GUI_PANEL_EXPOSURE_INTERSECTION_RATIO;
41681
41446
  }
41682
41447
  eventForVisit(visit, type) {
41683
41448
  return {
@@ -41726,7 +41491,7 @@ function useAgentGUIPanelEngagement(input) {
41726
41491
  }
41727
41492
  };
41728
41493
  }
41729
- const engagementEnabled = Boolean(input.onEvent) && !input.previewMode;
41494
+ const engagementEnabled = Boolean(input.onEvent);
41730
41495
  useEffect36(() => {
41731
41496
  const element = input.elementRef.current;
41732
41497
  if (!engagementEnabled || !element) return void 0;
@@ -41765,8 +41530,7 @@ function useAgentGUINodeEngagement(input) {
41765
41530
  elementRef: layoutElementRef,
41766
41531
  isActive: input.isActive,
41767
41532
  isVisible: input.isVisible,
41768
- onEvent: input.onEvent,
41769
- previewMode: input.previewMode
41533
+ onEvent: input.onEvent
41770
41534
  }),
41771
41535
  layoutElementRef
41772
41536
  };
@@ -41778,7 +41542,6 @@ function useAgentGUIConversationRailResizePointerMove({
41778
41542
  clampConversationRailWidth,
41779
41543
  layoutElementRef,
41780
41544
  onConversationRailLayoutChange,
41781
- previewMode,
41782
41545
  providerRailWidthPx,
41783
41546
  railResizeInteractionRef
41784
41547
  }) {
@@ -41787,7 +41550,6 @@ function useAgentGUIConversationRailResizePointerMove({
41787
41550
  );
41788
41551
  return useCallback64(
41789
41552
  (event) => {
41790
- if (previewMode) return;
41791
41553
  const resizeState = railResizeInteractionRef.current;
41792
41554
  if (!resizeState || resizeState.pointerId !== event.pointerId) return;
41793
41555
  const nextWidthPx = clampConversationRailWidth(
@@ -41810,7 +41572,6 @@ function useAgentGUIConversationRailResizePointerMove({
41810
41572
  [
41811
41573
  clampConversationRailWidth,
41812
41574
  layoutElementRef,
41813
- previewMode,
41814
41575
  providerRailWidthPx,
41815
41576
  railResizeInteractionRef,
41816
41577
  reportConversationRailLayoutChange
@@ -41837,7 +41598,6 @@ function useAgentGUIExternalRequests(input) {
41837
41598
  createConversationDisabled,
41838
41599
  labels,
41839
41600
  newConversationRequestSequence,
41840
- previewMode,
41841
41601
  requestCreateConversation,
41842
41602
  requestRenameConversation,
41843
41603
  sessionActionRequest,
@@ -41866,7 +41626,7 @@ function useAgentGUIExternalRequests(input) {
41866
41626
  requestCreateConversation({ source: "external_request" });
41867
41627
  }
41868
41628
  }
41869
- if (sessionActionRequest && handledSessionActionRequestSequenceRef.current !== sessionActionRequest.sequence && !previewMode) {
41629
+ if (sessionActionRequest && handledSessionActionRequestSequenceRef.current !== sessionActionRequest.sequence) {
41870
41630
  handledSessionActionRequestSequenceRef.current = sessionActionRequest.sequence;
41871
41631
  const conversation = resolveSessionActionConversation(
41872
41632
  viewModel,
@@ -41891,7 +41651,6 @@ function useAgentGUIExternalRequests(input) {
41891
41651
  createConversationDisabled,
41892
41652
  labels,
41893
41653
  newConversationRequestSequence,
41894
- previewMode,
41895
41654
  requestCreateConversation,
41896
41655
  requestRenameConversation,
41897
41656
  sessionActionRequest,
@@ -41902,7 +41661,7 @@ function useAgentGUIExternalRequests(input) {
41902
41661
  }
41903
41662
 
41904
41663
  // agent-gui/agentGuiNode/AgentGUINodeView.tsx
41905
- import { jsx as jsx85, jsxs as jsxs62 } from "react/jsx-runtime";
41664
+ import { jsx as jsx85, jsxs as jsxs61 } from "react/jsx-runtime";
41906
41665
  function AgentGUINodeView({
41907
41666
  viewModel,
41908
41667
  referenceProvenanceFilter = null,
@@ -41938,7 +41697,6 @@ function AgentGUINodeView({
41938
41697
  onSlashStatusOpen,
41939
41698
  onSlashStatusClose,
41940
41699
  onSlashStatusRefresh,
41941
- previewMode = false,
41942
41700
  onAgentProviderLogin,
41943
41701
  onAgentEnvPanelOpen,
41944
41702
  actions,
@@ -41980,7 +41738,6 @@ function AgentGUINodeView({
41980
41738
  isActive,
41981
41739
  isVisible,
41982
41740
  onEvent: onEngagementEvent,
41983
- previewMode,
41984
41741
  viewModel
41985
41742
  });
41986
41743
  const [providerManagerOpen, setProviderManagerOpen] = useState51(false);
@@ -42006,7 +41763,6 @@ function AgentGUINodeView({
42006
41763
  workspaceReferencePickerTarget
42007
41764
  } = useAgentGUIWorkspaceReferencePicker({
42008
41765
  onWorkspaceFileReferencesAdded,
42009
- previewMode,
42010
41766
  projectDirectorySourceAggregator,
42011
41767
  referenceSourceAggregator,
42012
41768
  resolveMentionReferenceTarget,
@@ -42054,9 +41810,6 @@ function AgentGUINodeView({
42054
41810
  }, []);
42055
41811
  const requestCreateConversation = useStableEventCallback(
42056
41812
  (options) => {
42057
- if (previewMode) {
42058
- return;
42059
- }
42060
41813
  const source = options?.source;
42061
41814
  if (options && "projectPath" in options) {
42062
41815
  createConversationAction(options);
@@ -42093,9 +41846,6 @@ function AgentGUINodeView({
42093
41846
  const providerRailWidthPx = conversationRailCollapsed ? 0 : 52;
42094
41847
  const handleConversationRailResizePointerDown = useCallback66(
42095
41848
  (event) => {
42096
- if (previewMode) {
42097
- return;
42098
- }
42099
41849
  if (conversationRailCollapsed || event.button !== 0) {
42100
41850
  return;
42101
41851
  }
@@ -42110,13 +41860,12 @@ function AgentGUINodeView({
42110
41860
  setRailResizeWidthPx(conversationRailWidthPx);
42111
41861
  setIsRailResizing(true);
42112
41862
  },
42113
- [conversationRailCollapsed, conversationRailWidthPx, previewMode]
41863
+ [conversationRailCollapsed, conversationRailWidthPx]
42114
41864
  );
42115
41865
  const handleConversationRailResizePointerMove = useAgentGUIConversationRailResizePointerMove({
42116
41866
  clampConversationRailWidth,
42117
41867
  layoutElementRef,
42118
41868
  onConversationRailLayoutChange,
42119
- previewMode,
42120
41869
  providerRailWidthPx,
42121
41870
  railResizeInteractionRef
42122
41871
  });
@@ -42153,9 +41902,6 @@ function AgentGUINodeView({
42153
41902
  ]);
42154
41903
  const handleConversationRailResizeKeyDown = useCallback66(
42155
41904
  (event) => {
42156
- if (previewMode) {
42157
- return;
42158
- }
42159
41905
  if (conversationRailCollapsed) {
42160
41906
  return;
42161
41907
  }
@@ -42173,8 +41919,7 @@ function AgentGUINodeView({
42173
41919
  clampConversationRailWidth,
42174
41920
  conversationRailCollapsed,
42175
41921
  conversationRailWidthPx,
42176
- onConversationRailWidthChanged,
42177
- previewMode
41922
+ onConversationRailWidthChanged
42178
41923
  ]
42179
41924
  );
42180
41925
  const visualConversationRailWidthPx = isRailResizing ? railResizeInteractionRef.current?.lastWidthPx ?? conversationRailWidthPx : railResizeWidthPx ?? conversationRailWidthPx;
@@ -42237,7 +41982,6 @@ function AgentGUINodeView({
42237
41982
  createConversationDisabled,
42238
41983
  labels,
42239
41984
  newConversationRequestSequence,
42240
- previewMode,
42241
41985
  requestCreateConversation,
42242
41986
  requestRenameConversation,
42243
41987
  sessionActionRequest,
@@ -42257,7 +42001,6 @@ function AgentGUINodeView({
42257
42001
  labels: conversationRailLabels,
42258
42002
  workspaceUserProjectI18n,
42259
42003
  uiLanguage,
42260
- previewMode,
42261
42004
  createConversationDisabled,
42262
42005
  isCollapsed: conversationRailCollapsed,
42263
42006
  agentTargets: viewModel.rail.agentTargets,
@@ -42295,7 +42038,6 @@ function AgentGUINodeView({
42295
42038
  openProjectFiles,
42296
42039
  actions.markConversationUnread,
42297
42040
  actions.updateConversationFilter,
42298
- previewMode,
42299
42041
  removeProject,
42300
42042
  moveProject,
42301
42043
  toggleProjectPinned,
@@ -42331,23 +42073,21 @@ function AgentGUINodeView({
42331
42073
  }),
42332
42074
  [targetPresentationKey, viewModel.shell.workspaceId]
42333
42075
  );
42334
- const content = /* @__PURE__ */ jsx85(AgentTargetPresentationProvider, { agentTargets: agentTargetPresentations, children: /* @__PURE__ */ jsxs62(
42076
+ const content = /* @__PURE__ */ jsx85(AgentTargetPresentationProvider, { agentTargets: agentTargetPresentations, children: /* @__PURE__ */ jsxs61(
42335
42077
  AgentTargetSetupRoot,
42336
42078
  {
42337
42079
  controller: targetSetupController,
42338
42080
  openEnvironmentSetup: onAgentEnvPanelOpen,
42339
42081
  children: [
42340
- /* @__PURE__ */ jsxs62(
42082
+ /* @__PURE__ */ jsxs61(
42341
42083
  "div",
42342
42084
  {
42343
42085
  ref: layoutElementRef,
42344
42086
  className: AgentGUINode_styles_default.layout,
42345
- "data-agent-gui-preview": previewMode ? "true" : void 0,
42346
42087
  "data-rail-resizing": isRailResizing ? "true" : void 0,
42347
- inert: previewMode ? true : void 0,
42348
42088
  style: layoutStyle,
42349
42089
  children: [
42350
- /* @__PURE__ */ jsxs62(
42090
+ /* @__PURE__ */ jsxs61(
42351
42091
  "aside",
42352
42092
  {
42353
42093
  className: `${AgentGUINode_styles_default.providerRailPanel} nodrag tsh-desktop-no-drag`,
@@ -42363,7 +42103,6 @@ function AgentGUINodeView({
42363
42103
  conversationFilter: viewModel.rail.conversationFilter,
42364
42104
  conversations: viewModel.rail.conversations,
42365
42105
  labels,
42366
- previewMode,
42367
42106
  selectedAgentTarget: viewModel.rail.selectedAgentTarget,
42368
42107
  agentTargets: viewModel.rail.agentTargets,
42369
42108
  agentTargetsLoading: viewModel.rail.agentTargetsLoading,
@@ -42400,7 +42139,6 @@ function AgentGUINodeView({
42400
42139
  {
42401
42140
  environmentSetupVisible,
42402
42141
  labels,
42403
- previewMode,
42404
42142
  providerScopedActionsVisible: viewModel.rail.conversationFilter.kind !== "all",
42405
42143
  slashStatusLimits: effectiveRailSlashStatusLimits,
42406
42144
  slashStatusLimitsLoading,
@@ -42507,8 +42245,7 @@ function AgentGUINodeView({
42507
42245
  onRequestComposerFocus: requestComposerFocus,
42508
42246
  workspaceAppIcons: effectiveWorkspaceAppIcons,
42509
42247
  workspaceUserProjectI18n,
42510
- renderProviderUnavailableState,
42511
- previewMode
42248
+ renderProviderUnavailableState
42512
42249
  }
42513
42250
  ) })
42514
42251
  ]
@@ -42552,7 +42289,7 @@ function AgentGUINodeView({
42552
42289
  ]
42553
42290
  }
42554
42291
  ) });
42555
- return previewMode ? content : /* @__PURE__ */ jsx85(TooltipProvider7, { children: content });
42292
+ return /* @__PURE__ */ jsx85(TooltipProvider7, { children: content });
42556
42293
  }
42557
42294
 
42558
42295
  // agent-gui/workspaceDesktop/view/AgentProbeInfoPopover.tsx
@@ -42565,7 +42302,7 @@ import {
42565
42302
  useState as useState52
42566
42303
  } from "react";
42567
42304
  import { createPortal as createPortal5 } from "react-dom";
42568
- import { Fragment as Fragment27, jsx as jsx86, jsxs as jsxs63 } from "react/jsx-runtime";
42305
+ import { Fragment as Fragment27, jsx as jsx86, jsxs as jsxs62 } from "react/jsx-runtime";
42569
42306
  var POPOVER_MIN_VIEWPORT_INSET_PX = 16;
42570
42307
  var POPOVER_DEFAULT_WIDTH_PX = 260;
42571
42308
  function dockAgentProbeLineKey(line) {
@@ -42575,9 +42312,9 @@ function renderDockAgentProbeLine(line) {
42575
42312
  if (typeof line === "string") {
42576
42313
  return line;
42577
42314
  }
42578
- return /* @__PURE__ */ jsxs63(Fragment27, { children: [
42315
+ return /* @__PURE__ */ jsxs62(Fragment27, { children: [
42579
42316
  line.primary,
42580
- line.secondary ? /* @__PURE__ */ jsxs63(Fragment27, { children: [
42317
+ line.secondary ? /* @__PURE__ */ jsxs62(Fragment27, { children: [
42581
42318
  " ",
42582
42319
  /* @__PURE__ */ jsx86("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
42583
42320
  ] }) : null
@@ -42684,7 +42421,7 @@ function AgentProbeInfoPopover({
42684
42421
  children: /* @__PURE__ */ jsx86("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
42685
42422
  const label = getDockAgentProbeLineLabel(line);
42686
42423
  const valueText = formatDockAgentProbeLineText(line);
42687
- return /* @__PURE__ */ jsxs63(
42424
+ return /* @__PURE__ */ jsxs62(
42688
42425
  "li",
42689
42426
  {
42690
42427
  className: "desktop-dock-popup__agent-info-item",
@@ -42706,7 +42443,7 @@ function AgentProbeInfoPopover({
42706
42443
  }) })
42707
42444
  }
42708
42445
  );
42709
- return /* @__PURE__ */ jsxs63(
42446
+ return /* @__PURE__ */ jsxs62(
42710
42447
  "div",
42711
42448
  {
42712
42449
  ref: anchorRef,
@@ -42815,7 +42552,7 @@ function areAgentGUINodePropsEqual(previous, next) {
42815
42552
  const pc = previous.hostCapabilities, nc = next.hostCapabilities;
42816
42553
  const pa = previous.hostActions, na = next.hostActions;
42817
42554
  const ps = previous.renderSlots, ns = next.renderSlots;
42818
- 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.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.sessionAction === nr.sessionAction && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.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;
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;
42819
42556
  }
42820
42557
 
42821
42558
  // agent-gui/agentGuiNode/AgentGUIMentionServiceBoundary.tsx
@@ -44007,7 +43744,7 @@ function useAgentGUIWorkspaceFileReferenceCopy(t) {
44007
43744
  }
44008
43745
 
44009
43746
  // agent-gui/agentGuiNode/AgentGUINode.tsx
44010
- import { jsx as jsx88, jsxs as jsxs64 } from "react/jsx-runtime";
43747
+ import { jsx as jsx88, jsxs as jsxs63 } from "react/jsx-runtime";
44011
43748
  var DISABLED_REFERENCE_PROVENANCE_CATALOG = {
44012
43749
  enabledDimensions: [],
44013
43750
  agentOptions: [],
@@ -44051,7 +43788,6 @@ var AgentGUINode = memo14(function AgentGUINode2({
44051
43788
  isActive,
44052
43789
  isVisible = true,
44053
43790
  embedded = false,
44054
- previewMode = false,
44055
43791
  conversationRailAutoCollapseWidthPx = null
44056
43792
  } = frame;
44057
43793
  const railAutoCollapseWidthPx = conversationRailAutoCollapseWidthPx ?? void 0;
@@ -44153,18 +43889,12 @@ var AgentGUINode = memo14(function AgentGUINode2({
44153
43889
  );
44154
43890
  const handleDataChange = useCallback68(
44155
43891
  (updater) => {
44156
- if (previewMode) {
44157
- return;
44158
- }
44159
43892
  onUpdateNode(updater);
44160
43893
  },
44161
- [onUpdateNode, previewMode]
43894
+ [onUpdateNode]
44162
43895
  );
44163
43896
  const handleConversationRailWidthChanged = useCallback68(
44164
43897
  (widthPx) => {
44165
- if (previewMode) {
44166
- return;
44167
- }
44168
43898
  onUpdateNode((current) => {
44169
43899
  const nextWidthPx = resolveNextAgentGUIConversationRailWidthPx({
44170
43900
  currentWidthPx: current.conversationRailWidthPx,
@@ -44180,7 +43910,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44180
43910
  };
44181
43911
  });
44182
43912
  },
44183
- [onUpdateNode, previewMode]
43913
+ [onUpdateNode]
44184
43914
  );
44185
43915
  const isConversationRailManuallyCollapsed = state.conversationRailCollapsed === true;
44186
43916
  const isConversationRailAutoCollapsed = shouldAutoCollapseAgentGUIConversationRail(width, railAutoCollapseWidthPx);
@@ -44193,18 +43923,12 @@ var AgentGUINode = memo14(function AgentGUINode2({
44193
43923
  []
44194
43924
  );
44195
43925
  const toggleConversationRailCollapsed = useCallback68(() => {
44196
- if (previewMode) {
44197
- return;
44198
- }
44199
43926
  onUpdateNode((current) => ({
44200
43927
  ...current,
44201
43928
  conversationRailCollapsed: current.conversationRailCollapsed !== true
44202
43929
  }));
44203
- }, [onUpdateNode, previewMode]);
43930
+ }, [onUpdateNode]);
44204
43931
  const handleConversationRailToggle = useCallback68(() => {
44205
- if (previewMode) {
44206
- return;
44207
- }
44208
43932
  if (!isConversationRailAutoCollapsed) {
44209
43933
  toggleConversationRailCollapsed();
44210
43934
  return;
@@ -44234,7 +43958,6 @@ var AgentGUINode = memo14(function AgentGUINode2({
44234
43958
  onResize,
44235
43959
  onUpdateNode,
44236
43960
  position,
44237
- previewMode,
44238
43961
  state.conversationRailWidthPx,
44239
43962
  toggleConversationRailCollapsed,
44240
43963
  width
@@ -44258,14 +43981,13 @@ var AgentGUINode = memo14(function AgentGUINode2({
44258
43981
  providerReadinessGates,
44259
43982
  targetConnectionSource,
44260
43983
  defaultAgentTargetId,
44261
- previewMode,
44262
43984
  onDataChange: handleDataChange,
44263
43985
  onRememberComposerDefaults,
44264
43986
  onShowMessage
44265
43987
  });
44266
43988
  const handleCreateConversation = useCallback68(
44267
43989
  (...args) => {
44268
- if (!previewMode) {
43990
+ {
44269
43991
  onUpdateNode(
44270
43992
  (current) => current.lastActiveAgentSessionId === null ? current : {
44271
43993
  ...current,
@@ -44275,7 +43997,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44275
43997
  }
44276
43998
  actions.createConversation(...args);
44277
43999
  },
44278
- [actions, onUpdateNode, previewMode]
44000
+ [actions, onUpdateNode]
44279
44001
  );
44280
44002
  const viewActions = useMemo50(
44281
44003
  () => ({
@@ -44317,7 +44039,6 @@ var AgentGUINode = memo14(function AgentGUINode2({
44317
44039
  } = useAgentGUIStatus({
44318
44040
  activeProvider,
44319
44041
  agentStatusController,
44320
- previewMode,
44321
44042
  t,
44322
44043
  viewModel
44323
44044
  });
@@ -44337,7 +44058,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44337
44058
  className: "size-full bg-transparent",
44338
44059
  bodyClassName: `${AgentGUINode_styles_default.shell} nodrag size-full min-h-0 min-w-0 !bg-transparent p-0`,
44339
44060
  hideHeader: embedded,
44340
- titleAccessory: /* @__PURE__ */ jsxs64("span", { className: "inline-flex flex-none items-center gap-1", children: [
44061
+ titleAccessory: /* @__PURE__ */ jsxs63("span", { className: "inline-flex flex-none items-center gap-1", children: [
44341
44062
  /* @__PURE__ */ jsx88(
44342
44063
  AgentProbeInfoPopover,
44343
44064
  {
@@ -44416,7 +44137,6 @@ var AgentGUINode = memo14(function AgentGUINode2({
44416
44137
  onSlashStatusOpen: handleSlashStatusOpen,
44417
44138
  onSlashStatusClose: handleSlashStatusClose,
44418
44139
  onSlashStatusRefresh: handleSlashStatusRefresh,
44419
- previewMode,
44420
44140
  onLinkAction: handleLinkAction,
44421
44141
  onHandoffConversation,
44422
44142
  capabilityMenuState,
@@ -44552,7 +44272,7 @@ var AgentGUI = memo15(function AgentGUI2({
44552
44272
  )
44553
44273
  }
44554
44274
  ) }) });
44555
- return props.frame.previewMode ? content : /* @__PURE__ */ jsx89(TooltipProvider8, { delayDuration: 120, skipDelayDuration: 0, children: content });
44275
+ return /* @__PURE__ */ jsx89(TooltipProvider8, { delayDuration: 120, skipDelayDuration: 0, children: content });
44556
44276
  });
44557
44277
 
44558
44278
  export {
@@ -44568,4 +44288,4 @@ export {
44568
44288
  AgentHandoffMenu,
44569
44289
  AgentGUI
44570
44290
  };
44571
- //# sourceMappingURL=chunk-RLFO3NJV.js.map
44291
+ //# sourceMappingURL=chunk-KJA3HHUJ.js.map