@tutti-os/agent-gui 0.0.102 → 0.0.103

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 (50) hide show
  1. package/dist/{AgentGUI-BJ3As1gI.d.ts → AgentGUI-D6IQ0F_N.d.ts} +1 -1
  2. package/dist/agent-conversation/index.d.ts +1 -1
  3. package/dist/agent-conversation/index.js +7 -7
  4. package/dist/agent-gui.d.ts +2 -2
  5. package/dist/agent-gui.js +14 -14
  6. package/dist/agent-message-center/index.d.ts +1 -1
  7. package/dist/agent-message-center/index.js +7 -6
  8. package/dist/agent-message-center/index.js.map +1 -1
  9. package/dist/{agentGuiNodeTypes-BH3lz6gn.d.ts → agentGuiNodeTypes-8U3q_frv.d.ts} +1 -0
  10. package/dist/app/renderer/agentactivity.css +11 -0
  11. package/dist/{chunk-DWUVRWXD.js → chunk-3ZBDWWCV.js} +2 -2
  12. package/dist/{chunk-KAV2WHTG.js → chunk-5Z4ZXXX4.js} +2 -2
  13. package/dist/{chunk-UESYITH6.js → chunk-6PMLIVTI.js} +2 -2
  14. package/dist/{chunk-E5AD46HP.js → chunk-IBFGOAY3.js} +2 -2
  15. package/dist/{chunk-ZPKPIHMZ.js → chunk-IVY4OL7B.js} +69 -52
  16. package/dist/chunk-IVY4OL7B.js.map +1 -0
  17. package/dist/{chunk-LHKBR77G.js → chunk-L2MTZMVH.js} +199 -136
  18. package/dist/chunk-L2MTZMVH.js.map +1 -0
  19. package/dist/{chunk-GCW57WYQ.js → chunk-PCXBTG5X.js} +3 -3
  20. package/dist/{chunk-4E3QCW6L.js → chunk-RGG5UGJD.js} +3 -1
  21. package/dist/chunk-RGG5UGJD.js.map +1 -0
  22. package/dist/{chunk-TDVYZEUI.js → chunk-SGGGE2F3.js} +126 -30
  23. package/dist/chunk-SGGGE2F3.js.map +1 -0
  24. package/dist/{chunk-MJOQP2ED.js → chunk-UHOVZI6B.js} +3 -3
  25. package/dist/{chunk-YYE35EZ5.js → chunk-WXMBD2O7.js} +4 -4
  26. package/dist/{chunk-W4RYNKWO.js → chunk-XZD5KTM4.js} +11 -7
  27. package/dist/{chunk-W4RYNKWO.js.map → chunk-XZD5KTM4.js.map} +1 -1
  28. package/dist/{chunk-D7HMQLBO.js → chunk-ZRJS4MOQ.js} +2 -2
  29. package/dist/context-mention-palette/index.js +8 -8
  30. package/dist/i18n/index.d.ts +2 -0
  31. package/dist/i18n/index.js +2 -2
  32. package/dist/index.d.ts +4 -4
  33. package/dist/index.js +14 -14
  34. package/dist/mention-search.js +6 -6
  35. package/dist/workbench/contribution.js +3 -3
  36. package/dist/workbench/index.js +3 -3
  37. package/dist/workbench/sessionTitle.js +2 -2
  38. package/package.json +14 -14
  39. package/dist/chunk-4E3QCW6L.js.map +0 -1
  40. package/dist/chunk-LHKBR77G.js.map +0 -1
  41. package/dist/chunk-TDVYZEUI.js.map +0 -1
  42. package/dist/chunk-ZPKPIHMZ.js.map +0 -1
  43. /package/dist/{chunk-DWUVRWXD.js.map → chunk-3ZBDWWCV.js.map} +0 -0
  44. /package/dist/{chunk-KAV2WHTG.js.map → chunk-5Z4ZXXX4.js.map} +0 -0
  45. /package/dist/{chunk-UESYITH6.js.map → chunk-6PMLIVTI.js.map} +0 -0
  46. /package/dist/{chunk-E5AD46HP.js.map → chunk-IBFGOAY3.js.map} +0 -0
  47. /package/dist/{chunk-GCW57WYQ.js.map → chunk-PCXBTG5X.js.map} +0 -0
  48. /package/dist/{chunk-MJOQP2ED.js.map → chunk-UHOVZI6B.js.map} +0 -0
  49. /package/dist/{chunk-YYE35EZ5.js.map → chunk-WXMBD2O7.js.map} +0 -0
  50. /package/dist/{chunk-D7HMQLBO.js.map → chunk-ZRJS4MOQ.js.map} +0 -0
@@ -9,7 +9,7 @@ import {
9
9
  resolveAgentGuiSessionProviderFlatIconUrl,
10
10
  resolveNextAgentGUIConversationRailWidthPx,
11
11
  shouldAutoCollapseAgentGUIConversationRail
12
- } from "./chunk-D7HMQLBO.js";
12
+ } from "./chunk-ZRJS4MOQ.js";
13
13
  import {
14
14
  AGENT_PROVIDERS,
15
15
  AGENT_PROVIDER_LABEL,
@@ -21,7 +21,7 @@ import {
21
21
  resolveAgentGUIExplicitConversationTitle,
22
22
  resolveAgentGUIProviderDisplayLabel,
23
23
  resolveAgentGUIProviderIdentity
24
- } from "./chunk-KAV2WHTG.js";
24
+ } from "./chunk-5Z4ZXXX4.js";
25
25
  import {
26
26
  resolveAgentGuiWorkbenchProviderLabel
27
27
  } from "./chunk-L3GMMGRS.js";
@@ -65,14 +65,14 @@ import {
65
65
  toLocalShortDateTime,
66
66
  updateAgentComposerDraft,
67
67
  useProjectedAgentConversation
68
- } from "./chunk-ZPKPIHMZ.js";
68
+ } from "./chunk-IVY4OL7B.js";
69
69
  import {
70
70
  openAgentEnvPanel
71
71
  } from "./chunk-7BXWPI4F.js";
72
72
  import {
73
73
  AgentFileMentionPalette,
74
74
  agentMentionItemKey
75
- } from "./chunk-W4RYNKWO.js";
75
+ } from "./chunk-XZD5KTM4.js";
76
76
  import {
77
77
  normalizeAgentGUIAgents,
78
78
  projectAgentGUIAgentsToInternalTargets
@@ -83,7 +83,7 @@ import {
83
83
  DEFAULT_AGENT_MENTION_FILTER,
84
84
  agentGuiScheduler,
85
85
  buildWorkspaceAgentActivityListViewModel
86
- } from "./chunk-YYE35EZ5.js";
86
+ } from "./chunk-WXMBD2O7.js";
87
87
  import {
88
88
  AGENT_RICH_TEXT_CARET_ANCHOR,
89
89
  createAgentSessionMarkdownLink,
@@ -93,7 +93,7 @@ import {
93
93
  mentionItemToAttrs,
94
94
  normalizeAgentSessionMentionTitle,
95
95
  parseMentionItemFromHref
96
- } from "./chunk-GCW57WYQ.js";
96
+ } from "./chunk-PCXBTG5X.js";
97
97
  import {
98
98
  AgentInteractivePromptSurface,
99
99
  PLAN_IMPLEMENTATION_ACTION_FEEDBACK,
@@ -103,7 +103,7 @@ import {
103
103
  dispatchAgentPlanPromptAction,
104
104
  latestPlanTurnId,
105
105
  planImplementationPromptFromPlanTurn
106
- } from "./chunk-TDVYZEUI.js";
106
+ } from "./chunk-SGGGE2F3.js";
107
107
  import {
108
108
  useEngineSelector
109
109
  } from "./chunk-2RQM7PJN.js";
@@ -115,7 +115,7 @@ import {
115
115
  resolveAgentTargetPresentation,
116
116
  resolveWorkspaceLinkAction,
117
117
  useAgentTargetPresentations
118
- } from "./chunk-MJOQP2ED.js";
118
+ } from "./chunk-UHOVZI6B.js";
119
119
  import {
120
120
  resolveWorkspaceAgentSessionSortTimeUnixMs
121
121
  } from "./chunk-YMXYBG7U.js";
