@tutti-os/agent-gui 0.0.131 → 0.0.133

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 (54) hide show
  1. package/README.md +5 -2
  2. package/dist/agent-conversation/index.d.ts +4 -6
  3. package/dist/agent-conversation/index.js +3 -3
  4. package/dist/agent-env/index.d.ts +10 -27
  5. package/dist/agent-env/index.js +14 -290
  6. package/dist/agent-env/index.js.map +1 -1
  7. package/dist/agent-gui.d.ts +1090 -20
  8. package/dist/agent-gui.js +7 -7
  9. package/dist/agent-message-center/index.d.ts +42 -7
  10. package/dist/agent-message-center/index.js +2 -2
  11. package/dist/{agentConversationVM-BD0-gg6C.d.ts → agentConversationVM-DWEy7jzx.d.ts} +41 -2
  12. package/dist/{agentGuiNodeTypes-5TL1hyCN.d.ts → agentGuiNodeTypes-B57MfwVo.d.ts} +5 -22
  13. package/dist/agents.d.ts +1 -1
  14. package/dist/agents.js +1 -1
  15. package/dist/app/renderer/agentactivity.css +1 -0
  16. package/dist/app/renderer/assets/icons/@-lined.svg +1 -8
  17. package/dist/{chunk-2RSNLVOX.js → chunk-A6NSHCRP.js} +204 -47
  18. package/dist/chunk-A6NSHCRP.js.map +1 -0
  19. package/dist/chunk-FM42UN2J.js +462 -0
  20. package/dist/chunk-FM42UN2J.js.map +1 -0
  21. package/dist/{chunk-PQJXWXTS.js → chunk-GBBNYGL7.js} +2 -2
  22. package/dist/{chunk-GCQYN7BR.js → chunk-HCRROERX.js} +2 -2
  23. package/dist/{chunk-WVWSFGBU.js → chunk-IZ626FDO.js} +563 -444
  24. package/dist/chunk-IZ626FDO.js.map +1 -0
  25. package/dist/{chunk-YWHGCKMT.js → chunk-N62NVPHT.js} +7 -7
  26. package/dist/chunk-N62NVPHT.js.map +1 -0
  27. package/dist/{chunk-T2NICA5D.js → chunk-VS5BRBY6.js} +4 -1
  28. package/dist/chunk-VS5BRBY6.js.map +1 -0
  29. package/dist/{contribution-yc4CGJmy.d.ts → contribution-BbW-kkpi.d.ts} +52 -1
  30. package/dist/custom-mention.d.ts +4 -2
  31. package/dist/i18n/index.d.ts +11 -6
  32. package/dist/index.d.ts +7982 -33
  33. package/dist/index.js +7 -7
  34. package/dist/runtime-Dwf44VKc.d.ts +7 -0
  35. package/dist/{types-BicfRVrV.d.ts → types-BeAVr4of.d.ts} +3 -5
  36. package/dist/workbench/contribution.d.ts +1 -2
  37. package/dist/workbench/contribution.js +2 -2
  38. package/dist/workbench/index.d.ts +1 -2
  39. package/dist/workbench/index.js +2 -2
  40. package/dist/workspace-agent-generated-files.d.ts +12 -1
  41. package/package.json +15 -15
  42. package/dist/AgentGUI-DxypmD7b.d.ts +0 -1080
  43. package/dist/agentPlanPromptDispatch-C7cCMjve.d.ts +0 -37
  44. package/dist/chunk-2RSNLVOX.js.map +0 -1
  45. package/dist/chunk-T2NICA5D.js.map +0 -1
  46. package/dist/chunk-VMQNG2KI.js +0 -178
  47. package/dist/chunk-VMQNG2KI.js.map +0 -1
  48. package/dist/chunk-WVWSFGBU.js.map +0 -1
  49. package/dist/chunk-YWHGCKMT.js.map +0 -1
  50. package/dist/pastedTextKinds-D-XuInaS.d.ts +0 -4
  51. package/dist/runtime-BBNdWgDU.d.ts +0 -10
  52. package/dist/workspaceAgentActivityListTypes-DZfS_HgG.d.ts +0 -48
  53. /package/dist/{chunk-PQJXWXTS.js.map → chunk-GBBNYGL7.js.map} +0 -0
  54. /package/dist/{chunk-GCQYN7BR.js.map → chunk-HCRROERX.js.map} +0 -0
