diff --git a/locales/en-US/chat.json b/locales/en-US/chat.json index 2bb7bb3553..d668e2e5d5 100644 --- a/locales/en-US/chat.json +++ b/locales/en-US/chat.json @@ -217,6 +217,7 @@ "heteroAgent.executionTarget.online": "Online", "heteroAgent.executionTarget.sandbox": "Cloud sandbox", "heteroAgent.executionTarget.sandboxDesc": "Run in an ephemeral cloud sandbox", + "heteroAgent.executionTarget.downloadDesktop": "Get Desktop App", "heteroAgent.executionTarget.title": "Execution Device", "heteroAgent.executionTarget.unknownDevice": "Unknown device", "heteroAgent.fullAccess.label": "Full access", diff --git a/locales/zh-CN/chat.json b/locales/zh-CN/chat.json index 24c0fc2a05..f7b6e4ea9e 100644 --- a/locales/zh-CN/chat.json +++ b/locales/zh-CN/chat.json @@ -217,6 +217,7 @@ "heteroAgent.executionTarget.online": "在线", "heteroAgent.executionTarget.sandbox": "云端沙箱", "heteroAgent.executionTarget.sandboxDesc": "在临时云端沙箱中运行", + "heteroAgent.executionTarget.downloadDesktop": "下载桌面端", "heteroAgent.executionTarget.title": "执行设备", "heteroAgent.executionTarget.unknownDevice": "未知设备", "heteroAgent.fullAccess.label": "完全访问权限", diff --git a/src/features/ChatInput/RuntimeConfig/HeteroDeviceSwitcher.tsx b/src/features/ChatInput/RuntimeConfig/HeteroDeviceSwitcher.tsx index a3e1161e56..2bee12960a 100644 --- a/src/features/ChatInput/RuntimeConfig/HeteroDeviceSwitcher.tsx +++ b/src/features/ChatInput/RuntimeConfig/HeteroDeviceSwitcher.tsx @@ -11,6 +11,7 @@ import { CheckIcon, ChevronDownIcon, CloudIcon, + ExternalLinkIcon, InfoIcon, LaptopIcon, MonitorIcon, @@ -160,6 +161,21 @@ const styles = createStaticStyles(({ css }) => ({ color: ${cssVar.colorTextSecondary}; } `, + headerLink: css` + display: flex; + gap: 3px; + align-items: center; + + font-size: 11px; + color: ${cssVar.colorTextQuaternary}; + text-decoration: none; + + transition: color 0.2s; + + &:hover { + color: ${cssVar.colorPrimary}; + } + `, headerTitle: css` font-size: 12px; font-weight: 500; @@ -293,11 +309,22 @@ const HeteroDeviceSwitcher = memo(({ agentId }) => {
{t('heteroAgent.executionTarget.title')} - - - - - + + + + {t('heteroAgent.executionTarget.downloadDesktop')} + + + + + + +
{isDesktop ? ( { agentByIdSelectors.getAgentEnableModeById(agentId)(s), ]); + const enableExecutionDeviceSwitcher = useUserStore( + labPreferSelectors.enableExecutionDeviceSwitcher, + ); + const topicWorkingDirectory = useChatStore(topicSelectors.currentTopicWorkingDirectory); const agentWorkingDirectory = useAgentStore((s) => agentId ? agentByIdSelectors.getAgentWorkingDirectoryById(agentId)(s) : undefined, @@ -285,24 +292,29 @@ const RuntimeConfig = memo(() => { {/* Left: Chat mode switcher + (agent-only) runtime env + working directory */} + {enableAgentMode && enableExecutionDeviceSwitcher && agentId && ( + + )} {enableAgentMode && ( <> - -
- {modePopoverOpen ? ( - modeButton - ) : ( - {modeButton} - )} -
-
+ {!enableExecutionDeviceSwitcher && ( + +
+ {modePopoverOpen ? ( + modeButton + ) : ( + {modeButton} + )} +
+
+ )} {rightContent()} )} diff --git a/src/locales/default/chat.ts b/src/locales/default/chat.ts index b04b2113ea..bdf47e441a 100644 --- a/src/locales/default/chat.ts +++ b/src/locales/default/chat.ts @@ -186,6 +186,7 @@ export default { 'heteroAgent.executionTarget.online': 'Online', 'heteroAgent.executionTarget.sandbox': 'Cloud sandbox', 'heteroAgent.executionTarget.sandboxDesc': 'Run in an ephemeral cloud sandbox', + 'heteroAgent.executionTarget.downloadDesktop': 'Get Desktop App', 'heteroAgent.executionTarget.title': 'Execution Device', 'heteroAgent.executionTarget.unknownDevice': 'Unknown device', 'hideForYou':