@@ -130,7 +130,7 @@ import {
130
130
  useAgentHostApi,
131
131
  useOptionalAgentActivityRuntime,
132
132
  useOptionalAgentHostApi
133
- } from "./chunk-UESYITH6.js";
133
+ } from "./chunk-6PMLIVTI.js";
134
134
  import {
135
135
  normalizeManagedAgentProvider
136
136
  } from "./chunk-H6IQ63DQ.js";
@@ -138,7 +138,7 @@ import {
138
138
  AgentGuiI18nProvider,
139
139
  translate,
140
140
  useTranslation
141
- } from "./chunk-E5AD46HP.js";
141
+ } from "./chunk-IBFGOAY3.js";
142
142
  import {
143
143
  migratedAgentGUIProviderIdentityCatalog,
144
144
  resolveAgentGUIProviderCatalogIdentity,
@@ -3518,7 +3518,6 @@ function sortAgentTargetRefValue(value) {
3518
3518
 
3519
3519
  // agent-gui/agentGuiNode/controller/agentGuiController.providerHelpers.ts
3520
3520
  var EMPTY_AGENT_GUI_MESSAGES = [];
3521
- var GOAL_CLEAR_PROMPT = "/goal clear";
3522
3521
  function resolveAgentGUIProviderRailTargetSelection(input) {
3523
3522
  return input.nextFilter.kind === "agentTarget" && input.activeConversation && matchesAgentGUIConversationSummaryFilter(
3524
3523
  input.activeConversation,
@@ -8417,6 +8416,7 @@ function useAgentGUISubmitInteractionActions(input) {
8417
8416
  setActiveConversationId,
8418
8417
  setDetailError,
8419
8418
  setDraftByScopeKey,
8419
+ setGoalClearNoticeSequence,
8420
8420
  setIntent,
8421
8421
  submittedDraftSnapshotsRef,
8422
8422
  startConversation,
@@ -8611,20 +8611,16 @@ function useAgentGUISubmitInteractionActions(input) {
8611
8611
  return;
8612
8612
  }
8613
8613
  setDetailError(null);
8614
- if (action === "clear") {
8615
- executePrompt(
8616
- agentSessionId,
8617
- textPromptContent(GOAL_CLEAR_PROMPT),
8618
- GOAL_CLEAR_PROMPT,
8619
- { immediate: true }
8620
- );
8621
- return;
8622
- }
8623
8614
  void agentActivityRuntime.goalControl({
8624
8615
  workspaceId,
8625
8616
  agentSessionId,
8626
8617
  action,
8627
8618
  ...objective !== void 0 ? { objective } : {}
8619
+ }).then(() => {
8620
+ if (action !== "clear" || !isCurrentConversation(agentSessionId)) {
8621
+ return;
8622
+ }
8623
+ setGoalClearNoticeSequence((current) => current + 1);
8628
8624
  }).catch((error) => {
8629
8625
  if (!isCurrentConversation(agentSessionId)) {
8630
8626
  return;
@@ -8634,10 +8630,10 @@ function useAgentGUISubmitInteractionActions(input) {
8634
8630
  },
8635
8631
  [
8636
8632
  agentActivityRuntime,
8637
- executePrompt,
8638
8633
  isCurrentConversation,
8639
8634
  previewMode,
8640
8635
  setDetailError,
8636
+ setGoalClearNoticeSequence,
8641
8637
  workspaceId
8642
8638
  ]
8643
8639
  );
@@ -9034,6 +9030,7 @@ function useAgentGUIViewModel(candidate) {
9034
9030
  const operations = useMemo8(
9035
9031
  () => candidate.operations,
9036
9032
  [
9033
+ candidate.operations.goalClearNoticeSequence,
9037
9034
  candidate.operations.isDeletingConversation,
9038
9035
  candidate.operations.isDeletingProjectConversations,
9039
9036
  candidate.operations.pendingDeleteConversation,
@@ -10847,6 +10844,7 @@ function useAgentGUIViewAssembly(input) {
10847
10844
  providerReadinessGate
10848
10845
  },
10849
10846
  operations: {
10847
+ goalClearNoticeSequence: input.goalClearNoticeSequence,
10850
10848
  isDeletingConversation: input.isDeletingConversation,
10851
10849
  isDeletingProjectConversations: input.isDeletingProjectConversations,
10852
10850
  pendingDeleteConversation: input.pendingDeleteConversation,
@@ -11582,11 +11580,13 @@ function useAgentGUILocalState({
11582
11580
  ] = useState7(null);
11583
11581
  const [listError, setListError] = useState7(null);
11584
11582
  const [detailError, setDetailError] = useState7(null);
11583
+ const [goalClearNoticeSequence, setGoalClearNoticeSequence] = useState7(0);
11585
11584
  return {
11586
11585
  activeConversationId,
11587
11586
  detailError,
11588
11587
  draftByScopeKey,
11589
11588
  draftSettingsBySessionId,
11589
+ goalClearNoticeSequence,
11590
11590
  intent,
11591
11591
  isComposerHome,
11592
11592
  isDeletingConversation,
@@ -11600,6 +11600,7 @@ function useAgentGUILocalState({
11600
11600
  setDetailError,
11601
11601
  setDraftByScopeKey,
11602
11602
  setDraftSettingsBySessionId,
11603
+ setGoalClearNoticeSequence,
11603
11604
  setIntent,
11604
11605
  setIsComposerHome,
11605
11606
  setIsDeletingConversation,
@@ -12131,7 +12132,7 @@ import {
12131
12132
  useEffect as useEffect37,
12132
12133
  useMemo as useMemo37,
12133
12134
  useRef as useRef42,
12134
- useState as useState35
12135
+ useState as useState36
12135
12136
  } from "react";
12136
12137
  import { TooltipProvider as TooltipProvider5 } from "@tutti-os/ui-system";
12137
12138
 
@@ -21317,15 +21318,15 @@ import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
21317
21318
  var paletteStyles = {
21318
21319
  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]",
21319
21320
  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",
21320
- icon: "flex w-3 shrink-0 items-center justify-center self-center text-[var(--text-secondary)]",
21321
- copy: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden leading-[16px]",
21322
- name: "flex min-w-0 max-w-[48%] shrink-0 items-center gap-1 overflow-hidden",
21323
- primaryName: "min-w-0 truncate text-[11px] font-semibold text-[var(--text-primary)]",
21324
- secondaryName: "shrink-0 text-[10px] font-normal text-[var(--text-secondary)]",
21325
- descriptionText: "min-w-0 flex-1 truncate text-[11px] font-normal text-[var(--text-secondary)]",
21321
+ icon: "flex w-4 shrink-0 items-center justify-center self-center text-[var(--text-secondary)]",
21322
+ copy: "flex min-w-0 flex-1 items-center gap-[8px] overflow-hidden leading-[16px]",
21323
+ name: "flex min-w-0 max-w-[48%] shrink-0 items-center gap-[8px] overflow-hidden",
21324
+ primaryName: "min-w-0 truncate text-[13px] font-semibold text-[var(--text-primary)]",
21325
+ secondaryName: "shrink-0 text-[13px] font-normal text-[var(--text-secondary)]",
21326
+ descriptionText: "min-w-0 flex-1 truncate text-[13px] font-normal text-[var(--text-secondary)]",
21326
21327
  groupHeader: "select-none px-2.5 pb-0.5 text-[11px] font-normal text-[var(--text-secondary)]",
21327
21328
  groupHeaderFirst: "pt-1.5",
21328
- groupHeaderSeparated: "mt-1 border-t border-[var(--border-1)] pt-2",
21329
+ groupHeaderSeparated: "relative mt-3 pt-3 before:absolute before:inset-x-3 before:top-0 before:border-t before:border-[var(--border-1)] before:content-['']",
21329
21330
  settingsButton: "nodrag ml-1 flex h-5 min-h-5 shrink-0 items-center rounded-[4px] border-0 bg-[var(--transparency-hover)] px-2 py-0 text-[11px] font-semibold leading-[14px] text-[var(--text-secondary)] outline-none transition-colors duration-150 hover:bg-[var(--transparency-active)] hover:text-[var(--text-primary)] focus-visible:ring-2 focus-visible:ring-[var(--agent-gui-focus-ring,var(--border-focus))]",
21330
21331
  loading: "flex min-h-9 w-full items-center gap-2 px-2.5 py-2 text-[11px] text-[var(--text-secondary)]"
21331
21332
  };
@@ -21449,7 +21450,7 @@ function AgentSlashCommandPalette({
21449
21450
  /* @__PURE__ */ jsx30("span", { className: paletteStyles.primaryName, children: entry.type === "command" ? entry.primaryLabel ?? entry.label : entry.label }),
21450
21451
  entry.type === "command" && entry.secondaryLabel ? /* @__PURE__ */ jsx30("span", { className: paletteStyles.secondaryName, children: entry.secondaryLabel }) : null
21451
21452
  ] }),
21452
- entry.description ? /* @__PURE__ */ jsx30("span", { className: paletteStyles.descriptionText, children: entry.description }) : null
21453
+ entry.description ? /* @__PURE__ */ jsx30("span", { className: paletteStyles.descriptionText, children: descriptionWithoutTerminalPeriod(entry.description) }) : null
21453
21454
  ] }),
21454
21455
  entry.type === "capability" && entry.settingsLabel && onSelectCapabilitySettings ? /* @__PURE__ */ jsx30(
21455
21456
  "button",
@@ -21477,6 +21478,9 @@ function AgentSlashCommandPalette({
21477
21478
  capabilityLoadingInsertIndex === entries.length ? capabilityLoadingNode : null
21478
21479
  ] });
21479
21480
  }
21481
+ function descriptionWithoutTerminalPeriod(description) {
21482
+ return description.trimEnd().replace(/[。.]+$/u, "");
21483
+ }
21480
21484
  function capabilityLoadingIndex(entries) {
21481
21485
  let lastCapabilityIndex = -1;
21482
21486
  for (let index = entries.length - 1; index >= 0; index -= 1) {
@@ -21519,7 +21523,7 @@ function labelForEntryGroupType(groupType, labels) {
21519
21523
  return labels.skillsGroupLabel;
21520
21524
  }
21521
21525
  }
21522
- var SLASH_PALETTE_ICON_CLASS = "size-3";
21526
+ var SLASH_PALETTE_ICON_CLASS = "size-4";
21523
21527
  function slashPaletteEntryIcon(entry) {
21524
21528
  if (entry.type === "capability") {
21525
21529
  return entry.capability.capability === "computerUse" ? /* @__PURE__ */ jsx30(Monitor, { className: SLASH_PALETTE_ICON_CLASS }) : /* @__PURE__ */ jsx30(Globe, { className: SLASH_PALETTE_ICON_CLASS });
@@ -23181,7 +23185,10 @@ function AgentComposerView(input) {
23181
23185
  ComposerFloatingMenuSurface,
23182
23186
  {
23183
23187
  anchorRef: input.inputShellRef,
23184
- className: "max-h-[320px] border-0 p-0",
23188
+ className: cn(
23189
+ composerStyles.dropdownSurface,
23190
+ "max-h-[320px] overflow-hidden border-[var(--line-1)] p-0"
23191
+ ),
23185
23192
  contentClassName: "h-full min-h-0",
23186
23193
  dismissBoundaryRef: input.promptInputAreaRef,
23187
23194
  maxHeight: SLASH_PALETTE_HEIGHT_PX,
@@ -28678,7 +28685,7 @@ import {
28678
28685
  useEffect as useEffect34,
28679
28686
  useMemo as useMemo35,
28680
28687
  useRef as useRef37,
28681
- useState as useState32
28688
+ useState as useState33
28682
28689
  } from "react";
28683
28690
  import { ScrollArea as ScrollArea2 } from "@tutti-os/ui-system/components";
28684
28691
 
@@ -29258,9 +29265,46 @@ function AgentRunPathInfo({
29258
29265
  ] });
29259
29266
  }
29260
29267
 
29268
+ // agent-gui/agentGuiNode/view/AgentGUIContentToast.tsx
29269
+ import { useState as useState30 } from "react";
29270
+ import {
29271
+ ToastProvider,
29272
+ ToastRoot,
29273
+ ToastTitle,
29274
+ ToastViewport
29275
+ } from "@tutti-os/ui-system";
29276
+ import { jsx as jsx54, jsxs as jsxs39 } from "react/jsx-runtime";
29277
+ function AgentGUIContentToast({
29278
+ insetTopPx,
29279
+ message
29280
+ }) {
29281
+ const [open, setOpen] = useState30(true);
29282
+ return /* @__PURE__ */ jsxs39(ToastProvider, { children: [
29283
+ /* @__PURE__ */ jsx54(
29284
+ ToastRoot,
29285
+ {
29286
+ open,
29287
+ className: "nodrag tsh-desktop-no-drag z-30 border-[var(--line-2)] bg-[var(--background-fronted)] text-[var(--text-primary)] shadow-[0_10px_30px_var(--toast-shadow-color)] [-webkit-app-region:no-drag]",
29288
+ "data-testid": "agent-gui-content-toast",
29289
+ variant: "default",
29290
+ onOpenChange: setOpen,
29291
+ children: /* @__PURE__ */ jsx54(ToastTitle, { children: message })
29292
+ }
29293
+ ),
29294
+ /* @__PURE__ */ jsx54(
29295
+ ToastViewport,
29296
+ {
29297
+ className: "nodrag tsh-desktop-no-drag absolute left-0 w-full translate-x-0 px-4 [-webkit-app-region:no-drag]",
29298
+ "data-testid": "agent-gui-content-toast-viewport",
29299
+ style: { top: `${insetTopPx}px` }
29300
+ }
29301
+ )
29302
+ ] });
29303
+ }
29304
+
29261
29305
  // agent-gui/agentGuiNode/view/AgentGUIConversationTimelinePane.tsx
29262
29306
  import { memo as memo11 } from "react";
29263
- import { Fragment as Fragment14, jsx as jsx54, jsxs as jsxs39 } from "react/jsx-runtime";
29307
+ import { Fragment as Fragment14, jsx as jsx55, jsxs as jsxs40 } from "react/jsx-runtime";
29264
29308
  var EMPTY_WORKSPACE_APP_ICONS3 = [];
29265
29309
  var AgentGUIConversationTimelinePane = memo11(
29266
29310
  function AgentGUIConversationTimelinePane2({
@@ -29277,17 +29321,17 @@ var AgentGUIConversationTimelinePane = memo11(
29277
29321
  labels
29278
29322
  }) {
29279
29323
  "use memo";
29280
- return /* @__PURE__ */ jsxs39(Fragment14, { children: [
29281
- isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx54(
29324
+ return /* @__PURE__ */ jsxs40(Fragment14, { children: [
29325
+ isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx55(
29282
29326
  "div",
29283
29327
  {
29284
29328
  className: "mx-auto flex h-8 items-center justify-center text-[12px] text-[var(--text-secondary)]",
29285
29329
  "data-testid": "agent-gui-older-messages-loading",
29286
29330
  role: "status",
29287
- children: /* @__PURE__ */ jsx54("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
29331
+ children: /* @__PURE__ */ jsx55("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
29288
29332
  }
29289
29333
  ) : null,
29290
- /* @__PURE__ */ jsx54(
29334
+ /* @__PURE__ */ jsx55(
29291
29335
  AgentConversationFlow,
29292
29336
  {
29293
29337
  conversation,
@@ -29326,7 +29370,7 @@ import {
29326
29370
  useEffect as useEffect33,
29327
29371
  useLayoutEffect as useLayoutEffect7,
29328
29372
  useRef as useRef36,
29329
- useState as useState30
29373
+ useState as useState31
29330
29374
  } from "react";
29331
29375
  var AGENT_GUI_STICK_TO_BOTTOM_THRESHOLD_PX = 24;
29332
29376
  var AGENT_GUI_TOP_HISTORY_PREFETCH_THRESHOLD_PX = 240;
@@ -29345,8 +29389,8 @@ function useAgentGUIDetailScroll(input) {
29345
29389
  timelineScrollAnchorRef,
29346
29390
  viewModel
29347
29391
  } = input;
29348
- const [isTimelineScrolledToTop, setIsTimelineScrolledToTop] = useState30(true);
29349
- const [isTimelineScrolledToBottom, setIsTimelineScrolledToBottom] = useState30(true);
29392
+ const [isTimelineScrolledToTop, setIsTimelineScrolledToTop] = useState31(true);
29393
+ const [isTimelineScrolledToBottom, setIsTimelineScrolledToBottom] = useState31(true);
29350
29394
  const bottomLockOwnerRef = useRef36(null);
29351
29395
  const userScrollAwayIntentConversationRef = useRef36(null);
29352
29396
  useLayoutEffect7(() => {
@@ -29438,30 +29482,40 @@ function useAgentGUIDetailScroll(input) {
29438
29482
  let animationFrameId = null;
29439
29483
  const syncBottomDockSafeArea = () => {
29440
29484
  const bottomDockRect = bottomDock.getBoundingClientRect();
29441
- let visualTop = bottomDockRect.top;
29485
+ let timelineVisualTop = bottomDockRect.top;
29486
+ let floatingVisualTop = bottomDockRect.top;
29442
29487
  bottomDock.querySelectorAll("*").forEach((element) => {
29443
29488
  if (element.closest(`.${AgentGUINode_styles_default.bottomDockScrollToBottom}`)) {
29444
29489
  return;
29445
29490
  }
29446
- if (element.closest(`.${AgentGUINode_styles_default.composerInputShell}`)) {
29491
+ const rect = element.getBoundingClientRect();
29492
+ if (rect.width <= 0 || rect.height <= 0) {
29447
29493
  return;
29448
29494
  }
29449
- const rect = element.getBoundingClientRect();
29450
- if (rect.width > 0 && rect.height > 0) {
29451
- visualTop = Math.min(visualTop, rect.top);
29495
+ if (element.closest(`.${AgentGUINode_styles_default.composerInputShell}`)) {
29496
+ if (element.matches(".agent-gui-node__composer-prompt-input-area")) {
29497
+ floatingVisualTop = Math.min(floatingVisualTop, rect.top);
29498
+ }
29499
+ return;
29452
29500
  }
29501
+ floatingVisualTop = Math.min(floatingVisualTop, rect.top);
29502
+ timelineVisualTop = Math.min(timelineVisualTop, rect.top);
29453
29503
  });
29454
- const overflowHeight = Math.max(
29504
+ const timelineOverflowHeight = Math.max(
29505
+ 0,
29506
+ Math.ceil(bottomDockRect.top - timelineVisualTop)
29507
+ );
29508
+ const floatingOverflowHeight = Math.max(
29455
29509
  0,
29456
- Math.ceil(bottomDockRect.top - visualTop)
29510
+ Math.ceil(bottomDockRect.top - floatingVisualTop)
29457
29511
  );
29458
29512
  timeline.style.setProperty(
29459
29513
  "--agent-gui-bottom-dock-safe-area",
29460
- `${overflowHeight}px`
29514
+ `${timelineOverflowHeight}px`
29461
29515
  );
29462
29516
  bottomDock.style.setProperty(
29463
29517
  "--agent-gui-bottom-dock-floating-safe-area",
29464
- `${overflowHeight}px`
29518
+ `${floatingOverflowHeight}px`
29465
29519
  );
29466
29520
  };
29467
29521
  const syncBottomDockSpace = () => {
@@ -29658,10 +29712,10 @@ function useAgentGUIDetailScroll(input) {
29658
29712
  import { useMemo as useMemo34 } from "react";
29659
29713
 
29660
29714
  // app/renderer/components/icons/UnavailableChatIcon.tsx
29661
- import { jsx as jsx55 } from "react/jsx-runtime";
29715
+ import { jsx as jsx56 } from "react/jsx-runtime";
29662
29716
  function UnavailableChatIcon(props) {
29663
29717
  "use memo";
29664
- return /* @__PURE__ */ jsx55(
29718
+ return /* @__PURE__ */ jsx56(
29665
29719
  "svg",
29666
29720
  {
29667
29721
  xmlns: "http://www.w3.org/2000/svg",
@@ -29669,21 +29723,21 @@ function UnavailableChatIcon(props) {
29669
29723
  fill: "currentColor",
29670
29724
  "aria-hidden": true,
29671
29725
  ...props,
29672
- children: /* @__PURE__ */ jsx55("path", { d: "M20.833 2.125C21.6507 2.125 22.4355 2.45019 23.0137 3.02832C23.5916 3.60645 23.9159 4.39053 23.916 5.20801V17.708C23.916 18.5257 23.5918 19.3104 23.0137 19.8887C22.4355 20.4668 21.6507 20.792 20.833 20.792H7.1123C6.82516 20.7922 6.5497 20.9063 6.34668 21.1094L4.05273 23.4033C3.80954 23.6464 3.49934 23.8118 3.16211 23.8789C2.82492 23.9459 2.47487 23.9118 2.15723 23.7803C1.83953 23.6486 1.56707 23.4256 1.37598 23.1396C1.18489 22.8536 1.08305 22.5168 1.08301 22.1729V5.20801C1.08309 4.39045 1.40827 3.60647 1.98633 3.02832C2.56441 2.45024 3.3485 2.12517 4.16602 2.125H20.833ZM16.1533 7.80566C15.7628 7.41518 15.1298 7.41527 14.7393 7.80566L12.5 10.0439L10.2607 7.80469C9.87031 7.41464 9.23712 7.41465 8.84668 7.80469C8.45627 8.19509 8.45651 8.8282 8.84668 9.21875L11.0859 11.458L8.84668 13.6982C8.45651 14.0888 8.45627 14.7219 8.84668 15.1123C9.2371 15.5026 9.87024 15.5024 10.2607 15.1123L12.5 12.873L14.7393 15.1113C15.1298 15.5017 15.7628 15.5018 16.1533 15.1113C16.5434 14.7208 16.5436 14.0877 16.1533 13.6973L13.9141 11.458L16.1533 9.21973C16.5437 8.82924 16.5437 8.19616 16.1533 7.80566Z" })
29726
+ children: /* @__PURE__ */ jsx56("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" })
29673
29727
  }
29674
29728
  );
29675
29729
  }
29676
29730
 
29677
29731
  // agent-gui/agentGuiNode/view/useAgentGUITimelineTransition.ts
29678
- import { useLayoutEffect as useLayoutEffect8, useState as useState31 } from "react";
29732
+ import { useLayoutEffect as useLayoutEffect8, useState as useState32 } from "react";
29679
29733
  var AGENT_GUI_TIMELINE_SKELETON_DELAY_MS = 300;
29680
29734
  function useAgentGUITimelineTransition(input) {
29681
29735
  const activeConversationId = input.activeConversationId;
29682
- const [committedTimeline, setCommittedTimeline] = useState31(() => ({
29736
+ const [committedTimeline, setCommittedTimeline] = useState32(() => ({
29683
29737
  conversation: input.conversation,
29684
29738
  conversationId: activeConversationId
29685
29739
  }));
29686
- const [revealedSkeletonConversationId, setRevealedSkeletonConversationId] = useState31(null);
29740
+ const [revealedSkeletonConversationId, setRevealedSkeletonConversationId] = useState32(null);
29687
29741
  const transitionPending = activeConversationId !== null && input.availability === "loading" && (!input.conversation || input.conversation.rows.length === 0);
29688
29742
  useLayoutEffect8(() => {
29689
29743
  if (!transitionPending || activeConversationId === null) {
@@ -29715,7 +29769,7 @@ function useAgentGUITimelineTransition(input) {
29715
29769
  }
29716
29770
 
29717
29771
  // agent-gui/agentGuiNode/view/useAgentGUIDetailModel.tsx
29718
- import { Fragment as Fragment15, jsx as jsx56, jsxs as jsxs40 } from "react/jsx-runtime";
29772
+ import { Fragment as Fragment15, jsx as jsx57, jsxs as jsxs41 } from "react/jsx-runtime";
29719
29773
  function useAgentGUIDetailModel(input) {
29720
29774
  const {
29721
29775
  bottomDockDismissedPromptRequestId,
@@ -29850,17 +29904,17 @@ function useAgentGUIDetailModel(input) {
29850
29904
  ]
29851
29905
  );
29852
29906
  const conversationFlowEmpty = useMemo34(
29853
- () => showUnavailableChatEmpty ? /* @__PURE__ */ jsxs40(
29907
+ () => showUnavailableChatEmpty ? /* @__PURE__ */ jsxs41(
29854
29908
  "div",
29855
29909
  {
29856
29910
  className: AgentGUINode_styles_default.unavailableChatEmpty,
29857
29911
  "data-testid": "agent-gui-unavailable-chat-empty",
29858
29912
  children: [
29859
- /* @__PURE__ */ jsx56(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
29860
- /* @__PURE__ */ jsx56("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
29913
+ /* @__PURE__ */ jsx57(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
29914
+ /* @__PURE__ */ jsx57("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
29861
29915
  ]
29862
29916
  }
29863
- ) : /* @__PURE__ */ jsx56(Fragment15, {}),
29917
+ ) : /* @__PURE__ */ jsx57(Fragment15, {}),
29864
29918
  [labels.conversationUnavailable, showUnavailableChatEmpty]
29865
29919
  );
29866
29920
  const chromeLabels = useMemo34(
@@ -30229,7 +30283,7 @@ function useAgentGUIDetailModel(input) {
30229
30283
  }
30230
30284
 
30231
30285
  // agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
30232
- import { Fragment as Fragment16, jsx as jsx57, jsxs as jsxs41 } from "react/jsx-runtime";
30286
+ import { Fragment as Fragment16, jsx as jsx58, jsxs as jsxs42 } from "react/jsx-runtime";
30233
30287
  var AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE = {
30234
30288
  width: "100%",
30235
30289
  minWidth: "100%",
@@ -30319,7 +30373,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30319
30373
  const [
30320
30374
  bottomDockDismissedPromptRequestId,
30321
30375
  setBottomDockDismissedPromptRequestId
30322
- ] = useState32(null);
30376
+ ] = useState33(null);
30323
30377
  const {
30324
30378
  activePromptRequestId,
30325
30379
  bottomDockLiftedPrompt,
@@ -30695,14 +30749,22 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30695
30749
  timelineScrollAnchorRef,
30696
30750
  viewModel
30697
30751
  });
30698
- return /* @__PURE__ */ jsxs41(
30752
+ return /* @__PURE__ */ jsxs42(
30699
30753
  "main",
30700
30754
  {
30701
30755
  className: AgentGUINode_styles_default.detail,
30702
30756
  "aria-busy": timelineInteractionLocked || void 0,
30703
30757
  inert: timelineInteractionLocked,
30704
30758
  children: [
30705
- /* @__PURE__ */ jsx57(
30759
+ viewModel.operations.goalClearNoticeSequence > 0 ? /* @__PURE__ */ jsx58(
30760
+ AgentGUIContentToast,
30761
+ {
30762
+ insetTopPx: hideDetailHeader ? 16 : 80,
30763
+ message: labels.goalRemoved
30764
+ },
30765
+ viewModel.operations.goalClearNoticeSequence
30766
+ ) : null,
30767
+ /* @__PURE__ */ jsx58(
30706
30768
  AgentGUIDetailHeader,
30707
30769
  {
30708
30770
  activeConversation: viewModel.rail.activeConversation,
@@ -30712,7 +30774,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30712
30774
  previewMode
30713
30775
  }
30714
30776
  ),
30715
- /* @__PURE__ */ jsx57(
30777
+ /* @__PURE__ */ jsx58(
30716
30778
  ScrollArea2,
30717
30779
  {
30718
30780
  scrollbarMode: "native",
@@ -30721,7 +30783,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30721
30783
  viewportTestId: "agent-gui-timeline",
30722
30784
  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(),
30723
30785
  viewportContentStyle: AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE,
30724
- children: !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx57(Fragment16, { children: renderProviderUnavailableState?.({
30786
+ children: !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx58(Fragment16, { children: renderProviderUnavailableState?.({
30725
30787
  provider: disabledProviderTarget.provider,
30726
30788
  providerLabel: labels.emptyProviderForProvider?.(
30727
30789
  disabledProviderTarget.provider
@@ -30733,7 +30795,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30733
30795
  disabledProviderTarget.provider
30734
30796
  ),
30735
30797
  unavailableReason: disabledProviderTarget.unavailableReason ?? null
30736
- }) }) : /* @__PURE__ */ jsx57(
30798
+ }) }) : /* @__PURE__ */ jsx58(
30737
30799
  AgentGUIEmptyHomePane,
30738
30800
  {
30739
30801
  provider: emptyHeroProvider,
@@ -30756,7 +30818,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30756
30818
  onSelectSuggestion: handleSelectHomeSuggestion,
30757
30819
  onSelectSuggestionAction: handleHomeSuggestionAction
30758
30820
  }
30759
- ) : /* @__PURE__ */ jsx57(
30821
+ ) : /* @__PURE__ */ jsx58(
30760
30822
  AgentGUIConversationTimelinePane,
30761
30823
  {
30762
30824
  conversation,
@@ -30774,7 +30836,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30774
30836
  )
30775
30837
  }
30776
30838
  ),
30777
- hasActiveConversation ? /* @__PURE__ */ jsx57(
30839
+ hasActiveConversation ? /* @__PURE__ */ jsx58(
30778
30840
  AgentGUIBottomDockPane,
30779
30841
  {
30780
30842
  bottomDockRef,
@@ -30806,9 +30868,9 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
30806
30868
  });
30807
30869
 
30808
30870
  // agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
30809
- import { memo as memo13, useCallback as useCallback46, useEffect as useEffect35, useRef as useRef38, useState as useState33 } from "react";
30871
+ import { memo as memo13, useCallback as useCallback46, useEffect as useEffect35, useRef as useRef38, useState as useState34 } from "react";
30810
30872
  import { ConfirmationDialog as ConfirmationDialog2 } from "@tutti-os/ui-system";
30811
- import { jsx as jsx58, jsxs as jsxs42 } from "react/jsx-runtime";
30873
+ import { jsx as jsx59, jsxs as jsxs43 } from "react/jsx-runtime";
30812
30874
  var AgentGUIRenameConversationDialog = memo13(
30813
30875
  function AgentGUIRenameConversationDialog2({
30814
30876
  conversation,
@@ -30818,8 +30880,8 @@ var AgentGUIRenameConversationDialog = memo13(
30818
30880
  onRename
30819
30881
  }) {
30820
30882
  "use memo";
30821
- const [title, setTitle] = useState33("");
30822
- const [isSaving, setIsSaving] = useState33(false);
30883
+ const [title, setTitle] = useState34("");
30884
+ const [isSaving, setIsSaving] = useState34(false);
30823
30885
  const isSavingRef = useRef38(false);
30824
30886
  const armedPointerActionRef = useRef38(null);
30825
30887
  const inputRef = useRef38(null);
@@ -30864,7 +30926,7 @@ var AgentGUIRenameConversationDialog = memo13(
30864
30926
  setIsSaving(false);
30865
30927
  });
30866
30928
  }, [conversation, onOpenChange, onRename, trimmedTitle]);
30867
- return /* @__PURE__ */ jsx58(
30929
+ return /* @__PURE__ */ jsx59(
30868
30930
  ConfirmationDialog2,
30869
30931
  {
30870
30932
  cancelLabel: labels.cancel,
@@ -30873,8 +30935,8 @@ var AgentGUIRenameConversationDialog = memo13(
30873
30935
  confirmDisabled: !trimmedTitle,
30874
30936
  confirmLabel: labels.renameSessionSave,
30875
30937
  description: labels.renameSessionDescription,
30876
- footer: /* @__PURE__ */ jsxs42("div", { className: "flex justify-end gap-2", children: [
30877
- /* @__PURE__ */ jsx58(
30938
+ footer: /* @__PURE__ */ jsxs43("div", { className: "flex justify-end gap-2", children: [
30939
+ /* @__PURE__ */ jsx59(
30878
30940
  Button,
30879
30941
  {
30880
30942
  disabled: isSaving,
@@ -30912,7 +30974,7 @@ var AgentGUIRenameConversationDialog = memo13(
30912
30974
  children: labels.cancel
30913
30975
  }
30914
30976
  ),
30915
- /* @__PURE__ */ jsx58(
30977
+ /* @__PURE__ */ jsx59(
30916
30978
  Button,
30917
30979
  {
30918
30980
  className: "shadow-none",
@@ -30967,7 +31029,7 @@ var AgentGUIRenameConversationDialog = memo13(
30967
31029
  title: labels.renameSessionTitle,
30968
31030
  onConfirm: confirmRename,
30969
31031
  onOpenChange,
30970
- children: /* @__PURE__ */ jsx58(
31032
+ children: /* @__PURE__ */ jsx59(
30971
31033
  "input",
30972
31034
  {
30973
31035
  ref: inputRef,
@@ -30994,7 +31056,7 @@ import {
30994
31056
  ReferenceSourcePicker,
30995
31057
  WorkspaceFileReferencePicker
30996
31058
  } from "@tutti-os/workspace-file-reference/ui";
30997
- import { jsx as jsx59 } from "react/jsx-runtime";
31059
+ import { jsx as jsx60 } from "react/jsx-runtime";
30998
31060
  function AgentGUIReferencePickerSurface({
30999
31061
  aggregator,
31000
31062
  copy,
@@ -31011,7 +31073,7 @@ function AgentGUIReferencePickerSurface({
31011
31073
  onConfirm,
31012
31074
  onConfirmBundles
31013
31075
  }) {
31014
- return aggregator ? /* @__PURE__ */ jsx59(
31076
+ return aggregator ? /* @__PURE__ */ jsx60(
31015
31077
  ReferenceSourcePicker,
31016
31078
  {
31017
31079
  aggregator,
@@ -31021,7 +31083,7 @@ function AgentGUIReferencePickerSurface({
31021
31083
  fileManagerCopy: fileManagerCopy ?? void 0,
31022
31084
  open,
31023
31085
  provenanceFilter: provenanceFilter?.snapshot.value,
31024
- provenanceFilterControl: provenanceFilter ? /* @__PURE__ */ jsx59(
31086
+ provenanceFilterControl: provenanceFilter ? /* @__PURE__ */ jsx60(
31025
31087
  AgentReferenceProvenanceFilterControl,
31026
31088
  {
31027
31089
  filter: provenanceFilter,
@@ -31034,7 +31096,7 @@ function AgentGUIReferencePickerSurface({
31034
31096
  onConfirm,
31035
31097
  onConfirmBundles
31036
31098
  }
31037
- ) : /* @__PURE__ */ jsx59(
31099
+ ) : /* @__PURE__ */ jsx60(
31038
31100
  WorkspaceFileReferencePicker,
31039
31101
  {
31040
31102
  copy,
@@ -31050,7 +31112,7 @@ function AgentGUIReferencePickerSurface({
31050
31112
  }
31051
31113
 
31052
31114
  // agent-gui/agentGuiNode/view/useAgentGUIWorkspaceReferencePicker.ts
31053
- import { useCallback as useCallback47, useMemo as useMemo36, useRef as useRef39, useState as useState34 } from "react";
31115
+ import { useCallback as useCallback47, useMemo as useMemo36, useRef as useRef39, useState as useState35 } from "react";
31054
31116
  import { createRichTextMentionHref } from "@tutti-os/ui-rich-text/core";
31055
31117
  function useAgentGUIWorkspaceReferencePicker(input) {
31056
31118
  const {
@@ -31063,8 +31125,8 @@ function useAgentGUIWorkspaceReferencePicker(input) {
31063
31125
  workspaceFileReferenceAdapter,
31064
31126
  workspaceFileReferenceCopy
31065
31127
  } = input;
31066
- const [workspaceReferencePickerOpen, setWorkspaceReferencePickerOpen] = useState34(false);
31067
- const [workspaceReferencePickerTarget, setWorkspaceReferencePickerTarget] = useState34(null);
31128
+ const [workspaceReferencePickerOpen, setWorkspaceReferencePickerOpen] = useState35(false);
31129
+ const [workspaceReferencePickerTarget, setWorkspaceReferencePickerTarget] = useState35(null);
31068
31130
  const workspaceReferencePickerResolverRef = useRef39(null);
31069
31131
  const emptyReferencePickResult = useMemo36(
31070
31132
  () => ({ files: [], mentionItems: [] }),
@@ -31428,7 +31490,7 @@ function useAgentGUINodeEngagement(input) {
31428
31490
  }
31429
31491
 
31430
31492
  // agent-gui/agentGuiNode/AgentGUINodeView.tsx
31431
- import { jsx as jsx60, jsxs as jsxs43 } from "react/jsx-runtime";
31493
+ import { jsx as jsx61, jsxs as jsxs44 } from "react/jsx-runtime";
31432
31494
  function AgentGUINodeView({
31433
31495
  viewModel,
31434
31496
  referenceProvenanceFilter = null,
@@ -31497,16 +31559,16 @@ function AgentGUINodeView({
31497
31559
  previewMode,
31498
31560
  viewModel
31499
31561
  });
31500
- const [providerManagerOpen, setProviderManagerOpen] = useState35(false);
31562
+ const [providerManagerOpen, setProviderManagerOpen] = useState36(false);
31501
31563
  const railResizeInteractionRef = useRef42(null);
31502
- const [isRailResizing, setIsRailResizing] = useState35(false);
31503
- const [railResizeWidthPx, setRailResizeWidthPx] = useState35(
31564
+ const [isRailResizing, setIsRailResizing] = useState36(false);
31565
+ const [railResizeWidthPx, setRailResizeWidthPx] = useState36(
31504
31566
  null
31505
31567
  );
31506
31568
  const [
31507
31569
  localComposerFocusRequestSequence,
31508
31570
  setLocalComposerFocusRequestSequence
31509
- ] = useState35(0);
31571
+ ] = useState36(0);
31510
31572
  const handledNewConversationRequestSequenceRef = useRef42(
31511
31573
  newConversationRequestSequence
31512
31574
  );
@@ -31758,8 +31820,8 @@ function AgentGUINodeView({
31758
31820
  const openAgentSettings = useCallback48(() => {
31759
31821
  openWorkspaceSettingsPanel({ section: "agent" });
31760
31822
  }, []);
31761
- const [renameConversationTarget, setRenameConversationTarget] = useState35(null);
31762
- const [renameConversationDialogOpen, setRenameConversationDialogOpen] = useState35(false);
31823
+ const [renameConversationTarget, setRenameConversationTarget] = useState36(null);
31824
+ const [renameConversationDialogOpen, setRenameConversationDialogOpen] = useState36(false);
31763
31825
  const requestRenameConversation = useCallback48(
31764
31826
  (conversation) => {
31765
31827
  setRenameConversationTarget(conversation);
@@ -31850,8 +31912,8 @@ function AgentGUINodeView({
31850
31912
  ),
31851
31913
  [viewModel.rail.agentTargets, viewModel.shell.workspaceId]
31852
31914
  );
31853
- const content = /* @__PURE__ */ jsxs43(AgentTargetPresentationProvider, { agentTargets: agentTargetPresentations, children: [
31854
- /* @__PURE__ */ jsxs43(
31915
+ const content = /* @__PURE__ */ jsxs44(AgentTargetPresentationProvider, { agentTargets: agentTargetPresentations, children: [
31916
+ /* @__PURE__ */ jsxs44(
31855
31917
  "div",
31856
31918
  {
31857
31919
  ref: layoutElementRef,
@@ -31861,7 +31923,7 @@ function AgentGUINodeView({
31861
31923
  inert: previewMode ? true : void 0,
31862
31924
  style: layoutStyle,
31863
31925
  children: [
31864
- showProviderRail ? /* @__PURE__ */ jsxs43(
31926
+ showProviderRail ? /* @__PURE__ */ jsxs44(
31865
31927
  "aside",
31866
31928
  {
31867
31929
  className: `${AgentGUINode_styles_default.providerRailPanel} nodrag tsh-desktop-no-drag`,
@@ -31869,7 +31931,7 @@ function AgentGUINodeView({
31869
31931
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
31870
31932
  inert: conversationRailCollapsed ? true : void 0,
31871
31933
  children: [
31872
- /* @__PURE__ */ jsx60(
31934
+ /* @__PURE__ */ jsx61(
31873
31935
  AgentGUIProviderRail,
31874
31936
  {
31875
31937
  activeConversation: viewModel.rail.activeConversation,
@@ -31893,7 +31955,7 @@ function AgentGUINodeView({
31893
31955
  onRequestComposerFocus: requestComposerFocus
31894
31956
  }
31895
31957
  ),
31896
- renderSidebarFooter ? /* @__PURE__ */ jsx60(
31958
+ renderSidebarFooter ? /* @__PURE__ */ jsx61(
31897
31959
  "div",
31898
31960
  {
31899
31961
  className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailSidebarFooter} nodrag tsh-desktop-no-drag`,
@@ -31904,12 +31966,12 @@ function AgentGUINodeView({
31904
31966
  })
31905
31967
  }
31906
31968
  ) : null,
31907
- shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx60(
31969
+ shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx61(
31908
31970
  "div",
31909
31971
  {
31910
31972
  className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailConfigFooter} nodrag tsh-desktop-no-drag`,
31911
31973
  "data-testid": "agent-gui-config-footer",
31912
- children: shouldShowProviderRailConfigMenu ? /* @__PURE__ */ jsx60(
31974
+ children: shouldShowProviderRailConfigMenu ? /* @__PURE__ */ jsx61(
31913
31975
  AgentGUIConfigMenu,
31914
31976
  {
31915
31977
  environmentSetupVisible,
@@ -31928,7 +31990,7 @@ function AgentGUINodeView({
31928
31990
  onOpenAgentEnvSetup: openAgentEnvSetup,
31929
31991
  onOpenAgentSettings: openAgentSettings
31930
31992
  }
31931
- ) : /* @__PURE__ */ jsx60(
31993
+ ) : /* @__PURE__ */ jsx61(
31932
31994
  "button",
31933
31995
  {
31934
31996
  type: "button",
@@ -31937,7 +31999,7 @@ function AgentGUINodeView({
31937
31999
  title: labels.agentSettingsMenu,
31938
32000
  disabled: previewMode,
31939
32001
  onClick: openAgentSettings,
31940
- children: /* @__PURE__ */ jsx60(
32002
+ children: /* @__PURE__ */ jsx61(
31941
32003
  SettingsLinedIcon,
31942
32004
  {
31943
32005
  "aria-hidden": "true",
@@ -31952,21 +32014,21 @@ function AgentGUINodeView({
31952
32014
  ]
31953
32015
  }
31954
32016
  ) : null,
31955
- /* @__PURE__ */ jsx60(
32017
+ /* @__PURE__ */ jsx61(
31956
32018
  "aside",
31957
32019
  {
31958
32020
  id: "agent-gui-conversation-rail",
31959
32021
  className: `${AgentGUINode_styles_default.railPanel}${conversationRailCollapsed ? ` ${AgentGUINode_styles_default.railPanelCollapsed}` : ""}`,
31960
32022
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
31961
32023
  inert: conversationRailCollapsed ? true : void 0,
31962
- children: /* @__PURE__ */ jsx60(
32024
+ children: /* @__PURE__ */ jsx61(
31963
32025
  AgentGUIConversationRailController,
31964
32026
  {
31965
32027
  ...conversationRailStoreState,
31966
32028
  conversations: viewModel.rail.conversations,
31967
32029
  userProjects: viewModel.rail.userProjects,
31968
32030
  workspaceId: viewModel.shell.workspaceId,
31969
- footer: accountMenuState?.user ? /* @__PURE__ */ jsx60(
32031
+ footer: accountMenuState?.user ? /* @__PURE__ */ jsx61(
31970
32032
  AgentGUIAccountRailMenu,
31971
32033
  {
31972
32034
  accountMenuState,
@@ -31978,7 +32040,7 @@ function AgentGUINodeView({
31978
32040
  )
31979
32041
  }
31980
32042
  ),
31981
- /* @__PURE__ */ jsx60(
32043
+ /* @__PURE__ */ jsx61(
31982
32044
  "div",
31983
32045
  {
31984
32046
  id: "agent-gui-conversation-rail-resize",
@@ -32002,7 +32064,7 @@ function AgentGUINodeView({
32002
32064
  onPointerUp: endConversationRailResize
32003
32065
  }
32004
32066
  ),
32005
- /* @__PURE__ */ jsx60("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx60(
32067
+ /* @__PURE__ */ jsx61("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx61(
32006
32068
  AgentGUIDetailPane,
32007
32069
  {
32008
32070
  viewModel,
@@ -32039,7 +32101,7 @@ function AgentGUINodeView({
32039
32101
  ]
32040
32102
  }
32041
32103
  ),
32042
- /* @__PURE__ */ jsx60(
32104
+ /* @__PURE__ */ jsx61(
32043
32105
  AgentGUIReferencePickerSurface,
32044
32106
  {
32045
32107
  aggregator: referenceSourceAggregator,
@@ -32058,7 +32120,7 @@ function AgentGUINodeView({
32058
32120
  onConfirmBundles: confirmWorkspaceReferenceBundles
32059
32121
  }
32060
32122
  ),
32061
- /* @__PURE__ */ jsx60(
32123
+ /* @__PURE__ */ jsx61(
32062
32124
  AgentGUIRenameConversationDialog,
32063
32125
  {
32064
32126
  conversation: renameConversationTarget,
@@ -32074,7 +32136,7 @@ function AgentGUINodeView({
32074
32136
  }
32075
32137
  )
32076
32138
  ] });
32077
- return previewMode ? content : /* @__PURE__ */ jsx60(TooltipProvider5, { children: content });
32139
+ return previewMode ? content : /* @__PURE__ */ jsx61(TooltipProvider5, { children: content });
32078
32140
  }
32079
32141
 
32080
32142
  // agent-gui/workspaceDesktop/view/desktopDockAgentProbeTooltipModel.ts
@@ -32252,10 +32314,10 @@ import {
32252
32314
  useEffect as useEffect38,
32253
32315
  useLayoutEffect as useLayoutEffect9,
32254
32316
  useRef as useRef43,
32255
- useState as useState36
32317
+ useState as useState37
32256
32318
  } from "react";
32257
32319
  import { createPortal as createPortal5 } from "react-dom";
32258
- import { Fragment as Fragment17, jsx as jsx61, jsxs as jsxs44 } from "react/jsx-runtime";
32320
+ import { Fragment as Fragment17, jsx as jsx62, jsxs as jsxs45 } from "react/jsx-runtime";
32259
32321
  var POPOVER_MIN_VIEWPORT_INSET_PX = 16;
32260
32322
  var POPOVER_DEFAULT_WIDTH_PX = 260;
32261
32323
  function dockAgentProbeLineKey(line) {
@@ -32265,11 +32327,11 @@ function renderDockAgentProbeLine(line) {
32265
32327
  if (typeof line === "string") {
32266
32328
  return line;
32267
32329
  }
32268
- return /* @__PURE__ */ jsxs44(Fragment17, { children: [
32330
+ return /* @__PURE__ */ jsxs45(Fragment17, { children: [
32269
32331
  line.primary,
32270
- line.secondary ? /* @__PURE__ */ jsxs44(Fragment17, { children: [
32332
+ line.secondary ? /* @__PURE__ */ jsxs45(Fragment17, { children: [
32271
32333
  " ",
32272
- /* @__PURE__ */ jsx61("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
32334
+ /* @__PURE__ */ jsx62("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
32273
32335
  ] }) : null
32274
32336
  ] });
32275
32337
  }
@@ -32291,8 +32353,8 @@ function AgentProbeInfoPopover({
32291
32353
  "use memo";
32292
32354
  const anchorRef = useRef43(null);
32293
32355
  const popoverRef = useRef43(null);
32294
- const [isOpen, setIsOpen] = useState36(false);
32295
- const [popoverStyle, setPopoverStyle] = useState36(null);
32356
+ const [isOpen, setIsOpen] = useState37(false);
32357
+ const [popoverStyle, setPopoverStyle] = useState37(null);
32296
32358
  const openPopover = useCallback49(() => {
32297
32359
  if (!isOpen) {
32298
32360
  onOpen?.();
@@ -32353,7 +32415,7 @@ function AgentProbeInfoPopover({
32353
32415
  if (lines.length === 0) {
32354
32416
  return null;
32355
32417
  }
32356
- const popover = /* @__PURE__ */ jsx61(
32418
+ const popover = /* @__PURE__ */ jsx62(
32357
32419
  "div",
32358
32420
  {
32359
32421
  ref: popoverRef,
@@ -32362,17 +32424,17 @@ function AgentProbeInfoPopover({
32362
32424
  style: popoverStyle ?? void 0,
32363
32425
  onMouseEnter: openPopover,
32364
32426
  onMouseLeave: closeIfPointerLeavesPopover,
32365
- children: /* @__PURE__ */ jsx61("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
32427
+ children: /* @__PURE__ */ jsx62("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
32366
32428
  const label = getDockAgentProbeLineLabel(line);
32367
32429
  const valueText = formatDockAgentProbeLineText(line);
32368
- return /* @__PURE__ */ jsxs44(
32430
+ return /* @__PURE__ */ jsxs45(
32369
32431
  "li",
32370
32432
  {
32371
32433
  className: "desktop-dock-popup__agent-info-item",
32372
32434
  "data-has-label": label ? "true" : "false",
32373
32435
  children: [
32374
- label ? /* @__PURE__ */ jsx61("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
32375
- /* @__PURE__ */ jsx61(
32436
+ label ? /* @__PURE__ */ jsx62("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
32437
+ /* @__PURE__ */ jsx62(
32376
32438
  "span",
32377
32439
  {
32378
32440
  className: "desktop-dock-popup__agent-info-value",
@@ -32387,7 +32449,7 @@ function AgentProbeInfoPopover({
32387
32449
  }) })
32388
32450
  }
32389
32451
  );
32390
- return /* @__PURE__ */ jsxs44(
32452
+ return /* @__PURE__ */ jsxs45(
32391
32453
  "div",
32392
32454
  {
32393
32455
  ref: anchorRef,
@@ -32407,7 +32469,7 @@ function AgentProbeInfoPopover({
32407
32469
  },
32408
32470
  onBlur: () => setIsOpen(false),
32409
32471
  children: [
32410
- /* @__PURE__ */ jsx61(Info3, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
32472
+ /* @__PURE__ */ jsx62(Info3, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
32411
32473
  isOpen ? createPortal5(popover, document.body) : null
32412
32474
  ]
32413
32475
  }
@@ -32968,6 +33030,7 @@ function useAgentGUIViewLabels(input) {
32968
33030
  goalPauseAction: t("agentHost.agentGui.goalPauseAction"),
32969
33031
  goalResumeAction: t("agentHost.agentGui.goalResumeAction"),
32970
33032
  goalClearAction: t("agentHost.agentGui.goalClearAction"),
33033
+ goalRemoved: t("agentHost.agentGui.goalRemoved"),
32971
33034
  processing: t("agentHost.agentGui.processing"),
32972
33035
  turnSummary: t("agentHost.agentGui.turnSummary"),
32973
33036
  userMessageLocator: t("agentHost.agentGui.userMessageLocator"),
@@ -33332,7 +33395,7 @@ function resolveAgentGUIRailStatusProvider(input) {
33332
33395
  }
33333
33396
 
33334
33397
  // agent-gui/agentGuiNode/AgentGUINode.tsx
33335
- import { jsx as jsx62, jsxs as jsxs45 } from "react/jsx-runtime";
33398
+ import { jsx as jsx63, jsxs as jsxs46 } from "react/jsx-runtime";
33336
33399
  var EMPTY_SLASH_STATUS_QUOTAS = [];
33337
33400
  var DISABLED_REFERENCE_PROVENANCE_CATALOG = {
33338
33401
  enabledDimensions: [],
@@ -33736,7 +33799,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33736
33799
  previewMode,
33737
33800
  railStatusProvider
33738
33801
  ]);
33739
- return /* @__PURE__ */ jsx62(
33802
+ return /* @__PURE__ */ jsx63(
33740
33803
  WorkspaceNodeWindow,
33741
33804
  {
33742
33805
  nodeId,
@@ -33752,8 +33815,8 @@ var AgentGUINode = memo14(function AgentGUINode2({
33752
33815
  className: "size-full bg-transparent",
33753
33816
  bodyClassName: `${AgentGUINode_styles_default.shell} nodrag size-full min-h-0 min-w-0 !bg-transparent p-0`,
33754
33817
  hideHeader: embedded,
33755
- titleAccessory: /* @__PURE__ */ jsxs45("span", { className: "inline-flex flex-none items-center gap-1", children: [
33756
- /* @__PURE__ */ jsx62(
33818
+ titleAccessory: /* @__PURE__ */ jsxs46("span", { className: "inline-flex flex-none items-center gap-1", children: [
33819
+ /* @__PURE__ */ jsx63(
33757
33820
  AgentProbeInfoPopover,
33758
33821
  {
33759
33822
  lines: agentProbeLines,
@@ -33762,7 +33825,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33762
33825
  onOpen: handleAgentProbeInfoOpen
33763
33826
  }
33764
33827
  ),
33765
- /* @__PURE__ */ jsx62(
33828
+ /* @__PURE__ */ jsx63(
33766
33829
  CanvasNodeGhostIconButton,
33767
33830
  {
33768
33831
  "aria-label": isConversationRailCollapsed ? t("agentHost.agentGui.expandConversationRail") : t("agentHost.agentGui.collapseConversationRail"),
@@ -33774,7 +33837,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33774
33837
  event.stopPropagation();
33775
33838
  handleConversationRailToggle();
33776
33839
  },
33777
- children: /* @__PURE__ */ jsx62(
33840
+ children: /* @__PURE__ */ jsx63(
33778
33841
  CanvasNodePanelLinedIcon,
33779
33842
  {
33780
33843
  width: 18,
@@ -33798,7 +33861,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33798
33861
  renderedWidth,
33799
33862
  railAutoCollapseWidthPx
33800
33863
  );
33801
- return /* @__PURE__ */ jsx62(
33864
+ return /* @__PURE__ */ jsx63(
33802
33865
  AgentGUINodeView,
33803
33866
  {
33804
33867
  viewModel,
@@ -33868,7 +33931,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
33868
33931
  }, areAgentGUINodePropsEqual);
33869
33932
 
33870
33933
  // AgentGUI.tsx
33871
- import { jsx as jsx63 } from "react/jsx-runtime";
33934
+ import { jsx as jsx64 } from "react/jsx-runtime";
33872
33935
  var AgentGUI = memo15(function AgentGUI2({
33873
33936
  agentActivityRuntime,
33874
33937
  agentHostApi,
@@ -33898,15 +33961,15 @@ var AgentGUI = memo15(function AgentGUI2({
33898
33961
  providerRailEmpty: renderAgentsEmpty
33899
33962
  }
33900
33963
  };
33901
- const content = /* @__PURE__ */ jsx63(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx63(
33964
+ const content = /* @__PURE__ */ jsx64(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx64(
33902
33965
  AgentActivityHostProvider,
33903
33966
  {
33904
33967
  agentActivityRuntime,
33905
33968
  agentHostApi,
33906
- children: /* @__PURE__ */ jsx63(AgentGUINode, { ...nodeProps })
33969
+ children: /* @__PURE__ */ jsx64(AgentGUINode, { ...nodeProps })
33907
33970
  }
33908
33971
  ) });
33909
- return props.frame.previewMode ? content : /* @__PURE__ */ jsx63(TooltipProvider6, { delayDuration: 120, skipDelayDuration: 0, children: content });
33972
+ return props.frame.previewMode ? content : /* @__PURE__ */ jsx64(TooltipProvider6, { delayDuration: 120, skipDelayDuration: 0, children: content });
33910
33973
  });
33911
33974
 
33912
33975
  export {
@@ -33919,4 +33982,4 @@ export {
33919
33982
  resolveAgentGUIAgentTarget,
33920
33983
  AgentGUI
33921
33984
  };
33922
- //# sourceMappingURL=chunk-LHKBR77G.js.map
33985
+ //# sourceMappingURL=chunk-L2MTZMVH.js.map