@iblai/web-containers 1.57.0 → 1.58.0

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 (111) hide show
  1. package/dist/cjs/_virtual/index2.js +2 -2
  2. package/dist/cjs/_virtual/index3.js +2 -2
  3. package/dist/cjs/components/chat/ui/button.js +4 -4
  4. package/dist/cjs/components/chat/ui/button.js.map +1 -1
  5. package/dist/cjs/components/chat-input-form/composer-plus-menu.js +94 -17
  6. package/dist/cjs/components/chat-input-form/composer-plus-menu.js.map +1 -1
  7. package/dist/cjs/components/chat-input-form/mcp-connect-explainer-dialog.js +29 -0
  8. package/dist/cjs/components/chat-input-form/mcp-connect-explainer-dialog.js.map +1 -0
  9. package/dist/cjs/components/chat-input-form/mcp-servers-menu.js +199 -0
  10. package/dist/cjs/components/chat-input-form/mcp-servers-menu.js.map +1 -0
  11. package/dist/cjs/components/chat-input-form/use-mcp-active-count.js +56 -0
  12. package/dist/cjs/components/chat-input-form/use-mcp-active-count.js.map +1 -0
  13. package/dist/cjs/components/chat-input-form.js +17 -4
  14. package/dist/cjs/components/chat-input-form.js.map +1 -1
  15. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-dialogs.js +755 -90
  16. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-dialogs.js.map +1 -1
  17. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-management-content.js +386 -984
  18. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-management-content.js.map +1 -1
  19. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/field-info.js +16 -0
  20. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/field-info.js.map +1 -0
  21. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/index.js +6 -3
  22. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/index.js.map +1 -1
  23. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/mcp-connector-helpers.js +463 -0
  24. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/mcp-connector-helpers.js.map +1 -0
  25. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/oauth-app-fields.js +329 -0
  26. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/oauth-app-fields.js.map +1 -0
  27. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/remove-connector-dialog.js +20 -0
  28. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/remove-connector-dialog.js.map +1 -0
  29. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/use-mcp-server-actions.js +744 -0
  30. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/use-mcp-server-actions.js.map +1 -0
  31. package/dist/cjs/components/modals/user-profile-modal.js +2 -0
  32. package/dist/cjs/components/modals/user-profile-modal.js.map +1 -1
  33. package/dist/cjs/components/ui/accordion.js +40 -0
  34. package/dist/cjs/components/ui/accordion.js.map +1 -0
  35. package/dist/cjs/i18n/messages/en.json.js +155 -19
  36. package/dist/cjs/i18n/messages/en.json.js.map +1 -1
  37. package/dist/cjs/i18n/messages/es.json.js +155 -19
  38. package/dist/cjs/i18n/messages/es.json.js.map +1 -1
  39. package/dist/cjs/i18n/messages/fr.json.js +155 -19
  40. package/dist/cjs/i18n/messages/fr.json.js.map +1 -1
  41. package/dist/cjs/i18n/messages/zh.json.js +155 -19
  42. package/dist/cjs/i18n/messages/zh.json.js.map +1 -1
  43. package/dist/cjs/index.js +2 -0
  44. package/dist/cjs/index.js.map +1 -1
  45. package/dist/cjs/node_modules/.pnpm/@radix-ui_react-accordion@1.2.8_@types_react-dom@19.2.1_@types_react@19.1.17__@types_re_b91476821b9fe8f172a947f727875267/node_modules/@radix-ui/react-accordion/dist/index.js +317 -0
  46. package/dist/cjs/node_modules/.pnpm/@radix-ui_react-accordion@1.2.8_@types_react-dom@19.2.1_@types_react@19.1.17__@types_re_b91476821b9fe8f172a947f727875267/node_modules/@radix-ui/react-accordion/dist/index.js.map +1 -0
  47. package/dist/cjs/node_modules/.pnpm/@radix-ui_react-collapsible@1.1.8_@types_react-dom@19.2.1_@types_react@19.1.17__@types__d84e28844e8116e61b459b615fab358a/node_modules/@radix-ui/react-collapsible/dist/index.js +173 -0
  48. package/dist/cjs/node_modules/.pnpm/@radix-ui_react-collapsible@1.1.8_@types_react-dom@19.2.1_@types_react@19.1.17__@types__d84e28844e8116e61b459b615fab358a/node_modules/@radix-ui/react-collapsible/dist/index.js.map +1 -0
  49. package/dist/cjs/node_modules/.pnpm/@radix-ui_react-collection@1.1.4_@types_react-dom@19.2.1_@types_react@19.1.17__@types_r_7047fbfe61c39c77a2126486502acdb6/node_modules/@radix-ui/react-collection/dist/index.js +73 -0
  50. package/dist/cjs/node_modules/.pnpm/@radix-ui_react-collection@1.1.4_@types_react-dom@19.2.1_@types_react@19.1.17__@types_r_7047fbfe61c39c77a2126486502acdb6/node_modules/@radix-ui/react-collection/dist/index.js.map +1 -0
  51. package/dist/cjs/node_modules/.pnpm/css-mediaquery@0.1.2/node_modules/css-mediaquery/index.js +1 -1
  52. package/dist/cjs/node_modules/.pnpm/matchmediaquery@0.4.2/node_modules/matchmediaquery/index.js +1 -1
  53. package/dist/cjs/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  54. package/dist/cjs/web-containers/tsconfig.build.tsbuildinfo +1 -0
  55. package/dist/esm/_virtual/index2.js +2 -2
  56. package/dist/esm/_virtual/index3.js +2 -2
  57. package/dist/esm/components/chat-input-form/composer-plus-menu.js +94 -17
  58. package/dist/esm/components/chat-input-form/composer-plus-menu.js.map +1 -1
  59. package/dist/esm/components/chat-input-form/mcp-connect-explainer-dialog.js +27 -0
  60. package/dist/esm/components/chat-input-form/mcp-connect-explainer-dialog.js.map +1 -0
  61. package/dist/esm/components/chat-input-form/mcp-servers-menu.js +197 -0
  62. package/dist/esm/components/chat-input-form/mcp-servers-menu.js.map +1 -0
  63. package/dist/esm/components/chat-input-form/use-mcp-active-count.js +54 -0
  64. package/dist/esm/components/chat-input-form/use-mcp-active-count.js.map +1 -0
  65. package/dist/esm/components/chat-input-form.js +17 -4
  66. package/dist/esm/components/chat-input-form.js.map +1 -1
  67. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-dialogs.js +755 -92
  68. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-dialogs.js.map +1 -1
  69. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-management-content.js +361 -968
  70. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-management-content.js.map +1 -1
  71. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/field-info.js +14 -0
  72. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/field-info.js.map +1 -0
  73. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/index.js +6 -3
  74. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/index.js.map +1 -1
  75. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/mcp-connector-helpers.js +431 -0
  76. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/mcp-connector-helpers.js.map +1 -0
  77. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/oauth-app-fields.js +313 -0
  78. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/oauth-app-fields.js.map +1 -0
  79. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/remove-connector-dialog.js +18 -0
  80. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/remove-connector-dialog.js.map +1 -0
  81. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/use-mcp-server-actions.js +742 -0
  82. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/use-mcp-server-actions.js.map +1 -0
  83. package/dist/esm/components/modals/user-profile-modal.js +2 -0
  84. package/dist/esm/components/modals/user-profile-modal.js.map +1 -1
  85. package/dist/esm/components/ui/accordion.js +16 -0
  86. package/dist/esm/components/ui/accordion.js.map +1 -0
  87. package/dist/esm/i18n/messages/en.json.js +153 -20
  88. package/dist/esm/i18n/messages/en.json.js.map +1 -1
  89. package/dist/esm/i18n/messages/es.json.js +153 -20
  90. package/dist/esm/i18n/messages/es.json.js.map +1 -1
  91. package/dist/esm/i18n/messages/fr.json.js +153 -20
  92. package/dist/esm/i18n/messages/fr.json.js.map +1 -1
  93. package/dist/esm/i18n/messages/zh.json.js +153 -20
  94. package/dist/esm/i18n/messages/zh.json.js.map +1 -1
  95. package/dist/esm/index.js +1 -0
  96. package/dist/esm/index.js.map +1 -1
  97. package/dist/esm/node_modules/.pnpm/@radix-ui_react-accordion@1.2.8_@types_react-dom@19.2.1_@types_react@19.1.17__@types_re_b91476821b9fe8f172a947f727875267/node_modules/@radix-ui/react-accordion/dist/index.js +306 -0
  98. package/dist/esm/node_modules/.pnpm/@radix-ui_react-accordion@1.2.8_@types_react-dom@19.2.1_@types_react@19.1.17__@types_re_b91476821b9fe8f172a947f727875267/node_modules/@radix-ui/react-accordion/dist/index.js.map +1 -0
  99. package/dist/esm/node_modules/.pnpm/@radix-ui_react-collapsible@1.1.8_@types_react-dom@19.2.1_@types_react@19.1.17__@types__d84e28844e8116e61b459b615fab358a/node_modules/@radix-ui/react-collapsible/dist/index.js +146 -0
  100. package/dist/esm/node_modules/.pnpm/@radix-ui_react-collapsible@1.1.8_@types_react-dom@19.2.1_@types_react@19.1.17__@types__d84e28844e8116e61b459b615fab358a/node_modules/@radix-ui/react-collapsible/dist/index.js.map +1 -0
  101. package/dist/esm/node_modules/.pnpm/@radix-ui_react-collection@1.1.4_@types_react-dom@19.2.1_@types_react@19.1.17__@types_r_7047fbfe61c39c77a2126486502acdb6/node_modules/@radix-ui/react-collection/dist/index.js +71 -0
  102. package/dist/esm/node_modules/.pnpm/@radix-ui_react-collection@1.1.4_@types_react-dom@19.2.1_@types_react@19.1.17__@types_r_7047fbfe61c39c77a2126486502acdb6/node_modules/@radix-ui/react-collection/dist/index.js.map +1 -0
  103. package/dist/esm/node_modules/.pnpm/css-mediaquery@0.1.2/node_modules/css-mediaquery/index.js +1 -1
  104. package/dist/esm/node_modules/.pnpm/matchmediaquery@0.4.2/node_modules/matchmediaquery/index.js +1 -1
  105. package/dist/esm/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  106. package/dist/esm/web-containers/tsconfig.build.tsbuildinfo +1 -0
  107. package/dist/index.d.ts +31 -2
  108. package/dist/package.json +1 -1
  109. package/package.json +3 -3
  110. package/dist/cjs/web-containers/tsconfig.tsbuildinfo +0 -1
  111. package/dist/esm/web-containers/tsconfig.tsbuildinfo +0 -1
@@ -1,4 +1,4 @@
1
- var cssMediaquery = {};
1
+ var propTypes = {exports: {}};
2
2
 
3
- export { cssMediaquery as __exports };
3
+ export { propTypes as __module };
4
4
  //# sourceMappingURL=index2.js.map
@@ -1,4 +1,4 @@
1
- var propTypes = {exports: {}};
1
+ var cssMediaquery = {};
2
2
 
3
- export { propTypes as __module };
3
+ export { cssMediaquery as __exports };
4
4
  //# sourceMappingURL=index3.js.map
