@tutti-os/agent-gui 0.0.201 → 0.0.202

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.
@@ -15,7 +15,7 @@ import {
15
15
  resolveAgentGuiSessionProviderFlatIconUrl,
16
16
  resolveNextAgentGUIConversationRailWidthPx,
17
17
  shouldAutoCollapseAgentGUIConversationRail
18
- } from "./chunk-7NUEEGAA.js";
18
+ } from "./chunk-X5V6P2EB.js";
19
19
  import {
20
20
  resolveAgentGuiWorkbenchProviderLabel
21
21
  } from "./chunk-MGSRWYRN.js";
@@ -69,7 +69,7 @@ import {
69
69
  toLocalShortDateTime,
70
70
  updateAgentComposerDraft,
71
71
  useProjectedAgentConversation
72
- } from "./chunk-ZADHMOME.js";
72
+ } from "./chunk-UVJBQ6WD.js";
73
73
  import {
74
74
  agentRichTextContentToPromptText,
75
75
  createAgentRichTextInputExtensions,
@@ -188,11 +188,11 @@ import {
188
188
  } from "./chunk-O433KXLK.js";
189
189
 
190
190
  // AgentGUI.tsx
191
- import { memo as memo15, useMemo as useMemo51 } from "react";
191
+ import { memo as memo16, useMemo as useMemo51 } from "react";
192
192
  import { TooltipProvider as TooltipProvider8 } from "@tutti-os/ui-system";
193
193
 
194
194
  // agent-gui/agentGuiNode/AgentGUINode.tsx
195
- import { memo as memo14, useCallback as useCallback69, useMemo as useMemo50, useRef as useRef61 } from "react";
195
+ import { memo as memo15, useCallback as useCallback69, useMemo as useMemo50, useRef as useRef61 } from "react";
196
196
  import { createWorkspaceUserProjectI18nRuntime } from "@tutti-os/workspace-user-project/i18n";
197
197
  import { createWorkspaceFileManagerI18nRuntime } from "@tutti-os/workspace-file-manager";
198
198
  import { useReferenceProvenanceFilterCatalog } from "@tutti-os/workspace-file-reference/react";
@@ -11508,7 +11508,8 @@ function useAgentGUIConversationDetail(input) {
11508
11508
  );
11509
11509
  const sessionTurns = useEngineSelector(
11510
11510
  input.sessionEngine,
11511
- (state) => selectEngineTurnsForSession(state, input.activeConversationId)
11511
+ (state) => selectEngineTurnsForSession(state, input.activeConversationId),
11512
+ referenceArrayEqual
11512
11513
  );
11513
11514
  const projectionConversation = useMemo11(() => {
11514
11515
  if (!input.activeConversation) {
@@ -11679,6 +11680,9 @@ function useAgentGUIConversationDetail(input) {
11679
11680
  serverInteractivePrompt: hasProviderSessionNotFoundError ? null : rawPendingInteractivePrompt
11680
11681
  };
11681
11682
  }
11683
+ function referenceArrayEqual(left, right) {
11684
+ return left.length === right.length && left.every((value, index) => value === right[index]);
11685
+ }
11682
11686
 
11683
11687
  // agent-gui/agentGuiNode/controller/useAgentGUIConversationPresentation.ts
11684
11688
  import { useEffect as useEffect9, useMemo as useMemo12, useRef as useRef15 } from "react";
@@ -24379,10 +24383,46 @@ function handleAgentRichTextKeyDownCapture(event, input) {
24379
24383
  input.onSubmitRef.current();
24380
24384
  }
24381
24385
 
24386
+ // agent-gui/agentGuiNode/agentRichText/agentRichTextControlledValue.ts
24387
+ function createAgentRichTextControlledValueTracker(scopeKey) {
24388
+ return { nextRevision: 0, pendingLocalEchoes: [], scopeKey };
24389
+ }
24390
+ function recordAgentRichTextLocalEdit(tracker, value) {
24391
+ tracker.nextRevision += 1;
24392
+ tracker.pendingLocalEchoes.push({
24393
+ revision: tracker.nextRevision,
24394
+ scopeKey: tracker.scopeKey,
24395
+ value
24396
+ });
24397
+ }
24398
+ function shouldApplyAgentRichTextControlledValue(input) {
24399
+ const { lastEmittedValue, scopeKey, tracker, value } = input;
24400
+ const scopeChanged = tracker.scopeKey !== scopeKey;
24401
+ if (scopeChanged) {
24402
+ tracker.scopeKey = scopeKey;
24403
+ tracker.pendingLocalEchoes = [];
24404
+ }
24405
+ const localEcho = tracker.pendingLocalEchoes.find(
24406
+ (candidate) => candidate.scopeKey === scopeKey && candidate.value === value
24407
+ );
24408
+ if (!scopeChanged && localEcho) {
24409
+ tracker.pendingLocalEchoes = tracker.pendingLocalEchoes.filter(
24410
+ (candidate) => candidate.scopeKey !== scopeKey || candidate.revision > localEcho.revision
24411
+ );
24412
+ return false;
24413
+ }
24414
+ if (!scopeChanged && value === lastEmittedValue) {
24415
+ return false;
24416
+ }
24417
+ tracker.pendingLocalEchoes = [];
24418
+ return true;
24419
+ }
24420
+
24382
24421
  // agent-gui/agentGuiNode/agentRichText/AgentRichTextEditor.tsx
24383
24422
  import { jsx as jsx31 } from "react/jsx-runtime";
24384
24423
  var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
24385
24424
  value,
24425
+ contentScopeKey = "default",
24386
24426
  disabled,
24387
24427
  placeholder,
24388
24428
  removeMentionLabel,
@@ -24411,7 +24451,9 @@ var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
24411
24451
  "use memo";
24412
24452
  const { t } = useTranslation();
24413
24453
  const lastEmittedPromptRef = useRef31(value);
24414
- const pendingLocalPromptEchoesRef = useRef31(/* @__PURE__ */ new Set());
24454
+ const controlledValueTrackerRef = useRef31(
24455
+ createAgentRichTextControlledValueTracker(contentScopeKey)
24456
+ );
24415
24457
  const editorRef = useRef31(null);
24416
24458
  const onChangeRef = useRef31(onChange);
24417
24459
  const onContentLayoutInvalidatedRef = useRef31(onContentLayoutInvalidated);
@@ -24843,7 +24885,10 @@ var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
24843
24885
  return;
24844
24886
  }
24845
24887
  lastEmittedPromptRef.current = nextPrompt;
24846
- pendingLocalPromptEchoesRef.current.add(nextPrompt);
24888
+ recordAgentRichTextLocalEdit(
24889
+ controlledValueTrackerRef.current,
24890
+ nextPrompt
24891
+ );
24847
24892
  if (isAgentRichTextUserContentInsertion(transaction)) {
24848
24893
  onUserContentChangeRef.current?.(nextPrompt);
24849
24894
  }
@@ -24924,16 +24969,14 @@ var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
24924
24969
  if (!editor || editor.isDestroyed) {
24925
24970
  return;
24926
24971
  }
24927
- if (pendingLocalPromptEchoesRef.current.has(value)) {
24928
- if (value === lastEmittedPromptRef.current) {
24929
- pendingLocalPromptEchoesRef.current.clear();
24930
- }
24931
- return;
24932
- }
24933
- if (value === lastEmittedPromptRef.current) {
24972
+ if (!shouldApplyAgentRichTextControlledValue({
24973
+ lastEmittedValue: lastEmittedPromptRef.current,
24974
+ scopeKey: contentScopeKey,
24975
+ tracker: controlledValueTrackerRef.current,
24976
+ value
24977
+ })) {
24934
24978
  return;
24935
24979
  }
24936
- pendingLocalPromptEchoesRef.current.clear();
24937
24980
  const nextDoc = plainTextToAgentRichTextDoc(value, {
24938
24981
  capabilities: availableCapabilities,
24939
24982
  skills: availableSkills
@@ -24946,7 +24989,7 @@ var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
24946
24989
  editor.commands.setTextSelection(editor.state.doc.content.size);
24947
24990
  lastEmittedPromptRef.current = value;
24948
24991
  onContentLayoutInvalidatedRef.current?.();
24949
- }, [availableCapabilities, availableSkills, editor, value]);
24992
+ }, [availableCapabilities, availableSkills, contentScopeKey, editor, value]);
24950
24993
  return /* @__PURE__ */ jsx31(
24951
24994
  AgentRichTextEditorSurface,
24952
24995
  {
@@ -28102,6 +28145,7 @@ function AgentComposerView(input) {
28102
28145
  {
28103
28146
  ref: input.editorHandleRef,
28104
28147
  value: input.paletteDraftPrompt,
28148
+ contentScopeKey: input.props.draftScopeKey,
28105
28149
  placeholder: effectivePlaceholder,
28106
28150
  disabled: inputDisabled,
28107
28151
  className: AgentGUINode_styles_default.composerTextarea,
@@ -36847,15 +36891,7 @@ var AgentGUIConversationRailController = memo9(
36847
36891
  );
36848
36892
 
36849
36893
  // agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
36850
- import {
36851
- memo as memo12,
36852
- useCallback as useCallback61,
36853
- useEffect as useEffect35,
36854
- useMemo as useMemo44,
36855
- useRef as useRef53,
36856
- useState as useState48
36857
- } from "react";
36858
- import { ScrollArea as ScrollArea3 } from "@tutti-os/ui-system/components";
36894
+ import { memo as memo13, useCallback as useCallback61, useEffect as useEffect35, useMemo as useMemo44, useRef as useRef53, useState as useState48 } from "react";
36859
36895
 
36860
36896
  // agent-gui/agentGuiNode/view/agentGUIDetailModelHelpers.ts
36861
36897
  import { useRef as useRef50 } from "react";
@@ -39236,6 +39272,12 @@ function AgentGUIContentToast({
39236
39272
  ] });
39237
39273
  }
39238
39274
 
39275
+ // agent-gui/agentGuiNode/view/AgentGUIDetailTimeline.tsx
39276
+ import {
39277
+ memo as memo12
39278
+ } from "react";
39279
+ import { ScrollArea as ScrollArea3 } from "@tutti-os/ui-system/components";
39280
+
39239
39281
  // agent-gui/agentGuiNode/view/AgentGUIConversationTimelinePane.tsx
39240
39282
  import { memo as memo11 } from "react";
39241
39283
  import { Fragment as Fragment24, jsx as jsx77, jsxs as jsxs57 } from "react/jsx-runtime";
@@ -39304,6 +39346,65 @@ function setTimelineScrollTopWithUserTransition(element, top) {
39304
39346
  element.scrollTop = top;
39305
39347
  }
39306
39348
 
39349
+ // agent-gui/agentGuiNode/view/AgentGUIDetailTimeline.tsx
39350
+ import { jsx as jsx78 } from "react/jsx-runtime";
39351
+ var TIMELINE_CONTENT_STYLE = {
39352
+ width: "100%",
39353
+ minWidth: "100%",
39354
+ display: "grid",
39355
+ gridTemplateColumns: "minmax(0, 1fr)",
39356
+ gap: "24px"
39357
+ };
39358
+ var AgentGUIDetailTimeline = memo12(function AgentGUIDetailTimeline2({
39359
+ availableSkills,
39360
+ conversation,
39361
+ conversationFlowEmpty,
39362
+ conversationFlowLabels,
39363
+ hasActiveConversation,
39364
+ homeContent,
39365
+ isLoadingOlderMessages,
39366
+ isTimelineScrolledToTop,
39367
+ labels,
39368
+ onAuthLogin,
39369
+ onLinkAction,
39370
+ previewMode,
39371
+ showTimelineSkeleton,
39372
+ showUnavailableChatEmpty,
39373
+ timelineContentRef,
39374
+ timelineRef,
39375
+ workspaceAppIcons
39376
+ }) {
39377
+ "use memo";
39378
+ return /* @__PURE__ */ jsx78(
39379
+ ScrollArea3,
39380
+ {
39381
+ scrollbarMode: "native",
39382
+ className: "flex h-full min-h-0 flex-1 flex-col [&_[data-orientation=vertical][data-slot=scroll-area-scrollbar]]:opacity-100",
39383
+ viewportRef: timelineRef,
39384
+ viewportContentRef: timelineContentRef,
39385
+ viewportTestId: "agent-gui-timeline",
39386
+ viewportClassName: `${AgentGUINode_styles_default.timeline} ${hasActiveConversation ? AgentGUINode_styles_default.timelineWithComposer : AgentGUINode_styles_default.timelineCentered} ${!isTimelineScrolledToTop ? AgentGUINode_styles_default.timelineScrolledFromTop : ""} ${showUnavailableChatEmpty ? AgentGUINode_styles_default.timelineUnavailableChatEmpty : ""}`.trim(),
39387
+ viewportContentStyle: TIMELINE_CONTENT_STYLE,
39388
+ children: hasActiveConversation ? /* @__PURE__ */ jsx78(
39389
+ AgentGUIConversationTimelinePane,
39390
+ {
39391
+ conversation,
39392
+ isLoading: showTimelineSkeleton,
39393
+ isLoadingOlderMessages,
39394
+ loadingLabel: labels.loadingConversation,
39395
+ empty: conversationFlowEmpty,
39396
+ onLinkAction,
39397
+ onAuthLogin,
39398
+ availableSkills,
39399
+ workspaceAppIcons,
39400
+ previewMode,
39401
+ labels: conversationFlowLabels
39402
+ }
39403
+ ) : homeContent
39404
+ }
39405
+ );
39406
+ });
39407
+
39307
39408
  // agent-gui/agentGuiNode/view/useAgentGUIDetailScroll.ts
39308
39409
  import {
39309
39410
  useCallback as useCallback60,
@@ -39699,10 +39800,10 @@ function useAgentGUIDetailScroll(input) {
39699
39800
  import { useMemo as useMemo43 } from "react";
39700
39801
 
39701
39802
  // app/renderer/components/icons/UnavailableChatIcon.tsx
39702
- import { jsx as jsx78 } from "react/jsx-runtime";
39803
+ import { jsx as jsx79 } from "react/jsx-runtime";
39703
39804
  function UnavailableChatIcon(props) {
39704
39805
  "use memo";
39705
- return /* @__PURE__ */ jsx78(
39806
+ return /* @__PURE__ */ jsx79(
39706
39807
  "svg",
39707
39808
  {
39708
39809
  xmlns: "http://www.w3.org/2000/svg",
@@ -39710,7 +39811,7 @@ function UnavailableChatIcon(props) {
39710
39811
  fill: "currentColor",
39711
39812
  "aria-hidden": true,
39712
39813
  ...props,
39713
- children: /* @__PURE__ */ jsx78("path", { d: "M20.833 2.125C21.6507 2.125 22.4355 2.45019 23.0137 3.02832C23.5916 3.60645 23.9159 4.39053 23.916 5.20801V17.708C23.916 18.5257 23.5918 19.3104 23.0137 19.8887C22.4355 20.4668 21.6507 20.792 20.833 20.792H7.1123C6.82516 20.7922 6.5497 20.9063 6.34668 21.1094L4.05273 23.4033C3.80954 23.6464 3.49934 23.8118 3.16211 23.8789C2.82492 23.9459 2.47487 23.9118 2.15723 23.7803C1.83953 23.6486 1.56707 23.4256 1.37598 23.1396C1.18489 22.8536 1.08305 22.5168 1.08301 22.1729V5.20801C1.08309 4.39045 1.40827 3.60647 1.98633 3.02832C2.56441 2.45024 3.3485 2.12517 4.16602 2.125H20.833ZM16.1533 7.80566C15.7628 7.41518 15.1298 7.41527 14.7393 7.80566L12.5 10.0439L10.2607 7.80469C9.87031 7.41464 9.23712 7.41465 8.84668 7.80469C8.45627 8.19509 8.45651 8.8282 8.84668 9.21875L11.0859 11.458L8.84668 13.6982C8.45651 14.0888 8.45627 14.7219 8.84668 15.1123C9.2371 15.5026 9.87024 15.5024 10.2607 15.1123L12.5 12.873L14.7393 15.1113C15.1298 15.5017 15.7628 15.5018 16.1533 15.1113C16.5434 14.7208 16.5436 14.0877 16.1533 13.6973L13.9141 11.458L16.1533 9.21973C16.5437 8.82924 16.5437 8.19616 16.1533 7.80566Z" })
39814
+ children: /* @__PURE__ */ jsx79("path", { d: "M20.833 2.125C21.6507 2.125 22.4355 2.45019 23.0137 3.02832C23.5916 3.60645 23.9159 4.39053 23.916 5.20801V17.708C23.916 18.5257 23.5918 19.3104 23.0137 19.8887C22.4355 20.4668 21.6507 20.792 20.833 20.792H7.1123C6.82516 20.7922 6.5497 20.9063 6.34668 21.1094L4.05273 23.4033C3.80954 23.6464 3.49934 23.8118 3.16211 23.8789C2.82492 23.9459 2.47487 23.9118 2.15723 23.7803C1.83953 23.6486 1.56707 23.4256 1.37598 23.1396C1.18489 22.8536 1.08305 22.5168 1.08301 22.1729V5.20801C1.08309 4.39045 1.40827 3.60647 1.98633 3.02832C2.56441 2.45024 3.3485 2.12517 4.16602 2.125H20.833ZM16.1533 7.80566C15.7628 7.41518 15.1298 7.41527 14.7393 7.80566L12.5 10.0439L10.2607 7.80469C9.87031 7.41464 9.23712 7.41465 8.84668 7.80469C8.45627 8.19509 8.45651 8.8282 8.84668 9.21875L11.0859 11.458L8.84668 13.6982C8.45651 14.0888 8.45627 14.7219 8.84668 15.1123C9.2371 15.5026 9.87024 15.5024 10.2607 15.1123L12.5 12.873L14.7393 15.1113C15.1298 15.5017 15.7628 15.5018 16.1533 15.1113C16.5434 14.7208 16.5436 14.0877 16.1533 13.6973L13.9141 11.458L16.1533 9.21973C16.5437 8.82924 16.5437 8.19616 16.1533 7.80566Z" })
39714
39815
  }
39715
39816
  );
39716
39817
  }
@@ -39756,7 +39857,7 @@ function useAgentGUITimelineTransition(input) {
39756
39857
  }
39757
39858
 
39758
39859
  // agent-gui/agentGuiNode/view/useAgentGUIDetailModel.tsx
39759
- import { Fragment as Fragment25, jsx as jsx79, jsxs as jsxs58 } from "react/jsx-runtime";
39860
+ import { Fragment as Fragment25, jsx as jsx80, jsxs as jsxs58 } from "react/jsx-runtime";
39760
39861
  function resolveTuttiModeUpdateInlineNotice(input) {
39761
39862
  if (input.status !== "failed" && input.status !== "uncertain") return null;
39762
39863
  const localizedMessage = input.status === "failed" ? input.failedMessage : input.uncertainMessage;
@@ -39950,11 +40051,11 @@ function useAgentGUIDetailModel(input) {
39950
40051
  className: AgentGUINode_styles_default.unavailableChatEmpty,
39951
40052
  "data-testid": "agent-gui-unavailable-chat-empty",
39952
40053
  children: [
39953
- /* @__PURE__ */ jsx79(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
39954
- /* @__PURE__ */ jsx79("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
40054
+ /* @__PURE__ */ jsx80(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
40055
+ /* @__PURE__ */ jsx80("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
39955
40056
  ]
39956
40057
  }
39957
- ) : /* @__PURE__ */ jsx79(Fragment25, {}),
40058
+ ) : /* @__PURE__ */ jsx80(Fragment25, {}),
39958
40059
  [labels.conversationUnavailable, showUnavailableChatEmpty]
39959
40060
  );
39960
40061
  const chromeLabels = useMemo43(
@@ -40625,17 +40726,16 @@ function useAgentGUITuttiWorkflow(input) {
40625
40726
  }
40626
40727
 
40627
40728
  // agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
40628
- import { Fragment as Fragment26, jsx as jsx80, jsxs as jsxs59 } from "react/jsx-runtime";
40629
- var AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE = {
40630
- width: "100%",
40631
- minWidth: "100%",
40632
- display: "grid",
40633
- gridTemplateColumns: "minmax(0, 1fr)",
40634
- gap: "24px"
40635
- };
40729
+ import { Fragment as Fragment26, jsx as jsx81, jsxs as jsxs59 } from "react/jsx-runtime";
40636
40730
  var EMPTY_WORKSPACE_APP_ICONS4 = [];
40637
- var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40638
- viewModel,
40731
+ var AgentGUIDetailPane = memo13(function AgentGUIDetailPane2({
40732
+ shell,
40733
+ rail,
40734
+ detail,
40735
+ composer,
40736
+ interaction,
40737
+ readiness,
40738
+ operations,
40639
40739
  homeTargetProjection,
40640
40740
  referenceProvenanceFilter = null,
40641
40741
  composerEngagement,
@@ -40671,6 +40771,15 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40671
40771
  renderProviderUnavailableState
40672
40772
  }) {
40673
40773
  "use memo";
40774
+ const viewModel = {
40775
+ shell,
40776
+ rail,
40777
+ detail,
40778
+ composer,
40779
+ interaction,
40780
+ readiness,
40781
+ operations
40782
+ };
40674
40783
  const timelineRef = useRef53(null);
40675
40784
  const timelineContentRef = useRef53(null);
40676
40785
  const bottomDockRef = useRef53(null);
@@ -41110,6 +41219,41 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
41110
41219
  timelineScrollAnchorRef,
41111
41220
  viewModel
41112
41221
  });
41222
+ const homeContent = !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx81(Fragment26, { children: renderProviderUnavailableState?.({
41223
+ provider: disabledProviderTarget.provider,
41224
+ providerLabel: labels.emptyProviderForProvider?.(
41225
+ disabledProviderTarget.provider
41226
+ ) ?? resolveAgentGuiWorkbenchProviderLabel(
41227
+ disabledProviderTarget.provider
41228
+ ),
41229
+ target: disabledProviderTarget,
41230
+ iconUrl: resolveAgentGUIHeroIconUrl2(disabledProviderTarget.provider),
41231
+ unavailableReason: disabledProviderTarget.unavailableReason ?? null
41232
+ }) }) : /* @__PURE__ */ jsx81(
41233
+ AgentGUIEmptyHomePane,
41234
+ {
41235
+ provider: emptyHeroProvider,
41236
+ providerReadinessGate: emptyProviderReadinessGate,
41237
+ showAllProviders: viewModel.rail.conversationFilter.kind === "all",
41238
+ agentTargets: composerProviderTargets,
41239
+ selectedAgentTarget: composerSelectedProviderTarget,
41240
+ onProviderSelect: canSwitchComposerProvider && viewModel.rail.activeConversationId === null ? selectHomeComposerAgentTargetAndFocus : void 0,
41241
+ noticeChrome: homeNoticeChrome,
41242
+ isRespondingApproval: isInteractionPending,
41243
+ previewMode,
41244
+ onSubmitApprovalOption: submitApprovalOption,
41245
+ onRetryActivation: retryActivation,
41246
+ onAuthLogin: authLogin,
41247
+ onContinueInNewConversation: continueInNewConversation,
41248
+ chromeLabels,
41249
+ composerProps: emptyHeroComposerProps,
41250
+ labels,
41251
+ suggestions: labels.homeSuggestions ?? EMPTY_HOME_SUGGESTIONS,
41252
+ suggestionsCloseLabel: labels.homeSuggestionsClose,
41253
+ onSelectSuggestion: handleSelectHomeSuggestion,
41254
+ onSelectSuggestionAction: handleHomeSuggestionAction
41255
+ }
41256
+ ) : null;
41113
41257
  return /* @__PURE__ */ jsxs59(
41114
41258
  "main",
41115
41259
  {
@@ -41117,7 +41261,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
41117
41261
  "aria-busy": timelineInteractionLocked || void 0,
41118
41262
  inert: timelineInteractionLocked,
41119
41263
  children: [
41120
- viewModel.operations.goalClearNoticeSequence > 0 ? /* @__PURE__ */ jsx80(
41264
+ viewModel.operations.goalClearNoticeSequence > 0 ? /* @__PURE__ */ jsx81(
41121
41265
  AgentGUIContentToast,
41122
41266
  {
41123
41267
  insetTopPx: 16,
@@ -41125,71 +41269,29 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
41125
41269
  },
41126
41270
  viewModel.operations.goalClearNoticeSequence
41127
41271
  ) : null,
41128
- /* @__PURE__ */ jsx80(
41129
- ScrollArea3,
41272
+ /* @__PURE__ */ jsx81(
41273
+ AgentGUIDetailTimeline,
41130
41274
  {
41131
- scrollbarMode: "native",
41132
- className: "flex h-full min-h-0 flex-1 flex-col [&_[data-orientation=vertical][data-slot=scroll-area-scrollbar]]:opacity-100",
41133
- viewportRef: timelineRef,
41134
- viewportContentRef: timelineContentRef,
41135
- viewportTestId: "agent-gui-timeline",
41136
- viewportClassName: `${AgentGUINode_styles_default.timeline} ${hasActiveConversation ? AgentGUINode_styles_default.timelineWithComposer : AgentGUINode_styles_default.timelineCentered} ${!isTimelineScrolledToTop ? AgentGUINode_styles_default.timelineScrolledFromTop : ""} ${showUnavailableChatEmpty ? AgentGUINode_styles_default.timelineUnavailableChatEmpty : ""}`.trim(),
41137
- viewportContentStyle: AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE,
41138
- children: !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx80(Fragment26, { children: renderProviderUnavailableState?.({
41139
- provider: disabledProviderTarget.provider,
41140
- providerLabel: labels.emptyProviderForProvider?.(
41141
- disabledProviderTarget.provider
41142
- ) ?? resolveAgentGuiWorkbenchProviderLabel(
41143
- disabledProviderTarget.provider
41144
- ),
41145
- target: disabledProviderTarget,
41146
- iconUrl: resolveAgentGUIHeroIconUrl2(
41147
- disabledProviderTarget.provider
41148
- ),
41149
- unavailableReason: disabledProviderTarget.unavailableReason ?? null
41150
- }) }) : /* @__PURE__ */ jsx80(
41151
- AgentGUIEmptyHomePane,
41152
- {
41153
- provider: emptyHeroProvider,
41154
- providerReadinessGate: emptyProviderReadinessGate,
41155
- showAllProviders: viewModel.rail.conversationFilter.kind === "all",
41156
- agentTargets: composerProviderTargets,
41157
- selectedAgentTarget: composerSelectedProviderTarget,
41158
- onProviderSelect: canSwitchComposerProvider && viewModel.rail.activeConversationId === null ? selectHomeComposerAgentTargetAndFocus : void 0,
41159
- noticeChrome: homeNoticeChrome,
41160
- isRespondingApproval: isInteractionPending,
41161
- previewMode,
41162
- onSubmitApprovalOption: submitApprovalOption,
41163
- onRetryActivation: retryActivation,
41164
- onAuthLogin: authLogin,
41165
- onContinueInNewConversation: continueInNewConversation,
41166
- chromeLabels,
41167
- composerProps: emptyHeroComposerProps,
41168
- labels,
41169
- suggestions: labels.homeSuggestions ?? EMPTY_HOME_SUGGESTIONS,
41170
- suggestionsCloseLabel: labels.homeSuggestionsClose,
41171
- onSelectSuggestion: handleSelectHomeSuggestion,
41172
- onSelectSuggestionAction: handleHomeSuggestionAction
41173
- }
41174
- ) : /* @__PURE__ */ jsx80(Fragment26, { children: /* @__PURE__ */ jsx80(
41175
- AgentGUIConversationTimelinePane,
41176
- {
41177
- conversation,
41178
- isLoading: showTimelineSkeleton,
41179
- isLoadingOlderMessages: viewModel.detail.isLoadingOlderMessages,
41180
- loadingLabel: labels.loadingConversation,
41181
- empty: conversationFlowEmpty,
41182
- onLinkAction: stableLinkAction,
41183
- onAuthLogin: authLogin,
41184
- availableSkills: viewModel.composer.availableSkills,
41185
- workspaceAppIcons,
41186
- previewMode,
41187
- labels: conversationFlowLabels
41188
- }
41189
- ) })
41275
+ availableSkills: viewModel.composer.availableSkills,
41276
+ conversation,
41277
+ conversationFlowEmpty,
41278
+ conversationFlowLabels,
41279
+ hasActiveConversation,
41280
+ homeContent,
41281
+ isLoadingOlderMessages: viewModel.detail.isLoadingOlderMessages,
41282
+ isTimelineScrolledToTop,
41283
+ labels,
41284
+ onAuthLogin: authLogin,
41285
+ onLinkAction: stableLinkAction,
41286
+ previewMode,
41287
+ showTimelineSkeleton,
41288
+ showUnavailableChatEmpty,
41289
+ timelineContentRef,
41290
+ timelineRef,
41291
+ workspaceAppIcons
41190
41292
  }
41191
41293
  ),
41192
- hasActiveConversation ? /* @__PURE__ */ jsx80(
41294
+ hasActiveConversation ? /* @__PURE__ */ jsx81(
41193
41295
  AgentGUIBottomDockPane,
41194
41296
  {
41195
41297
  bottomDockRef,
@@ -41226,10 +41328,10 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
41226
41328
  });
41227
41329
 
41228
41330
  // agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
41229
- import { memo as memo13, useCallback as useCallback62, useEffect as useEffect36, useRef as useRef54, useState as useState49 } from "react";
41331
+ import { memo as memo14, useCallback as useCallback62, useEffect as useEffect36, useRef as useRef54, useState as useState49 } from "react";
41230
41332
  import { ConfirmationDialog as ConfirmationDialog4, Input as Input4 } from "@tutti-os/ui-system";
41231
- import { jsx as jsx81, jsxs as jsxs60 } from "react/jsx-runtime";
41232
- var AgentGUIRenameConversationDialog = memo13(
41333
+ import { jsx as jsx82, jsxs as jsxs60 } from "react/jsx-runtime";
41334
+ var AgentGUIRenameConversationDialog = memo14(
41233
41335
  function AgentGUIRenameConversationDialog2({
41234
41336
  conversation,
41235
41337
  open,
@@ -41284,7 +41386,7 @@ var AgentGUIRenameConversationDialog = memo13(
41284
41386
  setIsSaving(false);
41285
41387
  });
41286
41388
  }, [conversation, onOpenChange, onRename, trimmedTitle]);
41287
- return /* @__PURE__ */ jsx81(
41389
+ return /* @__PURE__ */ jsx82(
41288
41390
  ConfirmationDialog4,
41289
41391
  {
41290
41392
  cancelLabel: labels.cancel,
@@ -41294,7 +41396,7 @@ var AgentGUIRenameConversationDialog = memo13(
41294
41396
  confirmLabel: labels.renameSessionSave,
41295
41397
  description: labels.renameSessionDescription,
41296
41398
  footer: /* @__PURE__ */ jsxs60("div", { className: "flex justify-end gap-2", children: [
41297
- /* @__PURE__ */ jsx81(
41399
+ /* @__PURE__ */ jsx82(
41298
41400
  Button,
41299
41401
  {
41300
41402
  disabled: isSaving,
@@ -41332,7 +41434,7 @@ var AgentGUIRenameConversationDialog = memo13(
41332
41434
  children: labels.cancel
41333
41435
  }
41334
41436
  ),
41335
- /* @__PURE__ */ jsx81(
41437
+ /* @__PURE__ */ jsx82(
41336
41438
  Button,
41337
41439
  {
41338
41440
  className: "shadow-none",
@@ -41387,7 +41489,7 @@ var AgentGUIRenameConversationDialog = memo13(
41387
41489
  title: labels.renameSessionTitle,
41388
41490
  onConfirm: confirmRename,
41389
41491
  onOpenChange,
41390
- children: /* @__PURE__ */ jsx81(
41492
+ children: /* @__PURE__ */ jsx82(
41391
41493
  Input4,
41392
41494
  {
41393
41495
  ref: inputRef,
@@ -41415,7 +41517,7 @@ import {
41415
41517
  ReferenceSourcePicker,
41416
41518
  WorkspaceFileReferencePicker
41417
41519
  } from "@tutti-os/workspace-file-reference/ui";
41418
- import { jsx as jsx82 } from "react/jsx-runtime";
41520
+ import { jsx as jsx83 } from "react/jsx-runtime";
41419
41521
  function AgentGUIReferencePickerSurface({
41420
41522
  aggregator,
41421
41523
  copy,
@@ -41432,7 +41534,7 @@ function AgentGUIReferencePickerSurface({
41432
41534
  onConfirm,
41433
41535
  onConfirmBundles
41434
41536
  }) {
41435
- return aggregator ? /* @__PURE__ */ jsx82(
41537
+ return aggregator ? /* @__PURE__ */ jsx83(
41436
41538
  ReferenceSourcePicker,
41437
41539
  {
41438
41540
  aggregator,
@@ -41448,7 +41550,7 @@ function AgentGUIReferencePickerSurface({
41448
41550
  onConfirm,
41449
41551
  onConfirmBundles
41450
41552
  }
41451
- ) : /* @__PURE__ */ jsx82(
41553
+ ) : /* @__PURE__ */ jsx83(
41452
41554
  WorkspaceFileReferencePicker,
41453
41555
  {
41454
41556
  copy,
@@ -41465,7 +41567,7 @@ function AgentGUIReferencePickerSurface({
41465
41567
 
41466
41568
  // agent-gui/agentGuiNode/view/AgentTargetSetupRoot.tsx
41467
41569
  import { useCallback as useCallback63, useMemo as useMemo45 } from "react";
41468
- import { jsx as jsx83, jsxs as jsxs61 } from "react/jsx-runtime";
41570
+ import { jsx as jsx84, jsxs as jsxs61 } from "react/jsx-runtime";
41469
41571
  function useAgentTargetSetupRoot(input) {
41470
41572
  const { preferences } = useAgentGUIProviderRailPreferences();
41471
41573
  const homeTargetProjection = useMemo45(
@@ -41509,9 +41611,9 @@ function AgentTargetSetupRoot({
41509
41611
  controller,
41510
41612
  openEnvironmentSetup
41511
41613
  }) {
41512
- return /* @__PURE__ */ jsx83(AgentEnvPanelActionProvider, { openPanel: openEnvironmentSetup, children: /* @__PURE__ */ jsxs61(AgentTargetSetupControllerProvider, { controller, children: [
41614
+ return /* @__PURE__ */ jsx84(AgentEnvPanelActionProvider, { openPanel: openEnvironmentSetup, children: /* @__PURE__ */ jsxs61(AgentTargetSetupControllerProvider, { controller, children: [
41513
41615
  children,
41514
- /* @__PURE__ */ jsx83(
41616
+ /* @__PURE__ */ jsx84(
41515
41617
  AgentTargetSetupGate,
41516
41618
  {
41517
41619
  carouselMountedExternally: false,
@@ -42074,7 +42176,7 @@ function useAgentGUIExternalRequests(input) {
42074
42176
  }
42075
42177
 
42076
42178
  // agent-gui/agentGuiNode/AgentGUINodeView.tsx
42077
- import { jsx as jsx84, jsxs as jsxs62 } from "react/jsx-runtime";
42179
+ import { jsx as jsx85, jsxs as jsxs62 } from "react/jsx-runtime";
42078
42180
  function AgentGUINodeView({
42079
42181
  viewModel,
42080
42182
  referenceProvenanceFilter = null,
@@ -42503,7 +42605,7 @@ function AgentGUINodeView({
42503
42605
  }),
42504
42606
  [targetPresentationKey, viewModel.shell.workspaceId]
42505
42607
  );
42506
- const content = /* @__PURE__ */ jsx84(AgentTargetPresentationProvider, { agentTargets: agentTargetPresentations, children: /* @__PURE__ */ jsxs62(
42608
+ const content = /* @__PURE__ */ jsx85(AgentTargetPresentationProvider, { agentTargets: agentTargetPresentations, children: /* @__PURE__ */ jsxs62(
42507
42609
  AgentTargetSetupRoot,
42508
42610
  {
42509
42611
  controller: targetSetupController,
@@ -42527,7 +42629,7 @@ function AgentGUINodeView({
42527
42629
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
42528
42630
  inert: conversationRailCollapsed ? true : void 0,
42529
42631
  children: [
42530
- /* @__PURE__ */ jsx84(
42632
+ /* @__PURE__ */ jsx85(
42531
42633
  AgentGUIProviderRail,
42532
42634
  {
42533
42635
  activeConversation: viewModel.rail.activeConversation,
@@ -42551,7 +42653,7 @@ function AgentGUINodeView({
42551
42653
  onRequestComposerFocus: requestComposerFocus
42552
42654
  }
42553
42655
  ),
42554
- renderSidebarFooter ? /* @__PURE__ */ jsx84(
42656
+ renderSidebarFooter ? /* @__PURE__ */ jsx85(
42555
42657
  "div",
42556
42658
  {
42557
42659
  className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailSidebarFooter} nodrag tsh-desktop-no-drag`,
@@ -42562,12 +42664,12 @@ function AgentGUINodeView({
42562
42664
  })
42563
42665
  }
42564
42666
  ) : null,
42565
- shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx84(
42667
+ shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx85(
42566
42668
  "div",
42567
42669
  {
42568
42670
  className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailConfigFooter} nodrag tsh-desktop-no-drag`,
42569
42671
  "data-testid": "agent-gui-config-footer",
42570
- children: /* @__PURE__ */ jsx84(
42672
+ children: /* @__PURE__ */ jsx85(
42571
42673
  AgentGUIConfigMenu,
42572
42674
  {
42573
42675
  environmentSetupVisible,
@@ -42594,14 +42696,14 @@ function AgentGUINodeView({
42594
42696
  ]
42595
42697
  }
42596
42698
  ),
42597
- /* @__PURE__ */ jsx84(
42699
+ /* @__PURE__ */ jsx85(
42598
42700
  "aside",
42599
42701
  {
42600
42702
  id: "agent-gui-conversation-rail",
42601
42703
  className: `${AgentGUINode_styles_default.railPanel}${conversationRailCollapsed ? ` ${AgentGUINode_styles_default.railPanelCollapsed}` : ""}`,
42602
42704
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
42603
42705
  inert: conversationRailCollapsed ? true : void 0,
42604
- children: /* @__PURE__ */ jsx84(
42706
+ children: /* @__PURE__ */ jsx85(
42605
42707
  AgentGUIConversationRailController,
42606
42708
  {
42607
42709
  ...conversationRailStoreState,
@@ -42610,7 +42712,7 @@ function AgentGUINodeView({
42610
42712
  registerInteractionLockProbe: registerRailInteractionLockProbe,
42611
42713
  userProjects: viewModel.rail.userProjects,
42612
42714
  workspaceId: viewModel.shell.workspaceId,
42613
- footer: accountMenuState?.user ? /* @__PURE__ */ jsx84(
42715
+ footer: accountMenuState?.user ? /* @__PURE__ */ jsx85(
42614
42716
  AgentGUIAccountRailMenu,
42615
42717
  {
42616
42718
  accountMenuState,
@@ -42622,7 +42724,7 @@ function AgentGUINodeView({
42622
42724
  )
42623
42725
  }
42624
42726
  ),
42625
- /* @__PURE__ */ jsx84(
42727
+ /* @__PURE__ */ jsx85(
42626
42728
  "div",
42627
42729
  {
42628
42730
  id: "agent-gui-conversation-rail-resize",
@@ -42646,10 +42748,16 @@ function AgentGUINodeView({
42646
42748
  onPointerUp: endConversationRailResize
42647
42749
  }
42648
42750
  ),
42649
- /* @__PURE__ */ jsx84("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx84(
42751
+ /* @__PURE__ */ jsx85("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx85(
42650
42752
  AgentGUIDetailPane,
42651
42753
  {
42652
- viewModel,
42754
+ shell: viewModel.shell,
42755
+ rail: viewModel.rail,
42756
+ detail: viewModel.detail,
42757
+ composer: viewModel.composer,
42758
+ interaction: viewModel.interaction,
42759
+ readiness: viewModel.readiness,
42760
+ operations: viewModel.operations,
42653
42761
  homeTargetProjection,
42654
42762
  referenceProvenanceFilter,
42655
42763
  composerEngagement,
@@ -42688,7 +42796,7 @@ function AgentGUINodeView({
42688
42796
  ]
42689
42797
  }
42690
42798
  ),
42691
- /* @__PURE__ */ jsx84(
42799
+ /* @__PURE__ */ jsx85(
42692
42800
  AgentGUIReferencePickerSurface,
42693
42801
  {
42694
42802
  aggregator: workspaceReferencePickerAggregator,
@@ -42707,7 +42815,7 @@ function AgentGUINodeView({
42707
42815
  onConfirmBundles: workspaceReferencePickerPurpose === "reference" ? confirmWorkspaceReferenceBundles : void 0
42708
42816
  }
42709
42817
  ),
42710
- /* @__PURE__ */ jsx84(
42818
+ /* @__PURE__ */ jsx85(
42711
42819
  AgentGUIRenameConversationDialog,
42712
42820
  {
42713
42821
  conversation: renameConversationTarget,
@@ -42725,7 +42833,7 @@ function AgentGUINodeView({
42725
42833
  ]
42726
42834
  }
42727
42835
  ) });
42728
- return previewMode ? content : /* @__PURE__ */ jsx84(TooltipProvider7, { children: content });
42836
+ return previewMode ? content : /* @__PURE__ */ jsx85(TooltipProvider7, { children: content });
42729
42837
  }
42730
42838
 
42731
42839
  // agent-gui/workspaceDesktop/view/AgentProbeInfoPopover.tsx
@@ -42738,7 +42846,7 @@ import {
42738
42846
  useState as useState52
42739
42847
  } from "react";
42740
42848
  import { createPortal as createPortal5 } from "react-dom";
42741
- import { Fragment as Fragment27, jsx as jsx85, jsxs as jsxs63 } from "react/jsx-runtime";
42849
+ import { Fragment as Fragment27, jsx as jsx86, jsxs as jsxs63 } from "react/jsx-runtime";
42742
42850
  var POPOVER_MIN_VIEWPORT_INSET_PX = 16;
42743
42851
  var POPOVER_DEFAULT_WIDTH_PX = 260;
42744
42852
  function dockAgentProbeLineKey(line) {
@@ -42752,7 +42860,7 @@ function renderDockAgentProbeLine(line) {
42752
42860
  line.primary,
42753
42861
  line.secondary ? /* @__PURE__ */ jsxs63(Fragment27, { children: [
42754
42862
  " ",
42755
- /* @__PURE__ */ jsx85("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
42863
+ /* @__PURE__ */ jsx86("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
42756
42864
  ] }) : null
42757
42865
  ] });
42758
42866
  }
@@ -42845,7 +42953,7 @@ function AgentProbeInfoPopover({
42845
42953
  if (lines.length === 0) {
42846
42954
  return null;
42847
42955
  }
42848
- const popover = /* @__PURE__ */ jsx85(
42956
+ const popover = /* @__PURE__ */ jsx86(
42849
42957
  "div",
42850
42958
  {
42851
42959
  ref: popoverRef,
@@ -42854,7 +42962,7 @@ function AgentProbeInfoPopover({
42854
42962
  style: popoverStyle ?? void 0,
42855
42963
  onMouseEnter: openPopover,
42856
42964
  onMouseLeave: closeIfPointerLeavesPopover,
42857
- children: /* @__PURE__ */ jsx85("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
42965
+ children: /* @__PURE__ */ jsx86("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
42858
42966
  const label = getDockAgentProbeLineLabel(line);
42859
42967
  const valueText = formatDockAgentProbeLineText(line);
42860
42968
  return /* @__PURE__ */ jsxs63(
@@ -42863,8 +42971,8 @@ function AgentProbeInfoPopover({
42863
42971
  className: "desktop-dock-popup__agent-info-item",
42864
42972
  "data-has-label": label ? "true" : "false",
42865
42973
  children: [
42866
- label ? /* @__PURE__ */ jsx85("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
42867
- /* @__PURE__ */ jsx85(
42974
+ label ? /* @__PURE__ */ jsx86("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
42975
+ /* @__PURE__ */ jsx86(
42868
42976
  "span",
42869
42977
  {
42870
42978
  className: "desktop-dock-popup__agent-info-value",
@@ -42899,7 +43007,7 @@ function AgentProbeInfoPopover({
42899
43007
  },
42900
43008
  onBlur: closePopover,
42901
43009
  children: [
42902
- /* @__PURE__ */ jsx85(Info2, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
43010
+ /* @__PURE__ */ jsx86(Info2, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
42903
43011
  isOpen ? createPortal5(popover, document.body) : null
42904
43012
  ]
42905
43013
  }
@@ -43035,7 +43143,7 @@ function composeAgentGUIMentionService(input) {
43035
43143
  }
43036
43144
 
43037
43145
  // agent-gui/agentGuiNode/AgentGUIMentionServiceBoundary.tsx
43038
- import { jsx as jsx86 } from "react/jsx-runtime";
43146
+ import { jsx as jsx87 } from "react/jsx-runtime";
43039
43147
  function AgentGUIMentionServiceBoundary({
43040
43148
  children,
43041
43149
  service
@@ -43051,7 +43159,7 @@ function AgentGUIMentionServiceBoundary({
43051
43159
  if (!effectiveService || effectiveService === inheritedService) {
43052
43160
  return children;
43053
43161
  }
43054
- return /* @__PURE__ */ jsx86(RichTextMentionServiceProvider, { service: effectiveService, children });
43162
+ return /* @__PURE__ */ jsx87(RichTextMentionServiceProvider, { service: effectiveService, children });
43055
43163
  }
43056
43164
 
43057
43165
  // agent-gui/agentGuiNode/AgentGUINode.labels.ts
@@ -44209,13 +44317,13 @@ function useAgentGUIWorkspaceFileReferenceCopy(t) {
44209
44317
  }
44210
44318
 
44211
44319
  // agent-gui/agentGuiNode/AgentGUINode.tsx
44212
- import { jsx as jsx87, jsxs as jsxs64 } from "react/jsx-runtime";
44320
+ import { jsx as jsx88, jsxs as jsxs64 } from "react/jsx-runtime";
44213
44321
  var DISABLED_REFERENCE_PROVENANCE_CATALOG = {
44214
44322
  enabledDimensions: [],
44215
44323
  agentOptions: [],
44216
44324
  memberOptions: []
44217
44325
  };
44218
- var AgentGUINode = memo14(function AgentGUINode2({
44326
+ var AgentGUINode = memo15(function AgentGUINode2({
44219
44327
  identity,
44220
44328
  workspace,
44221
44329
  frame,
@@ -44523,7 +44631,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44523
44631
  t,
44524
44632
  viewModel
44525
44633
  });
44526
- return /* @__PURE__ */ jsx87(AgentGUIMentionServiceBoundary, { service: mentionService, children: /* @__PURE__ */ jsx87(
44634
+ return /* @__PURE__ */ jsx88(AgentGUIMentionServiceBoundary, { service: mentionService, children: /* @__PURE__ */ jsx88(
44527
44635
  WorkspaceNodeWindow,
44528
44636
  {
44529
44637
  nodeId,
@@ -44540,7 +44648,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44540
44648
  bodyClassName: `${AgentGUINode_styles_default.shell} nodrag size-full min-h-0 min-w-0 !bg-transparent p-0`,
44541
44649
  hideHeader: embedded,
44542
44650
  titleAccessory: /* @__PURE__ */ jsxs64("span", { className: "inline-flex flex-none items-center gap-1", children: [
44543
- /* @__PURE__ */ jsx87(
44651
+ /* @__PURE__ */ jsx88(
44544
44652
  AgentProbeInfoPopover,
44545
44653
  {
44546
44654
  lines: agentProbeLines,
@@ -44550,7 +44658,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44550
44658
  onClose: handleAgentProbeInfoClose
44551
44659
  }
44552
44660
  ),
44553
- /* @__PURE__ */ jsx87(
44661
+ /* @__PURE__ */ jsx88(
44554
44662
  CanvasNodeGhostIconButton,
44555
44663
  {
44556
44664
  "aria-label": isConversationRailCollapsed ? t("agentHost.agentGui.expandConversationRail") : t("agentHost.agentGui.collapseConversationRail"),
@@ -44562,7 +44670,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44562
44670
  event.stopPropagation();
44563
44671
  handleConversationRailToggle();
44564
44672
  },
44565
- children: /* @__PURE__ */ jsx87(
44673
+ children: /* @__PURE__ */ jsx88(
44566
44674
  CanvasNodePanelLinedIcon,
44567
44675
  {
44568
44676
  width: 18,
@@ -44586,7 +44694,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
44586
44694
  renderedWidth,
44587
44695
  railAutoCollapseWidthPx
44588
44696
  );
44589
- return /* @__PURE__ */ jsx87(
44697
+ return /* @__PURE__ */ jsx88(
44590
44698
  AgentGUINodeView,
44591
44699
  {
44592
44700
  viewModel,
@@ -44668,8 +44776,8 @@ var AgentGUINode = memo14(function AgentGUINode2({
44668
44776
  }, areAgentGUINodePropsEqual);
44669
44777
 
44670
44778
  // AgentGUI.tsx
44671
- import { jsx as jsx88 } from "react/jsx-runtime";
44672
- var AgentGUI = memo15(function AgentGUI2({
44779
+ import { jsx as jsx89 } from "react/jsx-runtime";
44780
+ var AgentGUI = memo16(function AgentGUI2({
44673
44781
  agentActivityRuntime,
44674
44782
  agentHostApi,
44675
44783
  tuttiModePlanReviewRuntime,
@@ -44740,15 +44848,15 @@ var AgentGUI = memo15(function AgentGUI2({
44740
44848
  hostCapabilities: nodeHostCapabilities,
44741
44849
  renderSlots: nodeRenderSlots
44742
44850
  };
44743
- const content = /* @__PURE__ */ jsx88(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx88(TuttiModePlanReviewRuntimeProvider, { runtime: tuttiModePlanReviewRuntime, children: /* @__PURE__ */ jsx88(
44851
+ const content = /* @__PURE__ */ jsx89(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx89(TuttiModePlanReviewRuntimeProvider, { runtime: tuttiModePlanReviewRuntime, children: /* @__PURE__ */ jsx89(
44744
44852
  AgentActivityHostProvider,
44745
44853
  {
44746
44854
  agentActivityRuntime,
44747
44855
  agentHostApi,
44748
- children: /* @__PURE__ */ jsx88(AgentGUINode, { ...nodeProps })
44856
+ children: /* @__PURE__ */ jsx89(AgentGUINode, { ...nodeProps })
44749
44857
  }
44750
44858
  ) }) });
44751
- return props.frame.previewMode ? content : /* @__PURE__ */ jsx88(TooltipProvider8, { delayDuration: 120, skipDelayDuration: 0, children: content });
44859
+ return props.frame.previewMode ? content : /* @__PURE__ */ jsx89(TooltipProvider8, { delayDuration: 120, skipDelayDuration: 0, children: content });
44752
44860
  });
44753
44861
 
44754
44862
  export {
@@ -44764,4 +44872,4 @@ export {
44764
44872
  AgentHandoffMenu,
44765
44873
  AgentGUI
44766
44874
  };
44767
- //# sourceMappingURL=chunk-DAP74J63.js.map
44875
+ //# sourceMappingURL=chunk-VZ4QAXXL.js.map