@@ -12,7 +12,7 @@ import {
12
12
  resolveAgentGuiSessionProviderFlatIconUrl,
13
13
  resolveNextAgentGUIConversationRailWidthPx,
14
14
  shouldAutoCollapseAgentGUIConversationRail
15
- } from "./chunk-GCQYN7BR.js";
15
+ } from "./chunk-HCRROERX.js";
16
16
  import {
17
17
  AGENT_PROVIDERS,
18
18
  AGENT_PROVIDER_LABEL,
@@ -63,7 +63,7 @@ import {
63
63
  toLocalShortDateTime,
64
64
  updateAgentComposerDraft,
65
65
  useProjectedAgentConversation
66
- } from "./chunk-2RSNLVOX.js";
66
+ } from "./chunk-A6NSHCRP.js";
67
67
  import {
68
68
  agentRichTextContentToPromptText,
69
69
  createAgentRichTextInputExtensions,
@@ -75,8 +75,8 @@ import {
75
75
  skillTriggerForPrefix
76
76
  } from "./chunk-XNE2ROCP.js";
77
77
  import {
78
- openAgentEnvPanel
79
- } from "./chunk-VMQNG2KI.js";
78
+ AgentEnvPanelActionProvider
79
+ } from "./chunk-FM42UN2J.js";
80
80
  import {
81
81
  AgentSetupDialog,
82
82
  AgentSetupStepIcon
@@ -89,7 +89,7 @@ import {
89
89
  import {
90
90
  normalizeAgentGUIAgents,
91
91
  projectAgentGUIAgentsToInternalTargets
92
- } from "./chunk-T2NICA5D.js";
92
+ } from "./chunk-VS5BRBY6.js";
93
93
  import {
94
94
  AGENT_MENTION_FILTER_TAB_ORDER,
95
95
  AgentMentionSearchController,
@@ -117,7 +117,7 @@ import {
117
117
  dispatchAgentPlanPromptAction,
118
118
  latestPlanTurnId,
119
119
  planImplementationPromptFromPlanTurn
120
- } from "./chunk-PQJXWXTS.js";
120
+ } from "./chunk-GBBNYGL7.js";
121
121
  import {
122
122
  useEngineSelector
123
123
  } from "./chunk-2RQM7PJN.js";
@@ -126,7 +126,7 @@ import {
126
126
  ZoomableImage,
127
127
  normalizeAgentApprovalPurpose,
128
128
  resolveWorkspaceLinkAction
129
- } from "./chunk-YWHGCKMT.js";
129
+ } from "./chunk-N62NVPHT.js";
130
130
  import {
131
131
  AgentTargetPresentationProvider,
132
132
  cn,
@@ -170,11 +170,11 @@ import {
170
170
  } from "./chunk-QMMWKQOT.js";
171
171
 
172
172
  // AgentGUI.tsx
173
- import { memo as memo15 } from "react";
173
+ import { memo as memo15, useMemo as useMemo42 } from "react";
174
174
  import { TooltipProvider as TooltipProvider6 } from "@tutti-os/ui-system";
175
175
 
176
176
  // agent-gui/agentGuiNode/AgentGUINode.tsx
177
- import { memo as memo14, useCallback as useCallback58, useEffect as useEffect38, useMemo as useMemo41 } from "react";
177
+ import { memo as memo14, useCallback as useCallback58, useEffect as useEffect38, useMemo as useMemo41, useRef as useRef49 } from "react";
178
178
  import { createWorkspaceUserProjectI18nRuntime } from "@tutti-os/workspace-user-project/i18n";
179
179
  import { createWorkspaceFileManagerI18nRuntime } from "@tutti-os/workspace-file-manager";
180
180
  import { useReferenceProvenanceFilterCatalog } from "@tutti-os/workspace-file-reference/react";
@@ -3709,6 +3709,7 @@ function createSharedAgentGUIAgentTarget(input) {
3709
3709
  ...badge ? { badge } : {},
3710
3710
  ...input.ownerLabel?.trim() ? { ownerLabel: input.ownerLabel.trim() } : {},
3711
3711
  ...input.iconUrl?.trim() ? { iconUrl: input.iconUrl.trim() } : {},
3712
+ ...input.sidebarIconUrl?.trim() ? { sidebarIconUrl: input.sidebarIconUrl.trim() } : {},
3712
3713
  ...input.unavailableReason?.trim() ? { unavailableReason: input.unavailableReason.trim() } : {},
3713
3714
  ...input.disabled === true ? { disabled: true } : {}
3714
3715
  };
@@ -3810,6 +3811,7 @@ function normalizeAgentGUIAgentTarget(target) {
3810
3811
  badge,
3811
3812
  description,
3812
3813
  iconUrl,
3814
+ sidebarIconUrl,
3813
3815
  heroImageUrl,
3814
3816
  ownerLabel,
3815
3817
  unavailableReason,
@@ -3837,6 +3839,7 @@ function normalizeAgentGUIAgentTarget(target) {
3837
3839
  ...normalizedBadge ? { badge: normalizedBadge } : {},
3838
3840
  ...description?.trim() ? { description: description.trim() } : {},
3839
3841
  ...iconUrl?.trim() ? { iconUrl: iconUrl.trim() } : {},
3842
+ ...sidebarIconUrl?.trim() ? { sidebarIconUrl: sidebarIconUrl.trim() } : {},
3840
3843
  ...heroImageUrl?.trim() ? { heroImageUrl: heroImageUrl.trim() } : {},
3841
3844
  ...ownerLabel?.trim() ? { ownerLabel: ownerLabel.trim() } : {},
3842
3845
  ...unavailableReason?.trim() ? { unavailableReason: unavailableReason.trim() } : {}
@@ -14636,7 +14639,7 @@ var SPRING_SETTLE_VELOCITY = 0.02;
14636
14639
  var MAX_FRAME_DELTA_SECONDS = 0.032;
14637
14640
  var BADGE_CORNER_RADIUS = 0.5;
14638
14641
  var BADGE_DIAMETER = 0.36;
14639
- var BADGE_OFFSET = 0.4;
14642
+ var BADGE_OFFSET = 0.48;
14640
14643
  var MAX_PIXEL_RATIO = 2;
14641
14644
  var RECORD_SPIN_SECONDS = 10;
14642
14645
  var RECORD_MODEL_SCALE = 1.3;
@@ -23671,11 +23674,11 @@ import {
23671
23674
  TooltipTrigger as TooltipTrigger3
23672
23675
  } from "@tutti-os/ui-system";
23673
23676
 
23674
- // app/renderer/assets/icons/add-lined-bold.svg
23675
- var add_lined_bold_default = "data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M12%201.75C12.6904%201.75%2013.25%202.30964%2013.25%203V10.75H21C21.6904%2010.75%2022.25%2011.3096%2022.25%2012C22.25%2012.6904%2021.6904%2013.25%2021%2013.25H13.25V21C13.25%2021.6904%2012.6904%2022.25%2012%2022.25C11.3096%2022.25%2010.75%2021.6904%2010.75%2021V13.25H3C2.30964%2013.25%201.75%2012.6904%201.75%2012C1.75%2011.3096%202.30964%2010.75%203%2010.75H10.75V3C10.75%202.30964%2011.3096%201.75%2012%201.75Z%22%20fill%3D%22black%22%2F%3E%0A%3C%2Fsvg%3E%0A";
23677
+ // app/renderer/assets/icons/add-lined.svg
23678
+ var add_lined_default = "data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M12%202C12.5523%202%2013%202.44772%2013%203V11H21C21.5523%2011%2022%2011.4477%2022%2012C22%2012.5523%2021.5523%2013%2021%2013H13V21C13%2021.5523%2012.5523%2022%2012%2022C11.4477%2022%2011%2021.5523%2011%2021V13H3C2.44772%2013%202%2012.5523%202%2012C2%2011.4477%202.44772%2011%203%2011H11V3C11%202.44772%2011.4477%202%2012%202Z%22%20fill%3D%22black%22%2F%3E%0A%3C%2Fsvg%3E%0A";
23676
23679
 
23677
- // app/renderer/assets/icons/@-bold-lined.svg
23678
- var bold_lined_default = "data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cg%20clip-path%3D%22url(%23clip0_3781_26699)%22%3E%0A%3Cpath%20d%3D%22M7.23227%201.81049C9.52757%200.736535%2012.1185%200.468536%2014.5848%201.05073C17.0512%201.63299%2019.2485%203.03141%2020.8211%205.0185C22.3939%207.00572%2023.2498%209.46568%2023.2498%2011.9999V12.9999C23.2498%2014.1271%2022.8018%2015.2078%2022.0047%2016.0048C21.2077%2016.8018%2020.127%2017.2499%2018.9998%2017.2499C17.8727%2017.2499%2016.792%2016.8018%2015.995%2016.0048C15.8984%2015.9082%2015.8067%2015.8076%2015.7206%2015.7031C14.7698%2016.6583%2013.454%2017.2499%2011.9998%2017.2499C9.10043%2017.2499%206.74985%2014.8994%206.74985%2011.9999C6.74988%209.10053%209.10045%206.75003%2011.9998%206.74995C13.0401%206.74995%2014.0093%207.05327%2014.825%207.57514C14.999%207.09414%2015.4588%206.75001%2015.9998%206.74995C16.6902%206.74995%2017.2498%207.30962%2017.2498%207.99995V12.9999C17.2498%2013.464%2017.4344%2013.9091%2017.7625%2014.2372C18.0907%2014.5654%2018.5358%2014.7499%2018.9998%2014.7499C19.464%2014.7499%2019.909%2014.5654%2020.2372%2014.2372C20.5653%2013.9091%2020.7498%2013.4641%2020.7498%2012.9999V11.9999C20.7498%2010.029%2020.0843%208.11582%2018.8612%206.57026C17.638%205.0248%2015.9288%203.93724%2014.0106%203.48432C12.0923%203.03151%2010.0771%203.23983%208.29184%204.07514C6.50657%204.91055%205.05517%206.32388%204.17368%208.08686C3.29224%209.84974%203.03167%2011.8587%203.43442%2013.788C3.83728%2015.7175%204.88014%2017.4547%206.3934%2018.7177C7.90663%2019.9806%209.802%2020.6957%2011.7723%2020.747C13.7427%2020.7982%2015.673%2020.1826%2017.2498%2018.9999C17.8021%2018.5858%2018.5856%2018.6978%2018.9998%2019.2499C19.4141%2019.8022%2019.3021%2020.5857%2018.7498%2020.9999C16.7225%2022.5204%2014.2412%2023.3118%2011.7079%2023.246C9.17468%2023.1802%206.73743%2022.2612%204.79184%2020.6376C2.8463%2019.0139%201.50518%2016.7803%200.987154%2014.2997C0.469201%2011.819%200.804003%209.2354%201.93735%206.9687C3.0707%204.702%204.9369%202.88459%207.23227%201.81049ZM11.9998%209.24994C10.4812%209.25003%209.24988%2010.4812%209.24985%2011.9999C9.24985%2013.5187%2010.4811%2014.7499%2011.9998%2014.7499C13.5186%2014.7499%2014.7498%2013.5187%2014.7498%2011.9999C14.7498%2010.4812%2013.5186%209.24994%2011.9998%209.24994Z%22%20fill%3D%22black%22%2F%3E%0A%3C%2Fg%3E%0A%3Cdefs%3E%0A%3CclipPath%20id%3D%22clip0_3781_26699%22%3E%0A%3Crect%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22white%22%2F%3E%0A%3C%2FclipPath%3E%0A%3C%2Fdefs%3E%0A%3C%2Fsvg%3E%0A";
23680
+ // app/renderer/assets/icons/@-lined.svg
23681
+ var lined_default = "data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M7.33754%202.03697C9.58184%200.986806%2012.1154%200.724603%2014.527%201.29381C16.9386%201.8631%2019.0879%203.23075%2020.6257%205.17369C22.1632%207.11667%2022.9996%209.52209%2022.9997%2011.9999V12.9999C22.9997%2014.0607%2022.5779%2015.0778%2021.8278%2015.828C21.0777%2016.5781%2020.0605%2016.9999%2018.9997%2016.9999C17.9389%2016.9998%2016.9216%2016.578%2016.1715%2015.828C16.0122%2015.6687%2015.8687%2015.4966%2015.7399%2015.3153C14.8239%2016.3478%2013.4885%2016.9999%2011.9997%2016.9999C9.23839%2016.9997%206.99965%2014.7612%206.99965%2011.9999C6.99973%209.23862%209.23844%207.00005%2011.9997%206.99986C13.125%206.99986%2014.1641%207.37146%2014.9997%207.99888C15.0003%207.44723%2015.4479%207.00005%2015.9997%206.99986C16.5519%206.99986%2016.9996%207.44764%2016.9997%207.99986V12.9999C16.9997%2013.5302%2017.2107%2014.0389%2017.5856%2014.4139C17.9606%2014.7889%2018.4694%2014.9998%2018.9997%2014.9999C19.5301%2014.9999%2020.0387%2014.7889%2020.4137%2014.4139C20.7888%2014.0389%2020.9997%2013.5303%2020.9997%2012.9999V11.9999C20.9996%209.97263%2020.3153%208.00459%2019.0573%206.4149C17.7991%204.82524%2016.0401%203.70686%2014.067%203.24107C12.094%202.77546%2010.0213%202.98932%208.1852%203.84849C6.34918%204.70773%204.85649%206.1614%203.94984%207.97447C3.04319%209.78779%202.77575%2011.8551%203.19008%2013.8397C3.6045%2015.8241%204.67674%2017.6111%206.23305%2018.91C7.78948%2020.2089%209.73975%2020.9442%2011.7663%2020.9969C13.7928%2021.0495%2015.7783%2020.4163%2017.4001%2019.2001C17.8418%2018.8689%2018.4681%2018.9587%2018.7995%2019.4003C19.1307%2019.8421%2019.0411%2020.4683%2018.5993%2020.7997C16.617%2022.2863%2014.1905%2023.0603%2011.7135%2022.996C9.23674%2022.9314%206.85405%2022.0327%204.9518%2020.4452C3.04947%2018.8574%201.73851%2016.6735%201.23206%2014.2479C0.72574%2011.8225%201.05282%209.29706%202.16078%207.08092C3.26889%204.86469%205.09332%203.08721%207.33754%202.03697ZM11.9997%208.99986C10.343%209.00005%208.99973%2010.3432%208.99966%2011.9999C8.99966%2013.6566%2010.343%2014.9997%2011.9997%2014.9999C13.6565%2014.9999%2014.9997%2013.6567%2014.9997%2011.9999C14.9996%2010.3431%2013.6565%208.99986%2011.9997%208.99986Z%22%20fill%3D%22black%22%2F%3E%0A%3C%2Fsvg%3E%0A";
23679
23682
 
23680
23683
  // agent-gui/agentGuiNode/composer/handoffTargetPresentation.ts
23681
23684
  function resolveHandoffTargetOwnershipLabel(target, labels) {
@@ -23748,7 +23751,7 @@ function ComposerFooter({
23748
23751
  children: /* @__PURE__ */ jsx35(
23749
23752
  AgentComposerMaskIcon,
23750
23753
  {
23751
- iconUrl: add_lined_bold_default,
23754
+ iconUrl: add_lined_default,
23752
23755
  marker: "reference-add"
23753
23756
  }
23754
23757
  )
@@ -23785,7 +23788,7 @@ function ComposerFooter({
23785
23788
  children: /* @__PURE__ */ jsx35(
23786
23789
  AgentComposerMaskIcon,
23787
23790
  {
23788
- iconUrl: add_lined_bold_default,
23791
+ iconUrl: add_lined_default,
23789
23792
  marker: "reference-add"
23790
23793
  }
23791
23794
  )
@@ -23813,11 +23816,11 @@ function ComposerFooter({
23813
23816
  "aria-hidden": true,
23814
23817
  className: "inline-block size-3.5 bg-[var(--text-secondary)] transition-colors group-hover:bg-[var(--text-primary)] group-focus-visible:bg-[var(--text-primary)]",
23815
23818
  style: {
23816
- WebkitMaskImage: `url("${bold_lined_default}")`,
23819
+ WebkitMaskImage: `url("${lined_default}")`,
23817
23820
  WebkitMaskPosition: "center",
23818
23821
  WebkitMaskRepeat: "no-repeat",
23819
23822
  WebkitMaskSize: "contain",
23820
- maskImage: `url("${bold_lined_default}")`,
23823
+ maskImage: `url("${lined_default}")`,
23821
23824
  maskPosition: "center",
23822
23825
  maskRepeat: "no-repeat",
23823
23826
  maskSize: "contain"
@@ -26194,12 +26197,12 @@ function resolveAgentGUIHeroIconUrl2(provider) {
26194
26197
  const normalizedProvider = normalizeManagedAgentProvider(provider);
26195
26198
  return MANAGED_AGENT_ICON_URLS[normalizedProvider] ?? MANAGED_AGENT_ICON_FALLBACK_URL;
26196
26199
  }
26197
- function agentGUIProviderRailIconPresentation(provider, iconUrl) {
26200
+ function agentGUIProviderRailIconPresentation(provider, iconUrl, sidebarIconUrl) {
26198
26201
  const normalizedProvider = normalizeManagedAgentProvider(provider);
26199
26202
  const providerRailIconUrl = MANAGED_AGENT_PROVIDER_RAIL_ICON_URLS[normalizedProvider] ?? null;
26200
26203
  return {
26201
26204
  provider: normalizedProvider,
26202
- iconUrl: (normalizedProvider === "cursor" ? providerRailIconUrl : null) || iconUrl?.trim() || providerRailIconUrl || resolveAgentGUIHeroIconUrl2(normalizedProvider)
26205
+ iconUrl: (normalizedProvider === "cursor" ? providerRailIconUrl : null) || sidebarIconUrl?.trim() || iconUrl?.trim() || providerRailIconUrl || resolveAgentGUIHeroIconUrl2(normalizedProvider)
26203
26206
  };
26204
26207
  }
26205
26208
  function shouldEmphasizeEmptyHeroProvider(label) {
@@ -26637,7 +26640,8 @@ function EmptyHeroTitle({
26637
26640
  className: "size-4 shrink-0 rounded-[4px]",
26638
26641
  src: agentGUIProviderRailIconPresentation(
26639
26642
  target.provider,
26640
- target.iconUrl
26643
+ target.iconUrl,
26644
+ target.sidebarIconUrl
26641
26645
  ).iconUrl
26642
26646
  }
26643
26647
  ),
@@ -27033,7 +27037,8 @@ function AgentGUIProviderManagerDialog({
27033
27037
  ariaHidden: true,
27034
27038
  icon: agentGUIProviderRailIconPresentation(
27035
27039
  target.provider,
27036
- target.iconUrl
27040
+ target.iconUrl,
27041
+ target.sidebarIconUrl
27037
27042
  ),
27038
27043
  imageClassName: "size-9 shrink-0 rounded-[9px] object-cover"
27039
27044
  }
@@ -27149,7 +27154,8 @@ function AgentGUIProviderManagerDialog({
27149
27154
  ariaHidden: true,
27150
27155
  icon: agentGUIProviderRailIconPresentation(
27151
27156
  target.provider,
27152
- target.iconUrl
27157
+ target.iconUrl,
27158
+ target.sidebarIconUrl
27153
27159
  ),
27154
27160
  imageClassName: "size-9 shrink-0 rounded-[9px] object-cover opacity-70 grayscale-[0.25]"
27155
27161
  }
@@ -27747,7 +27753,8 @@ var AgentGUIProviderRail = memo4(function AgentGUIProviderRail2({
27747
27753
  imageClassName: AgentGUINode_styles_default.providerRailAvatarImage,
27748
27754
  icon: agentGUIProviderRailIconPresentation(
27749
27755
  target.provider,
27750
- target.iconUrl
27756
+ target.iconUrl,
27757
+ target.sidebarIconUrl
27751
27758
  )
27752
27759
  }
27753
27760
  ),
@@ -28803,6 +28810,9 @@ function PinLinedIcon(props) {
28803
28810
  );
28804
28811
  }
28805
28812
 
28813
+ // agent-gui/agentGuiNode/view/AgentGUIConversationRailClock.tsx
28814
+ import { useExternalStoreSnapshot as useExternalStoreSnapshot2 } from "@tutti-os/ui-react-hooks";
28815
+
28806
28816
  // agent-gui/agentGuiNode/agentGuiNodeViewConversation.tsx
28807
28817
  import { Spinner as Spinner5 } from "@tutti-os/ui-system";
28808
28818
  import { AskLinedIcon } from "@tutti-os/ui-system/icons";
@@ -28950,8 +28960,52 @@ function AttentionGlyph() {
28950
28960
  );
28951
28961
  }
28952
28962
 
28963
+ // agent-gui/agentGuiNode/view/AgentGUIConversationRailClock.tsx
28964
+ import { jsx as jsx51 } from "react/jsx-runtime";
28965
+ var AgentGUIConversationRailClockStore = class {
28966
+ currentTimeMs = Date.now();
28967
+ listeners = /* @__PURE__ */ new Set();
28968
+ timer = null;
28969
+ getSnapshot = () => this.currentTimeMs;
28970
+ subscribe = (listener) => {
28971
+ this.listeners.add(listener);
28972
+ if (this.listeners.size === 1) {
28973
+ this.start();
28974
+ }
28975
+ return () => {
28976
+ this.listeners.delete(listener);
28977
+ if (this.listeners.size === 0) {
28978
+ this.stop();
28979
+ }
28980
+ };
28981
+ };
28982
+ start() {
28983
+ this.currentTimeMs = Date.now();
28984
+ this.timer = window.setInterval(() => {
28985
+ this.currentTimeMs = Date.now();
28986
+ for (const listener of this.listeners) {
28987
+ listener();
28988
+ }
28989
+ }, 6e4);
28990
+ }
28991
+ stop() {
28992
+ if (this.timer !== null) {
28993
+ window.clearInterval(this.timer);
28994
+ this.timer = null;
28995
+ }
28996
+ }
28997
+ };
28998
+ var agentGUIConversationRailClock = new AgentGUIConversationRailClockStore();
28999
+ function AgentGUIConversationRailRelativeTime({
29000
+ item,
29001
+ labels
29002
+ }) {
29003
+ const currentTimeMs = useExternalStoreSnapshot2(agentGUIConversationRailClock);
29004
+ return /* @__PURE__ */ jsx51(ConversationMeta, { item, nowMs: currentTimeMs, labels });
29005
+ }
29006
+
28953
29007
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailItem.tsx
28954
- import { Fragment as Fragment14, jsx as jsx51, jsxs as jsxs36 } from "react/jsx-runtime";
29008
+ import { Fragment as Fragment14, jsx as jsx52, jsxs as jsxs36 } from "react/jsx-runtime";
28955
29009
  function agentGUIConversationIconUrl(provider, agentTargetId, workspaceId, agentTargets) {
28956
29010
  const targetPresentation = resolveAgentTargetPresentation({
28957
29011
  agentTargetId: agentTargetId ?? "",
@@ -28971,7 +29025,6 @@ var AgentGUIConversationRailItem = memo5(
28971
29025
  isPendingDeleteConversation,
28972
29026
  isDeletingConversation,
28973
29027
  isRailInteractionLocked,
28974
- currentTimeMs,
28975
29028
  labels,
28976
29029
  previewMode,
28977
29030
  uiLanguage,
@@ -29143,7 +29196,7 @@ var AgentGUIConversationRailItem = memo5(
29143
29196
  },
29144
29197
  children: [
29145
29198
  /* @__PURE__ */ jsxs36("span", { className: AgentGUINode_styles_default.conversationTitleRow, children: [
29146
- conversationIconUrl ? /* @__PURE__ */ jsx51(
29199
+ conversationIconUrl ? /* @__PURE__ */ jsx52(
29147
29200
  "span",
29148
29201
  {
29149
29202
  "aria-hidden": "true",
@@ -29153,22 +29206,22 @@ var AgentGUIConversationRailItem = memo5(
29153
29206
  }
29154
29207
  }
29155
29208
  ) : null,
29156
- item.titleLeadingMentionKind === "task" ? /* @__PURE__ */ jsx51(
29209
+ item.titleLeadingMentionKind === "task" ? /* @__PURE__ */ jsx52(
29157
29210
  "span",
29158
29211
  {
29159
29212
  "aria-hidden": "true",
29160
29213
  className: AgentGUINode_styles_default.conversationTitleMentionIcon,
29161
29214
  "data-agent-gui-conversation-title-mention-icon": item.titleLeadingMentionKind,
29162
- children: /* @__PURE__ */ jsx51(IssueIcon, {})
29215
+ children: /* @__PURE__ */ jsx52(IssueIcon, {})
29163
29216
  }
29164
29217
  ) : null,
29165
- /* @__PURE__ */ jsx51("span", { className: AgentGUINode_styles_default.conversationTitle, children: agentGUIConversationRailTitle(item, labels, uiLanguage) })
29218
+ /* @__PURE__ */ jsx52("span", { className: AgentGUINode_styles_default.conversationTitle, children: agentGUIConversationRailTitle(item, labels, uiLanguage) })
29166
29219
  ] }),
29167
- /* @__PURE__ */ jsx51(ConversationMeta, { item, nowMs: currentTimeMs, labels })
29220
+ /* @__PURE__ */ jsx52(AgentGUIConversationRailRelativeTime, { item, labels })
29168
29221
  ]
29169
29222
  }
29170
29223
  ),
29171
- previewMode ? null : /* @__PURE__ */ jsx51("div", { className: AgentGUINode_styles_default.conversationActions, children: isPendingDeleteConversation ? /* @__PURE__ */ jsx51(
29224
+ previewMode ? null : /* @__PURE__ */ jsx52("div", { className: AgentGUINode_styles_default.conversationActions, children: isPendingDeleteConversation ? /* @__PURE__ */ jsx52(
29172
29225
  "button",
29173
29226
  {
29174
29227
  type: "button",
@@ -29182,10 +29235,10 @@ var AgentGUIConversationRailItem = memo5(
29182
29235
  onConfirmDeleteConversation();
29183
29236
  }
29184
29237
  },
29185
- children: /* @__PURE__ */ jsx51("span", { className: AgentGUINode_styles_default.conversationDeleteConfirmText, children: labels.deleteSessionConfirm })
29238
+ children: /* @__PURE__ */ jsx52("span", { className: AgentGUINode_styles_default.conversationDeleteConfirmText, children: labels.deleteSessionConfirm })
29186
29239
  }
29187
29240
  ) : /* @__PURE__ */ jsxs36(Fragment14, { children: [
29188
- onOpenConversationWindow ? /* @__PURE__ */ jsx51(
29241
+ onOpenConversationWindow ? /* @__PURE__ */ jsx52(
29189
29242
  BareIconButton,
29190
29243
  {
29191
29244
  className: AgentGUINode_styles_default.conversationOpenWindowButton,
@@ -29202,10 +29255,10 @@ var AgentGUIConversationRailItem = memo5(
29202
29255
  event.stopPropagation();
29203
29256
  handleOpenConversationWindow();
29204
29257
  },
29205
- children: /* @__PURE__ */ jsx51(ExternalLink2, { "aria-hidden": "true" })
29258
+ children: /* @__PURE__ */ jsx52(ExternalLink2, { "aria-hidden": "true" })
29206
29259
  }
29207
29260
  ) : null,
29208
- /* @__PURE__ */ jsx51(
29261
+ /* @__PURE__ */ jsx52(
29209
29262
  BareIconButton,
29210
29263
  {
29211
29264
  className: AgentGUINode_styles_default.conversationPinButton,
@@ -29222,10 +29275,10 @@ var AgentGUIConversationRailItem = memo5(
29222
29275
  event.stopPropagation();
29223
29276
  handleTogglePinned();
29224
29277
  },
29225
- children: pinned ? /* @__PURE__ */ jsx51(PinFilledIcon, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx51(PinLinedIcon, { "aria-hidden": "true" })
29278
+ children: pinned ? /* @__PURE__ */ jsx52(PinFilledIcon, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx52(PinLinedIcon, { "aria-hidden": "true" })
29226
29279
  }
29227
29280
  ),
29228
- /* @__PURE__ */ jsx51(
29281
+ /* @__PURE__ */ jsx52(
29229
29282
  BareIconButton,
29230
29283
  {
29231
29284
  className: AgentGUINode_styles_default.conversationDeleteButton,
@@ -29242,7 +29295,7 @@ var AgentGUIConversationRailItem = memo5(
29242
29295
  event.stopPropagation();
29243
29296
  handleRequestDelete();
29244
29297
  },
29245
- children: /* @__PURE__ */ jsx51(CanvasNodeTrashLinedIcon, { "aria-hidden": "true" })
29298
+ children: /* @__PURE__ */ jsx52(CanvasNodeTrashLinedIcon, { "aria-hidden": "true" })
29246
29299
  }
29247
29300
  )
29248
29301
  ] }) })
@@ -29253,13 +29306,13 @@ var AgentGUIConversationRailItem = memo5(
29253
29306
  return row;
29254
29307
  }
29255
29308
  return /* @__PURE__ */ jsxs36(ContextMenu, { children: [
29256
- /* @__PURE__ */ jsx51(ContextMenuTrigger, { asChild: true, children: row }),
29309
+ /* @__PURE__ */ jsx52(ContextMenuTrigger, { asChild: true, children: row }),
29257
29310
  /* @__PURE__ */ jsxs36(
29258
29311
  ContextMenuContent,
29259
29312
  {
29260
29313
  className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
29261
29314
  children: [
29262
- /* @__PURE__ */ jsx51(
29315
+ /* @__PURE__ */ jsx52(
29263
29316
  ContextMenuItem,
29264
29317
  {
29265
29318
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -29270,10 +29323,10 @@ var AgentGUIConversationRailItem = memo5(
29270
29323
  }
29271
29324
  },
29272
29325
  onSelect: handleContextMenuRename,
29273
- children: /* @__PURE__ */ jsx51("span", { children: labels.renameSession })
29326
+ children: /* @__PURE__ */ jsx52("span", { children: labels.renameSession })
29274
29327
  }
29275
29328
  ),
29276
- onOpenConversationWindow ? /* @__PURE__ */ jsx51(
29329
+ onOpenConversationWindow ? /* @__PURE__ */ jsx52(
29277
29330
  ContextMenuItem,
29278
29331
  {
29279
29332
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -29284,10 +29337,10 @@ var AgentGUIConversationRailItem = memo5(
29284
29337
  }
29285
29338
  },
29286
29339
  onSelect: handleContextMenuOpenConversationWindow,
29287
- children: /* @__PURE__ */ jsx51("span", { children: labels.openConversationWindow })
29340
+ children: /* @__PURE__ */ jsx52("span", { children: labels.openConversationWindow })
29288
29341
  }
29289
29342
  ) : null,
29290
- /* @__PURE__ */ jsx51(
29343
+ /* @__PURE__ */ jsx52(
29291
29344
  ContextMenuItem,
29292
29345
  {
29293
29346
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -29298,16 +29351,16 @@ var AgentGUIConversationRailItem = memo5(
29298
29351
  }
29299
29352
  },
29300
29353
  onSelect: handleContextMenuCopySessionLink,
29301
- children: /* @__PURE__ */ jsx51("span", { children: labels.copySessionLink })
29354
+ children: /* @__PURE__ */ jsx52("span", { children: labels.copySessionLink })
29302
29355
  }
29303
29356
  ),
29304
- /* @__PURE__ */ jsx51(
29357
+ /* @__PURE__ */ jsx52(
29305
29358
  ContextMenuItem,
29306
29359
  {
29307
29360
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
29308
29361
  disabled: !canMarkUnread,
29309
29362
  onSelect: handleMarkUnread,
29310
- children: /* @__PURE__ */ jsx51("span", { children: labels.markSessionUnread })
29363
+ children: /* @__PURE__ */ jsx52("span", { children: labels.markSessionUnread })
29311
29364
  }
29312
29365
  )
29313
29366
  ]
@@ -29336,9 +29389,9 @@ function AgentGUIProjectRailHeader({
29336
29389
  ]
29337
29390
  );
29338
29391
  return /* @__PURE__ */ jsxs36("div", { className: AgentGUINode_styles_default.projectRailHeader, children: [
29339
- /* @__PURE__ */ jsx51("div", { className: AgentGUINode_styles_default.projectRailTitle, children: /* @__PURE__ */ jsx51("span", { children: workspaceUserProjectI18n.tFirst(["projectSelect.projectLabel"]) }) }),
29392
+ /* @__PURE__ */ jsx52("div", { className: AgentGUINode_styles_default.projectRailTitle, children: /* @__PURE__ */ jsx52("span", { children: workspaceUserProjectI18n.tFirst(["projectSelect.projectLabel"]) }) }),
29340
29393
  /* @__PURE__ */ jsxs36("div", { className: AgentGUINode_styles_default.projectRailAddProject, children: [
29341
- /* @__PURE__ */ jsx51(
29394
+ /* @__PURE__ */ jsx52(
29342
29395
  WorkspaceUserProjectSelect2,
29343
29396
  {
29344
29397
  api: userProjectApi,
@@ -29369,7 +29422,7 @@ function AgentGUIProjectRailHeader({
29369
29422
  "projectSelect.addProject"
29370
29423
  ])
29371
29424
  },
29372
- renderAddProjectIcon: () => /* @__PURE__ */ jsx51(
29425
+ renderAddProjectIcon: () => /* @__PURE__ */ jsx52(
29373
29426
  NewWorkspaceLinedIcon2,
29374
29427
  {
29375
29428
  "aria-hidden": true,
@@ -29387,7 +29440,7 @@ function AgentGUIProjectRailHeader({
29387
29440
  }
29388
29441
  }
29389
29442
  ),
29390
- /* @__PURE__ */ jsx51(
29443
+ /* @__PURE__ */ jsx52(
29391
29444
  NewWorkspaceLinedIcon2,
29392
29445
  {
29393
29446
  "aria-hidden": true,
@@ -29399,7 +29452,7 @@ function AgentGUIProjectRailHeader({
29399
29452
  }
29400
29453
 
29401
29454
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailSection.tsx
29402
- import { jsx as jsx52, jsxs as jsxs37 } from "react/jsx-runtime";
29455
+ import { jsx as jsx53, jsxs as jsxs37 } from "react/jsx-runtime";
29403
29456
  var AgentGUIConversationRailSection = memo6(
29404
29457
  function AgentGUIConversationRailSection2({
29405
29458
  section,
@@ -29425,7 +29478,6 @@ var AgentGUIConversationRailSection = memo6(
29425
29478
  sectionTotalCount,
29426
29479
  visibleItemLimit,
29427
29480
  createConversationDisabled,
29428
- currentTimeMs,
29429
29481
  labels,
29430
29482
  uiLanguage,
29431
29483
  workspaceId,
@@ -29572,7 +29624,7 @@ var AgentGUIConversationRailSection = memo6(
29572
29624
  }
29573
29625
  },
29574
29626
  children: [
29575
- /* @__PURE__ */ jsx52(
29627
+ /* @__PURE__ */ jsx53(
29576
29628
  ChevronRight2,
29577
29629
  {
29578
29630
  "aria-hidden": "true",
@@ -29580,14 +29632,14 @@ var AgentGUIConversationRailSection = memo6(
29580
29632
  }
29581
29633
  ),
29582
29634
  /* @__PURE__ */ jsxs37("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: [
29583
- isSectionCollapsed ? /* @__PURE__ */ jsx52(
29635
+ isSectionCollapsed ? /* @__PURE__ */ jsx53(
29584
29636
  FolderIcon2,
29585
29637
  {
29586
29638
  "aria-hidden": "true",
29587
29639
  className: AgentGUINode_styles_default.conversationSectionLabelIcon,
29588
29640
  "data-project-drag-icon": "true"
29589
29641
  }
29590
- ) : /* @__PURE__ */ jsx52(
29642
+ ) : /* @__PURE__ */ jsx53(
29591
29643
  FolderOpenLinedIcon,
29592
29644
  {
29593
29645
  "aria-hidden": "true",
@@ -29595,18 +29647,18 @@ var AgentGUIConversationRailSection = memo6(
29595
29647
  "data-project-drag-icon": "true"
29596
29648
  }
29597
29649
  ),
29598
- /* @__PURE__ */ jsx52("span", { children: section.label })
29650
+ /* @__PURE__ */ jsx53("span", { children: section.label })
29599
29651
  ] })
29600
29652
  ]
29601
29653
  }
29602
- ) : /* @__PURE__ */ jsx52("div", { className: AgentGUINode_styles_default.conversationSectionToggle, children: /* @__PURE__ */ jsx52("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: /* @__PURE__ */ jsx52("span", { children: section.label }) }) }),
29654
+ ) : /* @__PURE__ */ jsx53("div", { className: AgentGUINode_styles_default.conversationSectionToggle, children: /* @__PURE__ */ jsx53("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: /* @__PURE__ */ jsx53("span", { children: section.label }) }) }),
29603
29655
  canCreateConversationFromSection ? /* @__PURE__ */ jsxs37(
29604
29656
  "div",
29605
29657
  {
29606
29658
  className: AgentGUINode_styles_default.conversationSectionActions,
29607
29659
  "data-project-drag-block": "true",
29608
29660
  children: [
29609
- previewMode ? /* @__PURE__ */ jsx52("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx52(
29661
+ previewMode ? /* @__PURE__ */ jsx53("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx53(
29610
29662
  BareIconButton2,
29611
29663
  {
29612
29664
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
@@ -29614,14 +29666,14 @@ var AgentGUIConversationRailSection = memo6(
29614
29666
  size: "sm",
29615
29667
  disabled: createConversationDisabled,
29616
29668
  onClick: handleCreateConversation,
29617
- children: /* @__PURE__ */ jsx52(CreateChatIcon, { "aria-hidden": "true" })
29669
+ children: /* @__PURE__ */ jsx53(CreateChatIcon, { "aria-hidden": "true" })
29618
29670
  }
29619
29671
  ) }) : /* @__PURE__ */ jsxs37(Tooltip6, { children: [
29620
- /* @__PURE__ */ jsx52(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx52(
29672
+ /* @__PURE__ */ jsx53(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx53(
29621
29673
  "span",
29622
29674
  {
29623
29675
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
29624
- children: /* @__PURE__ */ jsx52(
29676
+ children: /* @__PURE__ */ jsx53(
29625
29677
  BareIconButton2,
29626
29678
  {
29627
29679
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
@@ -29629,12 +29681,12 @@ var AgentGUIConversationRailSection = memo6(
29629
29681
  size: "sm",
29630
29682
  disabled: createConversationDisabled,
29631
29683
  onClick: handleCreateConversation,
29632
- children: /* @__PURE__ */ jsx52(CreateChatIcon, { "aria-hidden": "true" })
29684
+ children: /* @__PURE__ */ jsx53(CreateChatIcon, { "aria-hidden": "true" })
29633
29685
  }
29634
29686
  )
29635
29687
  }
29636
29688
  ) }),
29637
- /* @__PURE__ */ jsx52(
29689
+ /* @__PURE__ */ jsx53(
29638
29690
  TooltipContent6,
29639
29691
  {
29640
29692
  side: "top",
@@ -29645,39 +29697,39 @@ var AgentGUIConversationRailSection = memo6(
29645
29697
  )
29646
29698
  ] }),
29647
29699
  projectPath ? /* @__PURE__ */ jsxs37(DropdownMenu4, { onOpenChange: handleProjectMenuOpenChange, children: [
29648
- previewMode ? /* @__PURE__ */ jsx52(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx52(
29700
+ previewMode ? /* @__PURE__ */ jsx53(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx53(
29649
29701
  "span",
29650
29702
  {
29651
29703
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
29652
- children: /* @__PURE__ */ jsx52(
29704
+ children: /* @__PURE__ */ jsx53(
29653
29705
  BareIconButton2,
29654
29706
  {
29655
29707
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
29656
29708
  "aria-label": labels.projectSectionMoreActions,
29657
29709
  size: "sm",
29658
29710
  disabled: isProjectActionLocked(),
29659
- children: /* @__PURE__ */ jsx52(MoreHorizontalIcon, { "aria-hidden": "true" })
29711
+ children: /* @__PURE__ */ jsx53(MoreHorizontalIcon, { "aria-hidden": "true" })
29660
29712
  }
29661
29713
  )
29662
29714
  }
29663
29715
  ) }) : /* @__PURE__ */ jsxs37(Tooltip6, { children: [
29664
- /* @__PURE__ */ jsx52(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx52(
29716
+ /* @__PURE__ */ jsx53(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx53(
29665
29717
  "span",
29666
29718
  {
29667
29719
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
29668
- children: /* @__PURE__ */ jsx52(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx52(
29720
+ children: /* @__PURE__ */ jsx53(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx53(
29669
29721
  BareIconButton2,
29670
29722
  {
29671
29723
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
29672
29724
  "aria-label": labels.projectSectionMoreActions,
29673
29725
  size: "sm",
29674
29726
  disabled: isProjectActionLocked(),
29675
- children: /* @__PURE__ */ jsx52(MoreHorizontalIcon, { "aria-hidden": "true" })
29727
+ children: /* @__PURE__ */ jsx53(MoreHorizontalIcon, { "aria-hidden": "true" })
29676
29728
  }
29677
29729
  ) })
29678
29730
  }
29679
29731
  ) }),
29680
- /* @__PURE__ */ jsx52(
29732
+ /* @__PURE__ */ jsx53(
29681
29733
  TooltipContent6,
29682
29734
  {
29683
29735
  side: "right",
@@ -29694,7 +29746,7 @@ var AgentGUIConversationRailSection = memo6(
29694
29746
  className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
29695
29747
  sideOffset: 6,
29696
29748
  children: [
29697
- /* @__PURE__ */ jsx52(
29749
+ /* @__PURE__ */ jsx53(
29698
29750
  DropdownMenuItem3,
29699
29751
  {
29700
29752
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -29710,10 +29762,10 @@ var AgentGUIConversationRailSection = memo6(
29710
29762
  workspaceRoot: projectPath
29711
29763
  });
29712
29764
  },
29713
- children: /* @__PURE__ */ jsx52("span", { children: labels.projectSectionViewFiles })
29765
+ children: /* @__PURE__ */ jsx53("span", { children: labels.projectSectionViewFiles })
29714
29766
  }
29715
29767
  ),
29716
- /* @__PURE__ */ jsx52(
29768
+ /* @__PURE__ */ jsx53(
29717
29769
  DropdownMenuItem3,
29718
29770
  {
29719
29771
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -29722,10 +29774,10 @@ var AgentGUIConversationRailSection = memo6(
29722
29774
  if (!projectId || isProjectActionLocked()) return;
29723
29775
  void onToggleProjectPinned(projectId, !projectPinned);
29724
29776
  },
29725
- children: /* @__PURE__ */ jsx52("span", { children: projectPinned ? labels.unpinProject : labels.pinProject })
29777
+ children: /* @__PURE__ */ jsx53("span", { children: projectPinned ? labels.unpinProject : labels.pinProject })
29726
29778
  }
29727
29779
  ),
29728
- /* @__PURE__ */ jsx52(
29780
+ /* @__PURE__ */ jsx53(
29729
29781
  DropdownMenuItem3,
29730
29782
  {
29731
29783
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -29735,10 +29787,10 @@ var AgentGUIConversationRailSection = memo6(
29735
29787
  onRequestSectionBatchDeletion(section);
29736
29788
  }
29737
29789
  },
29738
- children: /* @__PURE__ */ jsx52("span", { children: labels.batchDeleteProjectSessions })
29790
+ children: /* @__PURE__ */ jsx53("span", { children: labels.batchDeleteProjectSessions })
29739
29791
  }
29740
29792
  ),
29741
- /* @__PURE__ */ jsx52(
29793
+ /* @__PURE__ */ jsx53(
29742
29794
  DropdownMenuItem3,
29743
29795
  {
29744
29796
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -29752,7 +29804,7 @@ var AgentGUIConversationRailSection = memo6(
29752
29804
  path: projectPath
29753
29805
  });
29754
29806
  },
29755
- children: /* @__PURE__ */ jsx52("span", { children: labels.removeProject })
29807
+ children: /* @__PURE__ */ jsx53("span", { children: labels.removeProject })
29756
29808
  }
29757
29809
  )
29758
29810
  ]
@@ -29760,37 +29812,37 @@ var AgentGUIConversationRailSection = memo6(
29760
29812
  )
29761
29813
  ] }) : null,
29762
29814
  !projectPath && section.kind === "conversations" ? /* @__PURE__ */ jsxs37(DropdownMenu4, { children: [
29763
- previewMode ? /* @__PURE__ */ jsx52(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx52(
29815
+ previewMode ? /* @__PURE__ */ jsx53(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx53(
29764
29816
  "span",
29765
29817
  {
29766
29818
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
29767
- children: /* @__PURE__ */ jsx52(
29819
+ children: /* @__PURE__ */ jsx53(
29768
29820
  BareIconButton2,
29769
29821
  {
29770
29822
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
29771
29823
  "aria-label": labels.conversationsSectionMoreActions,
29772
29824
  size: "sm",
29773
- children: /* @__PURE__ */ jsx52(MoreHorizontalIcon, { "aria-hidden": "true" })
29825
+ children: /* @__PURE__ */ jsx53(MoreHorizontalIcon, { "aria-hidden": "true" })
29774
29826
  }
29775
29827
  )
29776
29828
  }
29777
29829
  ) }) : /* @__PURE__ */ jsxs37(Tooltip6, { children: [
29778
- /* @__PURE__ */ jsx52(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx52(
29830
+ /* @__PURE__ */ jsx53(TooltipTrigger6, { asChild: true, children: /* @__PURE__ */ jsx53(
29779
29831
  "span",
29780
29832
  {
29781
29833
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
29782
- children: /* @__PURE__ */ jsx52(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx52(
29834
+ children: /* @__PURE__ */ jsx53(DropdownMenuTrigger4, { asChild: true, children: /* @__PURE__ */ jsx53(
29783
29835
  BareIconButton2,
29784
29836
  {
29785
29837
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
29786
29838
  "aria-label": labels.conversationsSectionMoreActions,
29787
29839
  size: "sm",
29788
- children: /* @__PURE__ */ jsx52(MoreHorizontalIcon, { "aria-hidden": "true" })
29840
+ children: /* @__PURE__ */ jsx53(MoreHorizontalIcon, { "aria-hidden": "true" })
29789
29841
  }
29790
29842
  ) })
29791
29843
  }
29792
29844
  ) }),
29793
- /* @__PURE__ */ jsx52(
29845
+ /* @__PURE__ */ jsx53(
29794
29846
  TooltipContent6,
29795
29847
  {
29796
29848
  side: "right",
@@ -29800,13 +29852,13 @@ var AgentGUIConversationRailSection = memo6(
29800
29852
  }
29801
29853
  )
29802
29854
  ] }),
29803
- /* @__PURE__ */ jsx52(
29855
+ /* @__PURE__ */ jsx53(
29804
29856
  DropdownMenuContent4,
29805
29857
  {
29806
29858
  align: "end",
29807
29859
  className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
29808
29860
  sideOffset: 6,
29809
- children: /* @__PURE__ */ jsx52(
29861
+ children: /* @__PURE__ */ jsx53(
29810
29862
  DropdownMenuItem3,
29811
29863
  {
29812
29864
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -29816,7 +29868,7 @@ var AgentGUIConversationRailSection = memo6(
29816
29868
  onRequestSectionBatchDeletion(section);
29817
29869
  }
29818
29870
  },
29819
- children: /* @__PURE__ */ jsx52("span", { children: labels.batchDeleteConversations })
29871
+ children: /* @__PURE__ */ jsx53("span", { children: labels.batchDeleteConversations })
29820
29872
  }
29821
29873
  )
29822
29874
  }
@@ -29828,18 +29880,17 @@ var AgentGUIConversationRailSection = memo6(
29828
29880
  ]
29829
29881
  }
29830
29882
  ),
29831
- /* @__PURE__ */ jsx52(
29883
+ /* @__PURE__ */ jsx53(
29832
29884
  "div",
29833
29885
  {
29834
29886
  className: AgentGUINode_styles_default.conversationSectionItems,
29835
29887
  "aria-hidden": isSectionCollapsed ? "true" : void 0,
29836
29888
  children: /* @__PURE__ */ jsxs37("div", { className: AgentGUINode_styles_default.conversationSectionItemsInner, children: [
29837
- !isSectionCollapsed && visibleItems.length === 0 ? /* @__PURE__ */ jsx52("div", { className: AgentGUINode_styles_default.conversationSectionEmpty, children: labels.emptyProjectConversations }) : null,
29838
- visibleItems.map((item) => /* @__PURE__ */ jsx52(
29889
+ !isSectionCollapsed && visibleItems.length === 0 ? /* @__PURE__ */ jsx53("div", { className: AgentGUINode_styles_default.conversationSectionEmpty, children: labels.emptyProjectConversations }) : null,
29890
+ visibleItems.map((item) => /* @__PURE__ */ jsx53(
29839
29891
  AgentGUIConversationRailItem,
29840
29892
  {
29841
29893
  active: item.id === activeConversationId,
29842
- currentTimeMs,
29843
29894
  isDeletingConversation,
29844
29895
  isPendingDeleteConversation: pendingDeleteConversationId === item.id,
29845
29896
  isRailInteractionLocked,
@@ -29861,7 +29912,7 @@ var AgentGUIConversationRailSection = memo6(
29861
29912
  item.id
29862
29913
  )),
29863
29914
  canShowMore || canShowLess ? /* @__PURE__ */ jsxs37("div", { className: AgentGUINode_styles_default.conversationSectionPagination, children: [
29864
- canShowMore ? /* @__PURE__ */ jsx52(
29915
+ canShowMore ? /* @__PURE__ */ jsx53(
29865
29916
  "button",
29866
29917
  {
29867
29918
  type: "button",
@@ -29871,7 +29922,7 @@ var AgentGUIConversationRailSection = memo6(
29871
29922
  children: labels.showMoreConversations
29872
29923
  }
29873
29924
  ) : null,
29874
- canShowLess ? /* @__PURE__ */ jsx52(
29925
+ canShowLess ? /* @__PURE__ */ jsx53(
29875
29926
  "button",
29876
29927
  {
29877
29928
  type: "button",
@@ -29892,11 +29943,11 @@ var AgentGUIConversationRailSection = memo6(
29892
29943
 
29893
29944
  // agent-gui/agentGuiNode/view/AgentGUIProjectActionConfirmationDialog.tsx
29894
29945
  import { ConfirmationDialog as ConfirmationDialog2 } from "@tutti-os/ui-system";
29895
- import { jsx as jsx53 } from "react/jsx-runtime";
29946
+ import { jsx as jsx54 } from "react/jsx-runtime";
29896
29947
  var DIALOG_CLASS_NAME = "nodrag tsh-desktop-no-drag [-webkit-app-region:no-drag]";
29897
29948
  function AgentGUIProjectActionConfirmationDialog(props) {
29898
29949
  const { action, labels } = props;
29899
- return /* @__PURE__ */ jsx53(
29950
+ return /* @__PURE__ */ jsx54(
29900
29951
  ConfirmationDialog2,
29901
29952
  {
29902
29953
  cancelLabel: labels.cancel,
@@ -30096,7 +30147,7 @@ function useAgentGUIProjectMenuState(isRailInteractionLocked, isUserProjectMutat
30096
30147
  }
30097
30148
 
30098
30149
  // agent-gui/agentGuiNode/view/AgentGUIConversationRailPane.tsx
30099
- import { jsx as jsx54, jsxs as jsxs38 } from "react/jsx-runtime";
30150
+ import { jsx as jsx55, jsxs as jsxs38 } from "react/jsx-runtime";
30100
30151
  function useDelayedBoolean(value, delayMs) {
30101
30152
  const [delayedValue, setDelayedValue] = useState28(false);
30102
30153
  useEffect29(() => {
@@ -30152,7 +30203,6 @@ var AgentGUIConversationRailPane = memo7(
30152
30203
  onConversationQueryChange
30153
30204
  }) {
30154
30205
  "use memo";
30155
- const [currentTimeMs, setCurrentTimeMs] = useState28(() => Date.now());
30156
30206
  const [pendingProjectAction, setPendingProjectAction] = useState28(null);
30157
30207
  const [isRequestingBatchDeletion, setIsRequestingBatchDeletion] = useState28(false);
30158
30208
  const { railSearch } = railQuery;
@@ -30389,14 +30439,7 @@ var AgentGUIConversationRailPane = memo7(
30389
30439
  });
30390
30440
  const projectDragLocked = projectDragBaseLocked || isProjectMovePending;
30391
30441
  useEffect29(() => {
30392
- const cleanupProjectDrag = installProjectDragGlobalListeners();
30393
- const timer = window.setInterval(() => {
30394
- setCurrentTimeMs(Date.now());
30395
- }, 6e4);
30396
- return () => {
30397
- window.clearInterval(timer);
30398
- cleanupProjectDrag();
30399
- };
30442
+ return installProjectDragGlobalListeners();
30400
30443
  }, [installProjectDragGlobalListeners]);
30401
30444
  return /* @__PURE__ */ jsxs38(
30402
30445
  "aside",
@@ -30406,7 +30449,7 @@ var AgentGUIConversationRailPane = memo7(
30406
30449
  "aria-hidden": isCollapsed ? "true" : void 0,
30407
30450
  children: [
30408
30451
  /* @__PURE__ */ jsxs38("div", { className: AgentGUINode_styles_default.railToolbar, children: [
30409
- /* @__PURE__ */ jsx54(
30452
+ /* @__PURE__ */ jsx55(
30410
30453
  TaskSearchField,
30411
30454
  {
30412
30455
  value: conversationQuery,
@@ -30425,27 +30468,27 @@ var AgentGUIConversationRailPane = memo7(
30425
30468
  disabled: createConversationDisabled,
30426
30469
  onClick: () => onCreateConversation(),
30427
30470
  children: [
30428
- /* @__PURE__ */ jsx54(CreateChatIcon2, { "aria-hidden": "true" }),
30429
- /* @__PURE__ */ jsx54("span", { children: labels.newConversation })
30471
+ /* @__PURE__ */ jsx55(CreateChatIcon2, { "aria-hidden": "true" }),
30472
+ /* @__PURE__ */ jsx55("span", { children: labels.newConversation })
30430
30473
  ]
30431
30474
  }
30432
30475
  )
30433
30476
  ] }),
30434
- /* @__PURE__ */ jsx54(
30477
+ /* @__PURE__ */ jsx55(
30435
30478
  ScrollArea,
30436
30479
  {
30437
30480
  scrollbarMode: "native",
30438
30481
  className: "min-h-0 flex-1 [&_[data-orientation=vertical][data-slot=scroll-area-scrollbar]]:opacity-100",
30439
30482
  viewportRef: railViewState.conversationListRef,
30440
30483
  viewportClassName: AgentGUINode_styles_default.conversationList,
30441
- children: shouldShowConversationSkeleton ? /* @__PURE__ */ jsx54(
30484
+ children: shouldShowConversationSkeleton ? /* @__PURE__ */ jsx55(
30442
30485
  AgentConversationListSkeleton,
30443
30486
  {
30444
30487
  label: labels.loadingConversations
30445
30488
  }
30446
30489
  ) : shouldShowConversationSearchError ? /* @__PURE__ */ jsxs38("div", { className: AgentGUINode_styles_default.emptyState, children: [
30447
- /* @__PURE__ */ jsx54("span", { children: labels.searchFailed }),
30448
- /* @__PURE__ */ jsx54(
30490
+ /* @__PURE__ */ jsx55("span", { children: labels.searchFailed }),
30491
+ /* @__PURE__ */ jsx55(
30449
30492
  SystemButton,
30450
30493
  {
30451
30494
  type: "button",
@@ -30455,7 +30498,7 @@ var AgentGUIConversationRailPane = memo7(
30455
30498
  children: labels.retrySearch
30456
30499
  }
30457
30500
  )
30458
- ] }) : shouldShowConversationEmptyState ? /* @__PURE__ */ jsx54("div", { className: AgentGUINode_styles_default.emptyState, children: /* @__PURE__ */ jsx54("span", { children: conversationQuery.trim() ? labels.searchNoConversations : conversations.length === 0 ? labels.noConversations : labels.conversationUnavailable }) }) : /* @__PURE__ */ jsxs38("fieldset", { className: "contents", disabled: railInteractionsLocked, children: [
30501
+ ] }) : shouldShowConversationEmptyState ? /* @__PURE__ */ jsx55("div", { className: AgentGUINode_styles_default.emptyState, children: /* @__PURE__ */ jsx55("span", { children: conversationQuery.trim() ? labels.searchNoConversations : conversations.length === 0 ? labels.noConversations : labels.conversationUnavailable }) }) : /* @__PURE__ */ jsxs38("fieldset", { className: "contents", disabled: railInteractionsLocked, children: [
30459
30502
  groupedConversations.map((section, sectionIndex) => {
30460
30503
  const projectPath = section.kind === "project" ? section.project?.path ?? "" : "";
30461
30504
  const projectLabel = section.kind === "project" ? section.label : "";
@@ -30489,8 +30532,8 @@ var AgentGUIConversationRailPane = memo7(
30489
30532
  ).length + (activeOverlayCountsTowardTotal && !activeOverlayIsCanonical ? 1 : 0);
30490
30533
  const sectionHasMore = searchSectionHasMore || !conversationQuery.trim() && sectionPageState?.hasMore === true;
30491
30534
  return /* @__PURE__ */ jsxs38(Fragment15, { children: [
30492
- showPinnedProjectHeader ? /* @__PURE__ */ jsx54("div", { className: AgentGUINode_styles_default.pinnedProjectRailHeader, children: labels.sectionPinned }) : null,
30493
- showProjectRailHeader ? /* @__PURE__ */ jsx54(
30535
+ showPinnedProjectHeader ? /* @__PURE__ */ jsx55("div", { className: AgentGUINode_styles_default.pinnedProjectRailHeader, children: labels.sectionPinned }) : null,
30536
+ showProjectRailHeader ? /* @__PURE__ */ jsx55(
30494
30537
  AgentGUIProjectRailHeader,
30495
30538
  {
30496
30539
  disabled: railInteractionsLocked || isUserProjectMutationPending,
@@ -30499,14 +30542,13 @@ var AgentGUIConversationRailPane = memo7(
30499
30542
  workspaceUserProjectI18n
30500
30543
  }
30501
30544
  ) : null,
30502
- /* @__PURE__ */ jsx54(
30545
+ /* @__PURE__ */ jsx55(
30503
30546
  AgentGUIConversationRailSection,
30504
30547
  {
30505
30548
  activeConversation: activeOverlayConversation,
30506
30549
  activeConversationCountsTowardTotal: activeOverlayCountsTowardTotal,
30507
30550
  activeConversationId,
30508
30551
  createConversationDisabled,
30509
- currentTimeMs,
30510
30552
  isDeletingConversation,
30511
30553
  isDeletingProjectConversations,
30512
30554
  isRequestingBatchDeletion,
@@ -30559,7 +30601,7 @@ var AgentGUIConversationRailPane = memo7(
30559
30601
  )
30560
30602
  ] }, section.id);
30561
30603
  }),
30562
- appendProjectRailHeader ? /* @__PURE__ */ jsx54(
30604
+ appendProjectRailHeader ? /* @__PURE__ */ jsx55(
30563
30605
  AgentGUIProjectRailHeader,
30564
30606
  {
30565
30607
  disabled: railInteractionsLocked || isUserProjectMutationPending,
@@ -30571,8 +30613,8 @@ var AgentGUIConversationRailPane = memo7(
30571
30613
  ] })
30572
30614
  }
30573
30615
  ),
30574
- footer ? /* @__PURE__ */ jsx54("div", { className: "shrink-0 pb-2", children: footer }) : null,
30575
- /* @__PURE__ */ jsx54(
30616
+ footer ? /* @__PURE__ */ jsx55("div", { className: "shrink-0 pb-2", children: footer }) : null,
30617
+ /* @__PURE__ */ jsx55(
30576
30618
  AgentGUIProjectActionConfirmationDialog,
30577
30619
  {
30578
30620
  action: pendingProjectAction,
@@ -30937,16 +30979,39 @@ function buildConversationRailQuerySnapshot(input) {
30937
30979
  function createConversationRailQuerySnapshotSelector() {
30938
30980
  const selectRailTitlePrompts = createAgentGUIConversationRailTitlePromptSelector();
30939
30981
  return (input, previous, force = false) => {
30940
- const runtimeRailConversations = projectCanonicalAgentGUIConversationSummaries(
30941
- selectWorkspaceAgentConsumerSessions4(input.engineState),
30982
+ const workspaceSessions = selectWorkspaceAgentConsumerSessions4(
30983
+ input.engineState
30984
+ );
30985
+ const projectionSessionIds = /* @__PURE__ */ new Set();
30986
+ if (!input.runtimeSectionsEnabled) {
30987
+ for (const session of workspaceSessions) {
30988
+ projectionSessionIds.add(session.session.agentSessionId);
30989
+ }
30990
+ }
30991
+ for (const section of input.queryState.sections ?? []) {
30992
+ for (const sessionId of section.sessionIds) {
30993
+ projectionSessionIds.add(sessionId);
30994
+ }
30995
+ }
30996
+ for (const sessionId of input.queryState.reconcilingSessionIds) {
30997
+ projectionSessionIds.add(sessionId);
30998
+ }
30999
+ if (input.searchEnabled && input.searchState.requestKey === input.searchRequestKey && input.searchState.resolvedQuery === input.searchQuery) {
31000
+ for (const sessionId of input.searchState.sessionIds) {
31001
+ projectionSessionIds.add(sessionId);
31002
+ }
31003
+ }
31004
+ const projectedRailConversations = projectCanonicalAgentGUIConversationSummaries(
31005
+ workspaceSessions.filter(
31006
+ (session) => projectionSessionIds.has(session.session.agentSessionId)
31007
+ ),
30942
31008
  selectRailTitlePrompts(input.engineState)
30943
31009
  );
30944
- if (!force && previous?.runtimeRailConversations.length === runtimeRailConversations.length && previous.runtimeRailConversations.every(
30945
- (conversation, index) => conversationSummariesRenderEqual2(
30946
- conversation,
30947
- runtimeRailConversations[index]
30948
- )
30949
- )) {
31010
+ const runtimeRailConversations = stabilizeConversationSectionItems(
31011
+ previous?.runtimeRailConversations ?? [],
31012
+ projectedRailConversations
31013
+ );
31014
+ if (!force && previous?.runtimeRailConversations === runtimeRailConversations) {
30950
31015
  return previous;
30951
31016
  }
30952
31017
  return buildConversationRailQuerySnapshot({
@@ -31757,7 +31822,7 @@ function identitySnapshot(snapshot) {
31757
31822
  }
31758
31823
 
31759
31824
  // agent-gui/agentGuiNode/controller/AgentGUIConversationRailController.tsx
31760
- import { jsx as jsx55 } from "react/jsx-runtime";
31825
+ import { jsx as jsx56 } from "react/jsx-runtime";
31761
31826
  var AgentGUIConversationRailController = memo8(
31762
31827
  function AgentGUIConversationRailController2(props) {
31763
31828
  const [conversationQuery, setConversationQuery] = useState29("");
@@ -31770,7 +31835,7 @@ var AgentGUIConversationRailController = memo8(
31770
31835
  userProjects: props.userProjects,
31771
31836
  workspaceId: props.workspaceId
31772
31837
  });
31773
- return /* @__PURE__ */ jsx55(
31838
+ return /* @__PURE__ */ jsx56(
31774
31839
  AgentGUIConversationRailPane,
31775
31840
  {
31776
31841
  ...props,
@@ -31966,7 +32031,7 @@ import { cn as cn8 } from "@tutti-os/ui-system";
31966
32031
  // agent-gui/agentGuiNode/AgentGoalBanner.tsx
31967
32032
  import { useEffect as useEffect31, useState as useState30 } from "react";
31968
32033
  import { CirclePause, CirclePlay, Pencil as Pencil2, Target as Target3, Trash2 } from "lucide-react";
31969
- import { jsx as jsx56, jsxs as jsxs39 } from "react/jsx-runtime";
32034
+ import { jsx as jsx57, jsxs as jsxs39 } from "react/jsx-runtime";
31970
32035
  var RESUMABLE_GOAL_STATUSES = /* @__PURE__ */ new Set([
31971
32036
  "paused",
31972
32037
  "blocked",
@@ -32076,7 +32141,7 @@ function AgentGoalBanner({
32076
32141
  onEditObjective?.(next);
32077
32142
  }
32078
32143
  };
32079
- return /* @__PURE__ */ jsx56("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: /* @__PURE__ */ jsx56(
32144
+ return /* @__PURE__ */ jsx57("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: /* @__PURE__ */ jsx57(
32080
32145
  "section",
32081
32146
  {
32082
32147
  className: cn(AgentGUIChrome_styles_default.chromeCard, AgentGUIChrome_styles_default.chromeCardMuted),
@@ -32084,8 +32149,8 @@ function AgentGoalBanner({
32084
32149
  "data-testid": "agent-gui-goal-banner",
32085
32150
  children: /* @__PURE__ */ jsxs39("div", { className: AgentGUIChrome_styles_default.chromeMetaRow, children: [
32086
32151
  /* @__PURE__ */ jsxs39("div", { className: AgentGUIChrome_styles_default.chromeMessageSlot, children: [
32087
- /* @__PURE__ */ jsx56("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: /* @__PURE__ */ jsx56(Target3, { "aria-hidden": true, className: "size-3.5" }) }),
32088
- editDraft !== null ? /* @__PURE__ */ jsx56(
32152
+ /* @__PURE__ */ jsx57("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: /* @__PURE__ */ jsx57(Target3, { "aria-hidden": true, className: "size-3.5" }) }),
32153
+ editDraft !== null ? /* @__PURE__ */ jsx57(
32089
32154
  "input",
32090
32155
  {
32091
32156
  className: AgentGUIChrome_styles_default.chromeGoalEditInput,
@@ -32111,8 +32176,8 @@ function AgentGoalBanner({
32111
32176
  className: cn(AgentGUIChrome_styles_default.chromeMessage, AgentGUIChrome_styles_default.chromeNoticeMessage),
32112
32177
  title: fullMessage,
32113
32178
  children: [
32114
- /* @__PURE__ */ jsx56("span", { className: AgentGUIChrome_styles_default.chromeNoticeTitle, children: title }),
32115
- /* @__PURE__ */ jsx56(
32179
+ /* @__PURE__ */ jsx57("span", { className: AgentGUIChrome_styles_default.chromeNoticeTitle, children: title }),
32180
+ /* @__PURE__ */ jsx57(
32116
32181
  "span",
32117
32182
  {
32118
32183
  className: AgentGUIChrome_styles_default.chromeNoticeDescription,
@@ -32125,7 +32190,7 @@ function AgentGoalBanner({
32125
32190
  )
32126
32191
  ] }),
32127
32192
  hasActions ? /* @__PURE__ */ jsxs39("div", { className: AgentGUIChrome_styles_default.chromeGoalActions, children: [
32128
- onEditObjective !== void 0 && editDraft === null ? /* @__PURE__ */ jsx56(
32193
+ onEditObjective !== void 0 && editDraft === null ? /* @__PURE__ */ jsx57(
32129
32194
  "button",
32130
32195
  {
32131
32196
  type: "button",
@@ -32133,10 +32198,10 @@ function AgentGoalBanner({
32133
32198
  title: labels.editAction,
32134
32199
  "aria-label": labels.editAction,
32135
32200
  "data-testid": "agent-gui-goal-banner-edit",
32136
- children: /* @__PURE__ */ jsx56(Pencil2, { "aria-hidden": true, className: "size-3.5" })
32201
+ children: /* @__PURE__ */ jsx57(Pencil2, { "aria-hidden": true, className: "size-3.5" })
32137
32202
  }
32138
32203
  ) : null,
32139
- showPause ? /* @__PURE__ */ jsx56(
32204
+ showPause ? /* @__PURE__ */ jsx57(
32140
32205
  "button",
32141
32206
  {
32142
32207
  type: "button",
@@ -32144,10 +32209,10 @@ function AgentGoalBanner({
32144
32209
  title: labels.pauseAction,
32145
32210
  "aria-label": labels.pauseAction,
32146
32211
  "data-testid": "agent-gui-goal-banner-pause",
32147
- children: /* @__PURE__ */ jsx56(CirclePause, { "aria-hidden": true, className: "size-3.5" })
32212
+ children: /* @__PURE__ */ jsx57(CirclePause, { "aria-hidden": true, className: "size-3.5" })
32148
32213
  }
32149
32214
  ) : null,
32150
- showResume ? /* @__PURE__ */ jsx56(
32215
+ showResume ? /* @__PURE__ */ jsx57(
32151
32216
  "button",
32152
32217
  {
32153
32218
  type: "button",
@@ -32155,10 +32220,10 @@ function AgentGoalBanner({
32155
32220
  title: labels.resumeAction,
32156
32221
  "aria-label": labels.resumeAction,
32157
32222
  "data-testid": "agent-gui-goal-banner-resume",
32158
- children: /* @__PURE__ */ jsx56(CirclePlay, { "aria-hidden": true, className: "size-3.5" })
32223
+ children: /* @__PURE__ */ jsx57(CirclePlay, { "aria-hidden": true, className: "size-3.5" })
32159
32224
  }
32160
32225
  ) : null,
32161
- onClearGoal !== void 0 ? /* @__PURE__ */ jsx56(
32226
+ onClearGoal !== void 0 ? /* @__PURE__ */ jsx57(
32162
32227
  "button",
32163
32228
  {
32164
32229
  type: "button",
@@ -32166,10 +32231,10 @@ function AgentGoalBanner({
32166
32231
  title: labels.clearAction,
32167
32232
  "aria-label": labels.clearAction,
32168
32233
  "data-testid": "agent-gui-goal-banner-clear",
32169
- children: /* @__PURE__ */ jsx56(Trash2, { "aria-hidden": true, className: "size-3.5" })
32234
+ children: /* @__PURE__ */ jsx57(Trash2, { "aria-hidden": true, className: "size-3.5" })
32170
32235
  }
32171
32236
  ) : null
32172
- ] }) : /* @__PURE__ */ jsx56(
32237
+ ] }) : /* @__PURE__ */ jsx57(
32173
32238
  "span",
32174
32239
  {
32175
32240
  className: AgentGUIChrome_styles_default.chromeGoalHint,
@@ -32183,7 +32248,7 @@ function AgentGoalBanner({
32183
32248
  }
32184
32249
 
32185
32250
  // agent-gui/agentGuiNode/view/AgentGUIBottomDockPane.tsx
32186
- import { jsx as jsx57, jsxs as jsxs40 } from "react/jsx-runtime";
32251
+ import { jsx as jsx58, jsxs as jsxs40 } from "react/jsx-runtime";
32187
32252
  var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
32188
32253
  bottomDockRef,
32189
32254
  showScrollToBottom,
@@ -32224,7 +32289,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
32224
32289
  className: AgentGUINode_styles_default.bottomDock,
32225
32290
  "data-testid": "agent-gui-bottom-dock",
32226
32291
  children: [
32227
- showScrollToBottom ? /* @__PURE__ */ jsx57(
32292
+ showScrollToBottom ? /* @__PURE__ */ jsx58(
32228
32293
  "button",
32229
32294
  {
32230
32295
  type: "button",
@@ -32237,15 +32302,15 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
32237
32302
  title: scrollToBottomLabel,
32238
32303
  onPointerDown: (event) => event.stopPropagation(),
32239
32304
  onClick: onScrollToBottom,
32240
- children: /* @__PURE__ */ jsx57(ChevronsDown, { "aria-hidden": "true", size: 15, strokeWidth: 2.2 })
32305
+ children: /* @__PURE__ */ jsx58(ChevronsDown, { "aria-hidden": "true", size: 15, strokeWidth: 2.2 })
32241
32306
  }
32242
32307
  ) : null,
32243
- bottomDockLiftedPrompt ? /* @__PURE__ */ jsx57(
32308
+ bottomDockLiftedPrompt ? /* @__PURE__ */ jsx58(
32244
32309
  "div",
32245
32310
  {
32246
32311
  className: AgentGUINode_styles_default.bottomDockPrompt,
32247
32312
  "data-testid": "agent-gui-bottom-dock-active-prompt",
32248
- children: /* @__PURE__ */ jsx57(
32313
+ children: /* @__PURE__ */ jsx58(
32249
32314
  AgentInteractivePromptSurface,
32250
32315
  {
32251
32316
  prompt: bottomDockLiftedPrompt,
@@ -32260,7 +32325,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
32260
32325
  )
32261
32326
  }
32262
32327
  ) : null,
32263
- inlineNoticeChrome ? /* @__PURE__ */ jsx57(
32328
+ inlineNoticeChrome ? /* @__PURE__ */ jsx58(
32264
32329
  AgentSessionChrome,
32265
32330
  {
32266
32331
  chrome: inlineNoticeChrome,
@@ -32272,7 +32337,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
32272
32337
  labels: chromeLabels
32273
32338
  }
32274
32339
  ) : null,
32275
- /* @__PURE__ */ jsx57(
32340
+ /* @__PURE__ */ jsx58(
32276
32341
  AgentSessionChrome,
32277
32342
  {
32278
32343
  chrome: sessionChrome,
@@ -32284,7 +32349,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
32284
32349
  labels: chromeLabels
32285
32350
  }
32286
32351
  ),
32287
- showGoalBanner ? /* @__PURE__ */ jsx57(
32352
+ showGoalBanner ? /* @__PURE__ */ jsx58(
32288
32353
  AgentGoalBanner,
32289
32354
  {
32290
32355
  objective: goalObjective,
@@ -32299,12 +32364,12 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
32299
32364
  onClearGoal: () => onGoalControl("clear")
32300
32365
  }
32301
32366
  ) : null,
32302
- bottomDockReplacementPrompt ? /* @__PURE__ */ jsx57(
32367
+ bottomDockReplacementPrompt ? /* @__PURE__ */ jsx58(
32303
32368
  "div",
32304
32369
  {
32305
32370
  className: AgentGUINode_styles_default.bottomDockPrompt,
32306
32371
  "data-testid": "agent-gui-bottom-dock-active-prompt",
32307
- children: /* @__PURE__ */ jsx57(
32372
+ children: /* @__PURE__ */ jsx58(
32308
32373
  AgentInteractivePromptSurface,
32309
32374
  {
32310
32375
  prompt: bottomDockReplacementPrompt,
@@ -32318,7 +32383,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
32318
32383
  }
32319
32384
  )
32320
32385
  }
32321
- ) : /* @__PURE__ */ jsx57(AgentComposer, { ...composerProps })
32386
+ ) : /* @__PURE__ */ jsx58(AgentComposer, { ...composerProps })
32322
32387
  ]
32323
32388
  }
32324
32389
  );
@@ -32328,7 +32393,7 @@ var AgentGUIBottomDockPane = memo9(function AgentGUIBottomDockPane2({
32328
32393
  import { memo as memo10 } from "react";
32329
32394
  import { Info as Info2 } from "lucide-react";
32330
32395
  import { Tooltip as Tooltip7, TooltipContent as TooltipContent7, TooltipTrigger as TooltipTrigger7 } from "@tutti-os/ui-system";
32331
- import { jsx as jsx58, jsxs as jsxs41 } from "react/jsx-runtime";
32396
+ import { jsx as jsx59, jsxs as jsxs41 } from "react/jsx-runtime";
32332
32397
  var AgentGUIDetailHeader = memo10(function AgentGUIDetailHeader2({
32333
32398
  activeConversation,
32334
32399
  hidden,
@@ -32341,9 +32406,9 @@ var AgentGUIDetailHeader = memo10(function AgentGUIDetailHeader2({
32341
32406
  return null;
32342
32407
  }
32343
32408
  const runPath = activeConversation.cwd.trim();
32344
- return /* @__PURE__ */ jsx58("div", { className: AgentGUINode_styles_default.detailHeader, children: /* @__PURE__ */ jsxs41("span", { className: AgentGUINode_styles_default.detailHeaderTitleGroup, children: [
32345
- /* @__PURE__ */ jsx58("span", { className: AgentGUINode_styles_default.detailHeaderTitle, children: conversationPlainTitle(activeConversation, labels, uiLanguage) }),
32346
- runPath ? /* @__PURE__ */ jsx58(AgentRunPathInfo, { path: runPath, previewMode }) : null
32409
+ return /* @__PURE__ */ jsx59("div", { className: AgentGUINode_styles_default.detailHeader, children: /* @__PURE__ */ jsxs41("span", { className: AgentGUINode_styles_default.detailHeaderTitleGroup, children: [
32410
+ /* @__PURE__ */ jsx59("span", { className: AgentGUINode_styles_default.detailHeaderTitle, children: conversationPlainTitle(activeConversation, labels, uiLanguage) }),
32411
+ runPath ? /* @__PURE__ */ jsx59(AgentRunPathInfo, { path: runPath, previewMode }) : null
32347
32412
  ] }) });
32348
32413
  });
32349
32414
  function AgentRunPathInfo({
@@ -32351,21 +32416,21 @@ function AgentRunPathInfo({
32351
32416
  previewMode
32352
32417
  }) {
32353
32418
  "use memo";
32354
- const trigger = /* @__PURE__ */ jsx58(
32419
+ const trigger = /* @__PURE__ */ jsx59(
32355
32420
  "button",
32356
32421
  {
32357
32422
  type: "button",
32358
32423
  className: AgentGUINode_styles_default.detailHeaderPathInfo,
32359
32424
  "aria-label": path,
32360
- children: /* @__PURE__ */ jsx58(Info2, { size: 14, strokeWidth: 2, "aria-hidden": "true" })
32425
+ children: /* @__PURE__ */ jsx59(Info2, { size: 14, strokeWidth: 2, "aria-hidden": "true" })
32361
32426
  }
32362
32427
  );
32363
32428
  if (previewMode) {
32364
32429
  return trigger;
32365
32430
  }
32366
32431
  return /* @__PURE__ */ jsxs41(Tooltip7, { children: [
32367
- /* @__PURE__ */ jsx58(TooltipTrigger7, { asChild: true, children: trigger }),
32368
- /* @__PURE__ */ jsx58(
32432
+ /* @__PURE__ */ jsx59(TooltipTrigger7, { asChild: true, children: trigger }),
32433
+ /* @__PURE__ */ jsx59(
32369
32434
  TooltipContent7,
32370
32435
  {
32371
32436
  side: "top",
@@ -32385,14 +32450,14 @@ import {
32385
32450
  ToastTitle,
32386
32451
  ToastViewport
32387
32452
  } from "@tutti-os/ui-system";
32388
- import { jsx as jsx59, jsxs as jsxs42 } from "react/jsx-runtime";
32453
+ import { jsx as jsx60, jsxs as jsxs42 } from "react/jsx-runtime";
32389
32454
  function AgentGUIContentToast({
32390
32455
  insetTopPx,
32391
32456
  message
32392
32457
  }) {
32393
32458
  const [open, setOpen] = useState31(true);
32394
32459
  return /* @__PURE__ */ jsxs42(ToastProvider, { children: [
32395
- /* @__PURE__ */ jsx59(
32460
+ /* @__PURE__ */ jsx60(
32396
32461
  ToastRoot,
32397
32462
  {
32398
32463
  open,
@@ -32400,10 +32465,10 @@ function AgentGUIContentToast({
32400
32465
  "data-testid": "agent-gui-content-toast",
32401
32466
  variant: "default",
32402
32467
  onOpenChange: setOpen,
32403
- children: /* @__PURE__ */ jsx59(ToastTitle, { children: message })
32468
+ children: /* @__PURE__ */ jsx60(ToastTitle, { children: message })
32404
32469
  }
32405
32470
  ),
32406
- /* @__PURE__ */ jsx59(
32471
+ /* @__PURE__ */ jsx60(
32407
32472
  ToastViewport,
32408
32473
  {
32409
32474
  className: "nodrag tsh-desktop-no-drag absolute left-0 w-full translate-x-0 px-4 [-webkit-app-region:no-drag]",
@@ -32416,7 +32481,7 @@ function AgentGUIContentToast({
32416
32481
 
32417
32482
  // agent-gui/agentGuiNode/view/AgentGUIConversationTimelinePane.tsx
32418
32483
  import { memo as memo11 } from "react";
32419
- import { Fragment as Fragment16, jsx as jsx60, jsxs as jsxs43 } from "react/jsx-runtime";
32484
+ import { Fragment as Fragment16, jsx as jsx61, jsxs as jsxs43 } from "react/jsx-runtime";
32420
32485
  var EMPTY_WORKSPACE_APP_ICONS3 = [];
32421
32486
  var AgentGUIConversationTimelinePane = memo11(
32422
32487
  function AgentGUIConversationTimelinePane2({
@@ -32434,16 +32499,16 @@ var AgentGUIConversationTimelinePane = memo11(
32434
32499
  }) {
32435
32500
  "use memo";
32436
32501
  return /* @__PURE__ */ jsxs43(Fragment16, { children: [
32437
- isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx60(
32502
+ isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx61(
32438
32503
  "div",
32439
32504
  {
32440
32505
  className: "mx-auto flex h-8 items-center justify-center text-[12px] text-[var(--text-secondary)]",
32441
32506
  "data-testid": "agent-gui-older-messages-loading",
32442
32507
  role: "status",
32443
- children: /* @__PURE__ */ jsx60("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
32508
+ children: /* @__PURE__ */ jsx61("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
32444
32509
  }
32445
32510
  ) : null,
32446
- /* @__PURE__ */ jsx60(
32511
+ /* @__PURE__ */ jsx61(
32447
32512
  AgentConversationFlow,
32448
32513
  {
32449
32514
  conversation,
@@ -32824,10 +32889,10 @@ function useAgentGUIDetailScroll(input) {
32824
32889
  import { useMemo as useMemo35 } from "react";
32825
32890
 
32826
32891
  // app/renderer/components/icons/UnavailableChatIcon.tsx
32827
- import { jsx as jsx61 } from "react/jsx-runtime";
32892
+ import { jsx as jsx62 } from "react/jsx-runtime";
32828
32893
  function UnavailableChatIcon(props) {
32829
32894
  "use memo";
32830
- return /* @__PURE__ */ jsx61(
32895
+ return /* @__PURE__ */ jsx62(
32831
32896
  "svg",
32832
32897
  {
32833
32898
  xmlns: "http://www.w3.org/2000/svg",
@@ -32835,7 +32900,7 @@ function UnavailableChatIcon(props) {
32835
32900
  fill: "currentColor",
32836
32901
  "aria-hidden": true,
32837
32902
  ...props,
32838
- children: /* @__PURE__ */ jsx61("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" })
32903
+ children: /* @__PURE__ */ jsx62("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" })
32839
32904
  }
32840
32905
  );
32841
32906
  }
@@ -32881,7 +32946,7 @@ function useAgentGUITimelineTransition(input) {
32881
32946
  }
32882
32947
 
32883
32948
  // agent-gui/agentGuiNode/view/useAgentGUIDetailModel.tsx
32884
- import { Fragment as Fragment17, jsx as jsx62, jsxs as jsxs44 } from "react/jsx-runtime";
32949
+ import { Fragment as Fragment17, jsx as jsx63, jsxs as jsxs44 } from "react/jsx-runtime";
32885
32950
  function useAgentGUIDetailModel(input) {
32886
32951
  const {
32887
32952
  bottomDockDismissedPromptRequestId,
@@ -33035,11 +33100,11 @@ function useAgentGUIDetailModel(input) {
33035
33100
  className: AgentGUINode_styles_default.unavailableChatEmpty,
33036
33101
  "data-testid": "agent-gui-unavailable-chat-empty",
33037
33102
  children: [
33038
- /* @__PURE__ */ jsx62(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
33039
- /* @__PURE__ */ jsx62("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
33103
+ /* @__PURE__ */ jsx63(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
33104
+ /* @__PURE__ */ jsx63("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
33040
33105
  ]
33041
33106
  }
33042
- ) : /* @__PURE__ */ jsx62(Fragment17, {}),
33107
+ ) : /* @__PURE__ */ jsx63(Fragment17, {}),
33043
33108
  [labels.conversationUnavailable, showUnavailableChatEmpty]
33044
33109
  );
33045
33110
  const chromeLabels = useMemo35(
@@ -33416,7 +33481,7 @@ function useAgentGUIDetailModel(input) {
33416
33481
  }
33417
33482
 
33418
33483
  // agent-gui/agentGuiNode/view/AgentGUIDetailPane.tsx
33419
- import { Fragment as Fragment18, jsx as jsx63, jsxs as jsxs45 } from "react/jsx-runtime";
33484
+ import { Fragment as Fragment18, jsx as jsx64, jsxs as jsxs45 } from "react/jsx-runtime";
33420
33485
  var AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE = {
33421
33486
  width: "100%",
33422
33487
  minWidth: "100%",
@@ -33880,7 +33945,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
33880
33945
  "aria-busy": timelineInteractionLocked || void 0,
33881
33946
  inert: timelineInteractionLocked,
33882
33947
  children: [
33883
- viewModel.operations.goalClearNoticeSequence > 0 ? /* @__PURE__ */ jsx63(
33948
+ viewModel.operations.goalClearNoticeSequence > 0 ? /* @__PURE__ */ jsx64(
33884
33949
  AgentGUIContentToast,
33885
33950
  {
33886
33951
  insetTopPx: hideDetailHeader ? 16 : 80,
@@ -33888,7 +33953,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
33888
33953
  },
33889
33954
  viewModel.operations.goalClearNoticeSequence
33890
33955
  ) : null,
33891
- /* @__PURE__ */ jsx63(
33956
+ /* @__PURE__ */ jsx64(
33892
33957
  AgentGUIDetailHeader,
33893
33958
  {
33894
33959
  activeConversation: viewModel.rail.activeConversation,
@@ -33898,7 +33963,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
33898
33963
  previewMode
33899
33964
  }
33900
33965
  ),
33901
- /* @__PURE__ */ jsx63(
33966
+ /* @__PURE__ */ jsx64(
33902
33967
  ScrollArea2,
33903
33968
  {
33904
33969
  scrollbarMode: "native",
@@ -33907,7 +33972,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
33907
33972
  viewportTestId: "agent-gui-timeline",
33908
33973
  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(),
33909
33974
  viewportContentStyle: AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE,
33910
- children: !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx63(Fragment18, { children: renderProviderUnavailableState?.({
33975
+ children: !hasActiveConversation ? shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx64(Fragment18, { children: renderProviderUnavailableState?.({
33911
33976
  provider: disabledProviderTarget.provider,
33912
33977
  providerLabel: labels.emptyProviderForProvider?.(
33913
33978
  disabledProviderTarget.provider
@@ -33919,7 +33984,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
33919
33984
  disabledProviderTarget.provider
33920
33985
  ),
33921
33986
  unavailableReason: disabledProviderTarget.unavailableReason ?? null
33922
- }) }) : /* @__PURE__ */ jsx63(
33987
+ }) }) : /* @__PURE__ */ jsx64(
33923
33988
  AgentGUIEmptyHomePane,
33924
33989
  {
33925
33990
  provider: emptyHeroProvider,
@@ -33942,7 +34007,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
33942
34007
  onSelectSuggestion: handleSelectHomeSuggestion,
33943
34008
  onSelectSuggestionAction: handleHomeSuggestionAction
33944
34009
  }
33945
- ) : /* @__PURE__ */ jsx63(
34010
+ ) : /* @__PURE__ */ jsx64(
33946
34011
  AgentGUIConversationTimelinePane,
33947
34012
  {
33948
34013
  conversation,
@@ -33960,7 +34025,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
33960
34025
  )
33961
34026
  }
33962
34027
  ),
33963
- hasActiveConversation ? /* @__PURE__ */ jsx63(
34028
+ hasActiveConversation ? /* @__PURE__ */ jsx64(
33964
34029
  AgentGUIBottomDockPane,
33965
34030
  {
33966
34031
  bottomDockRef,
@@ -33994,7 +34059,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
33994
34059
  // agent-gui/agentGuiNode/view/AgentGUIRenameConversationDialog.tsx
33995
34060
  import { memo as memo13, useCallback as useCallback53, useEffect as useEffect34, useRef as useRef43, useState as useState35 } from "react";
33996
34061
  import { ConfirmationDialog as ConfirmationDialog3, Input as Input2 } from "@tutti-os/ui-system";
33997
- import { jsx as jsx64, jsxs as jsxs46 } from "react/jsx-runtime";
34062
+ import { jsx as jsx65, jsxs as jsxs46 } from "react/jsx-runtime";
33998
34063
  var AgentGUIRenameConversationDialog = memo13(
33999
34064
  function AgentGUIRenameConversationDialog2({
34000
34065
  conversation,
@@ -34050,7 +34115,7 @@ var AgentGUIRenameConversationDialog = memo13(
34050
34115
  setIsSaving(false);
34051
34116
  });
34052
34117
  }, [conversation, onOpenChange, onRename, trimmedTitle]);
34053
- return /* @__PURE__ */ jsx64(
34118
+ return /* @__PURE__ */ jsx65(
34054
34119
  ConfirmationDialog3,
34055
34120
  {
34056
34121
  cancelLabel: labels.cancel,
@@ -34060,7 +34125,7 @@ var AgentGUIRenameConversationDialog = memo13(
34060
34125
  confirmLabel: labels.renameSessionSave,
34061
34126
  description: labels.renameSessionDescription,
34062
34127
  footer: /* @__PURE__ */ jsxs46("div", { className: "flex justify-end gap-2", children: [
34063
- /* @__PURE__ */ jsx64(
34128
+ /* @__PURE__ */ jsx65(
34064
34129
  Button,
34065
34130
  {
34066
34131
  disabled: isSaving,
@@ -34098,7 +34163,7 @@ var AgentGUIRenameConversationDialog = memo13(
34098
34163
  children: labels.cancel
34099
34164
  }
34100
34165
  ),
34101
- /* @__PURE__ */ jsx64(
34166
+ /* @__PURE__ */ jsx65(
34102
34167
  Button,
34103
34168
  {
34104
34169
  className: "shadow-none",
@@ -34153,7 +34218,7 @@ var AgentGUIRenameConversationDialog = memo13(
34153
34218
  title: labels.renameSessionTitle,
34154
34219
  onConfirm: confirmRename,
34155
34220
  onOpenChange,
34156
- children: /* @__PURE__ */ jsx64(
34221
+ children: /* @__PURE__ */ jsx65(
34157
34222
  Input2,
34158
34223
  {
34159
34224
  ref: inputRef,
@@ -34181,7 +34246,7 @@ import {
34181
34246
  ReferenceSourcePicker,
34182
34247
  WorkspaceFileReferencePicker
34183
34248
  } from "@tutti-os/workspace-file-reference/ui";
34184
- import { jsx as jsx65 } from "react/jsx-runtime";
34249
+ import { jsx as jsx66 } from "react/jsx-runtime";
34185
34250
  function AgentGUIReferencePickerSurface({
34186
34251
  aggregator,
34187
34252
  copy,
@@ -34198,7 +34263,7 @@ function AgentGUIReferencePickerSurface({
34198
34263
  onConfirm,
34199
34264
  onConfirmBundles
34200
34265
  }) {
34201
- return aggregator ? /* @__PURE__ */ jsx65(
34266
+ return aggregator ? /* @__PURE__ */ jsx66(
34202
34267
  ReferenceSourcePicker,
34203
34268
  {
34204
34269
  aggregator,
@@ -34208,7 +34273,7 @@ function AgentGUIReferencePickerSurface({
34208
34273
  fileManagerCopy: fileManagerCopy ?? void 0,
34209
34274
  open,
34210
34275
  provenanceFilter: provenanceFilter?.snapshot.value,
34211
- provenanceFilterControl: provenanceFilter ? /* @__PURE__ */ jsx65(
34276
+ provenanceFilterControl: provenanceFilter ? /* @__PURE__ */ jsx66(
34212
34277
  AgentReferenceProvenanceFilterControl,
34213
34278
  {
34214
34279
  filter: provenanceFilter,
@@ -34221,7 +34286,7 @@ function AgentGUIReferencePickerSurface({
34221
34286
  onConfirm,
34222
34287
  onConfirmBundles
34223
34288
  }
34224
- ) : /* @__PURE__ */ jsx65(
34289
+ ) : /* @__PURE__ */ jsx66(
34225
34290
  WorkspaceFileReferencePicker,
34226
34291
  {
34227
34292
  copy,
@@ -34238,7 +34303,7 @@ function AgentGUIReferencePickerSurface({
34238
34303
 
34239
34304
  // agent-gui/agentGuiNode/view/AgentTargetSetupRoot.tsx
34240
34305
  import { useCallback as useCallback54, useMemo as useMemo37 } from "react";
34241
- import { jsx as jsx66, jsxs as jsxs47 } from "react/jsx-runtime";
34306
+ import { jsx as jsx67, jsxs as jsxs47 } from "react/jsx-runtime";
34242
34307
  function useAgentTargetSetupRoot(input) {
34243
34308
  const { preferences } = useAgentGUIProviderRailPreferences();
34244
34309
  const homeTargetProjection = useMemo37(
@@ -34260,8 +34325,16 @@ function useAgentTargetSetupRoot(input) {
34260
34325
  controller.setDialogOpen(true);
34261
34326
  return;
34262
34327
  }
34263
- openAgentEnvPanel({ provider: input.environmentProvider, focus: null });
34264
- }, [controller, input.environmentProvider, targetRuntimeSetupVisible]);
34328
+ input.openEnvironmentSetup?.({
34329
+ provider: input.environmentProvider,
34330
+ focus: null
34331
+ });
34332
+ }, [
34333
+ controller,
34334
+ input.environmentProvider,
34335
+ input.openEnvironmentSetup,
34336
+ targetRuntimeSetupVisible
34337
+ ]);
34265
34338
  return {
34266
34339
  controller,
34267
34340
  environmentSetupVisible,
@@ -34271,11 +34344,12 @@ function useAgentTargetSetupRoot(input) {
34271
34344
  }
34272
34345
  function AgentTargetSetupRoot({
34273
34346
  children,
34274
- controller
34347
+ controller,
34348
+ openEnvironmentSetup
34275
34349
  }) {
34276
- return /* @__PURE__ */ jsxs47(AgentTargetSetupControllerProvider, { controller, children: [
34350
+ return /* @__PURE__ */ jsx67(AgentEnvPanelActionProvider, { openPanel: openEnvironmentSetup, children: /* @__PURE__ */ jsxs47(AgentTargetSetupControllerProvider, { controller, children: [
34277
34351
  children,
34278
- /* @__PURE__ */ jsx66(
34352
+ /* @__PURE__ */ jsx67(
34279
34353
  AgentTargetSetupGate,
34280
34354
  {
34281
34355
  carouselMountedExternally: false,
@@ -34283,7 +34357,7 @@ function AgentTargetSetupRoot({
34283
34357
  gateVisible: false
34284
34358
  }
34285
34359
  )
34286
- ] });
34360
+ ] }) });
34287
34361
  }
34288
34362
 
34289
34363
  // agent-gui/agentGuiNode/view/useAgentGUIWorkspaceReferencePicker.ts
@@ -34665,7 +34739,7 @@ function useAgentGUINodeEngagement(input) {
34665
34739
  }
34666
34740
 
34667
34741
  // agent-gui/agentGuiNode/AgentGUINodeView.tsx
34668
- import { jsx as jsx67, jsxs as jsxs48 } from "react/jsx-runtime";
34742
+ import { jsx as jsx68, jsxs as jsxs48 } from "react/jsx-runtime";
34669
34743
  function AgentGUINodeView({
34670
34744
  viewModel,
34671
34745
  referenceProvenanceFilter = null,
@@ -34697,6 +34771,7 @@ function AgentGUINodeView({
34697
34771
  accountMenuState = null,
34698
34772
  previewMode = false,
34699
34773
  onAgentProviderLogin,
34774
+ onAgentEnvPanelOpen,
34700
34775
  actions,
34701
34776
  conversationRailCollapsed,
34702
34777
  conversationRailWidthPx,
@@ -34997,6 +35072,7 @@ function AgentGUINodeView({
34997
35072
  activeConversationId: viewModel.rail.activeConversationId,
34998
35073
  agentTargets: viewModel.rail.agentTargets,
34999
35074
  environmentProvider: effectiveRailConfigProvider,
35075
+ openEnvironmentSetup: onAgentEnvPanelOpen,
35000
35076
  selectedAgentTarget: viewModel.rail.selectedAgentTarget
35001
35077
  });
35002
35078
  const openAgentSettings = useCallback56(() => {
@@ -35110,215 +35186,222 @@ function AgentGUINodeView({
35110
35186
  ),
35111
35187
  [agentTargetPresentationKey, viewModel.shell.workspaceId]
35112
35188
  );
35113
- const content = /* @__PURE__ */ jsx67(AgentTargetPresentationProvider, { agentTargets: agentTargetPresentations, children: /* @__PURE__ */ jsxs48(AgentTargetSetupRoot, { controller: targetSetupController, children: [
35114
- /* @__PURE__ */ jsxs48(
35115
- "div",
35116
- {
35117
- ref: layoutElementRef,
35118
- className: AgentGUINode_styles_default.layout,
35119
- "data-agent-gui-preview": previewMode ? "true" : void 0,
35120
- "data-rail-resizing": isRailResizing ? "true" : void 0,
35121
- inert: previewMode ? true : void 0,
35122
- style: layoutStyle,
35123
- children: [
35124
- /* @__PURE__ */ jsxs48(
35125
- "aside",
35126
- {
35127
- className: `${AgentGUINode_styles_default.providerRailPanel} nodrag tsh-desktop-no-drag`,
35128
- "aria-label": labels.providerSwitchLabel,
35129
- "aria-hidden": conversationRailCollapsed ? "true" : void 0,
35130
- inert: conversationRailCollapsed ? true : void 0,
35131
- children: [
35132
- /* @__PURE__ */ jsx67(
35133
- AgentGUIProviderRail,
35134
- {
35135
- activeConversation: viewModel.rail.activeConversation,
35136
- activeConversationId: viewModel.rail.activeConversationId,
35137
- conversationFilter: viewModel.rail.conversationFilter,
35138
- conversations: viewModel.rail.conversations,
35139
- labels,
35140
- previewMode,
35141
- selectedAgentTarget: viewModel.rail.selectedAgentTarget,
35142
- agentTargets: viewModel.rail.agentTargets,
35143
- agentTargetsLoading: viewModel.rail.agentTargetsLoading,
35144
- providerRailMode: viewModel.rail.providerRailMode,
35145
- renderProviderRailEmpty,
35146
- providerRailAllPresentation,
35147
- comingSoonProviders: viewModel.rail.comingSoonProviders,
35148
- managerOpen: providerManagerOpen,
35149
- onManagerOpenChange: setProviderManagerOpen,
35150
- onSelectHomeComposerAgentTarget: actions.selectHomeComposerAgentTarget,
35151
- onSelectConversationFilterTarget: actions.selectConversationFilterTarget,
35152
- onUpdateConversationFilter: actions.updateConversationFilter,
35153
- onRequestComposerFocus: requestComposerFocus
35154
- }
35155
- ),
35156
- renderSidebarFooter ? /* @__PURE__ */ jsx67(
35157
- "div",
35158
- {
35159
- className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailSidebarFooter} nodrag tsh-desktop-no-drag`,
35160
- "data-testid": "agent-gui-sidebar-footer-slot",
35161
- children: renderSidebarFooter({
35162
- currentUserId: viewModel.shell.currentUserId,
35163
- activeConversation: viewModel.rail.activeConversation
35164
- })
35165
- }
35166
- ) : null,
35167
- shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx67(
35168
- "div",
35169
- {
35170
- className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailConfigFooter} nodrag tsh-desktop-no-drag`,
35171
- "data-testid": "agent-gui-config-footer",
35172
- children: /* @__PURE__ */ jsx67(
35173
- AgentGUIConfigMenu,
35189
+ const content = /* @__PURE__ */ jsx68(AgentTargetPresentationProvider, { agentTargets: agentTargetPresentations, children: /* @__PURE__ */ jsxs48(
35190
+ AgentTargetSetupRoot,
35191
+ {
35192
+ controller: targetSetupController,
35193
+ openEnvironmentSetup: onAgentEnvPanelOpen,
35194
+ children: [
35195
+ /* @__PURE__ */ jsxs48(
35196
+ "div",
35197
+ {
35198
+ ref: layoutElementRef,
35199
+ className: AgentGUINode_styles_default.layout,
35200
+ "data-agent-gui-preview": previewMode ? "true" : void 0,
35201
+ "data-rail-resizing": isRailResizing ? "true" : void 0,
35202
+ inert: previewMode ? true : void 0,
35203
+ style: layoutStyle,
35204
+ children: [
35205
+ /* @__PURE__ */ jsxs48(
35206
+ "aside",
35207
+ {
35208
+ className: `${AgentGUINode_styles_default.providerRailPanel} nodrag tsh-desktop-no-drag`,
35209
+ "aria-label": labels.providerSwitchLabel,
35210
+ "aria-hidden": conversationRailCollapsed ? "true" : void 0,
35211
+ inert: conversationRailCollapsed ? true : void 0,
35212
+ children: [
35213
+ /* @__PURE__ */ jsx68(
35214
+ AgentGUIProviderRail,
35174
35215
  {
35175
- environmentSetupVisible,
35216
+ activeConversation: viewModel.rail.activeConversation,
35217
+ activeConversationId: viewModel.rail.activeConversationId,
35218
+ conversationFilter: viewModel.rail.conversationFilter,
35219
+ conversations: viewModel.rail.conversations,
35176
35220
  labels,
35177
35221
  previewMode,
35178
- providerScopedActionsVisible: viewModel.rail.conversationFilter.kind !== "all",
35179
- slashStatusLimits: effectiveRailSlashStatusLimits,
35180
- slashStatusLimitsLoading,
35181
- slashStatusUsageCapturedAtUnixMs,
35182
- slashStatusUsageDidFail,
35183
- slashStatusUsageAttempted,
35184
- provider: effectiveRailConfigProvider,
35185
- providerAuthAccountLabel: effectiveProviderAuthAccountLabel,
35186
- onAgentConfigMenuOpen,
35187
- onAgentUsageRefresh,
35188
- onOpenAgentManager: () => setProviderManagerOpen(true),
35189
- onOpenAgentEnvSetup: openAgentEnvSetup,
35190
- onOpenAgentSettings: openAgentSettings
35222
+ selectedAgentTarget: viewModel.rail.selectedAgentTarget,
35223
+ agentTargets: viewModel.rail.agentTargets,
35224
+ agentTargetsLoading: viewModel.rail.agentTargetsLoading,
35225
+ providerRailMode: viewModel.rail.providerRailMode,
35226
+ renderProviderRailEmpty,
35227
+ providerRailAllPresentation,
35228
+ comingSoonProviders: viewModel.rail.comingSoonProviders,
35229
+ managerOpen: providerManagerOpen,
35230
+ onManagerOpenChange: setProviderManagerOpen,
35231
+ onSelectHomeComposerAgentTarget: actions.selectHomeComposerAgentTarget,
35232
+ onSelectConversationFilterTarget: actions.selectConversationFilterTarget,
35233
+ onUpdateConversationFilter: actions.updateConversationFilter,
35234
+ onRequestComposerFocus: requestComposerFocus
35191
35235
  }
35192
- )
35193
- }
35194
- ) : null
35195
- ]
35196
- }
35197
- ),
35198
- /* @__PURE__ */ jsx67(
35199
- "aside",
35200
- {
35201
- id: "agent-gui-conversation-rail",
35202
- className: `${AgentGUINode_styles_default.railPanel}${conversationRailCollapsed ? ` ${AgentGUINode_styles_default.railPanelCollapsed}` : ""}`,
35203
- "aria-hidden": conversationRailCollapsed ? "true" : void 0,
35204
- inert: conversationRailCollapsed ? true : void 0,
35205
- children: /* @__PURE__ */ jsx67(
35206
- AgentGUIConversationRailController,
35236
+ ),
35237
+ renderSidebarFooter ? /* @__PURE__ */ jsx68(
35238
+ "div",
35239
+ {
35240
+ className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailSidebarFooter} nodrag tsh-desktop-no-drag`,
35241
+ "data-testid": "agent-gui-sidebar-footer-slot",
35242
+ children: renderSidebarFooter({
35243
+ currentUserId: viewModel.shell.currentUserId,
35244
+ activeConversation: viewModel.rail.activeConversation
35245
+ })
35246
+ }
35247
+ ) : null,
35248
+ shouldShowProviderRailConfigButton ? /* @__PURE__ */ jsx68(
35249
+ "div",
35250
+ {
35251
+ className: `${AgentGUINode_styles_default.providerRailFooter} ${AgentGUINode_styles_default.providerRailConfigFooter} nodrag tsh-desktop-no-drag`,
35252
+ "data-testid": "agent-gui-config-footer",
35253
+ children: /* @__PURE__ */ jsx68(
35254
+ AgentGUIConfigMenu,
35255
+ {
35256
+ environmentSetupVisible,
35257
+ labels,
35258
+ previewMode,
35259
+ providerScopedActionsVisible: viewModel.rail.conversationFilter.kind !== "all",
35260
+ slashStatusLimits: effectiveRailSlashStatusLimits,
35261
+ slashStatusLimitsLoading,
35262
+ slashStatusUsageCapturedAtUnixMs,
35263
+ slashStatusUsageDidFail,
35264
+ slashStatusUsageAttempted,
35265
+ provider: effectiveRailConfigProvider,
35266
+ providerAuthAccountLabel: effectiveProviderAuthAccountLabel,
35267
+ onAgentConfigMenuOpen,
35268
+ onAgentUsageRefresh,
35269
+ onOpenAgentManager: () => setProviderManagerOpen(true),
35270
+ onOpenAgentEnvSetup: openAgentEnvSetup,
35271
+ onOpenAgentSettings: openAgentSettings
35272
+ }
35273
+ )
35274
+ }
35275
+ ) : null
35276
+ ]
35277
+ }
35278
+ ),
35279
+ /* @__PURE__ */ jsx68(
35280
+ "aside",
35207
35281
  {
35208
- ...conversationRailStoreState,
35209
- conversations: viewModel.rail.conversations,
35210
- userProjects: viewModel.rail.userProjects,
35211
- workspaceId: viewModel.shell.workspaceId,
35212
- footer: accountMenuState?.user ? /* @__PURE__ */ jsx67(
35213
- AgentGUIAccountRailMenu,
35282
+ id: "agent-gui-conversation-rail",
35283
+ className: `${AgentGUINode_styles_default.railPanel}${conversationRailCollapsed ? ` ${AgentGUINode_styles_default.railPanelCollapsed}` : ""}`,
35284
+ "aria-hidden": conversationRailCollapsed ? "true" : void 0,
35285
+ inert: conversationRailCollapsed ? true : void 0,
35286
+ children: /* @__PURE__ */ jsx68(
35287
+ AgentGUIConversationRailController,
35214
35288
  {
35215
- accountMenuState,
35216
- labels,
35217
- previewMode
35289
+ ...conversationRailStoreState,
35290
+ conversations: viewModel.rail.conversations,
35291
+ userProjects: viewModel.rail.userProjects,
35292
+ workspaceId: viewModel.shell.workspaceId,
35293
+ footer: accountMenuState?.user ? /* @__PURE__ */ jsx68(
35294
+ AgentGUIAccountRailMenu,
35295
+ {
35296
+ accountMenuState,
35297
+ labels,
35298
+ previewMode
35299
+ }
35300
+ ) : null
35218
35301
  }
35219
- ) : null
35302
+ )
35220
35303
  }
35221
- )
35222
- }
35223
- ),
35224
- /* @__PURE__ */ jsx67(
35225
- "div",
35226
- {
35227
- id: "agent-gui-conversation-rail-resize",
35228
- className: conversationRailCollapsed ? `${AgentGUINode_styles_default.railResizeHandle} ${AgentGUINode_styles_default.railResizeHandleCollapsed} nodrag pointer-events-none opacity-0` : `${AgentGUINode_styles_default.railResizeHandle} nodrag`,
35229
- role: "separator",
35230
- "aria-label": labels.conversationRailResizeAria,
35231
- "aria-hidden": conversationRailCollapsed ? "true" : void 0,
35232
- "aria-orientation": "vertical",
35233
- "aria-valuemin": conversationRailMinWidthPx,
35234
- "aria-valuemax": conversationRailMaxWidthPx,
35235
- "aria-valuenow": conversationRailCollapsed ? void 0 : visualConversationRailWidthPx,
35236
- "data-resizing": isRailResizing ? "true" : void 0,
35237
- "data-testid": "agent-gui-conversation-rail-resize-handle",
35238
- tabIndex: conversationRailCollapsed ? -1 : 0,
35239
- onBlur: () => endConversationRailResize(),
35240
- onKeyDown: handleConversationRailResizeKeyDown,
35241
- onPointerCancel: endConversationRailResize,
35242
- onPointerDown: handleConversationRailResizePointerDown,
35243
- onLostPointerCapture: endConversationRailResize,
35244
- onPointerMove: handleConversationRailResizePointerMove,
35245
- onPointerUp: endConversationRailResize
35246
- }
35247
- ),
35248
- /* @__PURE__ */ jsx67("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx67(
35249
- AgentGUIDetailPane,
35250
- {
35251
- viewModel,
35252
- homeTargetProjection,
35253
- referenceProvenanceFilter,
35254
- composerEngagement,
35255
- actions,
35256
- labels,
35257
- uiLanguage,
35258
- hideDetailHeader: conversationRailCollapsed,
35259
- isActive,
35260
- workspaceReferencePickerOpen,
35261
- composerFocusRequestSequence: detailComposerFocusRequestSequence,
35262
- slashStatusLimits,
35263
- slashStatusLimitsLoading,
35264
- slashStatusLimitsUnavailable,
35265
- onSlashStatusOpen,
35266
- onLinkAction,
35267
- onHandoffConversation,
35268
- capabilityMenuState,
35269
- onCapabilitySettingsRequest,
35270
- onAgentProviderLogin,
35271
- onRequestWorkspaceReferences: requestWorkspaceReferences,
35272
- resolveDroppedFileReferences,
35273
- selectProjectDirectory,
35274
- onRequestGitBranches,
35275
- onRequestComposerFocus: requestComposerFocus,
35276
- contextMentionProviders,
35277
- workspaceAppIcons: effectiveWorkspaceAppIcons,
35278
- workspaceUserProjectI18n,
35279
- renderProviderUnavailableState,
35280
- previewMode
35281
- }
35282
- ) })
35283
- ]
35284
- }
35285
- ),
35286
- /* @__PURE__ */ jsx67(
35287
- AgentGUIReferencePickerSurface,
35288
- {
35289
- aggregator: referenceSourceAggregator,
35290
- copy: workspaceFileReferenceCopy ?? fallbackWorkspaceFileReferenceCopy,
35291
- fileAdapter: workspaceFileReferenceAdapter,
35292
- fileManagerCopy: workspaceFileManagerCopy,
35293
- initialPath: viewModel.composer.composerSettings.selectedProjectPath,
35294
- initialTarget: workspaceReferencePickerTarget,
35295
- isNodeSelectable: isWorkspaceReferencePickerNodeSelectable,
35296
- open: workspaceReferencePickerOpen,
35297
- provenanceFilter: referenceProvenanceFilter,
35298
- resolveEntryIconUrl: resolveWorkspaceReferenceEntryIconUrl,
35299
- workspaceId: viewModel.shell.workspaceId,
35300
- onClose: closeWorkspaceReferencePicker,
35301
- onConfirm: confirmWorkspaceReferencePicker,
35302
- onConfirmBundles: confirmWorkspaceReferenceBundles
35303
- }
35304
- ),
35305
- /* @__PURE__ */ jsx67(
35306
- AgentGUIRenameConversationDialog,
35307
- {
35308
- conversation: renameConversationTarget,
35309
- open: renameConversationDialogOpen && renameConversationTarget !== null,
35310
- labels,
35311
- onOpenChange: (open) => {
35312
- setRenameConversationDialogOpen(open);
35313
- if (!open) {
35314
- setRenameConversationTarget(null);
35304
+ ),
35305
+ /* @__PURE__ */ jsx68(
35306
+ "div",
35307
+ {
35308
+ id: "agent-gui-conversation-rail-resize",
35309
+ className: conversationRailCollapsed ? `${AgentGUINode_styles_default.railResizeHandle} ${AgentGUINode_styles_default.railResizeHandleCollapsed} nodrag pointer-events-none opacity-0` : `${AgentGUINode_styles_default.railResizeHandle} nodrag`,
35310
+ role: "separator",
35311
+ "aria-label": labels.conversationRailResizeAria,
35312
+ "aria-hidden": conversationRailCollapsed ? "true" : void 0,
35313
+ "aria-orientation": "vertical",
35314
+ "aria-valuemin": conversationRailMinWidthPx,
35315
+ "aria-valuemax": conversationRailMaxWidthPx,
35316
+ "aria-valuenow": conversationRailCollapsed ? void 0 : visualConversationRailWidthPx,
35317
+ "data-resizing": isRailResizing ? "true" : void 0,
35318
+ "data-testid": "agent-gui-conversation-rail-resize-handle",
35319
+ tabIndex: conversationRailCollapsed ? -1 : 0,
35320
+ onBlur: () => endConversationRailResize(),
35321
+ onKeyDown: handleConversationRailResizeKeyDown,
35322
+ onPointerCancel: endConversationRailResize,
35323
+ onPointerDown: handleConversationRailResizePointerDown,
35324
+ onLostPointerCapture: endConversationRailResize,
35325
+ onPointerMove: handleConversationRailResizePointerMove,
35326
+ onPointerUp: endConversationRailResize
35327
+ }
35328
+ ),
35329
+ /* @__PURE__ */ jsx68("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx68(
35330
+ AgentGUIDetailPane,
35331
+ {
35332
+ viewModel,
35333
+ homeTargetProjection,
35334
+ referenceProvenanceFilter,
35335
+ composerEngagement,
35336
+ actions,
35337
+ labels,
35338
+ uiLanguage,
35339
+ hideDetailHeader: conversationRailCollapsed,
35340
+ isActive,
35341
+ workspaceReferencePickerOpen,
35342
+ composerFocusRequestSequence: detailComposerFocusRequestSequence,
35343
+ slashStatusLimits,
35344
+ slashStatusLimitsLoading,
35345
+ slashStatusLimitsUnavailable,
35346
+ onSlashStatusOpen,
35347
+ onLinkAction,
35348
+ onHandoffConversation,
35349
+ capabilityMenuState,
35350
+ onCapabilitySettingsRequest,
35351
+ onAgentProviderLogin,
35352
+ onRequestWorkspaceReferences: requestWorkspaceReferences,
35353
+ resolveDroppedFileReferences,
35354
+ selectProjectDirectory,
35355
+ onRequestGitBranches,
35356
+ onRequestComposerFocus: requestComposerFocus,
35357
+ contextMentionProviders,
35358
+ workspaceAppIcons: effectiveWorkspaceAppIcons,
35359
+ workspaceUserProjectI18n,
35360
+ renderProviderUnavailableState,
35361
+ previewMode
35362
+ }
35363
+ ) })
35364
+ ]
35315
35365
  }
35316
- },
35317
- onRename: actions.renameConversation
35318
- }
35319
- )
35320
- ] }) });
35321
- return previewMode ? content : /* @__PURE__ */ jsx67(TooltipProvider5, { children: content });
35366
+ ),
35367
+ /* @__PURE__ */ jsx68(
35368
+ AgentGUIReferencePickerSurface,
35369
+ {
35370
+ aggregator: referenceSourceAggregator,
35371
+ copy: workspaceFileReferenceCopy ?? fallbackWorkspaceFileReferenceCopy,
35372
+ fileAdapter: workspaceFileReferenceAdapter,
35373
+ fileManagerCopy: workspaceFileManagerCopy,
35374
+ initialPath: viewModel.composer.composerSettings.selectedProjectPath,
35375
+ initialTarget: workspaceReferencePickerTarget,
35376
+ isNodeSelectable: isWorkspaceReferencePickerNodeSelectable,
35377
+ open: workspaceReferencePickerOpen,
35378
+ provenanceFilter: referenceProvenanceFilter,
35379
+ resolveEntryIconUrl: resolveWorkspaceReferenceEntryIconUrl,
35380
+ workspaceId: viewModel.shell.workspaceId,
35381
+ onClose: closeWorkspaceReferencePicker,
35382
+ onConfirm: confirmWorkspaceReferencePicker,
35383
+ onConfirmBundles: confirmWorkspaceReferenceBundles
35384
+ }
35385
+ ),
35386
+ /* @__PURE__ */ jsx68(
35387
+ AgentGUIRenameConversationDialog,
35388
+ {
35389
+ conversation: renameConversationTarget,
35390
+ open: renameConversationDialogOpen && renameConversationTarget !== null,
35391
+ labels,
35392
+ onOpenChange: (open) => {
35393
+ setRenameConversationDialogOpen(open);
35394
+ if (!open) {
35395
+ setRenameConversationTarget(null);
35396
+ }
35397
+ },
35398
+ onRename: actions.renameConversation
35399
+ }
35400
+ )
35401
+ ]
35402
+ }
35403
+ ) });
35404
+ return previewMode ? content : /* @__PURE__ */ jsx68(TooltipProvider5, { children: content });
35322
35405
  }
35323
35406
 
35324
35407
  // agent-gui/workspaceDesktop/view/desktopDockAgentProbeTooltipModel.ts
@@ -35499,7 +35582,7 @@ import {
35499
35582
  useState as useState38
35500
35583
  } from "react";
35501
35584
  import { createPortal as createPortal5 } from "react-dom";
35502
- import { Fragment as Fragment19, jsx as jsx68, jsxs as jsxs49 } from "react/jsx-runtime";
35585
+ import { Fragment as Fragment19, jsx as jsx69, jsxs as jsxs49 } from "react/jsx-runtime";
35503
35586
  var POPOVER_MIN_VIEWPORT_INSET_PX = 16;
35504
35587
  var POPOVER_DEFAULT_WIDTH_PX = 260;
35505
35588
  function dockAgentProbeLineKey(line) {
@@ -35513,7 +35596,7 @@ function renderDockAgentProbeLine(line) {
35513
35596
  line.primary,
35514
35597
  line.secondary ? /* @__PURE__ */ jsxs49(Fragment19, { children: [
35515
35598
  " ",
35516
- /* @__PURE__ */ jsx68("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
35599
+ /* @__PURE__ */ jsx69("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
35517
35600
  ] }) : null
35518
35601
  ] });
35519
35602
  }
@@ -35597,7 +35680,7 @@ function AgentProbeInfoPopover({
35597
35680
  if (lines.length === 0) {
35598
35681
  return null;
35599
35682
  }
35600
- const popover = /* @__PURE__ */ jsx68(
35683
+ const popover = /* @__PURE__ */ jsx69(
35601
35684
  "div",
35602
35685
  {
35603
35686
  ref: popoverRef,
@@ -35606,7 +35689,7 @@ function AgentProbeInfoPopover({
35606
35689
  style: popoverStyle ?? void 0,
35607
35690
  onMouseEnter: openPopover,
35608
35691
  onMouseLeave: closeIfPointerLeavesPopover,
35609
- children: /* @__PURE__ */ jsx68("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
35692
+ children: /* @__PURE__ */ jsx69("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
35610
35693
  const label = getDockAgentProbeLineLabel(line);
35611
35694
  const valueText = formatDockAgentProbeLineText(line);
35612
35695
  return /* @__PURE__ */ jsxs49(
@@ -35615,8 +35698,8 @@ function AgentProbeInfoPopover({
35615
35698
  className: "desktop-dock-popup__agent-info-item",
35616
35699
  "data-has-label": label ? "true" : "false",
35617
35700
  children: [
35618
- label ? /* @__PURE__ */ jsx68("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
35619
- /* @__PURE__ */ jsx68(
35701
+ label ? /* @__PURE__ */ jsx69("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
35702
+ /* @__PURE__ */ jsx69(
35620
35703
  "span",
35621
35704
  {
35622
35705
  className: "desktop-dock-popup__agent-info-value",
@@ -35651,7 +35734,7 @@ function AgentProbeInfoPopover({
35651
35734
  },
35652
35735
  onBlur: () => setIsOpen(false),
35653
35736
  children: [
35654
- /* @__PURE__ */ jsx68(Info3, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
35737
+ /* @__PURE__ */ jsx69(Info3, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
35655
35738
  isOpen ? createPortal5(popover, document.body) : null
35656
35739
  ]
35657
35740
  }
@@ -35740,7 +35823,7 @@ function areAgentGUINodePropsEqual(previous, next) {
35740
35823
  const pc = previous.hostCapabilities, nc = next.hostCapabilities;
35741
35824
  const pa = previous.hostActions, na = next.hostActions;
35742
35825
  const ps = previous.renderSlots, ns = next.renderSlots;
35743
- return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.resolveDroppedFileReferences === nw.resolveDroppedFileReferences && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentProbes === nr.agentProbes && pr.onProbeDemandChange === nr.onProbeDemandChange && pr.onProbeRefreshRequest === nr.onProbeRefreshRequest && pc.capabilityMenuState === nc.capabilityMenuState && pc.accountMenuState === nc.accountMenuState && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.handoffAgentTargets === nc.handoffAgentTargets && pc.handoffAgentTargetsLoading === nc.handoffAgentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.contextMentionProviders === nc.contextMentionProviders && pc.mentionService === nc.mentionService && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
35826
+ return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.resolveDroppedFileReferences === nw.resolveDroppedFileReferences && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentProbes === nr.agentProbes && pr.onProbeDemandChange === nr.onProbeDemandChange && pr.onProbeRefreshRequest === nr.onProbeRefreshRequest && pc.capabilityMenuState === nc.capabilityMenuState && pc.accountMenuState === nc.accountMenuState && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.handoffAgentTargets === nc.handoffAgentTargets && pc.handoffAgentTargetsLoading === nc.handoffAgentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.contextMentionProviders === nc.contextMentionProviders && pc.mentionService === nc.mentionService && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onAgentEnvPanelOpen === na.onAgentEnvPanelOpen && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
35744
35827
  }
35745
35828
 
35746
35829
  // agent-gui/agentGuiNode/AgentGUIMentionServiceBoundary.tsx
@@ -35749,7 +35832,7 @@ import {
35749
35832
  useEffectiveRichTextMentionService,
35750
35833
  useRichTextMentionService
35751
35834
  } from "@tutti-os/ui-rich-text/editor";
35752
- import { jsx as jsx69 } from "react/jsx-runtime";
35835
+ import { jsx as jsx70 } from "react/jsx-runtime";
35753
35836
  function AgentGUIMentionServiceBoundary({
35754
35837
  children,
35755
35838
  legacyProviders,
@@ -35763,7 +35846,7 @@ function AgentGUIMentionServiceBoundary({
35763
35846
  if (!service && !inheritedService && !legacyProviders?.length) {
35764
35847
  return children;
35765
35848
  }
35766
- return effectiveService !== inheritedService ? /* @__PURE__ */ jsx69(RichTextMentionServiceProvider, { service: effectiveService, children }) : children;
35849
+ return effectiveService !== inheritedService ? /* @__PURE__ */ jsx70(RichTextMentionServiceProvider, { service: effectiveService, children }) : children;
35767
35850
  }
35768
35851
 
35769
35852
  // agent-gui/agentGuiNode/AgentGUINode.labels.ts
@@ -36623,7 +36706,7 @@ function resolveAgentGUIRailStatusProvider(input) {
36623
36706
  }
36624
36707
 
36625
36708
  // agent-gui/agentGuiNode/AgentGUINode.tsx
36626
- import { jsx as jsx70, jsxs as jsxs50 } from "react/jsx-runtime";
36709
+ import { jsx as jsx71, jsxs as jsxs50 } from "react/jsx-runtime";
36627
36710
  var EMPTY_SLASH_STATUS_QUOTAS = [];
36628
36711
  var DISABLED_REFERENCE_PROVENANCE_CATALOG = {
36629
36712
  enabledDimensions: [],
@@ -36668,6 +36751,8 @@ var AgentGUINode = memo14(function AgentGUINode2({
36668
36751
  conversationRailAutoCollapseWidthPx = null
36669
36752
  } = frame;
36670
36753
  const railAutoCollapseWidthPx = conversationRailAutoCollapseWidthPx ?? void 0;
36754
+ const widthRef = useRef49(width);
36755
+ widthRef.current = width;
36671
36756
  const {
36672
36757
  composerAppend: composerAppendRequest = null,
36673
36758
  composerFocusSequence: composerFocusRequestSequence = null,
@@ -36712,6 +36797,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
36712
36797
  onHandoffConversation,
36713
36798
  onCapabilitySettingsRequest,
36714
36799
  onAgentProviderLogin,
36800
+ onAgentEnvPanelOpen,
36715
36801
  onOpenConversationWindow,
36716
36802
  onClose,
36717
36803
  onResize,
@@ -36779,7 +36865,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
36779
36865
  const nextWidthPx = resolveNextAgentGUIConversationRailWidthPx({
36780
36866
  currentWidthPx: current.conversationRailWidthPx,
36781
36867
  requestedWidthPx: widthPx,
36782
- containerWidthPx: width
36868
+ containerWidthPx: widthRef.current
36783
36869
  });
36784
36870
  if (current.conversationRailWidthPx === nextWidthPx) {
36785
36871
  return current;
@@ -36790,7 +36876,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
36790
36876
  };
36791
36877
  });
36792
36878
  },
36793
- [onUpdateNode, previewMode, width]
36879
+ [onUpdateNode, previewMode]
36794
36880
  );
36795
36881
  const isConversationRailManuallyCollapsed = state.conversationRailCollapsed === true;
36796
36882
  const isConversationRailAutoCollapsed = shouldAutoCollapseAgentGUIConversationRail(width, railAutoCollapseWidthPx);
@@ -37032,12 +37118,12 @@ var AgentGUINode = memo14(function AgentGUINode2({
37032
37118
  previewMode,
37033
37119
  railStatusProvider
37034
37120
  ]);
37035
- return /* @__PURE__ */ jsx70(
37121
+ return /* @__PURE__ */ jsx71(
37036
37122
  AgentGUIMentionServiceBoundary,
37037
37123
  {
37038
37124
  legacyProviders: contextMentionProviders,
37039
37125
  service: mentionService,
37040
- children: /* @__PURE__ */ jsx70(
37126
+ children: /* @__PURE__ */ jsx71(
37041
37127
  WorkspaceNodeWindow,
37042
37128
  {
37043
37129
  nodeId,
@@ -37054,7 +37140,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37054
37140
  bodyClassName: `${AgentGUINode_styles_default.shell} nodrag size-full min-h-0 min-w-0 !bg-transparent p-0`,
37055
37141
  hideHeader: embedded,
37056
37142
  titleAccessory: /* @__PURE__ */ jsxs50("span", { className: "inline-flex flex-none items-center gap-1", children: [
37057
- /* @__PURE__ */ jsx70(
37143
+ /* @__PURE__ */ jsx71(
37058
37144
  AgentProbeInfoPopover,
37059
37145
  {
37060
37146
  lines: agentProbeLines,
@@ -37063,7 +37149,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37063
37149
  onOpen: handleAgentProbeInfoOpen
37064
37150
  }
37065
37151
  ),
37066
- /* @__PURE__ */ jsx70(
37152
+ /* @__PURE__ */ jsx71(
37067
37153
  CanvasNodeGhostIconButton,
37068
37154
  {
37069
37155
  "aria-label": isConversationRailCollapsed ? t("agentHost.agentGui.expandConversationRail") : t("agentHost.agentGui.collapseConversationRail"),
@@ -37075,7 +37161,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37075
37161
  event.stopPropagation();
37076
37162
  handleConversationRailToggle();
37077
37163
  },
37078
- children: /* @__PURE__ */ jsx70(
37164
+ children: /* @__PURE__ */ jsx71(
37079
37165
  CanvasNodePanelLinedIcon,
37080
37166
  {
37081
37167
  width: 18,
@@ -37099,7 +37185,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37099
37185
  renderedWidth,
37100
37186
  railAutoCollapseWidthPx
37101
37187
  );
37102
- return /* @__PURE__ */ jsx70(
37188
+ return /* @__PURE__ */ jsx71(
37103
37189
  AgentGUINodeView,
37104
37190
  {
37105
37191
  viewModel,
@@ -37131,6 +37217,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37131
37217
  capabilityMenuState,
37132
37218
  onCapabilitySettingsRequest,
37133
37219
  onAgentProviderLogin: onAgentProviderLogin ? handleAgentProviderLogin : void 0,
37220
+ onAgentEnvPanelOpen,
37134
37221
  accountMenuState,
37135
37222
  conversationRailCollapsed: isRenderedConversationRailCollapsed,
37136
37223
  conversationRailWidthPx: clampAgentGUIConversationRailWidthPx(
@@ -37171,7 +37258,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
37171
37258
  }, areAgentGUINodePropsEqual);
37172
37259
 
37173
37260
  // AgentGUI.tsx
37174
- import { jsx as jsx71 } from "react/jsx-runtime";
37261
+ import { jsx as jsx72 } from "react/jsx-runtime";
37175
37262
  var AgentGUI = memo15(function AgentGUI2({
37176
37263
  agentActivityRuntime,
37177
37264
  agentHostApi,
@@ -37184,41 +37271,73 @@ var AgentGUI = memo15(function AgentGUI2({
37184
37271
  locale,
37185
37272
  ...props
37186
37273
  }) {
37187
- const normalizedAgents = normalizeAgentGUIAgents(agentDirectory.agents);
37274
+ const normalizedAgents = useMemo42(
37275
+ () => normalizeAgentGUIAgents(agentDirectory.agents),
37276
+ [agentDirectory.agents]
37277
+ );
37278
+ const agentTargets = useMemo42(
37279
+ () => projectAgentGUIAgentsToInternalTargets(normalizedAgents),
37280
+ [normalizedAgents]
37281
+ );
37188
37282
  const effectiveHandoffAgentDirectory = handoffAgentDirectory ?? agentDirectory;
37189
- const normalizedHandoffAgents = normalizeAgentGUIAgents(
37190
- effectiveHandoffAgentDirectory.agents
37283
+ const normalizedHandoffAgents = useMemo42(
37284
+ () => effectiveHandoffAgentDirectory.agents === agentDirectory.agents ? normalizedAgents : normalizeAgentGUIAgents(effectiveHandoffAgentDirectory.agents),
37285
+ [
37286
+ agentDirectory.agents,
37287
+ effectiveHandoffAgentDirectory.agents,
37288
+ normalizedAgents
37289
+ ]
37290
+ );
37291
+ const handoffAgentTargets = useMemo42(
37292
+ () => normalizedHandoffAgents === normalizedAgents ? agentTargets : projectAgentGUIAgentsToInternalTargets(normalizedHandoffAgents),
37293
+ [agentTargets, normalizedAgents, normalizedHandoffAgents]
37191
37294
  );
37192
37295
  const hostCapabilities = props.hostCapabilities;
37193
37296
  const renderSlots = props.renderSlots;
37194
- const nodeProps = {
37195
- ...props,
37196
- hostCapabilities: {
37297
+ const nodeHostCapabilities = useMemo42(
37298
+ () => ({
37197
37299
  ...hostCapabilities,
37198
- agentTargets: projectAgentGUIAgentsToInternalTargets(normalizedAgents),
37300
+ agentTargets,
37199
37301
  agentTargetsLoading: agentDirectory.agents.length === 0 && (agentDirectory.status === "idle" || agentDirectory.status === "loading"),
37200
- handoffAgentTargets: projectAgentGUIAgentsToInternalTargets(
37201
- normalizedHandoffAgents
37202
- ),
37302
+ handoffAgentTargets,
37203
37303
  handoffAgentTargetsLoading: effectiveHandoffAgentDirectory.agents.length === 0 && (effectiveHandoffAgentDirectory.status === "idle" || effectiveHandoffAgentDirectory.status === "loading"),
37204
37304
  disabledHomeSuggestions: disabled,
37205
37305
  providerRailAllPresentation: allAgentsPresentation ?? null,
37206
37306
  providerRailMode: "exact"
37207
- },
37208
- renderSlots: {
37307
+ }),
37308
+ [
37309
+ agentDirectory.agents.length,
37310
+ agentDirectory.status,
37311
+ agentTargets,
37312
+ allAgentsPresentation,
37313
+ disabled,
37314
+ effectiveHandoffAgentDirectory.agents.length,
37315
+ effectiveHandoffAgentDirectory.status,
37316
+ handoffAgentTargets,
37317
+ hostCapabilities
37318
+ ]
37319
+ );
37320
+ const nodeRenderSlots = useMemo42(
37321
+ () => ({
37209
37322
  ...renderSlots,
37210
37323
  providerRailEmpty: renderAgentsEmpty
37211
- }
37324
+ }),
37325
+ [renderAgentsEmpty, renderSlots]
37326
+ );
37327
+ const nodeProps = {
37328
+ ...props,
37329
+ hostCapabilities: nodeHostCapabilities,
37330
+ renderSlots: nodeRenderSlots
37212
37331
  };
37213
- const content = /* @__PURE__ */ jsx71(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx71(
37332
+ const content = /* @__PURE__ */ jsx72(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx72(
37214
37333
  AgentActivityHostProvider,
37215
37334
  {
37216
37335
  agentActivityRuntime,
37217
37336
  agentHostApi,
37218
- children: /* @__PURE__ */ jsx71(AgentGUINode, { ...nodeProps })
37337
+ children: /* @__PURE__ */ jsx72(AgentGUINode, { ...nodeProps })
37219
37338
  }
37220
37339
  ) });
37221
- return props.frame.previewMode ? content : /* @__PURE__ */ jsx71(TooltipProvider6, { delayDuration: 120, skipDelayDuration: 0, children: content });
37340
+ return props.frame.previewMode ? content : /* @__PURE__ */ jsx72(TooltipProvider6, { delayDuration: 120, skipDelayDuration: 0, children: content });
37222
37341
  });
37223
37342
 
37224
37343
  export {
@@ -37231,4 +37350,4 @@ export {
37231
37350
  resolveAgentGUIAgentTarget,
37232
37351
  AgentGUI
37233
37352
  };
37234
- //# sourceMappingURL=chunk-WVWSFGBU.js.map
37353
+ //# sourceMappingURL=chunk-IZ626FDO.js.map