@@ -12,6 +12,7 @@ import { cn } from '../../lib/utils.js';
12
12
  import { LLMProviderLogo } from '../modals/edit-mentor-modal/tabs/llm-tab/provider-logo.js';
13
13
  import { ComposerSheet } from './composer-sheet.js';
14
14
  import { MemoryMenu } from './memory-menu.js';
15
+ import { McpServersMenu } from './mcp-servers-menu.js';
15
16
  import LoaderCircle from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/loader-circle.js';
16
17
  import Plus from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/plus.js';
17
18
  import ChevronRight from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/chevron-right.js';
@@ -22,6 +23,7 @@ import Sparkles from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0
22
23
  import Cpu from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/cpu.js';
23
24
  import Terminal from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/terminal.js';
24
25
  import Archive from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/archive.js';
26
+ import Plug from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/plug.js';
25
27
  import Check from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/check.js';
26
28
 
27
29
  /** Distance (px) from the list bottom at which the next skills page is requested. */
@@ -36,13 +38,14 @@ const ROW_CLASS = 'flex h-9 w-full cursor-pointer items-center gap-2.5 rounded-l
36
38
  const POP_CLASS = 'rounded-[14px] border border-[#e6e6e8] bg-white p-1.5 shadow-[0_10px_40px_-12px_rgba(15,23,42,0.18)]';
37
39
  /**
38
40
  * The redesigned composer's single "+" menu: Upload file, Camera, then
39
- * Tools ›, Skills ›, Prompts and Memory ›. Desktop renders a Radix dropdown
41
+ * Tools ›, Skills ›, Prompts, Memory and MCP. Desktop renders a Radix dropdown
40
42
  * with side submenus (menu roles, arrow keys, Escape and focus return come
41
- * from Radix); phones render the same entries as a bottom sheet with pages.
42
- * Every entry is gated by the caller, and the trigger disappears when there
43
- * is nothing to offer.
43
+ * from Radix); Memory and MCP open a panel beside the menu instead; phones
44
+ * render the same entries as a bottom sheet with pages. Every entry is gated
45
+ * by the caller, and the trigger disappears when there is nothing to offer.
44
46
  */
45
- function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false, isPublicRoute, onUploadFile, onCamera, tools, skills, activeSkillSlugs, onToggleSkill, hasMoreSkills = false, isFetchingMoreSkills = false, onLoadMoreSkills, showPrompts, onOpenPrompts, showMemory, models = null, mentorId, tenantKey, username, }) {
47
+ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false, isPublicRoute, onUploadFile, onCamera, tools, skills, activeSkillSlugs, onToggleSkill, hasMoreSkills = false, isFetchingMoreSkills = false, onLoadMoreSkills, showPrompts, onOpenPrompts, showMemory, showMcp, mcpMentorId, sessionId, mcpActiveCount = 0, models = null, mentorId, tenantKey, username, }) {
48
+ var _a;
46
49
  const t = useChatT();
47
50
  const host = useChatHost();
48
51
  const portalContainer = useFloatingPortalContainer();
@@ -56,7 +59,18 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
56
59
  const showUpload = showAttachment && host.features.fileUpload;
57
60
  const showCamera = showAttachment && host.features.camera;
58
61
  const [menuOpen, setMenuOpen] = useState(false);
59
- const [memoryOpen, setMemoryOpen] = useState(false);
62
+ // The kind outlives the close on purpose: Radix keeps the popover mounted
63
+ // through its exit animation, and it must keep showing the panel fading out.
64
+ const [sidePanel, setSidePanel] = useState('memory');
65
+ const [sidePanelOpen, setSidePanelOpen] = useState(false);
66
+ // A Connect sign-in finishes inside the MCP menu: unmounting it mid-flow
67
+ // loses the connection, so nothing closes the panel until it settles.
68
+ const [mcpConnecting, setMcpConnecting] = useState(false);
69
+ const focusPanelOnMenuCloseRef = useRef(false);
70
+ // The popover has an anchor, not a trigger, so Radix cannot return focus to
71
+ // "+" by itself when a panel closes; it goes back there by hand.
72
+ const plusButtonRef = useRef(null);
73
+ const sidePanelRef = useRef(null);
60
74
  const [sheetPage, setSheetPage] = useState(null);
61
75
  const [sheetProvider, setSheetProvider] = useState(null);
62
76
  const cameraPickedRef = useRef(false);
@@ -64,14 +78,40 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
64
78
  const showTools = tools.length > 0;
65
79
  const showSkills = skills.length > 0;
66
80
  const showModel = !!models;
67
- if (!showAttach && !showTools && !showSkills && !showModel && !showPrompts && !showMemory) {
81
+ if (!showAttach &&
82
+ !showTools &&
83
+ !showSkills &&
84
+ !showModel &&
85
+ !showPrompts &&
86
+ !showMemory &&
87
+ !showMcp) {
68
88
  return null;
69
89
  }
70
90
  const activeToolCount = tools.filter((tool) => tool.isActive).length;
71
91
  const activeSkillCount = skills.filter((skill) => activeSkillSlugs.has(skill.slug)).length;
72
92
  const modes = tools.filter((tool) => tool.group === 'mode');
73
93
  const plainTools = tools.filter((tool) => tool.group === 'tool');
74
- const isOpen = isMobile ? sheetPage !== null : menuOpen || memoryOpen;
94
+ const isOpen = isMobile ? sheetPage !== null : menuOpen || sidePanelOpen;
95
+ const mcpMenuProps = {
96
+ tenantKey: tenantKey !== null && tenantKey !== void 0 ? tenantKey : '',
97
+ username: username !== null && username !== void 0 ? username : '',
98
+ mentorId: (_a = mcpMentorId !== null && mcpMentorId !== void 0 ? mcpMentorId : mentorId) !== null && _a !== void 0 ? _a : '',
99
+ sessionId,
100
+ };
101
+ const mcpPanelBusy = sidePanelOpen && sidePanel === 'mcp' && mcpConnecting;
102
+ const openSidePanel = (panel) => {
103
+ // Swapping the panel for Memory would unmount the MCP menu mid sign-in too.
104
+ if (mcpPanelBusy && panel !== 'mcp')
105
+ return;
106
+ focusPanelOnMenuCloseRef.current = panel === 'mcp';
107
+ setSidePanel(panel);
108
+ setSidePanelOpen(true);
109
+ };
110
+ const closeSidePanel = () => {
111
+ if (mcpPanelBusy)
112
+ return;
113
+ setSidePanelOpen(false);
114
+ };
75
115
  const toolLabel = (tool) => tool.isPending ? `${tool.label} ${t('chat.outsideButtons.connecting')}` : tool.label;
76
116
  const handleSkillsScroll = (event) => {
77
117
  if (!hasMoreSkills || isFetchingMoreSkills || !onLoadMoreSkills)
@@ -82,7 +122,7 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
82
122
  }
83
123
  };
84
124
  const loadingMoreRow = isFetchingMoreSkills && (jsx("div", { "data-testid": "skills-menu-loading-more", className: "flex items-center justify-center px-2 py-1.5", children: jsx(LoaderCircle, { className: "h-4 w-4 animate-spin text-gray-400", "aria-hidden": "true" }) }));
85
- const trigger = (jsx(Button, { variant: "ghost", size: "icon", type: "button", disabled: disabled, "aria-label": t('chat.chatInputFormUploadMenu.attachFile'), title: t('chat.chatComposer.addFilesAndTools'), "data-testid": "composer-plus-button", "aria-expanded": isOpen, "aria-haspopup": isMobile ? 'dialog' : 'menu', onClick: isMobile ? () => setSheetPage('main') : undefined, className: cn('h-8 w-8 shrink-0 rounded-[10px] border text-gray-600 hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50', isOpen ? 'border-[#D0E0FF] bg-[#F5F8FF]' : 'border-transparent'), children: jsx(Plus, { className: "h-4 w-4", "aria-hidden": "true" }) }));
125
+ const trigger = (jsx(Button, { ref: plusButtonRef, variant: "ghost", size: "icon", type: "button", disabled: disabled, "aria-label": t('chat.chatInputFormUploadMenu.attachFile'), title: t('chat.chatComposer.addFilesAndTools'), "data-testid": "composer-plus-button", "aria-expanded": isOpen, "aria-haspopup": isMobile ? 'dialog' : 'menu', onClick: isMobile ? () => setSheetPage('main') : undefined, className: cn('h-8 w-8 shrink-0 rounded-[10px] border text-gray-600 hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50', isOpen ? 'border-[#D0E0FF] bg-[#F5F8FF]' : 'border-transparent'), children: jsx(Plus, { className: "h-4 w-4", "aria-hidden": "true" }) }));
86
126
  // ---------------------------------------------------------------- phones
87
127
  if (isMobile) {
88
128
  const closeSheet = () => setSheetPage(null);
@@ -96,7 +136,10 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
96
136
  const sheetRow = 'flex h-11 w-full items-center gap-3 rounded-[10px] px-1.5 text-left text-[15px] text-gray-900 hover:bg-[#F5F8FF] disabled:opacity-50';
97
137
  const tile = 'flex h-[76px] flex-col items-center justify-center gap-2 rounded-xl border border-gray-200 bg-[#fbfbfb] text-[13px] font-medium text-gray-900 disabled:opacity-50';
98
138
  const chevron = jsx(ChevronRight, { className: "h-4 w-4 text-gray-500", "aria-hidden": "true" });
99
- return (jsxs(Fragment, { children: [trigger, jsxs(ComposerSheet, { open: sheetPage !== null, onOpenChange: (open) => !open && closeSheet(), ariaLabel: t('chat.chatComposer.addFilesAndTools'), title: sheetPage ? pageTitles[sheetPage] : undefined, onBack: () => setSheetPage(sheetPage === 'modelProvider' ? 'model' : 'main'), "data-testid": "composer-plus-sheet",
139
+ return (jsxs(Fragment, { children: [trigger, jsxs(ComposerSheet, { open: sheetPage !== null, onOpenChange: (open) => {
140
+ if (!open && !(sheetPage === 'mcp' && mcpConnecting))
141
+ closeSheet();
142
+ }, ariaLabel: t('chat.chatComposer.addFilesAndTools'), title: sheetPage ? pageTitles[sheetPage] : undefined, onBack: () => setSheetPage(sheetPage === 'modelProvider' ? 'model' : 'main'), "data-testid": "composer-plus-sheet",
100
143
  // The sheet itself scrolls; near its bottom the next skills page loads.
101
144
  onScroll: sheetPage === 'skills' ? handleSkillsScroll : undefined, children: [sheetPage === 'main' && (jsxs(Fragment, { children: [showAttach && (jsxs("div", { className: "mt-1 mb-3 grid grid-cols-2 gap-2", children: [showCamera && (jsxs("button", { type: "button", className: tile, disabled: attachDisabled, onClick: () => {
102
145
  closeSheet();
@@ -107,7 +150,7 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
107
150
  }, children: [jsx(Paperclip, { className: "h-5 w-5 text-gray-600", "aria-hidden": "true" }), t('chat.chatInputFormUploadMenu.uploadFile')] }))] })), showTools && (jsxs("button", { type: "button", className: sheetRow, onClick: () => setSheetPage('tools'), children: [jsx(SlidersHorizontal, { className: "h-[18px] w-[18px] text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatComposer.tools') }), jsx(CountBadge, { count: activeToolCount, label: t('chat.chatComposer.activeCount', { count: activeToolCount }) }), chevron] })), showSkills && (jsxs("button", { type: "button", className: sheetRow, "data-testid": "skills-menu-trigger", onClick: () => setSheetPage('skills'), children: [jsx(Sparkles, { className: "h-[18px] w-[18px] text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.skills') }), jsx(CountBadge, { count: activeSkillCount, label: t('chat.chatComposer.activeCount', { count: activeSkillCount }) }), chevron] })), models && (jsxs("button", { type: "button", className: sheetRow, "data-testid": "composer-model-trigger", onClick: () => setSheetPage('model'), children: [jsx(Cpu, { className: "h-[18px] w-[18px] text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatComposer.model') }), jsx("span", { className: "max-w-[45%] truncate text-[13px] text-gray-500", children: models.current.label }), chevron] })), showPrompts && (jsxs("button", { type: "button", className: sheetRow, onClick: () => {
108
151
  closeSheet();
109
152
  onOpenPrompts();
110
- }, children: [jsx(Terminal, { className: "h-[18px] w-[18px] text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.prompts') }), chevron] })), showMemory && (jsxs("button", { type: "button", className: sheetRow, "data-testid": "chat-memory-button", onClick: () => setSheetPage('memory'), children: [jsx(Archive, { className: "h-[18px] w-[18px] text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.memory') })] }))] })), sheetPage === 'tools' && (jsxs(Fragment, { children: [modes.map((tool) => (jsx(MobileToolRow, { tool: tool, label: toolLabel(tool) }, tool.key))), modes.length > 0 && plainTools.length > 0 && (jsx("div", { role: "separator", className: "mx-1.5 my-1.5 h-px shrink-0 bg-gray-200" })), plainTools.map((tool) => (jsx(MobileToolRow, { tool: tool, label: toolLabel(tool) }, tool.key)))] })), sheetPage === 'skills' && (jsxs("div", { "data-testid": "skills-menu-content", className: "flex flex-col", children: [skills.map((skill) => {
153
+ }, children: [jsx(Terminal, { className: "h-[18px] w-[18px] text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.prompts') }), chevron] })), showMemory && (jsxs("button", { type: "button", className: sheetRow, "data-testid": "chat-memory-button", onClick: () => setSheetPage('memory'), children: [jsx(Archive, { className: "h-[18px] w-[18px] text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.memory') })] })), showMcp && (jsxs("button", { type: "button", className: sheetRow, "data-testid": "chat-mcp-button", onClick: () => setSheetPage('mcp'), children: [jsx(Plug, { className: "h-[18px] w-[18px] text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.mcp') }), jsx(CountBadge, { count: mcpActiveCount, label: t('chat.chatComposer.activeCount', { count: mcpActiveCount }) })] }))] })), sheetPage === 'tools' && (jsxs(Fragment, { children: [modes.map((tool) => (jsx(MobileToolRow, { tool: tool, label: toolLabel(tool) }, tool.key))), modes.length > 0 && plainTools.length > 0 && (jsx("div", { role: "separator", className: "mx-1.5 my-1.5 h-px shrink-0 bg-gray-200" })), plainTools.map((tool) => (jsx(MobileToolRow, { tool: tool, label: toolLabel(tool) }, tool.key)))] })), sheetPage === 'skills' && (jsxs("div", { "data-testid": "skills-menu-content", className: "flex flex-col", children: [skills.map((skill) => {
111
154
  const armed = activeSkillSlugs.has(skill.slug);
112
155
  return (jsxs("button", { type: "button", "aria-pressed": armed, "data-testid": `skills-menu-item-${skill.slug}`, title: `/${skill.slug}`, className: cn(sheetRow, 'h-auto min-h-11 px-3 py-1.5'), onClick: () => onToggleSkill(skill), children: [jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [jsx("span", { "data-testid": "skills-menu-item-name", className: "break-words", children: skill.name }), jsxs("span", { "data-testid": "skills-menu-item-slug", className: "text-[13px] break-all text-gray-500", children: ["/", skill.slug] })] }), armed && (jsx(Check, { className: "h-5 w-5 text-[#2563eb]", strokeWidth: 2.25, "aria-hidden": "true" }))] }, skill.unique_id));
113
156
  }), loadingMoreRow] })), models && sheetPage === 'model' && (jsxs("div", { "data-testid": "composer-model-providers", className: "flex flex-col gap-0.5", children: [jsx("p", { className: "px-1.5 pb-2 text-xs text-gray-600", children: t('chat.chatComposer.newChatsUseDefault', { model: models.defaultLabel }) }), models.providers.length === 1
@@ -115,16 +158,29 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
115
158
  : models.providers.map((provider) => (jsxs("button", { type: "button", "data-testid": `composer-model-provider-${provider.key}`, className: cn(sheetRow, 'h-14'), onClick: () => {
116
159
  setSheetProvider(provider.key);
117
160
  setSheetPage('modelProvider');
118
- }, children: [jsx(ProviderRowContent, { provider: provider, models: models }), chevron] }, provider.key)))] })), models && sheetPage === 'modelProvider' && sheetModelProvider && (jsx("div", { "data-testid": "composer-model-list", className: "flex flex-col gap-0.5", children: sheetModelProvider.models.map((option) => (jsx(MobileModelRow, { option: option, models: models, onPicked: closeSheet }, option.llmName))) })), sheetPage === 'memory' && (jsx(MemoryMenu, { onClose: () => setSheetPage('main'), mentorId: mentorId, tenantKey: tenantKey, username: username }))] })] }));
161
+ }, children: [jsx(ProviderRowContent, { provider: provider, models: models }), chevron] }, provider.key)))] })), models && sheetPage === 'modelProvider' && sheetModelProvider && (jsx("div", { "data-testid": "composer-model-list", className: "flex flex-col gap-0.5", children: sheetModelProvider.models.map((option) => (jsx(MobileModelRow, { option: option, models: models, onPicked: closeSheet }, option.llmName))) })), sheetPage === 'memory' && (jsx(MemoryMenu, { onClose: () => setSheetPage('main'), mentorId: mentorId, tenantKey: tenantKey, username: username })), sheetPage === 'mcp' && (jsx(McpServersMenu, { ...mcpMenuProps, onClose: () => {
162
+ if (!mcpConnecting)
163
+ setSheetPage('main');
164
+ }, onConnectingChange: setMcpConnecting }))] })] }));
119
165
  }
