diff --git a/frontend/src/components/AgentSidePanel.tsx b/frontend/src/components/AgentSidePanel.tsx index 24f3bfee2..4f8e89671 100644 --- a/frontend/src/components/AgentSidePanel.tsx +++ b/frontend/src/components/AgentSidePanel.tsx @@ -20,6 +20,7 @@ interface Props { workspaceActivities: WorkspaceActivity[]; workspaceLiveDraft?: WorkspaceLiveDraft | null; workspaceLocked?: boolean; + canManageWorkspace?: boolean; canManageEnterpriseInfo?: boolean; visible: boolean; onToggle: () => void; @@ -55,6 +56,7 @@ export default function AgentSidePanel({ workspaceActivities, workspaceLiveDraft, workspaceLocked = false, + canManageWorkspace = false, canManageEnterpriseInfo = false, visible, onToggle, @@ -227,6 +229,7 @@ export default function AgentSidePanel({ activities={workspaceActivities} liveDraft={workspaceLiveDraft} locked={workspaceLocked} + canManageWorkspace={canManageWorkspace} canManageEnterpriseInfo={canManageEnterpriseInfo} onSelectPath={onWorkspaceSelectPath} onToggleLock={onWorkspaceToggleLock} diff --git a/frontend/src/components/WorkspaceOperationPanel.tsx b/frontend/src/components/WorkspaceOperationPanel.tsx index 32b9c2da3..7dc9586d4 100644 --- a/frontend/src/components/WorkspaceOperationPanel.tsx +++ b/frontend/src/components/WorkspaceOperationPanel.tsx @@ -47,6 +47,7 @@ interface Props { activities: WorkspaceActivity[]; liveDraft?: WorkspaceLiveDraft | null; locked?: boolean; + canManageWorkspace?: boolean; canManageEnterpriseInfo?: boolean; onSelectPath: (path: string) => void; onToggleLock?: () => void; @@ -393,6 +394,7 @@ export default function WorkspaceOperationPanel({ activities, liveDraft, locked = false, + canManageWorkspace = false, canManageEnterpriseInfo = false, onSelectPath, onToggleLock, @@ -437,7 +439,9 @@ export default function WorkspaceOperationPanel({ const manualTreeScopeRef = useRef(null); const ext = activePath ? extOf(activePath) : ''; - const canModifyPath = (path?: string | null) => !isEnterprisePath(path) || canManageEnterpriseInfo; + const canModifyPath = (path?: string | null) => ( + isEnterprisePath(path) ? canManageEnterpriseInfo : canManageWorkspace + ); const isWritableTreeDir = (path?: string | null) => isWritableDir(path) && canModifyPath(path); const canEdit = !!activePath && EDITABLE_EXTS.has(ext) && canModifyPath(activePath); const isHtml = ext === '.html' || ext === '.htm'; @@ -1237,32 +1241,36 @@ export default function WorkspaceOperationPanel({ )} - - + {canManageWorkspace && ( + <> + + + + )} ); diff --git a/frontend/src/pages/agent-detail/AgentDetailPage.tsx b/frontend/src/pages/agent-detail/AgentDetailPage.tsx index dd2848080..e943be220 100644 --- a/frontend/src/pages/agent-detail/AgentDetailPage.tsx +++ b/frontend/src/pages/agent-detail/AgentDetailPage.tsx @@ -6562,6 +6562,7 @@ export default function AgentDetailPage() { onTabChange={setSidePanelTab} awareContent={renderAwarePreview()} workspaceLocked={workspacePreviewLocked} + canManageWorkspace={canManage} onWorkspaceSelectPath={handleWorkspaceSelectPath} onWorkspaceToggleLock={handleWorkspaceToggleLock} onWorkspaceEditingChange={handleWorkspaceEditingChange}