diff --git a/web/src/app/home/pipelines/components/pipeline-extensions/PipelineExtension.tsx b/web/src/app/home/pipelines/components/pipeline-extensions/PipelineExtension.tsx index 06e059f0..5408b9c7 100644 --- a/web/src/app/home/pipelines/components/pipeline-extensions/PipelineExtension.tsx +++ b/web/src/app/home/pipelines/components/pipeline-extensions/PipelineExtension.tsx @@ -146,6 +146,26 @@ export default function PipelineExtension({ ); }; + const handleToggleAllPlugins = () => { + if (tempSelectedPluginIds.length === allPlugins.length) { + // Deselect all + setTempSelectedPluginIds([]); + } else { + // Select all + setTempSelectedPluginIds(allPlugins.map((p) => getPluginId(p))); + } + }; + + const handleToggleAllMCPServers = () => { + if (tempSelectedMCPIds.length === allMCPServers.length) { + // Deselect all + setTempSelectedMCPIds([]); + } else { + // Select all + setTempSelectedMCPIds(allMCPServers.map((s) => s.uuid || '')); + } + }; + const handleConfirmPluginSelection = async () => { const newSelected = allPlugins.filter((p) => tempSelectedPluginIds.includes(getPluginId(p)), @@ -330,6 +350,23 @@ export default function PipelineExtension({ {t('pipelines.extensions.selectPlugins')} + {allPlugins.length > 0 && ( +
+ 0 + } + onCheckedChange={handleToggleAllPlugins} + /> + + {t('pipelines.extensions.selectAll')} + +
+ )}
{allPlugins.length === 0 ? (
@@ -404,6 +441,23 @@ export default function PipelineExtension({ {t('pipelines.extensions.selectMCPServers')} + {allMCPServers.length > 0 && ( +
+ 0 + } + onCheckedChange={handleToggleAllMCPServers} + /> + + {t('pipelines.extensions.selectAll')} + +
+ )}
{allMCPServers.length === 0 ? (
diff --git a/web/src/i18n/locales/en-US.ts b/web/src/i18n/locales/en-US.ts index 92be517c..d674c22b 100644 --- a/web/src/i18n/locales/en-US.ts +++ b/web/src/i18n/locales/en-US.ts @@ -484,6 +484,7 @@ const enUS = { toolCount: '{{count}} tools', noPluginsInstalled: 'No installed plugins', noMCPServersConfigured: 'No configured MCP servers', + selectAll: 'Select All', }, debugDialog: { title: 'Pipeline Chat', diff --git a/web/src/i18n/locales/ja-JP.ts b/web/src/i18n/locales/ja-JP.ts index 517d644d..59ba2c3c 100644 --- a/web/src/i18n/locales/ja-JP.ts +++ b/web/src/i18n/locales/ja-JP.ts @@ -487,6 +487,7 @@ const jaJP = { toolCount: '{{count}}個のツール', noPluginsInstalled: 'インストールされているプラグインがありません', noMCPServersConfigured: '設定されているMCPサーバーがありません', + selectAll: 'すべて選択', }, debugDialog: { title: 'パイプラインのチャット', diff --git a/web/src/i18n/locales/zh-Hans.ts b/web/src/i18n/locales/zh-Hans.ts index 34156b53..6ea06616 100644 --- a/web/src/i18n/locales/zh-Hans.ts +++ b/web/src/i18n/locales/zh-Hans.ts @@ -466,6 +466,7 @@ const zhHans = { toolCount: '{{count}} 个工具', noPluginsInstalled: '无已安装的插件', noMCPServersConfigured: '无已配置的 MCP 服务器', + selectAll: '全选', }, debugDialog: { title: '流水线对话', diff --git a/web/src/i18n/locales/zh-Hant.ts b/web/src/i18n/locales/zh-Hant.ts index b04425bd..14ed50bd 100644 --- a/web/src/i18n/locales/zh-Hant.ts +++ b/web/src/i18n/locales/zh-Hant.ts @@ -464,6 +464,7 @@ const zhHant = { toolCount: '{{count}} 個工具', noPluginsInstalled: '無已安裝的插件', noMCPServersConfigured: '無已配置的 MCP 伺服器', + selectAll: '全選', }, debugDialog: { title: '流程線對話',