120
166
  // --------------------------------------------------------------- desktop
121
- const hasListAfterAttach = showTools || showSkills || showModel || showPrompts || showMemory;
122
- return (jsxs(Popover, { open: memoryOpen, onOpenChange: setMemoryOpen, children: [jsx(PopoverAnchor, { asChild: true, children: jsx("div", { className: "flex shrink-0", children: jsxs(DropdownMenu, { open: menuOpen, onOpenChange: setMenuOpen, children: [jsx(DropdownMenuTrigger, { asChild: true, disabled: disabled, children: trigger }), jsxs(DropdownMenuContent, { align: "start", sideOffset: 8, collisionPadding: 8, "data-testid": "composer-plus-menu", className: cn(POP_CLASS, 'flex w-[248px] flex-col gap-0.5'),
167
+ const hasListAfterAttach = showTools || showSkills || showModel || showPrompts || showMemory || showMcp;
168
+ return (jsxs(Popover, { open: sidePanelOpen, onOpenChange: (open) => (open ? setSidePanelOpen(true) : closeSidePanel()), children: [jsx(PopoverAnchor, { asChild: true, children: jsx("div", { className: "flex shrink-0", children: jsxs(DropdownMenu, { open: menuOpen, onOpenChange: setMenuOpen, children: [jsx(DropdownMenuTrigger, { asChild: true, disabled: disabled, children: trigger }), jsxs(DropdownMenuContent, { align: "start", sideOffset: 8, collisionPadding: 8, "data-testid": "composer-plus-menu", className: cn(POP_CLASS, 'flex w-[248px] flex-col gap-0.5'),
123
169
  // The camera dialog's DismissableLayer is a separate Radix copy from
124
170
  // this menu's: opened while the menu is mounted it records the menu's
125
171
  // `pointer-events: none` on <body> as the original and restores it on
126
172
  // close, freezing the page. This fires after the menu has unmounted.
127
- onCloseAutoFocus: () => {
173
+ onCloseAutoFocus: (event) => {
174
+ var _a;
175
+ // The MCP panel takes focus (Tab from it reaches its controls
176
+ // and switches); Radix would pull it back to "+" here. Focusing
177
+ // the panel from here too covers a panel that was already
178
+ // mounted, whose own open autofocus does not run again.
179
+ if (focusPanelOnMenuCloseRef.current) {
180
+ focusPanelOnMenuCloseRef.current = false;
181
+ event.preventDefault();
182
+ (_a = sidePanelRef.current) === null || _a === void 0 ? void 0 : _a.focus();
183
+ }
128
184
  if (!cameraPickedRef.current)
129
185
  return;
130
186
  cameraPickedRef.current = false;
@@ -140,10 +196,31 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
140
196
  ? models.providers[0].models.map((option) => (jsx(ModelMenuItem, { option: option, models: models }, option.llmName)))
141
197
  : models.providers.map((provider) => (jsxs(DropdownMenuSub, { children: [jsx(DropdownMenuSubTrigger, { "data-testid": `composer-model-provider-${provider.key}`, className: cn(ROW_CLASS, 'h-11 shrink-0 [&>svg:last-child]:h-3.5 [&>svg:last-child]:w-3.5 [&>svg:last-child]:text-gray-500'), children: jsx(ProviderRowContent, { provider: provider, models: models }) }), jsx(Portal2, { container: portalContainer !== null && portalContainer !== void 0 ? portalContainer : undefined, children: jsx(DropdownMenuSubContent, { sideOffset: 6, alignOffset: -7, collisionPadding: 8, "data-testid": "composer-model-list", "aria-label": t('chat.chatComposer.providerModels', {
142
198
  provider: provider.label,
143
- }), className: cn(POP_CLASS, 'flex max-h-[min(70vh,30rem)] w-[220px] flex-col gap-0.5 overflow-y-auto'), children: provider.models.map((option) => (jsx(ModelMenuItem, { option: option, models: models }, option.llmName))) }) })] }, provider.key)))] }) })] })), showPrompts && (jsxs(DropdownMenuItem, { className: ROW_CLASS, onSelect: onOpenPrompts, children: [jsx(Terminal, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.prompts') })] })), showMemory && (jsxs(DropdownMenuItem, { className: ROW_CLASS, "aria-haspopup": "dialog", "data-testid": "chat-memory-button", onSelect: () => setMemoryOpen(true), children: [jsx(Archive, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.memory') })] }))] })] }) }) }), jsx(PopoverContent, { align: "start", sideOffset: 8, collisionPadding: 8, "data-testid": "composer-memory-popover", className: "w-96 max-w-[calc(100vw-1rem)] rounded-[14px] border border-[#e6e6e8] bg-white p-0 shadow-[0_10px_40px_-12px_rgba(15,23,42,0.18)]", onOpenAutoFocus: (e) => e.preventDefault(),
199
+ }), className: cn(POP_CLASS, 'flex max-h-[min(70vh,30rem)] w-[220px] flex-col gap-0.5 overflow-y-auto'), children: provider.models.map((option) => (jsx(ModelMenuItem, { option: option, models: models }, option.llmName))) }) })] }, provider.key)))] }) })] })), showPrompts && (jsxs(DropdownMenuItem, { className: ROW_CLASS, onSelect: onOpenPrompts, children: [jsx(Terminal, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.prompts') })] })), showMemory && (jsxs(DropdownMenuItem, { className: ROW_CLASS, "aria-haspopup": "dialog", "data-testid": "chat-memory-button", onSelect: () => openSidePanel('memory'), children: [jsx(Archive, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.memory') })] })), showMcp && (jsxs(DropdownMenuItem, { className: ROW_CLASS, "aria-haspopup": "dialog", "data-testid": "chat-mcp-button", onSelect: () => openSidePanel('mcp'), children: [jsx(Plug, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormInsideButtons.mcp') }), jsx(CountBadge, { count: mcpActiveCount, label: t('chat.chatComposer.activeCount', { count: mcpActiveCount }) })] }))] })] }) }) }), jsxs(PopoverContent, { ref: sidePanelRef, align: "start", sideOffset: 8, collisionPadding: 8, "data-testid": sidePanel === 'mcp' ? 'composer-mcp-popover' : 'composer-memory-popover', "aria-label": sidePanel === 'mcp' ? t('chat.chatInputFormInsideButtons.mcp') : undefined, className: cn('max-w-[calc(100vw-1rem)] rounded-[14px] border border-[#e6e6e8] bg-white p-0 shadow-[0_10px_40px_-12px_rgba(15,23,42,0.18)]',
200
+ // Wide enough for the MCP panel's one-line explanation under its title.
201
+ sidePanel === 'mcp' ? 'w-[28rem]' : 'w-96',
202
+ // The MCP panel keeps its header in view and scrolls its list inside
203
+ // the height Radix measured.
204
+ sidePanel === 'mcp' &&
205
+ 'flex max-h-[var(--radix-popover-content-available-height)] flex-col overflow-hidden'), onOpenAutoFocus: (e) => {
206
+ var _a;
207
+ e.preventDefault();
208
+ // MCP: focus the panel itself, not its first control, so Tab reaches
209
+ // the search box while phones keep the keyboard down. Memory keeps
210
+ // focus on "+".
211
+ if (sidePanel === 'mcp')
212
+ (_a = e.target) === null || _a === void 0 ? void 0 : _a.focus();
213
+ },
214
+ // Escape or the panel's own close would otherwise drop focus on <body>
215
+ // once the focused panel unmounts.
216
+ onCloseAutoFocus: (e) => {
217
+ var _a;
218
+ e.preventDefault();
219
+ (_a = plusButtonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
220
+ },
144
221
  // The closing dropdown hands focus back to the "+" trigger, which
145
222
  // Radix would otherwise read as focus leaving this popover.
146
- onFocusOutside: /* istanbul ignore next */ (e) => e.preventDefault(), children: jsx(MemoryMenu, { onClose: () => setMemoryOpen(false), mentorId: mentorId, tenantKey: tenantKey, username: username }) })] }));
223
+ onFocusOutside: /* istanbul ignore next */ (e) => e.preventDefault(), children: [sidePanel === 'memory' && (jsx(MemoryMenu, { onClose: closeSidePanel, mentorId: mentorId, tenantKey: tenantKey, username: username })), sidePanel === 'mcp' && (jsx(McpServersMenu, { ...mcpMenuProps, onClose: closeSidePanel, onConnectingChange: setMcpConnecting }))] })] }));
147
224
  }
