@tutti-os/agent-gui 0.0.5 → 0.0.7

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.
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  mergeWorkspaceAgentActivityDurableAndOverlayMessages,
8
8
  normalizeOptionalWorkspaceAgentStatus,
9
9
  selectWorkspaceAgentActivityOverlayMessages
10
- } from "./chunk-7ICAFTA2.js";
10
+ } from "./chunk-DHOAJJ3K.js";
11
11
  import {
12
12
  AgentActivityHostProvider,
13
13
  AgentActivityRuntimeProvider,
@@ -27,7 +27,6 @@ import {
27
27
  getOptionalAgentHostApi,
28
28
  managedAgentRoundedIconUrl,
29
29
  normalizeManagedAgentProvider,
30
- normalizeWorkspaceAgentActivityDisplayStatus,
31
30
  resetAgentActivityRuntimeForTests,
32
31
  resolveWebsiteNavigationUrl,
33
32
  resolveWorkspaceLinkAction,
@@ -39,7 +38,7 @@ import {
39
38
  useOptionalAgentHostApi,
40
39
  user_avatar_placeholder_default,
41
40
  workspaceAgentActivityStatusLabel
42
- } from "./chunk-F55LU7IJ.js";
41
+ } from "./chunk-VBNWIBNV.js";
43
42
  import {
44
43
  resolveWorkspaceAgentSessionSortTimeUnixMs,
45
44
  workspaceAgentProviderLabel
@@ -57,7 +56,7 @@ import {
57
56
  getActiveUiLanguage,
58
57
  translate,
59
58
  useTranslation
60
- } from "./chunk-BHCCGKOP.js";
59
+ } from "./chunk-ZAVQMGAX.js";
61
60
  import {
62
61
  resolveAgentMentionFileThumbnailUrl,
63
62
  resolveAgentMentionFileVisualKind
@@ -161,7 +160,7 @@ function agentHostSessionFromCore(session, id, presenceId) {
161
160
  title: session.title || void 0,
162
161
  turnPhase: agentHostTurnPhaseFromCore(session.status),
163
162
  updatedAtUnixMs: session.updatedAtUnixMs ?? session.lastEventUnixMs,
164
- userId: "local",
163
+ userId: session.userId?.trim() || "local",
165
164
  workspaceId: session.workspaceId
166
165
  };
167
166
  }
@@ -12399,6 +12398,7 @@ function useAgentGUINodeController({
12399
12398
  workspacePath,
12400
12399
  avoidGroupingEdits,
12401
12400
  data,
12401
+ previewMode = false,
12402
12402
  onDataChange,
12403
12403
  onShowMessage
12404
12404
  }) {
@@ -12608,6 +12608,9 @@ function useAgentGUINodeController({
12608
12608
  setRetainedBackgroundConversationIds
12609
12609
  ] = useState5([]);
12610
12610
  useEffect5(() => {
12611
+ if (previewMode) {
12612
+ return;
12613
+ }
12611
12614
  setRetainedBackgroundConversationIds((current) => {
12612
12615
  const next = new Set(current);
12613
12616
  for (const conversationId of backgroundBusyConversationIds) {
@@ -12623,15 +12626,24 @@ function useAgentGUINodeController({
12623
12626
  (conversationId, index) => conversationId === current[index]
12624
12627
  ) ? current : nextIds;
12625
12628
  });
12626
- }, [activeConversationId, backgroundBusyConversationIds, conversations]);
12629
+ }, [
12630
+ activeConversationId,
12631
+ backgroundBusyConversationIds,
12632
+ conversations,
12633
+ previewMode
12634
+ ]);
12627
12635
  const backgroundWatchedConversationIds = useMemo4(
12628
- () => [
12636
+ () => previewMode ? [] : [
12629
12637
  .../* @__PURE__ */ new Set([
12630
12638
  ...backgroundBusyConversationIds,
12631
12639
  ...retainedBackgroundConversationIds
12632
12640
  ])
12633
12641
  ].sort(),
12634
- [backgroundBusyConversationIds, retainedBackgroundConversationIds]
12642
+ [
12643
+ backgroundBusyConversationIds,
12644
+ previewMode,
12645
+ retainedBackgroundConversationIds
12646
+ ]
12635
12647
  );
12636
12648
  const accountProfilesByUserId = useAccountStore(
12637
12649
  (state) => state.profilesByUserId
@@ -12725,6 +12737,9 @@ function useAgentGUINodeController({
12725
12737
  []
12726
12738
  );
12727
12739
  useEffect5(() => {
12740
+ if (previewMode) {
12741
+ return void 0;
12742
+ }
12728
12743
  const api = agentHostApi.userProjects;
12729
12744
  let disposed = false;
12730
12745
  const loadUserProjects = async () => {
@@ -12754,8 +12769,11 @@ function useAgentGUINodeController({
12754
12769
  disposed = true;
12755
12770
  unsubscribe?.();
12756
12771
  };
12757
- }, [agentHostApi.userProjects, setUserProjectsSnapshot]);
12772
+ }, [agentHostApi.userProjects, previewMode, setUserProjectsSnapshot]);
12758
12773
  useEffect5(() => {
12774
+ if (previewMode) {
12775
+ return;
12776
+ }
12759
12777
  if (!conversationListQuery || agentActivitySnapshot.sessions.length === 0) {
12760
12778
  return;
12761
12779
  }
@@ -12821,6 +12839,7 @@ function useAgentGUINodeController({
12821
12839
  agentActivitySnapshot,
12822
12840
  conversationListQuery,
12823
12841
  data.provider,
12842
+ previewMode,
12824
12843
  updateConversationList,
12825
12844
  userProjects
12826
12845
  ]);
@@ -12836,6 +12855,9 @@ function useAgentGUINodeController({
12836
12855
  []
12837
12856
  );
12838
12857
  useEffect5(() => {
12858
+ if (previewMode) {
12859
+ return;
12860
+ }
12839
12861
  updateConversationList(
12840
12862
  (current) => applyAgentGUIConversationProjects(current, userProjects)
12841
12863
  );
@@ -12844,6 +12866,7 @@ function useAgentGUINodeController({
12844
12866
  );
12845
12867
  }, [
12846
12868
  conversations,
12869
+ previewMode,
12847
12870
  setTransientConversation,
12848
12871
  updateConversationList,
12849
12872
  userProjects
@@ -12902,6 +12925,9 @@ function useAgentGUINodeController({
12902
12925
  isCreatingConversationRef.current = isCreatingConversation;
12903
12926
  }, [isCreatingConversation]);
12904
12927
  useEffect5(() => {
12928
+ if (previewMode) {
12929
+ return;
12930
+ }
12905
12931
  setPendingCreateConversationId(resolvePendingCreateConversationId());
12906
12932
  if (!conversationListQuery || !pendingCreateOwnerKey) {
12907
12933
  return;
@@ -12912,9 +12938,13 @@ function useAgentGUINodeController({
12912
12938
  }, [
12913
12939
  conversationListQuery,
12914
12940
  pendingCreateOwnerKey,
12941
+ previewMode,
12915
12942
  resolvePendingCreateConversationId
12916
12943
  ]);
12917
12944
  useEffect5(() => {
12945
+ if (previewMode) {
12946
+ return;
12947
+ }
12918
12948
  setIsPendingSubmit(resolvePendingSubmit());
12919
12949
  if (!conversationListQuery || activeConversationId === null) {
12920
12950
  return;
@@ -12922,10 +12952,18 @@ function useAgentGUINodeController({
12922
12952
  return subscribeAgentGUIConversationListStore(() => {
12923
12953
  setIsPendingSubmit(resolvePendingSubmit());
12924
12954
  });
12925
- }, [activeConversationId, conversationListQuery, resolvePendingSubmit]);
12955
+ }, [
12956
+ activeConversationId,
12957
+ conversationListQuery,
12958
+ previewMode,
12959
+ resolvePendingSubmit
12960
+ ]);
12926
12961
  useEffect5(() => {
12962
+ if (previewMode) {
12963
+ return;
12964
+ }
12927
12965
  ensureOpenclawGateway();
12928
- }, [data.provider, ensureOpenclawGateway]);
12966
+ }, [data.provider, ensureOpenclawGateway, previewMode]);
12929
12967
  useEffect5(() => {
12930
12968
  onDataChangeRef.current = onDataChange;
12931
12969
  }, [onDataChange]);
@@ -12956,6 +12994,9 @@ function useAgentGUINodeController({
12956
12994
  );
12957
12995
  }, [conversations]);
12958
12996
  useEffect5(() => {
12997
+ if (previewMode) {
12998
+ return;
12999
+ }
12959
13000
  const previousSnapshot = previousConversationListSnapshotRef.current;
12960
13001
  const previousQuery = previousSnapshot.query;
12961
13002
  const previousQueryKey = previousQuery ? createAgentGUIConversationListQueryKey(previousQuery) : null;
@@ -12971,7 +13012,7 @@ function useAgentGUINodeController({
12971
13012
  query: conversationListQuery,
12972
13013
  conversations
12973
13014
  };
12974
- }, [conversationListQuery, conversations]);
13015
+ }, [conversationListQuery, conversations, previewMode]);
12975
13016
  const persistActiveConversation = useCallback4(
12976
13017
  (agentSessionId) => {
12977
13018
  if (persistedActiveConversationIdRef.current === agentSessionId) {
@@ -13006,6 +13047,9 @@ function useAgentGUINodeController({
13006
13047
  [agentActivityRuntime, workspaceId]
13007
13048
  );
13008
13049
  useEffect5(() => {
13050
+ if (previewMode) {
13051
+ return;
13052
+ }
13009
13053
  if (!hasLoadedConversations) {
13010
13054
  return;
13011
13055
  }
@@ -13016,7 +13060,12 @@ function useAgentGUINodeController({
13016
13060
  onDataChangeRef.current(
13017
13061
  (current) => current.conversationCount === nextConversationCount ? current : { ...current, conversationCount: nextConversationCount }
13018
13062
  );
13019
- }, [conversations.length, hasLoadedConversations, transientConversation]);
13063
+ }, [
13064
+ conversations.length,
13065
+ hasLoadedConversations,
13066
+ previewMode,
13067
+ transientConversation
13068
+ ]);
13020
13069
  const isCurrentConversation = useCallback4((agentSessionId) => {
13021
13070
  return isMountedRef.current && activeConversationIdRef.current === agentSessionId.trim();
13022
13071
  }, []);
@@ -13536,6 +13585,9 @@ function useAgentGUINodeController({
13536
13585
  ]
13537
13586
  );
13538
13587
  useEffect5(() => {
13588
+ if (previewMode) {
13589
+ return;
13590
+ }
13539
13591
  if (!supports.model && !supports.reasoning && !supports.permission) {
13540
13592
  return;
13541
13593
  }
@@ -13549,12 +13601,16 @@ function useAgentGUINodeController({
13549
13601
  }, [
13550
13602
  data.provider,
13551
13603
  loadDraftComposerOptions,
13604
+ previewMode,
13552
13605
  selectedProjectPath,
13553
13606
  supports.model,
13554
13607
  supports.permission,
13555
13608
  supports.reasoning
13556
13609
  ]);
13557
13610
  useEffect5(() => {
13611
+ if (previewMode) {
13612
+ return void 0;
13613
+ }
13558
13614
  if (!supports.model && !supports.reasoning && !supports.permission) {
13559
13615
  return void 0;
13560
13616
  }
@@ -13587,18 +13643,23 @@ function useAgentGUINodeController({
13587
13643
  }, [
13588
13644
  loadDraftComposerOptions,
13589
13645
  loadSessionState,
13646
+ previewMode,
13590
13647
  workspaceId,
13591
13648
  supports.model,
13592
13649
  supports.permission,
13593
13650
  supports.reasoning
13594
13651
  ]);
13595
13652
  useEffect5(() => {
13653
+ if (previewMode) {
13654
+ return;
13655
+ }
13596
13656
  loadDraftComposerOptions();
13597
13657
  }, [
13598
13658
  activeConversationId,
13599
13659
  data.provider,
13600
13660
  isComposerHome,
13601
- loadDraftComposerOptions
13661
+ loadDraftComposerOptions,
13662
+ previewMode
13602
13663
  ]);
13603
13664
  const clearPendingSessionStateReload = useCallback4(() => {
13604
13665
  if (stateReloadTimerRef.current !== null) {
@@ -13936,11 +13997,22 @@ function useAgentGUINodeController({
13936
13997
  [applyStatePatch, handleActivityStreamEvent]
13937
13998
  );
13938
13999
  useEffect5(() => {
14000
+ if (previewMode) {
14001
+ return;
14002
+ }
13939
14003
  void syncConversationListProjection(
13940
14004
  dataRef.current.lastActiveAgentSessionId
13941
14005
  );
13942
- }, [currentUserId, data.provider, syncConversationListProjection]);
14006
+ }, [
14007
+ currentUserId,
14008
+ data.provider,
14009
+ previewMode,
14010
+ syncConversationListProjection
14011
+ ]);
13943
14012
  useEffect5(() => {
14013
+ if (previewMode) {
14014
+ return;
14015
+ }
13944
14016
  if (!activeConversationId) {
13945
14017
  setDetailError(null);
13946
14018
  return;
@@ -13955,11 +14027,11 @@ function useAgentGUINodeController({
13955
14027
  reloadConversations: false,
13956
14028
  reloadDetail: true
13957
14029
  });
13958
- }, [activeConversationId, reloadSelectedConversation]);
14030
+ }, [activeConversationId, previewMode, reloadSelectedConversation]);
13959
14031
  useAgentSessionDurableRefresh({
13960
14032
  agentSessionId: activeConversationId,
13961
14033
  sessionView: activeSessionView,
13962
- blockControlStateRefresh: activeConversationId === null || blockedActivityStreamStateReloadSessionIdsRef.current.has(
14034
+ blockControlStateRefresh: previewMode || activeConversationId === null || blockedActivityStreamStateReloadSessionIdsRef.current.has(
13963
14035
  activeConversationId
13964
14036
  ),
13965
14037
  onControlStateRefresh: () => {
@@ -13977,7 +14049,7 @@ function useAgentGUINodeController({
13977
14049
  useWatchAgentSession({
13978
14050
  workspaceId,
13979
14051
  agentSessionId: activeConversationId,
13980
- enabled: activeConversationId !== null,
14052
+ enabled: !previewMode && activeConversationId !== null,
13981
14053
  onSubscribe: () => {
13982
14054
  if (!activeConversationId) {
13983
14055
  return;
@@ -15191,6 +15263,9 @@ function useAgentGUINodeController({
15191
15263
  ]
15192
15264
  );
15193
15265
  useEffect5(() => {
15266
+ if (previewMode) {
15267
+ return;
15268
+ }
15194
15269
  if (!activeConversationId) {
15195
15270
  return;
15196
15271
  }
@@ -15222,10 +15297,14 @@ function useAgentGUINodeController({
15222
15297
  isRespondingApproval,
15223
15298
  isSubmitting,
15224
15299
  failedQueuedPromptIdBySessionId,
15300
+ previewMode,
15225
15301
  queuedPromptRetryBlockBySessionId,
15226
15302
  queuedPromptsBySessionId
15227
15303
  ]);
15228
15304
  useEffect5(() => {
15305
+ if (previewMode) {
15306
+ return;
15307
+ }
15229
15308
  if (!activeConversationId) {
15230
15309
  return;
15231
15310
  }
@@ -15314,6 +15393,7 @@ function useAgentGUINodeController({
15314
15393
  syncConversationListProjection,
15315
15394
  loadSessionState,
15316
15395
  refreshMessagesFromSnapshot,
15396
+ previewMode,
15317
15397
  queuedPromptsBySessionId,
15318
15398
  runtimeSessionsBySessionId,
15319
15399
  workspaceId,
@@ -27830,6 +27910,9 @@ import {
27830
27910
  useRef as useRef18,
27831
27911
  useState as useState24
27832
27912
  } from "react";
27913
+ import {
27914
+ normalizeAgentActivityDisplayStatus
27915
+ } from "@tutti-os/agent-activity-core";
27833
27916
 
27834
27917
  // app/renderer/components/icons/FolderFailedFilledIcon.tsx
27835
27918
  import { jsx as jsx80 } from "react/jsx-runtime";
@@ -27880,19 +27963,6 @@ function KeyboardFilledIcon(props) {
27880
27963
  // app/renderer/components/ui/underline-tabs.tsx
27881
27964
  import { UnderlineTabs } from "@tutti-os/ui-system";
27882
27965
 
27883
- // shared/workspaceAgentActivityStatusClassName.ts
27884
- var STATUS_CLASS_BY_STATUS = {
27885
- working: "working",
27886
- waiting: "waiting",
27887
- idle: "idle",
27888
- completed: "done",
27889
- canceled: "done",
27890
- failed: "failed"
27891
- };
27892
- function workspaceAgentActivityStatusClassName(status) {
27893
- return STATUS_CLASS_BY_STATUS[status];
27894
- }
27895
-
27896
27966
  // shared/roomIssueStatusLabel.ts
27897
27967
  function roomIssueStatusLabel(status, t) {
27898
27968
  const translateFn = t ?? translate;
@@ -27919,7 +27989,7 @@ function roomIssueStatusLabel(status, t) {
27919
27989
  }
27920
27990
 
27921
27991
  // agent-gui/agentGuiNode/AgentFileMentionPalette.tsx
27922
- import { Badge, menuItemClassName as menuItemClassName2 } from "@tutti-os/ui-system";
27992
+ import { Badge, StatusDot as StatusDot2, menuItemClassName as menuItemClassName2 } from "@tutti-os/ui-system";
27923
27993
  import { Fragment as Fragment12, jsx as jsx82, jsxs as jsxs53 } from "react/jsx-runtime";
27924
27994
  var paletteStyles2 = {
27925
27995
  palette: "agent-gui-node__mention-palette nodrag grid h-full max-h-[320px] min-h-0 grid-rows-[auto_minmax(0,1fr)_auto] overflow-hidden text-[13px] [-webkit-app-region:no-drag]",
@@ -28650,8 +28720,8 @@ function renderMentionRow(item) {
28650
28720
  }
28651
28721
  if (item.kind === "session") {
28652
28722
  const statusTag = renderSessionMentionStatusTag(item.status);
28653
- return /* @__PURE__ */ jsxs53("span", { className: "flex min-w-0 items-center justify-between gap-3", children: [
28654
- /* @__PURE__ */ jsxs53("span", { className: "flex min-w-0 items-center gap-2", children: [
28723
+ return /* @__PURE__ */ jsxs53("span", { className: "grid w-full min-w-0 grid-cols-[minmax(0,1fr)_auto] items-center gap-3", children: [
28724
+ /* @__PURE__ */ jsxs53("span", { className: "flex min-w-0 items-center gap-2 overflow-hidden", children: [
28655
28725
  /* @__PURE__ */ jsx82(MentionSessionAvatarStack, { item }),
28656
28726
  /* @__PURE__ */ jsx82("span", { className: "min-w-0 truncate text-[13px] font-semibold leading-[16px] text-[var(--text-primary)]", children: /* @__PURE__ */ jsx82(MentionSessionTitle, { item }) })
28657
28727
  ] }),
@@ -28833,19 +28903,33 @@ function MentionSessionTitle({
28833
28903
  }
28834
28904
  function MentionStatusTag({ status }) {
28835
28905
  "use memo";
28836
- const activityStatus = normalizeWorkspaceAgentActivityDisplayStatus(status);
28837
- const statusClass = workspaceAgentActivityStatusClassName(activityStatus);
28838
- return /* @__PURE__ */ jsx82(
28906
+ const activityStatus = normalizeAgentActivityDisplayStatus(status);
28907
+ const statusTone = mentionStatusTone(activityStatus);
28908
+ const statusLabel = workspaceAgentActivityStatusLabel(activityStatus);
28909
+ return /* @__PURE__ */ jsxs53(
28839
28910
  Badge,
28840
28911
  {
28841
28912
  variant: "secondary",
28842
28913
  className: cn(
28843
- "shrink-0 text-[13px]",
28844
- mentionStatusBadgeClassName(statusClass)
28914
+ "inline-flex h-5 shrink-0 items-center gap-1.5 rounded-[4px] px-2 text-[11px] font-semibold leading-none",
28915
+ mentionStatusBadgeClassName(activityStatus)
28845
28916
  ),
28846
28917
  "data-agent-mention-status-tag": "true",
28847
28918
  "data-status": activityStatus,
28848
- children: workspaceAgentActivityStatusLabel(activityStatus)
28919
+ "data-tone": statusTone,
28920
+ title: statusLabel,
28921
+ children: [
28922
+ /* @__PURE__ */ jsx82(
28923
+ StatusDot2,
28924
+ {
28925
+ tone: statusTone,
28926
+ pulse: activityStatus === "working" || activityStatus === "waiting",
28927
+ size: "xs",
28928
+ title: statusLabel
28929
+ }
28930
+ ),
28931
+ /* @__PURE__ */ jsx82("span", { children: statusLabel })
28932
+ ]
28849
28933
  }
28850
28934
  );
28851
28935
  }
@@ -28853,10 +28937,7 @@ function renderSessionMentionStatusTag(status) {
28853
28937
  if (!status) {
28854
28938
  return null;
28855
28939
  }
28856
- const activityStatus = normalizeWorkspaceAgentActivityDisplayStatus(status);
28857
- if (activityStatus !== "working" && activityStatus !== "waiting" && activityStatus !== "canceled" && activityStatus !== "failed") {
28858
- return null;
28859
- }
28940
+ const activityStatus = normalizeAgentActivityDisplayStatus(status);
28860
28941
  return /* @__PURE__ */ jsx82(MentionStatusTag, { status: activityStatus });
28861
28942
  }
28862
28943
  function IssueMentionStatusTag({
@@ -28878,11 +28959,32 @@ function IssueMentionStatusTag({
28878
28959
  }
28879
28960
  );
28880
28961
  }
28881
- function mentionStatusBadgeClassName(statusClass) {
28882
- if (statusClass === "working" || statusClass === "done") {
28883
- return "bg-[color:color-mix(in_srgb,var(--state-success)_12%,transparent)] text-[var(--state-success)]";
28962
+ function mentionStatusTone(status) {
28963
+ if (status === "working") {
28964
+ return "blue";
28965
+ }
28966
+ if (status === "waiting" || status === "canceled") {
28967
+ return "amber";
28884
28968
  }
28885
- if (statusClass === "failed") {
28969
+ if (status === "completed" || status === "idle") {
28970
+ return "green";
28971
+ }
28972
+ if (status === "failed") {
28973
+ return "red";
28974
+ }
28975
+ return "neutral";
28976
+ }
28977
+ function mentionStatusBadgeClassName(status) {
28978
+ if (status === "working") {
28979
+ return "bg-sky-500/10 text-sky-700";
28980
+ }
28981
+ if (status === "waiting" || status === "canceled") {
28982
+ return "bg-[color:color-mix(in_srgb,var(--color-amber-500)_12%,transparent)] text-[var(--color-amber-500)]";
28983
+ }
28984
+ if (status === "completed" || status === "idle") {
28985
+ return "bg-[var(--tsh-ui-pill-success-bg)] text-[var(--tsh-ui-pill-success-fg)]";
28986
+ }
28987
+ if (status === "failed") {
28886
28988
  return "bg-[var(--on-danger)] text-[var(--state-danger)]";
28887
28989
  }
28888
28990
  return "bg-[var(--transparency-block)] text-[var(--text-secondary)]";
@@ -30292,6 +30394,7 @@ function AgentComposer({
30292
30394
  ref: inputShellRef,
30293
30395
  className: cn(inputShellClassName, "relative"),
30294
30396
  "data-input-disabled": inputDisabled ? "true" : void 0,
30397
+ title: inputDisabled && disabledReasonText ? disabledReasonText : void 0,
30295
30398
  style: inputShellStyle,
30296
30399
  children: [
30297
30400
  /* @__PURE__ */ jsxs54(
@@ -31012,8 +31115,11 @@ function AttentionGlyph() {
31012
31115
  import { Fragment as Fragment16, jsx as jsx86, jsxs as jsxs56 } from "react/jsx-runtime";
31013
31116
  var AGENT_GUI_STICK_TO_BOTTOM_THRESHOLD_PX = 24;
31014
31117
  var AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE = {
31118
+ width: "100%",
31015
31119
  minWidth: "100%",
31016
31120
  display: "grid",
31121
+ gridTemplateColumns: "minmax(0, min(100%, var(--agent-gui-detail-flow-max-width)))",
31122
+ justifyContent: "center",
31017
31123
  gap: "24px"
31018
31124
  };
31019
31125
  var EMPTY_WORKSPACE_APP_ICONS4 = [];
@@ -31034,6 +31140,14 @@ function agentGuiPerfNowMs() {
31034
31140
  function roundAgentGuiPerfMs(value) {
31035
31141
  return Math.round(value * 100) / 100;
31036
31142
  }
31143
+ function isDifferentKnownConversationOwner(input) {
31144
+ const conversationUserId = input.conversationUserId?.trim() ?? "";
31145
+ const currentUserId = input.currentUserId?.trim() ?? "";
31146
+ if (!conversationUserId || !currentUserId || conversationUserId === "local" || currentUserId === "local") {
31147
+ return false;
31148
+ }
31149
+ return conversationUserId !== currentUserId;
31150
+ }
31037
31151
  function isContextCanceledMessage(message) {
31038
31152
  const normalized = message?.trim().toLowerCase() ?? "";
31039
31153
  return normalized === "context canceled";
@@ -31228,6 +31342,7 @@ function AgentGUINodeView({
31228
31342
  isAgentProviderReady,
31229
31343
  slashStatusLimits = [],
31230
31344
  slashStatusLimitsLoading = false,
31345
+ previewMode = false,
31231
31346
  showProjectSelector = true,
31232
31347
  onAgentProviderLogin,
31233
31348
  actions,
@@ -31256,6 +31371,9 @@ function AgentGUINodeView({
31256
31371
  ] = useState26(0);
31257
31372
  const workspaceReferencePickerResolverRef = useRef20(null);
31258
31373
  const requestWorkspaceReferences = useCallback18(async () => {
31374
+ if (previewMode) {
31375
+ return [];
31376
+ }
31259
31377
  if (!workspaceFileReferenceAdapter || !workspaceFileReferenceCopy) {
31260
31378
  return [];
31261
31379
  }
@@ -31263,7 +31381,7 @@ function AgentGUINodeView({
31263
31381
  return await new Promise((resolve) => {
31264
31382
  workspaceReferencePickerResolverRef.current = resolve;
31265
31383
  });
31266
- }, [workspaceFileReferenceAdapter, workspaceFileReferenceCopy]);
31384
+ }, [previewMode, workspaceFileReferenceAdapter, workspaceFileReferenceCopy]);
31267
31385
  const closeWorkspaceReferencePicker = useCallback18(() => {
31268
31386
  workspaceReferencePickerResolverRef.current?.([]);
31269
31387
  workspaceReferencePickerResolverRef.current = null;
@@ -31286,6 +31404,9 @@ function AgentGUINodeView({
31286
31404
  const detailComposerFocusRequestSequence = localComposerFocusRequestSequence === 0 ? composerFocusRequestSequence : (composerFocusRequestSequence ?? 0) + localComposerFocusRequestSequence;
31287
31405
  const requestCreateConversation = useCallback18(
31288
31406
  (options) => {
31407
+ if (previewMode) {
31408
+ return;
31409
+ }
31289
31410
  if (options) {
31290
31411
  actions.createConversation(options);
31291
31412
  } else {
@@ -31293,7 +31414,7 @@ function AgentGUINodeView({
31293
31414
  }
31294
31415
  setLocalComposerFocusRequestSequence((current) => current + 1);
31295
31416
  },
31296
- [actions]
31417
+ [actions, previewMode]
31297
31418
  );
31298
31419
  const effectiveWorkspaceAppIcons = useMemo15(
31299
31420
  () => mergeWorkspaceAppIconsFromCommands({
@@ -31312,6 +31433,9 @@ function AgentGUINodeView({
31312
31433
  );
31313
31434
  const handleConversationRailResizePointerDown = useCallback18(
31314
31435
  (event) => {
31436
+ if (previewMode) {
31437
+ return;
31438
+ }
31315
31439
  if (conversationRailCollapsed || event.button !== 0) {
31316
31440
  return;
31317
31441
  }
@@ -31324,10 +31448,13 @@ function AgentGUINodeView({
31324
31448
  };
31325
31449
  setIsRailResizing(true);
31326
31450
  },
31327
- [conversationRailCollapsed, conversationRailWidthPx]
31451
+ [conversationRailCollapsed, conversationRailWidthPx, previewMode]
31328
31452
  );
31329
31453
  const handleConversationRailResizePointerMove = useCallback18(
31330
31454
  (event) => {
31455
+ if (previewMode) {
31456
+ return;
31457
+ }
31331
31458
  const resizeState = railResizeInteractionRef.current;
31332
31459
  if (!resizeState || resizeState.pointerId !== event.pointerId) {
31333
31460
  return;
@@ -31337,7 +31464,7 @@ function AgentGUINodeView({
31337
31464
  );
31338
31465
  onConversationRailWidthChanged(nextWidthPx);
31339
31466
  },
31340
- [clampConversationRailWidth, onConversationRailWidthChanged]
31467
+ [clampConversationRailWidth, onConversationRailWidthChanged, previewMode]
31341
31468
  );
31342
31469
  const endConversationRailResize = useCallback18(
31343
31470
  (event) => {
@@ -31351,6 +31478,9 @@ function AgentGUINodeView({
31351
31478
  );
31352
31479
  const handleConversationRailResizeKeyDown = useCallback18(
31353
31480
  (event) => {
31481
+ if (previewMode) {
31482
+ return;
31483
+ }
31354
31484
  if (conversationRailCollapsed) {
31355
31485
  return;
31356
31486
  }
@@ -31368,7 +31498,8 @@ function AgentGUINodeView({
31368
31498
  clampConversationRailWidth,
31369
31499
  conversationRailCollapsed,
31370
31500
  conversationRailWidthPx,
31371
- onConversationRailWidthChanged
31501
+ onConversationRailWidthChanged,
31502
+ previewMode
31372
31503
  ]
31373
31504
  );
31374
31505
  const layoutStyle = {
@@ -31377,90 +31508,99 @@ function AgentGUINodeView({
31377
31508
  gridTemplateColumns: conversationRailCollapsed ? "0 minmax(var(--agent-gui-detail-min-width), 1fr)" : "var(--agent-gui-conversation-rail-width) minmax(var(--agent-gui-detail-min-width), 1fr)"
31378
31509
  };
31379
31510
  return /* @__PURE__ */ jsxs56(TooltipProvider2, { children: [
31380
- /* @__PURE__ */ jsxs56("div", { className: AgentGUINode_styles_default.layout, style: layoutStyle, children: [
31381
- /* @__PURE__ */ jsx86(
31382
- "aside",
31383
- {
31384
- id: "agent-gui-conversation-rail",
31385
- className: `${AgentGUINode_styles_default.railPanel}${conversationRailCollapsed ? ` ${AgentGUINode_styles_default.railPanelCollapsed}` : ""}`,
31386
- "aria-hidden": conversationRailCollapsed ? "true" : void 0,
31387
- inert: conversationRailCollapsed ? true : void 0,
31388
- children: /* @__PURE__ */ jsx86(
31389
- AgentGUIConversationRailPane,
31511
+ /* @__PURE__ */ jsxs56(
31512
+ "div",
31513
+ {
31514
+ className: AgentGUINode_styles_default.layout,
31515
+ "data-agent-gui-preview": previewMode ? "true" : void 0,
31516
+ inert: previewMode ? true : void 0,
31517
+ style: layoutStyle,
31518
+ children: [
31519
+ /* @__PURE__ */ jsx86(
31520
+ "aside",
31521
+ {
31522
+ id: "agent-gui-conversation-rail",
31523
+ className: `${AgentGUINode_styles_default.railPanel}${conversationRailCollapsed ? ` ${AgentGUINode_styles_default.railPanelCollapsed}` : ""}`,
31524
+ "aria-hidden": conversationRailCollapsed ? "true" : void 0,
31525
+ inert: conversationRailCollapsed ? true : void 0,
31526
+ children: /* @__PURE__ */ jsx86(
31527
+ AgentGUIConversationRailPane,
31528
+ {
31529
+ conversations: viewModel.conversations,
31530
+ userProjects: viewModel.userProjects,
31531
+ activeConversationId: viewModel.activeConversationId,
31532
+ pendingDeleteConversationId: viewModel.pendingDeleteConversation?.id ?? null,
31533
+ isLoadingConversations: viewModel.isLoadingConversations,
31534
+ isDeletingConversation: viewModel.isDeletingConversation,
31535
+ isDeletingProjectConversations: viewModel.isDeletingProjectConversations,
31536
+ labels,
31537
+ workspaceUserProjectI18n,
31538
+ uiLanguage,
31539
+ showProjectSelector,
31540
+ createConversationDisabled,
31541
+ openclawGateway,
31542
+ isCollapsed: conversationRailCollapsed,
31543
+ onCreateConversation: requestCreateConversation,
31544
+ onRetryOpenclawGateway: actions.retryOpenclawGateway,
31545
+ onSelectConversation: actions.selectConversation,
31546
+ onToggleConversationPinned: actions.toggleConversationPinned,
31547
+ onRemoveProject: actions.removeProject,
31548
+ onConfirmDeleteProjectConversations: actions.confirmDeleteProjectConversations,
31549
+ onRequestDeleteConversation: actions.requestDeleteConversation,
31550
+ onCancelDeleteConversation: actions.cancelDeleteConversation,
31551
+ onConfirmDeleteConversation: actions.confirmDeleteConversation
31552
+ }
31553
+ )
31554
+ }
31555
+ ),
31556
+ /* @__PURE__ */ jsx86(
31557
+ "div",
31390
31558
  {
31391
- conversations: viewModel.conversations,
31392
- userProjects: viewModel.userProjects,
31393
- activeConversationId: viewModel.activeConversationId,
31394
- pendingDeleteConversationId: viewModel.pendingDeleteConversation?.id ?? null,
31395
- isLoadingConversations: viewModel.isLoadingConversations,
31396
- isDeletingConversation: viewModel.isDeletingConversation,
31397
- isDeletingProjectConversations: viewModel.isDeletingProjectConversations,
31559
+ id: "agent-gui-conversation-rail-resize",
31560
+ className: conversationRailCollapsed ? `${AgentGUINode_styles_default.railResizeHandle} ${AgentGUINode_styles_default.railResizeHandleCollapsed} nodrag pointer-events-none opacity-0` : `${AgentGUINode_styles_default.railResizeHandle} nodrag`,
31561
+ role: "separator",
31562
+ "aria-label": labels.conversationRailResizeAria,
31563
+ "aria-hidden": conversationRailCollapsed ? "true" : void 0,
31564
+ "aria-orientation": "vertical",
31565
+ "aria-valuemin": conversationRailMinWidthPx,
31566
+ "aria-valuemax": conversationRailMaxWidthPx,
31567
+ "aria-valuenow": conversationRailCollapsed ? void 0 : conversationRailWidthPx,
31568
+ "data-resizing": isRailResizing ? "true" : void 0,
31569
+ "data-testid": "agent-gui-conversation-rail-resize-handle",
31570
+ tabIndex: conversationRailCollapsed ? -1 : 0,
31571
+ onBlur: () => endConversationRailResize(),
31572
+ onKeyDown: handleConversationRailResizeKeyDown,
31573
+ onPointerCancel: endConversationRailResize,
31574
+ onPointerDown: handleConversationRailResizePointerDown,
31575
+ onLostPointerCapture: endConversationRailResize,
31576
+ onPointerMove: handleConversationRailResizePointerMove,
31577
+ onPointerUp: endConversationRailResize
31578
+ }
31579
+ ),
31580
+ /* @__PURE__ */ jsx86("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx86(
31581
+ AgentGUIDetailPane,
31582
+ {
31583
+ viewModel,
31584
+ actions,
31398
31585
  labels,
31399
- workspaceUserProjectI18n,
31400
31586
  uiLanguage,
31587
+ isActive,
31588
+ composerFocusRequestSequence: detailComposerFocusRequestSequence,
31589
+ isAgentProviderReady,
31590
+ slashStatusLimits,
31591
+ slashStatusLimitsLoading,
31401
31592
  showProjectSelector,
31402
- createConversationDisabled,
31403
- openclawGateway,
31404
- isCollapsed: conversationRailCollapsed,
31405
- onCreateConversation: requestCreateConversation,
31406
- onRetryOpenclawGateway: actions.retryOpenclawGateway,
31407
- onSelectConversation: actions.selectConversation,
31408
- onToggleConversationPinned: actions.toggleConversationPinned,
31409
- onRemoveProject: actions.removeProject,
31410
- onConfirmDeleteProjectConversations: actions.confirmDeleteProjectConversations,
31411
- onRequestDeleteConversation: actions.requestDeleteConversation,
31412
- onCancelDeleteConversation: actions.cancelDeleteConversation,
31413
- onConfirmDeleteConversation: actions.confirmDeleteConversation
31593
+ onLinkAction,
31594
+ onAgentProviderLogin,
31595
+ onRequestWorkspaceReferences: requestWorkspaceReferences,
31596
+ richTextAtProviders,
31597
+ workspaceAppIcons: effectiveWorkspaceAppIcons,
31598
+ workspaceUserProjectI18n
31414
31599
  }
31415
- )
31416
- }
31417
- ),
31418
- /* @__PURE__ */ jsx86(
31419
- "div",
31420
- {
31421
- id: "agent-gui-conversation-rail-resize",
31422
- className: conversationRailCollapsed ? `${AgentGUINode_styles_default.railResizeHandle} ${AgentGUINode_styles_default.railResizeHandleCollapsed} nodrag pointer-events-none opacity-0` : `${AgentGUINode_styles_default.railResizeHandle} nodrag`,
31423
- role: "separator",
31424
- "aria-label": labels.conversationRailResizeAria,
31425
- "aria-hidden": conversationRailCollapsed ? "true" : void 0,
31426
- "aria-orientation": "vertical",
31427
- "aria-valuemin": conversationRailMinWidthPx,
31428
- "aria-valuemax": conversationRailMaxWidthPx,
31429
- "aria-valuenow": conversationRailCollapsed ? void 0 : conversationRailWidthPx,
31430
- "data-resizing": isRailResizing ? "true" : void 0,
31431
- "data-testid": "agent-gui-conversation-rail-resize-handle",
31432
- tabIndex: conversationRailCollapsed ? -1 : 0,
31433
- onBlur: () => endConversationRailResize(),
31434
- onKeyDown: handleConversationRailResizeKeyDown,
31435
- onPointerCancel: endConversationRailResize,
31436
- onPointerDown: handleConversationRailResizePointerDown,
31437
- onLostPointerCapture: endConversationRailResize,
31438
- onPointerMove: handleConversationRailResizePointerMove,
31439
- onPointerUp: endConversationRailResize
31440
- }
31441
- ),
31442
- /* @__PURE__ */ jsx86("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx86(
31443
- AgentGUIDetailPane,
31444
- {
31445
- viewModel,
31446
- actions,
31447
- labels,
31448
- uiLanguage,
31449
- isActive,
31450
- composerFocusRequestSequence: detailComposerFocusRequestSequence,
31451
- isAgentProviderReady,
31452
- slashStatusLimits,
31453
- slashStatusLimitsLoading,
31454
- showProjectSelector,
31455
- onLinkAction,
31456
- onAgentProviderLogin,
31457
- onRequestWorkspaceReferences: requestWorkspaceReferences,
31458
- richTextAtProviders,
31459
- workspaceAppIcons: effectiveWorkspaceAppIcons,
31460
- workspaceUserProjectI18n
31461
- }
31462
- ) })
31463
- ] }),
31600
+ ) })
31601
+ ]
31602
+ }
31603
+ ),
31464
31604
  /* @__PURE__ */ jsx86(
31465
31605
  WorkspaceFileReferencePicker,
31466
31606
  {
@@ -31637,11 +31777,15 @@ var AgentGUIDetailPane = memo5(function AgentGUIDetailPane2({
31637
31777
  const displayConversationStatus = viewModel.isSubmitting ? "working" : derivedBusyStatus ?? viewModel.activeConversation?.status;
31638
31778
  const activeConversationTurnBusy = viewModel.isSubmitting || derivedBusyStatus !== null;
31639
31779
  const isComposerSending = viewModel.isSubmitting || activeConversationTurnBusy || !hasActiveConversation && viewModel.isCreatingConversation;
31640
- const canQueueWhileBusy = viewModel.canQueueWhileBusy && isAgentProviderReady;
31641
- const composerDisabledReason = isAgentProviderReady ? null : labels.installRequiredPlaceholder;
31642
- const submitDisabled = !isAgentProviderReady || !viewModel.canSubmit && !canQueueWhileBusy || viewModel.draftPrompt.trim() === "";
31780
+ const isCollaboratorConversation = isDifferentKnownConversationOwner({
31781
+ conversationUserId: viewModel.activeConversation?.userId,
31782
+ currentUserId: viewModel.currentUserId
31783
+ });
31784
+ const canQueueWhileBusy = viewModel.canQueueWhileBusy && isAgentProviderReady && !isCollaboratorConversation;
31785
+ const composerDisabledReason = isCollaboratorConversation ? labels.collaboratorSessionReadOnlyPlaceholder : isAgentProviderReady ? null : labels.installRequiredPlaceholder;
31786
+ const submitDisabled = isCollaboratorConversation || !isAgentProviderReady || !viewModel.canSubmit && !canQueueWhileBusy || viewModel.draftPrompt.trim() === "";
31643
31787
  const hasNonRetryableRecoveryFailure = sessionChrome.recovery?.kind === "failed" && sessionChrome.recovery.canRetry === false;
31644
- const composerDisabled = hasNonRetryableRecoveryFailure || !isAgentProviderReady || !canQueueWhileBusy && (viewModel.pendingApproval !== null || viewModel.pendingInteractivePrompt !== null || viewModel.isSubmitting || viewModel.isInterrupting || viewModel.isCreatingConversation);
31788
+ const composerDisabled = hasNonRetryableRecoveryFailure || isCollaboratorConversation || !isAgentProviderReady || !canQueueWhileBusy && (viewModel.pendingApproval !== null || viewModel.pendingInteractivePrompt !== null || viewModel.isSubmitting || viewModel.isInterrupting || viewModel.isCreatingConversation);
31645
31789
  const showStopButton = !viewModel.isSubmitting && viewModel.activeLiveState !== "failed" && sessionChrome.auth === null && (activeConversationTurnBusy || viewModel.pendingApproval !== null || viewModel.pendingInteractivePrompt !== null || viewModel.isInterrupting) && !(canQueueWhileBusy && viewModel.draftPrompt.trim() !== "");
31646
31790
  const syncStatus = resolveSyncIndicatorStatus(
31647
31791
  viewModel.activeConversation?.syncState?.status
@@ -33710,7 +33854,7 @@ function areAgentGUINodePropsEqual(previous, next) {
33710
33854
  previous.workspaceAgentProbes,
33711
33855
  next.workspaceAgentProbes,
33712
33856
  previous.state.provider
33713
- ) && previous.onAgentProbeDemandChange === next.onAgentProbeDemandChange && previous.managedAgentsState === next.managedAgentsState && previous.richTextAtProviders === next.richTextAtProviders && previous.workspaceAppIcons === next.workspaceAppIcons && previous.embedded === next.embedded && previous.isActive === next.isActive && previous.showProjectSelector === next.showProjectSelector && previous.composerFocusRequestSequence === next.composerFocusRequestSequence;
33857
+ ) && previous.onAgentProbeDemandChange === next.onAgentProbeDemandChange && previous.managedAgentsState === next.managedAgentsState && previous.richTextAtProviders === next.richTextAtProviders && previous.workspaceAppIcons === next.workspaceAppIcons && previous.embedded === next.embedded && previous.previewMode === next.previewMode && previous.isActive === next.isActive && previous.showProjectSelector === next.showProjectSelector && previous.composerFocusRequestSequence === next.composerFocusRequestSequence;
33714
33858
  }
33715
33859
  var AgentGUINode = memo6(function AgentGUINode2({
33716
33860
  nodeId,
@@ -33744,7 +33888,8 @@ var AgentGUINode = memo6(function AgentGUINode2({
33744
33888
  managedAgentsState,
33745
33889
  richTextAtProviders,
33746
33890
  workspaceAppIcons,
33747
- embedded = false
33891
+ embedded = false,
33892
+ previewMode = false
33748
33893
  }) {
33749
33894
  "use memo";
33750
33895
  const { i18n, locale, t } = useTranslation();
@@ -33780,12 +33925,18 @@ var AgentGUINode = memo6(function AgentGUINode2({
33780
33925
  );
33781
33926
  const handleDataChange = useCallback20(
33782
33927
  (updater) => {
33928
+ if (previewMode) {
33929
+ return;
33930
+ }
33783
33931
  onUpdateNode(updater);
33784
33932
  },
33785
- [onUpdateNode]
33933
+ [onUpdateNode, previewMode]
33786
33934
  );
33787
33935
  const handleConversationRailWidthChanged = useCallback20(
33788
33936
  (widthPx) => {
33937
+ if (previewMode) {
33938
+ return;
33939
+ }
33789
33940
  onUpdateNode((current) => {
33790
33941
  const nextWidthPx = resolveNextAgentGUIConversationRailWidthPx({
33791
33942
  currentWidthPx: current.conversationRailWidthPx,
@@ -33801,7 +33952,7 @@ var AgentGUINode = memo6(function AgentGUINode2({
33801
33952
  };
33802
33953
  });
33803
33954
  },
33804
- [onUpdateNode, width]
33955
+ [onUpdateNode, previewMode, width]
33805
33956
  );
33806
33957
  const isConversationRailManuallyCollapsed = state.conversationRailCollapsed === true;
33807
33958
  const isConversationRailAutoCollapsed = shouldAutoCollapseAgentGUIConversationRail(width);
@@ -33814,12 +33965,18 @@ var AgentGUINode = memo6(function AgentGUINode2({
33814
33965
  []
33815
33966
  );
33816
33967
  const toggleConversationRailCollapsed = useCallback20(() => {
33968
+ if (previewMode) {
33969
+ return;
33970
+ }
33817
33971
  onUpdateNode((current) => ({
33818
33972
  ...current,
33819
33973
  conversationRailCollapsed: current.conversationRailCollapsed !== true
33820
33974
  }));
33821
- }, [onUpdateNode]);
33975
+ }, [onUpdateNode, previewMode]);
33822
33976
  const handleConversationRailToggle = useCallback20(() => {
33977
+ if (previewMode) {
33978
+ return;
33979
+ }
33823
33980
  if (!isConversationRailAutoCollapsed) {
33824
33981
  toggleConversationRailCollapsed();
33825
33982
  return;
@@ -33849,6 +34006,7 @@ var AgentGUINode = memo6(function AgentGUINode2({
33849
34006
  onResize,
33850
34007
  onUpdateNode,
33851
34008
  position,
34009
+ previewMode,
33852
34010
  state.conversationRailWidthPx,
33853
34011
  toggleConversationRailCollapsed,
33854
34012
  width
@@ -33860,6 +34018,7 @@ var AgentGUINode = memo6(function AgentGUINode2({
33860
34018
  workspacePath,
33861
34019
  avoidGroupingEdits: agentSettings.avoidGroupingEdits,
33862
34020
  data: state,
34021
+ previewMode,
33863
34022
  onDataChange: handleDataChange,
33864
34023
  onShowMessage
33865
34024
  });
@@ -33885,6 +34044,9 @@ var AgentGUINode = memo6(function AgentGUINode2({
33885
34044
  provider: displayProviderLabel
33886
34045
  }
33887
34046
  ),
34047
+ collaboratorSessionReadOnlyPlaceholder: t(
34048
+ "agentHost.agentGui.collaboratorSessionReadOnlyPlaceholder"
34049
+ ),
33888
34050
  send: t("agentHost.agentGui.send"),
33889
34051
  modelLabel: t("agentHost.agentGui.modelLabel"),
33890
34052
  modelSelectionLabel: t("agentHost.agentGui.modelSelectionLabel"),
@@ -34208,7 +34370,7 @@ var AgentGUINode = memo6(function AgentGUINode2({
34208
34370
  t
34209
34371
  ]);
34210
34372
  useEffect23(() => {
34211
- if (!onAgentProbeDemandChange) {
34373
+ if (previewMode || !onAgentProbeDemandChange) {
34212
34374
  return;
34213
34375
  }
34214
34376
  const probeSourceId = `agent-gui:${nodeId}`;
@@ -34216,7 +34378,7 @@ var AgentGUINode = memo6(function AgentGUINode2({
34216
34378
  return () => {
34217
34379
  onAgentProbeDemandChange(null, probeSourceId);
34218
34380
  };
34219
- }, [activeProbeProvider, nodeId, onAgentProbeDemandChange]);
34381
+ }, [activeProbeProvider, nodeId, onAgentProbeDemandChange, previewMode]);
34220
34382
  return /* @__PURE__ */ jsx88(
34221
34383
  WorkspaceNodeWindow,
34222
34384
  {
@@ -34284,6 +34446,7 @@ var AgentGUINode = memo6(function AgentGUINode2({
34284
34446
  isAgentProviderReady: isActiveAgentProviderReady,
34285
34447
  slashStatusLimits,
34286
34448
  slashStatusLimitsLoading: workspaceAgentProbes?.isLoadingUsage ?? false,
34449
+ previewMode,
34287
34450
  showProjectSelector,
34288
34451
  onLinkAction: handleLinkAction,
34289
34452
  onAgentProviderLogin: onAgentProviderLogin ? handleAgentProviderLogin : void 0,