Skip to content
Merged
Show file tree
Hide file tree
Changes from 54 commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
ea6cb23
Add AI Agent Workflow Tabs and Components
abdulrahmancodes Nov 24, 2025
64a9df5
Add WorkflowAiAgentPermissionsTab1 Component
abdulrahmancodes Nov 25, 2025
dd89ef0
Enhance WorkflowStepBody Component
abdulrahmancodes Nov 25, 2025
ee57cc4
Add AI Agent Permissions Components
abdulrahmancodes Nov 25, 2025
b9168da
Enhance WorkflowEditActionAiAgent Component
abdulrahmancodes Nov 25, 2025
b824df0
Refactor WorkflowAiAgentPermissionsTab for State Management
abdulrahmancodes Nov 25, 2025
acbdcf6
Refactor WorkflowAiAgentPermissionsTab for Enhanced Permission Manage…
abdulrahmancodes Nov 25, 2025
aa2e13a
Remove WorkflowAiAgentPermissionsViewModeComponentState File
abdulrahmancodes Nov 25, 2025
de3ac56
Enhance WorkflowAiAgentPermissions Components with New Props
abdulrahmancodes Nov 25, 2025
4555640
Refactor AI Agent Permissions Management for Improved State Handling
abdulrahmancodes Nov 26, 2025
82ef4a4
Implement Sorting for Existing Permissions in WorkflowAiAgentPermissi…
abdulrahmancodes Nov 26, 2025
e535082
Refactor AI Agent Permissions Management with Enhanced State Handling
abdulrahmancodes Nov 26, 2025
bca2449
Refactor WorkflowAiAgentPermissionsTab to Simplify Permission Handling
abdulrahmancodes Nov 26, 2025
047b1f6
Refactor WorkflowAiAgentPermissions Components for Improved Localizat…
abdulrahmancodes Nov 26, 2025
e8809f9
Add WorkflowAiAgentPermissionList Component and Refactor Permissions …
abdulrahmancodes Nov 26, 2025
fb7cf8c
Remove commented-out code in WorkflowAiAgentPermissionsTab to enhance…
abdulrahmancodes Nov 26, 2025
ea3179f
Refactor WorkflowAiAgentPermissionsTab and Introduce useWorkflowAiAge…
abdulrahmancodes Nov 26, 2025
4d1b15a
Add Hooks for Role Permission Flag Configuration
abdulrahmancodes Nov 26, 2025
b15e4c0
Enhance useWorkflowAiAgentPermissionActions Hook with Permission Flag…
abdulrahmancodes Nov 26, 2025
b32477f
Add WorkflowAiAgentPermissionsFlagList and WorkflowAiAgentPermissions…
abdulrahmancodes Nov 26, 2025
3551ba0
Refactor Role Permissions Components to Utilize New Hooks
abdulrahmancodes Nov 26, 2025
96053ac
Refactor WorkflowAiAgentPermissionsTab and WorkflowEditActionAiAgent …
abdulrahmancodes Nov 26, 2025
845b472
Refactor SettingsRolePermissionsSettingsSection and useActionRolePerm…
abdulrahmancodes Nov 26, 2025
e6ee1cc
Refactor WorkflowAiAgentPermissionList and WorkflowAiAgentPermissions…
abdulrahmancodes Nov 26, 2025
f71011b
Refactor WorkflowEditActionAiAgent to Enhance Footer Action Logic
abdulrahmancodes Nov 26, 2025
79451f5
Remove WorkflowAiAgentPermissionsTab1 Component to Streamline Codebase
abdulrahmancodes Nov 26, 2025
e80dcc8
Add Role Management Logic to WorkflowVersionStepOperations
abdulrahmancodes Nov 26, 2025
6dc5c1a
Add Utility Function for Filtering Permissions in WorkflowAiAgentPerm…
abdulrahmancodes Nov 26, 2025
3e5091c
Refactor AgentRoleService Imports for Improved Code Clarity
abdulrahmancodes Nov 26, 2025
0013945
Add Keydown Event Handling for Search Input in WorkflowAiAgentPermiss…
abdulrahmancodes Nov 26, 2025
de10401
Enhance WorkflowAiAgentPermissionList with Search Functionality
abdulrahmancodes Nov 26, 2025
1be6ae5
Merge branch 'main' into feat/workflow-agent-node-permissions-tab
abdulrahmancodes Nov 26, 2025
7bc1efc
Add AiAgentRoleService Integration in WorkflowVersionStepOperations T…
abdulrahmancodes Nov 26, 2025
b73b487
Refactor Test Imports and Assertions in WorkflowVersionStepOperations…
abdulrahmancodes Nov 26, 2025
1c6e704
Enhance WorkflowAiAgentPermissionsTab Logic for Role Permissions
abdulrahmancodes Nov 26, 2025
252e69b
Enhance OptionsDropdownMenu with Button Size Prop
abdulrahmancodes Nov 26, 2025
74894b5
Refactor Workflow AI Agent State Management
abdulrahmancodes Nov 26, 2025
c09ae38
Refactor WorkflowAiAgentPermissionsTab Logic for CRUD List Display
abdulrahmancodes Nov 26, 2025
6c26818
Enhance useDeleteStep Hook with AI Agent Step Handling
abdulrahmancodes Nov 26, 2025
cf7fbf8
Enhance Workflow AI Agent Permissions with Delete Button Functionality
abdulrahmancodes Nov 26, 2025
ea3cc71
Refactor Workflow AI Agent Permissions Tab and Hook for Enhanced Type…
abdulrahmancodes Nov 26, 2025
2341a98
Refactor WorkflowEditActionAiAgent Component for Improved Type Handling
abdulrahmancodes Nov 26, 2025
2d8ef1e
Refactor Workflow AI Agent Permissions Components for Consistent Styling
abdulrahmancodes Nov 26, 2025
2dcc212
Refactor Delete Button Implementation in Workflow AI Agent Permission…
abdulrahmancodes Nov 26, 2025
3b6c972
Add Unit Tests for useDeleteStep Hook
abdulrahmancodes Nov 26, 2025
b79cab1
Merge branch 'main' into feat/workflow-agent-node-permissions-tab
abdulrahmancodes Nov 27, 2025
d2746a7
Remove unused buttonSize prop from OptionsDropdownMenu and WorkflowSt…
abdulrahmancodes Nov 27, 2025
960ae93
Refactor role permissions configuration to use a custom hook for impr…
abdulrahmancodes Nov 27, 2025
2894857
Refactor role permissions handling to utilize custom hook with assign…
abdulrahmancodes Nov 27, 2025
fc68bf8
Enhance action permissions configuration in WorkflowAiAgentPermission…
abdulrahmancodes Nov 27, 2025
cd6ead4
Refactor WorkflowEditActionAiAgent to handle agent updates more effic…
abdulrahmancodes Nov 27, 2025
a7edc6b
Remove redundant `Settings` permission flag lists from `WorkflowAiAge…
abdulrahmancodes Nov 27, 2025
1a42404
Enhance WorkflowStepFooter with agent and role viewing options
abdulrahmancodes Nov 27, 2025
8fe5927
Refactor WorkflowAiAgentPermissionsTab to remove unused permission fi…
abdulrahmancodes Nov 27, 2025
b5e1ec1
Remove unused `useSettingsRolePermissionFlagConfig` import from Workf…
abdulrahmancodes Nov 27, 2025
1308464
Merge branch 'main' into feat/workflow-agent-node-permissions-tab
abdulrahmancodes Nov 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,34 +1,13 @@
import { SettingsOptionCardContentToggle } from '@/settings/components/SettingsOptions/SettingsOptionCardContentToggle';
import { SettingsRolePermissionsSettingsTableHeader } from '@/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsTableHeader';
import { SettingsRolePermissionsSettingsTableRow } from '@/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsTableRow';
import { type SettingsRolePermissionsSettingPermission } from '@/settings/roles/role-permissions/permission-flags/types/SettingsRolePermissionsSettingPermission';
import { useSettingsRolePermissionFlagConfig } from '@/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig';
import { settingsDraftRoleFamilyState } from '@/settings/roles/states/settingsDraftRoleFamilyState';
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
import styled from '@emotion/styled';
import { t } from '@lingui/core/macro';
import { useMemo } from 'react';
import { useRecoilState } from 'recoil';
import {
H2Title,
IconApps,
IconCode,
IconCreditCard,
IconHierarchy,
IconKey,
IconLayoutSidebarRightCollapse,
IconLockOpen,
IconSettings,
IconSettingsAutomation,
IconShield,
IconSparkles,
IconSpy,
IconUsers,
} from 'twenty-ui/display';
import { H2Title, IconSettings } from 'twenty-ui/display';
import { AnimatedExpandableContainer, Card, Section } from 'twenty-ui/layout';
import {
FeatureFlagKey,
PermissionFlagType,
} from '~/generated-metadata/graphql';

const StyledTable = styled.div`
border-bottom: 1px solid ${({ theme }) => theme.border.color.light};
Expand Down Expand Up @@ -56,174 +35,13 @@ export const SettingsRolePermissionsSettingsSection = ({
settingsDraftRoleFamilyState(roleId),
);

const isAIEnabled = useIsFeatureEnabled(FeatureFlagKey.IS_AI_ENABLED);
const isApplicationEnabled = useIsFeatureEnabled(
FeatureFlagKey.IS_APPLICATION_ENABLED,
);

const settingsPermissionsConfig = useMemo(() => {
const allPermissions: SettingsRolePermissionsSettingPermission[] = [
{
key: PermissionFlagType.API_KEYS_AND_WEBHOOKS,
name: t`API Keys & Webhooks`,
description: t`Manage API keys and webhooks`,
Icon: IconCode,
isRelevantForAgents: true,
isRelevantForApiKeys: true,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.WORKSPACE,
name: t`Workspace`,
description: t`Set global workspace preferences`,
Icon: IconSettings,
isRelevantForAgents: true,
isRelevantForApiKeys: true,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.WORKSPACE_MEMBERS,
name: t`Users`,
description: t`Add or remove users`,
Icon: IconUsers,
isRelevantForAgents: true,
isRelevantForApiKeys: true,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.ROLES,
name: t`Roles`,
description: t`Define user roles and access levels`,
Icon: IconLockOpen,
isRelevantForAgents: true,
isRelevantForApiKeys: true,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.DATA_MODEL,
name: t`Data Model`,
description: t`Edit data structure and fields`,
Icon: IconHierarchy,
isRelevantForAgents: true,
isRelevantForApiKeys: true,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.SECURITY,
name: t`Security`,
description: t`Manage security policies`,
Icon: IconKey,
isRelevantForAgents: true,
isRelevantForApiKeys: true,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.WORKFLOWS,
name: t`Workflows`,
description: t`Manage workflows`,
Icon: IconSettingsAutomation,
isRelevantForAgents: true,
isRelevantForApiKeys: true,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.SSO_BYPASS,
name: t`SSO Bypass`,
description: t`Enable bypass options`,
Icon: IconShield,
isRelevantForAgents: false,
isRelevantForApiKeys: false,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.IMPERSONATE,
name: t`Impersonate`,
description: t`Impersonate workspace users`,
Icon: IconSpy,
isRelevantForAgents: false,
isRelevantForApiKeys: false,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.APPLICATIONS,
name: t`Applications`,
description: t`Install and manage applications`,
Icon: IconApps,
isRelevantForAgents: true,
isRelevantForApiKeys: true,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.LAYOUTS,
name: t`Layouts`,
description: t`Customize page layouts and UI structure`,
Icon: IconLayoutSidebarRightCollapse,
isRelevantForAgents: true,
isRelevantForApiKeys: true,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.BILLING,
name: t`Billing`,
description: t`Manage billing and subscriptions`,
Icon: IconCreditCard,
isRelevantForAgents: false,
isRelevantForApiKeys: false,
isRelevantForUsers: true,
},
{
key: PermissionFlagType.AI_SETTINGS,
name: t`AI`,
description: t`Create and configure AI agents`,
Icon: IconSparkles,
isRelevantForAgents: true,
isRelevantForApiKeys: true,
isRelevantForUsers: true,
},
];

return allPermissions.filter((permission) => {
if (permission.key === PermissionFlagType.AI_SETTINGS && !isAIEnabled) {
return false;
}
if (
permission.key === PermissionFlagType.APPLICATIONS &&
!isApplicationEnabled
) {
return false;
}

// Filter based on role assignment capabilities
const canBeAssignedOnlyToAgents =
settingsDraftRole.canBeAssignedToAgents &&
!settingsDraftRole.canBeAssignedToUsers &&
!settingsDraftRole.canBeAssignedToApiKeys;

const canBeAssignedOnlyToApiKeys =
settingsDraftRole.canBeAssignedToApiKeys &&
!settingsDraftRole.canBeAssignedToUsers &&
!settingsDraftRole.canBeAssignedToAgents;

const canBeAssignedOnlyToUsers =
settingsDraftRole.canBeAssignedToUsers &&
!settingsDraftRole.canBeAssignedToAgents &&
!settingsDraftRole.canBeAssignedToApiKeys;

if (canBeAssignedOnlyToAgents && !permission.isRelevantForAgents) {
return false;
}

if (canBeAssignedOnlyToApiKeys && !permission.isRelevantForApiKeys) {
return false;
}

if (canBeAssignedOnlyToUsers && !permission.isRelevantForUsers) {
return false;
}

return true;
});
}, [isAIEnabled, isApplicationEnabled, settingsDraftRole]);
const settingsPermissionsConfig = useSettingsRolePermissionFlagConfig({
assignmentCapabilities: {
canBeAssignedToAgents: settingsDraftRole.canBeAssignedToAgents,
canBeAssignedToUsers: settingsDraftRole.canBeAssignedToUsers,
canBeAssignedToApiKeys: settingsDraftRole.canBeAssignedToApiKeys,
},
});

const shouldShowAllAccessToggle =
!settingsDraftRole.canBeAssignedToAgents ||
Expand Down
Loading
Loading