148
225
  function SubTrigger({ icon, label, count, countLabel, testId, }) {
149
226
  return (jsxs(DropdownMenuSubTrigger, { "data-testid": testId,
@@ -1 +1 @@
1
- {"version":3,"file":"composer-plus-menu.js","sources":["../../../../../../../src/components/chat-input-form/composer-plus-menu.tsx"],"sourcesContent":[null],"names":["_jsx","Loader2","_jsxs","_Fragment","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.CheckboxItem"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA;AACA,MAAM,sBAAsB,GAAG,EAAE;AAgCjC;AACA,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAoC,EAAA;IACpE,IAAI,KAAK,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AAC5B,IAAA,QACEA,GAAA,CAAA,MAAA,EAAA,EAAA,YAAA,EACc,KAAK,EAAA,aAAA,EACL,sBAAsB,EAClC,SAAS,EAAC,6IAA6I,EAAA,QAAA,EAEtJ,KAAK,EAAA,CACD;AAEX;AAEA,MAAM,SAAS,GACb,uQAAuQ;AACzQ,MAAM,SAAS,GACb,sGAAsG;AAExG;;;;;;;AAOG;AACG,SAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,cAAc,GAAG,KAAK,EACtB,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,aAAa,GAAG,KAAK,EACrB,oBAAoB,GAAG,KAAK,EAC5B,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,UAAU,EACV,MAAM,GAAG,IAAI,EACb,QAAQ,EACR,SAAS,EACT,QAAQ,GACc,EAAA;AACtB,IAAA,MAAM,CAAC,GAAG,QAAQ,EAAE;AACpB,IAAA,MAAM,IAAI,GAAG,WAAW,EAAE;AAC1B,IAAA,MAAM,eAAe,GAAG,0BAA0B,EAAE;;;IAGpD,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACvC,QAAA,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ;AACnC,QAAA,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS;QACtC,aAAa,EAAE,aAAa,KAAA,IAAA,IAAb,aAAa,cAAb,aAAa,GAAI,IAAI,CAAC,aAAa;AACnD,KAAA,CAAC;IACF,MAAM,UAAU,GAAG,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;IAC7D,MAAM,UAAU,GAAG,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;IACzD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC;IAClE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;AACvE,IAAA,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;AAErC,IAAA,MAAM,UAAU,GAAG,UAAU,IAAI,UAAU;AAC3C,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;AAClC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACpC,IAAA,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM;AAC1B,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE;AACzF,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;IACpE,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;AAC1F,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC;AAC3D,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC;AAChE,IAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,KAAK,IAAI,GAAG,QAAQ,IAAI,UAAU;AAErE,IAAA,MAAM,SAAS,GAAG,CAAC,IAAkB,KACnC,IAAI,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAC,gCAAgC,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC,KAAK;AAEtF,IAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiC,KAAI;AAC/D,QAAA,IAAI,CAAC,aAAa,IAAI,oBAAoB,IAAI,CAAC,gBAAgB;YAAE;AACjE,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa;AAC9B,QAAA,IAAI,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,YAAY,GAAG,sBAAsB,EAAE;AAC9E,YAAA,gBAAgB,EAAE;QACpB;AACF,IAAA,CAAC;IAED,MAAM,cAAc,GAAG,oBAAoB,KACzCA,GAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EACc,0BAA0B,EACtC,SAAS,EAAC,8CAA8C,YAExDA,GAAA,CAACC,YAAO,EAAA,EAAC,SAAS,EAAC,oCAAoC,iBAAa,MAAM,EAAA,CAAG,EAAA,CACzE,CACP;IAED,MAAM,OAAO,IACXD,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAAA,YAAA,EACN,CAAC,CAAC,yCAAyC,CAAC,EACxD,KAAK,EAAE,CAAC,CAAC,oCAAoC,CAAC,EAAA,aAAA,EAClC,sBAAsB,EAAA,eAAA,EACnB,MAAM,mBACN,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAC3C,OAAO,EAAE,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,EAC1D,SAAS,EAAE,EAAE,CACX,wHAAwH,EACxH,MAAM,GAAG,+BAA+B,GAAG,oBAAoB,CAChE,EAAA,QAAA,EAEDA,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,SAAS,iBAAa,MAAM,EAAA,CAAG,EAAA,CACxC,CACV;;IAGD,IAAI,QAAQ,EAAE;QACZ,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC;QAC3C,MAAM,kBAAkB,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC;AACjF,QAAA,MAAM,UAAU,GAAuC;AACrD,YAAA,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC;AACnC,YAAA,MAAM,EAAE,CAAC,CAAC,wCAAwC,CAAC;AACnD,YAAA,KAAK,EAAE,CAAC,CAAC,oCAAoC,CAAC;AAC9C,YAAA,aAAa,EAAE,kBAAkB,KAAA,IAAA,IAAlB,kBAAkB,KAAA,MAAA,GAAA,MAAA,GAAlB,kBAAkB,CAAE,KAAK;SACzC;QACD,MAAM,QAAQ,GACZ,sIAAsI;QACxI,MAAM,IAAI,GACR,mKAAmK;QACrK,MAAM,OAAO,GAAGA,GAAA,CAAC,YAAY,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG;AAErF,QAAA,QACEE,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACG,OAAO,EACRD,KAAC,aAAa,EAAA,EACZ,IAAI,EAAE,SAAS,KAAK,IAAI,EACxB,YAAY,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,EAC7C,SAAS,EAAE,CAAC,CAAC,oCAAoC,CAAC,EAClD,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,EACpD,MAAM,EAAE,MAAM,YAAY,CAAC,SAAS,KAAK,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC,iBAChE,qBAAqB;;oBAEjC,QAAQ,EAAE,SAAS,KAAK,QAAQ,GAAG,kBAAkB,GAAG,SAAS,EAAA,QAAA,EAAA,CAEhE,SAAS,KAAK,MAAM,KACnBA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACG,UAAU,KACTD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kCAAkC,aAC9C,UAAU,KACTA,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAK;AACZ,gDAAA,UAAU,EAAE;AACZ,gDAAA,QAAQ,EAAE;AACZ,4CAAA,CAAC,aAEDF,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,EAC9D,CAAC,CAAC,qCAAqC,CAAC,IAClC,CACV,EACA,UAAU,KACTE,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAK;AACZ,gDAAA,UAAU,EAAE;AACZ,gDAAA,YAAY,EAAE;4CAChB,CAAC,EAAA,QAAA,EAAA,CAEDF,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,EACjE,CAAC,CAAC,yCAAyC,CAAC,CAAA,EAAA,CACtC,CACV,CAAA,EAAA,CACG,CACP,EACA,SAAS,KACRE,IAAA,CAAA,QAAA,EAAA,EAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,CAC7EF,IAAC,iBAAiB,EAAA,EAChB,SAAS,EAAC,iCAAiC,EAAA,aAAA,EAC/B,MAAM,EAAA,CAClB,EACFA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAA,CAAQ,EAC9DA,GAAA,CAAC,UAAU,EAAA,EACT,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,CAAC,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,EAAA,CACrE,EACD,OAAO,CAAA,EAAA,CACD,CACV,EACA,UAAU,KACTE,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,QAAQ,EAAA,aAAA,EACP,qBAAqB,EACjC,OAAO,EAAE,MAAM,YAAY,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,CAErCF,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,EAC3EA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,CAAC,CAAC,wCAAwC,CAAC,GAAQ,EAC7EA,GAAA,CAAC,UAAU,EAAA,EACT,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,CAAC,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,EAAA,CACtE,EACD,OAAO,CAAA,EAAA,CACD,CACV,EACA,MAAM,KACLE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,QAAQ,EAAA,aAAA,EACP,wBAAwB,EACpC,OAAO,EAAE,MAAM,YAAY,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,CAEpCF,GAAA,CAAC,GAAG,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,EACtEA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAA,CAAQ,EAC9DA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,gDAAgD,EAAA,QAAA,EAC7D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAA,CAChB,EACN,OAAO,CAAA,EAAA,CACD,CACV,EACA,WAAW,KACVE,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,MAAK;AACZ,wCAAA,UAAU,EAAE;AACZ,wCAAA,aAAa,EAAE;oCACjB,CAAC,EAAA,QAAA,EAAA,CAEDF,IAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,iCAAiC,iBAAa,MAAM,EAAA,CAAG,EAC3EA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,CAAC,CAAC,yCAAyC,CAAC,EAAA,CAAQ,EAC7E,OAAO,CAAA,EAAA,CACD,CACV,EACA,UAAU,KACTE,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,QAAQ,iBACP,oBAAoB,EAChC,OAAO,EAAE,MAAM,YAAY,CAAC,QAAQ,CAAC,aAErCF,GAAA,CAAC,OAAO,IAAC,SAAS,EAAC,iCAAiC,EAAA,aAAA,EAAa,MAAM,GAAG,EAC1EA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,YAAE,CAAC,CAAC,wCAAwC,CAAC,EAAA,CAAQ,IACtE,CACV,CAAA,EAAA,CACA,CACJ,EAEA,SAAS,KAAK,OAAO,KACpBE,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MACdH,IAAC,aAAa,EAAA,EAAgB,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAA,EAA5C,IAAI,CAAC,GAAG,CAAwC,CACrE,CAAC,EACD,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,KACxCA,GAAA,CAAA,KAAA,EAAA,EAAK,IAAI,EAAC,WAAW,EAAC,SAAS,EAAC,yCAAyC,GAAG,CAC7E,EACA,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MACnBA,GAAA,CAAC,aAAa,IAAgB,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAA,EAA5C,IAAI,CAAC,GAAG,CAAwC,CACrE,CAAC,IACD,CACJ,EAEA,SAAS,KAAK,QAAQ,KACrBE,IAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EAAiB,qBAAqB,EAAC,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;oCACpB,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;oCAC9C,QACEA,iBAEE,IAAI,EAAC,QAAQ,EAAA,cAAA,EACC,KAAK,iBACN,CAAA,iBAAA,EAAoB,KAAK,CAAC,IAAI,CAAA,CAAE,EAC7C,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,CAAA,CAAE,EACvB,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,6BAA6B,CAAC,EACtD,OAAO,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,aAEnCA,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,sCAAsC,EAAA,QAAA,EAAA,CACpDF,GAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EAAkB,uBAAuB,EAAC,SAAS,EAAC,aAAa,EAAA,QAAA,EAC9D,KAAK,CAAC,IAAI,GACN,EACPE,IAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EACc,uBAAuB,EACnC,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAAA,CAAA,GAAA,EAE7C,KAAK,CAAC,IAAI,IACP,CAAA,EAAA,CACF,EACN,KAAK,KACJF,IAAC,KAAK,EAAA,EACJ,SAAS,EAAC,wBAAwB,EAClC,WAAW,EAAE,IAAI,EAAA,aAAA,EACL,MAAM,GAClB,CACH,CAAA,EAAA,EAzBI,KAAK,CAAC,SAAS,CA0Bb;gCAEb,CAAC,CAAC,EACD,cAAc,CAAA,EAAA,CACX,CACP,EAEA,MAAM,IAAI,SAAS,KAAK,OAAO,KAC9BE,6BAAiB,0BAA0B,EAAC,SAAS,EAAC,uBAAuB,aAC3EF,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAC7C,CAAC,CAAC,sCAAsC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,GACxE,EACH,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK;AAC3B,sCAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,MACpCA,GAAA,CAAC,cAAc,EAAA,EAEb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,UAAU,EAAA,EAHf,MAAM,CAAC,OAAO,CAInB,CACH;AACH,sCAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,MAC5BE,IAAA,CAAA,QAAA,EAAA,EAEE,IAAI,EAAC,QAAQ,EAAA,aAAA,EACA,CAAA,wBAAA,EAA2B,QAAQ,CAAC,GAAG,CAAA,CAAE,EACtD,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAK;AACZ,4CAAA,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;4CAC9B,YAAY,CAAC,eAAe,CAAC;wCAC/B,CAAC,EAAA,QAAA,EAAA,CAEDF,GAAA,CAAC,kBAAkB,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAA,CAAI,EACzD,OAAO,CAAA,EAAA,EAVH,QAAQ,CAAC,GAAG,CAWV,CACV,CAAC,CAAA,EAAA,CACF,CACP,EAEA,MAAM,IAAI,SAAS,KAAK,eAAe,IAAI,kBAAkB,KAC5DA,4BAAiB,qBAAqB,EAAC,SAAS,EAAC,uBAAuB,EAAA,QAAA,EACrE,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,MACpCA,GAAA,CAAC,cAAc,EAAA,EAEb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,UAAU,EAAA,EAHf,MAAM,CAAC,OAAO,CAInB,CACH,CAAC,EAAA,CACE,CACP,EAEA,SAAS,KAAK,QAAQ,KACrBA,GAAA,CAAC,UAAU,IACT,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,EACnC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAAA,CAClB,CACH,CAAA,EAAA,CACa,CAAA,EAAA,CACf;IAEP;;IAGA,MAAM,kBAAkB,GAAG,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU;AAE5F,IAAA,QACEE,IAAA,CAAC,OAAO,EAAA,EAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAA,QAAA,EAAA,CACpDF,GAAA,CAAC,aAAa,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EACpBA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAC5BE,KAAC,YAAY,EAAA,EAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAA,QAAA,EAAA,CACrDF,GAAA,CAAC,mBAAmB,EAAA,EAAC,OAAO,EAAA,IAAA,EAAC,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAC5C,OAAO,EAAA,CACY,EACtBE,IAAA,CAAC,mBAAmB,EAAA,EAClB,KAAK,EAAC,OAAO,EACb,UAAU,EAAE,CAAC,EACb,gBAAgB,EAAE,CAAC,EAAA,aAAA,EACP,oBAAoB,EAChC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,iCAAiC,CAAC;;;;;gCAK3D,gBAAgB,EAAE,MAAK;oCACrB,IAAI,CAAC,eAAe,CAAC,OAAO;wCAAE;AAC9B,oCAAA,eAAe,CAAC,OAAO,GAAG,KAAK;AAC/B,oCAAA,QAAQ,EAAE;gCACZ,CAAC,EAAA,QAAA,EAAA,CAEA,UAAU,KACTA,IAAA,CAAC,gBAAgB,EAAA,EACf,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EAAA,QAAA,EAAA,CAEtBF,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,EAClEA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,CAAC,CAAC,yCAAyC,CAAC,EAAA,CAAQ,CAAA,EAAA,CAC7D,CACpB,EACA,UAAU,KACTE,IAAA,CAAC,gBAAgB,EAAA,EACf,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAK;AACb,4CAAA,eAAe,CAAC,OAAO,GAAG,IAAI;AAChC,wCAAA,CAAC,aAEDF,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,EAC/DA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,YAAE,CAAC,CAAC,qCAAqC,CAAC,GAAQ,CAAA,EAAA,CACzD,CACpB,EACA,UAAU,IAAI,kBAAkB,KAC/BA,GAAA,CAAC,qBAAqB,EAAA,EAAC,SAAS,EAAC,yBAAyB,EAAA,CAAG,CAC9D,EAEA,SAAS,KACRE,KAAC,eAAe,EAAA,EAAA,QAAA,EAAA,CACdF,GAAA,CAAC,UAAU,IACT,IAAI,EACFA,GAAA,CAAC,iBAAiB,IAAC,SAAS,EAAC,uBAAuB,EAAA,aAAA,EAAa,MAAM,GAAG,EAE5E,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC,EACnC,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,CAAC,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,EAC1E,MAAM,EAAC,wBAAwB,EAAA,CAC/B,EACFA,IAACI,OAA4B,EAAA,EAAC,SAAS,EAAE,eAAe,aAAf,eAAe,KAAA,MAAA,GAAf,eAAe,GAAI,SAAS,EAAA,QAAA,EACnEF,IAAA,CAAC,sBAAsB,EAAA,EACrB,UAAU,EAAE,CAAC,EACb,WAAW,EAAE,EAAE,EACf,gBAAgB,EAAE,CAAC,EAAA,aAAA,EACP,qBAAqB,gBACrB,CAAC,CAAC,yBAAyB,CAAC,EACxC,SAAS,EAAE,EAAE,CACX,SAAS,EACT,oEAAoE,CACrE,EAAA,QAAA,EAAA,CAEA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MACdF,GAAA,CAAC,gBAAgB,EAAA,EAAgB,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAA,EAA5C,IAAI,CAAC,GAAG,CAAwC,CACxE,CAAC,EACD,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,KACxCA,GAAA,CAAC,qBAAqB,EAAA,EAAC,SAAS,EAAC,yBAAyB,EAAA,CAAG,CAC9D,EACA,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MACnBA,IAAC,gBAAgB,EAAA,EAAgB,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAA,EAA5C,IAAI,CAAC,GAAG,CAAwC,CACxE,CAAC,CAAA,EAAA,CACqB,GACI,CAAA,EAAA,CACf,CACnB,EAEA,UAAU,KACTE,IAAA,CAAC,eAAe,EAAA,EAAA,QAAA,EAAA,CACdF,GAAA,CAAC,UAAU,EAAA,EACT,IAAI,EAAEA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,uBAAuB,iBAAa,MAAM,EAAA,CAAG,EACvE,KAAK,EAAE,CAAC,CAAC,wCAAwC,CAAC,EAClD,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,CAAC,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,EAC3E,MAAM,EAAC,qBAAqB,EAAA,CAC5B,EACFA,GAAA,CAACI,OAA4B,IAAC,SAAS,EAAE,eAAe,KAAA,IAAA,IAAf,eAAe,KAAA,MAAA,GAAf,eAAe,GAAI,SAAS,EAAA,QAAA,EACnEF,KAAC,sBAAsB,EAAA,EACrB,UAAU,EAAE,CAAC,EACb,WAAW,EAAE,EAAE,EACf,gBAAgB,EAAE,CAAC,iBACP,qBAAqB,EAAA,YAAA,EACrB,CAAC,CAAC,wCAAwC,CAAC,EACvD,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,EAAE,CACX,SAAS,EACT,oEAAoE,CACrE,EAAA,QAAA,EAAA,CAEA,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;4DACpB,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;4DAC9C,QACEA,KAACG,aAAkC,EAAA,EAEjC,OAAO,EAAE,KAAK,EAAA,aAAA,EACD,oBAAoB,KAAK,CAAC,IAAI,CAAA,CAAE,EAC7C,KAAK,EAAE,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,EAAE,EACvB,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,uBAAuB,CAAC,EACjD,QAAQ,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAIpCH,eAAM,SAAS,EAAC,sCAAsC,EAAA,QAAA,EAAA,CACpDF,GAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EAAkB,uBAAuB,EAAC,SAAS,EAAC,aAAa,EAAA,QAAA,EAC9D,KAAK,CAAC,IAAI,GACN,EACPE,IAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EACc,uBAAuB,EACnC,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAA,CAAA,GAAA,EAEzC,KAAK,CAAC,IAAI,IACP,CAAA,EAAA,CACF,EACN,KAAK,KACJF,IAAC,KAAK,EAAA,EAAC,SAAS,EAAC,wBAAwB,iBAAa,MAAM,EAAA,CAAG,CAChE,CAAA,EAAA,EAtBI,KAAK,CAAC,SAAS,CAuBe;AAEzC,wDAAA,CAAC,CAAC,EACD,cAAc,CAAA,EAAA,CACQ,EAAA,CACI,CAAA,EAAA,CACf,CACnB,EAEA,MAAM,KACLE,IAAA,CAAC,eAAe,EAAA,EAAA,QAAA,EAAA,CACdA,IAAA,CAAC,sBAAsB,EAAA,EAAA,aAAA,EACT,wBAAwB,EACpC,SAAS,EAAE,EAAE,CACX,SAAS,EACT,oFAAoF,CACrF,EAAA,QAAA,EAAA,CAEDF,GAAA,CAAC,GAAG,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,EAC5DA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAA,CAAQ,EAC9DA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iDAAiD,EAAA,QAAA,EAC9D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAA,CAChB,CAAA,EAAA,CACgB,EACzBA,GAAA,CAACI,OAA4B,EAAA,EAAC,SAAS,EAAE,eAAe,KAAA,IAAA,IAAf,eAAe,KAAA,MAAA,GAAf,eAAe,GAAI,SAAS,EAAA,QAAA,EACnEF,IAAA,CAAC,sBAAsB,EAAA,EACrB,UAAU,EAAE,CAAC,EACb,WAAW,EAAE,EAAE,EACf,gBAAgB,EAAE,CAAC,EAAA,aAAA,EACP,0BAA0B,EAAA,YAAA,EAC1B,CAAC,CAAC,oCAAoC,CAAC,EACnD,SAAS,EAAE,EAAE,CACX,SAAS,EACT,yEAAyE,CAC1E,EAAA,QAAA,EAAA,CAEDA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,CAC1CF,aAAK,SAAS,EAAC,qCAAqC,EAAA,QAAA,EACjD,CAAC,CAAC,oCAAoC,CAAC,GACpC,EACNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EACnC,CAAC,CAAC,sCAAsC,EAAE;wEACzC,KAAK,EAAE,MAAM,CAAC,YAAY;AAC3B,qEAAA,CAAC,GACE,CAAA,EAAA,CACF,EACNA,GAAA,CAAC,qBAAqB,IAAC,SAAS,EAAC,yBAAyB,EAAA,CAAG,EAC5D,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK;AAC3B,8DAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,MACpCA,GAAA,CAAC,aAAa,EAAA,EAAsB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAA9C,MAAM,CAAC,OAAO,CAAoC,CACvE;AACH,8DAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,MAC5BE,KAAC,eAAe,EAAA,EAAA,QAAA,EAAA,CACdF,IAAC,sBAAsB,EAAA,EAAA,aAAA,EACR,CAAA,wBAAA,EAA2B,QAAQ,CAAC,GAAG,CAAA,CAAE,EACtD,SAAS,EAAE,EAAE,CACX,SAAS,EACT,kGAAkG,CACnG,EAAA,QAAA,EAEDA,GAAA,CAAC,kBAAkB,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAA,CAAI,EAAA,CACnC,EACzBA,GAAA,CAACI,OAA4B,EAAA,EAC3B,SAAS,EAAE,eAAe,KAAA,IAAA,IAAf,eAAe,cAAf,eAAe,GAAI,SAAS,EAAA,QAAA,EAEvCJ,GAAA,CAAC,sBAAsB,EAAA,EACrB,UAAU,EAAE,CAAC,EACb,WAAW,EAAE,EAAE,EACf,gBAAgB,EAAE,CAAC,EAAA,aAAA,EACP,qBAAqB,gBACrB,CAAC,CAAC,kCAAkC,EAAE;gFAChD,QAAQ,EAAE,QAAQ,CAAC,KAAK;AACzB,6EAAA,CAAC,EACF,SAAS,EAAE,EAAE,CACX,SAAS,EACT,yEAAyE,CAC1E,EAAA,QAAA,EAEA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,MAC1BA,IAAC,aAAa,EAAA,EAEZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAA,EAFT,MAAM,CAAC,OAAO,CAGnB,CACH,CAAC,GACqB,EAAA,CACI,CAAA,EAAA,EAlCX,QAAQ,CAAC,GAAG,CAmChB,CACnB,CAAC,CAAA,EAAA,CACiB,EAAA,CACI,IACf,CACnB,EAEA,WAAW,KACVE,IAAA,CAAC,gBAAgB,IAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,aAC7DF,GAAA,CAAC,QAAQ,IAAC,SAAS,EAAC,uBAAuB,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,EACjEA,cAAM,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,CAAC,CAAC,yCAAyC,CAAC,EAAA,CAAQ,CAAA,EAAA,CAC7D,CACpB,EAEA,UAAU,KACTE,IAAA,CAAC,gBAAgB,EAAA,EACf,SAAS,EAAE,SAAS,mBACN,QAAQ,EAAA,aAAA,EACV,oBAAoB,EAChC,QAAQ,EAAE,MAAM,aAAa,CAAC,IAAI,CAAC,aAEnCF,GAAA,CAAC,OAAO,IAAC,SAAS,EAAC,uBAAuB,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,EAChEA,cAAM,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,CAAC,CAAC,wCAAwC,CAAC,EAAA,CAAQ,CAAA,EAAA,CAC5D,CACpB,CAAA,EAAA,CACmB,CAAA,EAAA,CACT,GACX,EAAA,CACQ,EAChBA,GAAA,CAAC,cAAc,IACb,KAAK,EAAC,OAAO,EACb,UAAU,EAAE,CAAC,EACb,gBAAgB,EAAE,CAAC,EAAA,aAAA,EACP,yBAAyB,EACrC,SAAS,EAAC,kIAAkI,EAC5I,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE;;;AAG1C,gBAAA,cAAc,6BAA6B,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,EAAA,QAAA,EAEpEA,GAAA,CAAC,UAAU,EAAA,EACT,OAAO,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EACnC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,GAClB,EAAA,CACa,CAAA,EAAA,CACT;AAEd;AAEA,SAAS,UAAU,CAAC,EAClB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,UAAU,EACV,MAAM,GAOP,EAAA;AACC,IAAA,QACEE,IAAA,CAAC,sBAAsB,EAAA,EAAA,aAAA,EACR,MAAM;;AAEnB,QAAA,SAAS,EAAE,EAAE,CACX,SAAS,EACT,oFAAoF,CACrF,EAAA,QAAA,EAAA,CAEA,IAAI,EACLF,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,KAAK,EAAA,CAAQ,EACvCA,GAAA,CAAC,UAAU,EAAA,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAA,CAAI,CAAA,EAAA,CACxB;AAE7B;AAEA,SAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAyC,EAAA;IAC9E,QACEE,IAAA,CAACG,aAAkC,EAAA,EACjC,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAA,aAAA,EACX,CAAA,mBAAA,EAAsB,IAAI,CAAC,GAAG,CAAA,CAAE,EAC7C,SAAS,EAAE,SAAS;;AAEpB,QAAA,QAAQ,EAAE,CAAC,KAAK,KAAI;YAClB,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,MAAM,EAAE;QACf,CAAC,EAAA,QAAA,EAAA,CAEDL,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,YAAE,KAAK,EAAA,CAAQ,EACtC,IAAI,CAAC,QAAQ,IAAIA,GAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,wBAAwB,iBAAa,MAAM,EAAA,CAAG,CAAA,EAAA,CAC9C;AAEzC;AAEA,SAAS,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAyC,EAAA;IAC3E,QACEE,cAAK,SAAS,EAAC,sEAAsE,EAAA,QAAA,EAAA,CACnFF,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,KAAK,EAAA,CAAQ,EACvCA,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAA,YAAA,EACZ,IAAI,CAAC,KAAK,iBACT,CAAA,mBAAA,EAAsB,IAAI,CAAC,GAAG,CAAA,CAAE,EAC7C,eAAe,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,EAAA,CACpC,CAAA,EAAA,CACE;AAEV;AAEA,MAAM,cAAc,GAAG,CAAC,MAA2B,EAAE,MAAsB,KACzE,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,OAAO;AAE1F;AACA,SAAS,kBAAkB,CAAC,EAC1B,QAAQ,EACR,MAAM,GAIP,EAAA;AACC,IAAA,MAAM,CAAC,GAAG,QAAQ,EAAE;IACpB,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ;AAC7D,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;IACrE,MAAM,KAAK,GACT,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK;AACzB,UAAE,CAAC,CAAC,iCAAiC;AACrC,UAAE,CAAC,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAC1E,MAAM,MAAM,GAAG;AACb,UAAE,CAAC,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;AACnE,UAAE;AACA,cAAE,CAAC,CAAC,yCAAyC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;cAClF,KAAK;AACX,IAAA,QACEE,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACEH,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,uDAAuD,EAAA,aAAA,EAAa,MAAM,EAAA,QAAA,EACxFA,GAAA,CAAC,eAAe,EAAA,EAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAC,EAAE,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,GAC3E,EACPE,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,wCAAwC,EAAA,QAAA,EAAA,CACtDF,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAAE,QAAQ,CAAC,KAAK,EAAA,CAAQ,EACvFA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,0CAA0C,EAAA,QAAA,EAAE,MAAM,EAAA,CAAQ,CAAA,EAAA,CACrE,EACN,YAAY,IAAIA,IAAC,KAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,CAAA,EAAA,CACxF;AAEP;AAEA,SAAS,UAAU,CAAC,EAAE,MAAM,EAAmC,EAAA;AAC7D,IAAA,QACEE,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,8BAA8B,aAC5CF,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,UAAU,YAAE,MAAM,CAAC,KAAK,EAAA,CAAQ,EAC/C,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,iBAAiB,KAC5CA,cAAM,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAChE,MAAM,CAAC,iBAAiB,GACpB,CACR,CAAA,EAAA,CACI;AAEX;AAEA,SAAS,aAAa,CAAC,EACrB,MAAM,EACN,MAAM,GAIP,EAAA;AACC,IAAA,MAAM,CAAC,GAAG,QAAQ,EAAE;IACpB,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;IAC/C,QACEE,IAAA,CAACG,aAAkC,IACjC,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,EAAA,aAAA,EACf,qBAAqB,EAAA,YAAA,EACrB,MAAM,CAAC,OAAO,EAAA,kBAAA,EACR,MAAM,CAAC,SAAS,GAAG,OAAO,GAAG,MAAM,EACrD,KAAK,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,iBAAiB,EAC9D,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,uBAAuB,CAAC,EAClF,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,CAErCL,GAAA,CAAC,UAAU,EAAA,EAAC,MAAM,EAAE,MAAM,EAAA,CAAI,EAC7B,MAAM,CAAC,SAAS,IAAIA,GAAA,CAAC,UAAU,EAAA,EAAC,KAAK,EAAE,CAAC,CAAC,8BAA8B,CAAC,EAAA,CAAI,EAC5E,QAAQ,IAAIA,GAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,CAAA,EAAA,CAClD;AAEzC;AAEA,SAAS,cAAc,CAAC,EACtB,MAAM,EACN,MAAM,EACN,QAAQ,GAKT,EAAA;AACC,IAAA,MAAM,CAAC,GAAG,QAAQ,EAAE;IACpB,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;IAC/C,QACEE,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,kBACC,QAAQ,EACtB,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,EAAA,aAAA,EACf,qBAAqB,EAAA,YAAA,EACrB,MAAM,CAAC,OAAO,EAAA,kBAAA,EACR,MAAM,CAAC,SAAS,GAAG,OAAO,GAAG,MAAM,EACrD,SAAS,EAAE,EAAE,CACX,uKAAuK,EACvK,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,EAC3B,QAAQ,IAAI,cAAc,CAC3B,EACD,OAAO,EAAE,MAAK;AACZ,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACrB,YAAA,QAAQ,EAAE;AACZ,QAAA,CAAC,aAEDF,GAAA,CAAC,UAAU,IAAC,MAAM,EAAE,MAAM,EAAA,CAAI,EAC7B,MAAM,CAAC,SAAS,IAAIA,GAAA,CAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,8BAA8B,CAAC,EAAA,CAAI,EAC5E,QAAQ,KACPA,IAAC,KAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAC,WAAW,EAAE,IAAI,EAAA,aAAA,EAAc,MAAM,GAAG,CAC5F,CAAA,EAAA,CACM;AAEb;AAEA,SAAS,UAAU,CAAC,EAAE,KAAK,EAAqB,EAAA;IAC9C,QACEA,cAAM,SAAS,EAAC,+GAA+G,EAAA,QAAA,EAC5H,KAAK,EAAA,CACD;AAEX;;;;"}
1
+ {"version":3,"file":"composer-plus-menu.js","sources":["../../../../../../../src/components/chat-input-form/composer-plus-menu.tsx"],"sourcesContent":[null],"names":["_jsx","Loader2","_jsxs","_Fragment","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.CheckboxItem"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useT } from '../../i18n/context.js';
3
+ import '../../packages/i18n/dist/index.esm.js';
4
+ import { AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from '../chat/ui/alert-dialog.js';
5
+
6
+ /**
7
+ * What pressing Connect does, said once before the first sign-in window
8
+ * opens (the Cowork consent dialog's shape): whose account the sign-in
9
+ * becomes — the user's own for a per-user server, everyone's for a shared
10
+ * one — and that pop-ups must be allowed for the window to appear.
11
+ */
12
+ function McpConnectExplainerDialog({ server, onCancel, onContinue, }) {
13
+ var _a;
14
+ const t = useT();
15
+ const name = (server === null || server === void 0 ? void 0 : server.name) ||
16
+ ((_a = server === null || server === void 0 ? void 0 : server.oauth_service_data) === null || _a === void 0 ? void 0 : _a.display_name) ||
17
+ t('mcpTabConnectorManagementContent.unknownConnector');
18
+ // The agent's own choice wins over the connector's, as for the connection itself.
19
+ const scope = (server === null || server === void 0 ? void 0 : server.effective_auth_scope) || (server === null || server === void 0 ? void 0 : server.auth_scope);
20
+ const shared = !!scope && scope !== 'user';
21
+ return (jsx(AlertDialog, { open: server !== null, onOpenChange: (open) => !open && onCancel(), children: jsxs(AlertDialogContent, { "data-testid": "mcp-connect-explainer", children: [jsxs(AlertDialogHeader, { children: [jsx(AlertDialogTitle, { children: t('mcpServersMenu.connectTitle', { name }) }), jsxs(AlertDialogDescription, { className: "space-y-2", children: [jsx("span", { className: "block", children: shared
22
+ ? t('mcpServersMenu.connectBodyShared', { name })
23
+ : t('mcpServersMenu.connectBodyUser', { name }) }), jsx("span", { className: "block", children: t('mcpServersMenu.connectPopupHint') })] })] }), jsxs(AlertDialogFooter, { children: [jsx(AlertDialogCancel, { "data-testid": "mcp-connect-explainer-cancel", children: t('mcpTabConnectorManagementContent.cancel') }), jsx(AlertDialogAction, { "data-testid": "mcp-connect-explainer-continue", onClick: () => server && onContinue(server), children: t('mcpServersMenu.connectContinue') })] })] }) }));
24
+ }
25
+
26
+ export { McpConnectExplainerDialog };
27
+ //# sourceMappingURL=mcp-connect-explainer-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-connect-explainer-dialog.js","sources":["../../../../../../../src/components/chat-input-form/mcp-connect-explainer-dialog.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;AAsBA;;;;;AAKG;AACG,SAAU,yBAAyB,CAAC,EACxC,MAAM,EACN,QAAQ,EACR,UAAU,GACqB,EAAA;;AAC/B,IAAA,MAAM,CAAC,GAAG,IAAI,EAAE;IAChB,MAAM,IAAI,GACR,CAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,IAAI;SACZ,CAAA,EAAA,GAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,YAAY,CAAA;QACxC,CAAC,CAAC,mDAAmD,CAAC;;AAExD,IAAA,MAAM,KAAK,GAAG,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,oBAAoB,MAAI,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,UAAU,CAAA;IAChE,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;IAC1C,QACEA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,EAAA,QAAA,EAC7EC,IAAA,CAAC,kBAAkB,EAAA,EAAA,aAAA,EAAa,uBAAuB,EAAA,QAAA,EAAA,CACrDA,KAAC,iBAAiB,EAAA,EAAA,QAAA,EAAA,CAChBD,GAAA,CAAC,gBAAgB,EAAA,EAAA,QAAA,EAAE,CAAC,CAAC,6BAA6B,EAAE,EAAE,IAAI,EAAE,CAAC,EAAA,CAAoB,EACjFC,IAAA,CAAC,sBAAsB,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CAC3CD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,OAAO,EAAA,QAAA,EACpB;0CACG,CAAC,CAAC,kCAAkC,EAAE,EAAE,IAAI,EAAE;AAChD,0CAAE,CAAC,CAAC,gCAAgC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAA,CAC5C,EACPA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,OAAO,EAAA,QAAA,EAAE,CAAC,CAAC,iCAAiC,CAAC,EAAA,CAAQ,CAAA,EAAA,CAC9C,CAAA,EAAA,CACP,EACpBC,IAAA,CAAC,iBAAiB,EAAA,EAAA,QAAA,EAAA,CAChBD,GAAA,CAAC,iBAAiB,mBAAa,8BAA8B,EAAA,QAAA,EAC1D,CAAC,CAAC,yCAAyC,CAAC,EAAA,CAC3B,EACpBA,GAAA,CAAC,iBAAiB,EAAA,EAAA,aAAA,EACJ,gCAAgC,EAC5C,OAAO,EAAE,MAAM,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,EAAA,QAAA,EAE1C,CAAC,CAAC,gCAAgC,CAAC,EAAA,CAClB,CAAA,EAAA,CACF,CAAA,EAAA,CACD,EAAA,CACT;AAElB;;;;"}
@@ -0,0 +1,197 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState, useCallback, useEffect, useMemo } from 'react';
3
+ import { useSetMCPServerSessionPreferenceMutation, useGetMCPServersQuery } from '@iblai/data-layer';
4
+ import { toast } from 'sonner';
5
+ import { useT } from '../../i18n/context.js';
6
+ import '../../packages/i18n/dist/index.esm.js';
7
+ import { Button } from '../ui/button.js';
8
+ import { Switch } from '../ui/switch.js';
9
+ import { Spinner } from '../spinner/index.js';
10
+ import { useMcpServerActions } from '../modals/edit-mentor-modal/tabs/mcp-tab/use-mcp-server-actions.js';
11
+ import { useLocalStorage } from '../../hooks/use-local-storage.js';
12
+ import { McpConnectExplainerDialog } from './mcp-connect-explainer-dialog.js';
13
+ import { attachedMcpServers, connectorImage } from '../modals/edit-mentor-modal/tabs/mcp-tab/mcp-connector-helpers.js';
14
+ import X from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/x.js';
15
+ import Plug from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/plug.js';
16
+ import Lock from '../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/lock.js';
17
+
18
+ /** The API's largest page: the rows that carry this conversation's `user_enabled`. */
19
+ const PAGE_SIZE = 30;
20
+ // The brand blue of the MCP tab's switches.
21
+ const SWITCH_CLASS = 'data-[state=checked]:bg-[#38A1E5] data-[state=unchecked]:bg-gray-200';
22
+ // The close button matches the Memory menu's.
23
+ const CLOSE_ICON_BUTTON_CLASS = 'h-6 w-6 rounded-full hover:bg-gray-100';
24
+ /**
25
+ * The composer's MCP panel: only the servers the agent uses, each with the person's
26
+ * on/off for this conversation. The switch is the only control: one whose own
27
+ * sign-in is missing shows off, and turning it on opens that sign-in, as the agent
28
+ * settings cards do. Shared (agent or organization) sign-ins stay with the agent
29
+ * settings cards. Everything else about servers (adding, editing, which ones the
30
+ * agent uses) is managed in the agent settings MCP tab, so this stays a short list.
31
+ */
32
+ const McpServersMenu = ({ tenantKey, username, mentorId, sessionId, onClose, onConnectingChange, }) => {
33
+ const t = useT();
34
+ // The user's per-conversation choices made from this menu, by server id. They win
35
+ // over the list's `user_enabled` until the list is refetched with them applied.
36
+ const [sessionChoices, setSessionChoices] = useState({});
37
+ const [savingSessionIds, setSavingSessionIds] = useState(() => new Set());
38
+ const [setSessionPreference] = useSetMCPServerSessionPreferenceMutation();
39
+ // Said once per user, before their first sign-in window: whose account it becomes.
40
+ const [connectExplained, setConnectExplained] = useLocalStorage(`mcp_connect_explained:${username}`, false);
41
+ const [explainerServer, setExplainerServer] = useState(null);
42
+ const serverDisplayName = useCallback((server) => {
43
+ var _a;
44
+ return server.name ||
45
+ ((_a = server.oauth_service_data) === null || _a === void 0 ? void 0 : _a.display_name) ||
46
+ t('mcpTabConnectorManagementContent.unknownConnector');
47
+ }, [t]);
48
+ // currentData (not data): never a previous agent's list.
49
+ const { currentData: response, isFetching, isError, refetch, } = useGetMCPServersQuery({
50
+ org: tenantKey,
51
+ userId: username,
52
+ mentorUniqueId: mentorId,
53
+ includeGlobal: true,
54
+ // The organization's own switch; servers it turned off are never used.
55
+ isEnabled: true,
56
+ pageSize: PAGE_SIZE,
57
+ // Makes each server's `user_enabled` reflect this conversation's choices.
58
+ ...(sessionId && { sessionId }),
59
+ }, { skip: !tenantKey || !username || !mentorId });
60
+ const refetchServers = useCallback(() => refetch(), [refetch]);
61
+ const { mentorSettings, isSettingsLoading, hasConnectionForScope, getSignedInServiceId, handleConnectOAuth, connectingServiceIds, } = useMcpServerActions({
62
+ tenantKey,
63
+ username,
64
+ mentorId,
65
+ refetchServers,
66
+ softUserScopeConnectFailure: true,
67
+ // No sign-in app for this organization yet: a plain notice, not the error.
68
+ onConnectNotConfigured: (server) => {
69
+ toast.info(t('mcpServersMenu.notSetUp', { name: serverDisplayName(server) }));
70
+ return true;
71
+ },
72
+ });
73
+ const isConnecting = connectingServiceIds.size > 0;
74
+ useEffect(() => {
75
+ if (!onConnectingChange)
76
+ return;
77
+ onConnectingChange(isConnecting);
78
+ return () => onConnectingChange(false);
79
+ }, [isConnecting, onConnectingChange]);
80
+ // What the agent uses, and only what the organization has on: the settings'
81
+ // rows, with this conversation's `user_enabled` from the list. Nothing when the
82
+ // attachments are not readable (the "+" row's badge is hidden for the same reason).
83
+ const servers = useMemo(() => {
84
+ var _a;
85
+ return ((_a = attachedMcpServers(mentorSettings, response === null || response === void 0 ? void 0 : response.results)) !== null && _a !== void 0 ? _a : [])
86
+ .filter((server) => server.is_enabled !== false)
87
+ .sort((a, b) => serverDisplayName(a).localeCompare(serverDisplayName(b)));
88
+ }, [mentorSettings, response, serverDisplayName]);
89
+ // Waiting on the settings too keeps the switches from appearing under the pointer.
90
+ const isLoading = (isFetching && !response) || !!isSettingsLoading;
91
+ // Turns a server on or off for this conversation only (the user's session
92
+ // preference); the backend applies it from the next message.
93
+ const toggleForSession = async (server, displayName, previous, enabled) => {
94
+ var _a, _b;
95
+ if (!sessionId)
96
+ return;
97
+ setSessionChoices((prev) => ({ ...prev, [server.id]: enabled }));
98
+ setSavingSessionIds((prev) => new Set(prev).add(server.id));
99
+ try {
100
+ const saved = await setSessionPreference({
101
+ org: tenantKey,
102
+ userId: username,
103
+ id: server.id,
104
+ sessionId,
105
+ isEnabled: enabled,
106
+ }).unwrap();
107
+ setSessionChoices((prev) => ({ ...prev, [server.id]: saved.effective_is_enabled }));
108
+ }
109
+ catch (error) {
110
+ // Back to what the switch showed.
111
+ setSessionChoices((prev) => ({ ...prev, [server.id]: previous }));
112
+ const data = error === null || error === void 0 ? void 0 : error.data;
113
+ toast.error((_b = (_a = data === null || data === void 0 ? void 0 : data.error) !== null && _a !== void 0 ? _a : data === null || data === void 0 ? void 0 : data.detail) !== null && _b !== void 0 ? _b : t('mcpServersMenu.sessionPreferenceFailed', { displayName }));
114
+ }
115
+ finally {
116
+ setSavingSessionIds((prev) => {
117
+ const next = new Set(prev);
118
+ next.delete(server.id);
119
+ return next;
120
+ });
121
+ }
122
+ };
123
+ // Synchronous up to the sign-in tab, which must open within the click.
124
+ const requestConnect = (server) => {
125
+ if (connectExplained) {
126
+ void handleConnectOAuth(server);
127
+ return;
128
+ }
129
+ setExplainerServer(server);
130
+ };
131
+ const continueConnect = (server) => {
132
+ setConnectExplained(true);
133
+ setExplainerServer(null);
134
+ void handleConnectOAuth(server);
135
+ };
136
+ const renderServerRow = (server) => {
137
+ var _a, _b, _c;
138
+ const oauthData = server.oauth_service_data;
139
+ const displayName = serverDisplayName(server);
140
+ const logo = connectorImage(server);
141
+ const description = (oauthData === null || oauthData === void 0 ? void 0 : oauthData.description) || server.description;
142
+ const isConnectingRow = connectingServiceIds.has(`server-${server.id}`);
143
+ const mandatory = server.user_can_disable === false;
144
+ const onForChat = (_b = (_a = sessionChoices[server.id]) !== null && _a !== void 0 ? _a : server.user_enabled) !== null && _b !== void 0 ? _b : true;
145
+ // On means working: a server each person signs in to (for this agent) shows off
146
+ // until their own sign-in exists, and turning it on opens it. Shared sign-ins are
147
+ // not judged here: the connection list hides them from everyone but tenant
148
+ // admins, and only they can make one (the agent settings cards do that).
149
+ const scope = server.effective_auth_scope || server.auth_scope || 'user';
150
+ const needsSignIn = ((_c = server.auth_type) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === 'oauth2' &&
151
+ !!oauthData &&
152
+ scope === 'user' &&
153
+ !hasConnectionForScope(server.id, 'user') &&
154
+ getSignedInServiceId(server) === null;
155
+ const switchOn = needsSignIn ? isConnectingRow : mandatory || onForChat;
156
+ const switchLocked = needsSignIn
157
+ ? isConnectingRow
158
+ : mandatory || savingSessionIds.has(server.id);
159
+ const switchTitle = needsSignIn
160
+ ? t('mcpServersMenu.turnOnToSignIn', { name: displayName })
161
+ : mandatory
162
+ ? t('mcpServersMenu.requiredByOrganization')
163
+ : onForChat
164
+ ? t('mcpServersMenu.onForThisChat')
165
+ : t('mcpServersMenu.offForThisChat');
166
+ const switchLabel = needsSignIn
167
+ ? t('mcpServersMenu.ariaTurnOnToSignIn', { displayName })
168
+ : mandatory
169
+ ? t('mcpServersMenu.ariaRequired', { displayName })
170
+ : onForChat
171
+ ? t('mcpServersMenu.ariaOnForThisChat', { displayName })
172
+ : t('mcpServersMenu.ariaOffForThisChat', { displayName });
173
+ const onSwitchChange = (checked) => {
174
+ if (!needsSignIn) {
175
+ void toggleForSession(server, displayName, onForChat, checked);
176
+ return;
177
+ }
178
+ if (!checked)
179
+ return;
180
+ requestConnect(server);
181
+ // Also on for this chat, so the server is used once the sign-in lands.
182
+ if (!mandatory && !onForChat)
183
+ void toggleForSession(server, displayName, false, true);
184
+ };
185
+ return (jsxs("li", { "data-testid": `mcp-server-row-${server.id}`, className: "flex items-center gap-3 border-b border-gray-50 p-3 last:border-b-0", children: [jsx("div", { className: "flex h-8 w-8 flex-shrink-0 items-center justify-center overflow-hidden rounded-lg border border-gray-100 bg-white", children: logo ? (jsx("img", { src: logo, alt: displayName, className: "h-5 w-5 object-contain" })) : (jsx(Plug, { className: "h-4 w-4 text-gray-400" })) }), jsxs("div", { className: "min-w-0 flex-1", children: [jsx("p", { className: "truncate text-sm font-medium text-gray-900", title: displayName, children: displayName }), description && (jsx("p", { className: "truncate text-xs text-gray-500", title: description, children: description }))] }), (sessionId || needsSignIn) && (
186
+ // The state reads on hover (title) and to screen readers (aria-label);
187
+ // a locked switch adds a lock beside it. Without a chat the switch is
188
+ // only there to sign in.
189
+ jsxs("span", { className: "flex flex-shrink-0 items-center gap-1.5", title: switchTitle, children: [mandatory && !needsSignIn && (jsx(Lock, { className: "h-3 w-3 text-gray-400", "aria-hidden": "true", "data-testid": `mcp-server-required-${server.id}` })), jsx(Switch, { "data-testid": `mcp-server-session-toggle-${server.id}`, checked: switchOn,
190
+ // A required server shows a locked switch: the backend refuses the change.
191
+ disabled: switchLocked, onCheckedChange: onSwitchChange, "aria-label": switchLabel, className: SWITCH_CLASS })] }))] }, server.id));
192
+ };
193
+ return (jsxs("div", { "data-testid": "mcp-servers-menu", className: "flex min-h-0 flex-col", children: [jsxs("div", { className: "shrink-0 border-b border-gray-100 p-4", children: [jsxs("div", { className: "flex items-center justify-between gap-2", children: [jsx("h3", { className: "font-semibold text-gray-900", children: t('chatInputFormInsideButtons.mcp') }), jsx(Button, { type: "button", variant: "ghost", size: "icon", "data-testid": "mcp-servers-close", "aria-label": t('common.close'), onClick: onClose, className: CLOSE_ICON_BUTTON_CLASS, children: jsx(X, { className: "h-4 w-4" }) })] }), jsx("p", { className: "mt-1 text-sm text-gray-500", children: sessionId ? t('mcpServersMenu.sessionDescription') : t('mcpServersMenu.description') })] }), jsx("div", { role: "region", "aria-label": t('mcpServersMenu.description'), tabIndex: 0, className: "max-h-80 min-h-0 overflow-y-auto focus-visible:ring-2 focus-visible:outline-none focus-visible:ring-inset", children: isLoading ? (jsxs("div", { role: "status", className: "flex flex-col items-center justify-center py-12", children: [jsx(Spinner, { className: "mb-4 h-8 w-8" }), jsx("p", { className: "text-sm text-gray-500", children: t('mcpTabConnectorManagementContent.loadingConnectors') })] })) : isError ? (jsxs("div", { role: "alert", className: "flex flex-col items-center justify-center py-12", children: [jsx("div", { className: "mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-red-100", children: jsx(Plug, { className: "h-8 w-8 text-red-400" }) }), jsx("p", { className: "mb-2 text-sm text-red-600", children: t('mcpTabConnectorManagementContent.failedToLoadConnectors') }), jsx(Button, { variant: "outline", size: "sm", onClick: () => refetch(), className: "text-sm", children: t('mcpTabConnectorManagementContent.retry') })] })) : servers.length === 0 ? (jsxs("div", { "data-testid": "mcp-servers-empty", className: "flex flex-col items-center justify-center py-12", children: [jsx("div", { className: "mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-gray-200", children: jsx(Plug, { className: "h-8 w-8 text-gray-400" }) }), jsx("p", { className: "text-sm text-gray-500", children: t('mcpServersMenu.nothingOn') })] })) : (jsx("ul", { children: servers.map(renderServerRow) })) }), jsx(McpConnectExplainerDialog, { server: explainerServer, onCancel: () => setExplainerServer(null), onContinue: continueConnect })] }));
194
+ };
195
+
196
+ export { McpServersMenu };
197
+ //# sourceMappingURL=mcp-servers-menu.js.map