Skip to content

Commit 837d081

Browse files
prastoinmabdullahabaid
authored andcommitted
Fix standard agent and roles deletion command (#16686)
# Introduction Caught red handed, introduced a failing command in #16499 that was failing even in system build which is should not
1 parent 135d203 commit 837d081

File tree

4 files changed

+39
-19
lines changed

4 files changed

+39
-19
lines changed

packages/twenty-server/src/database/commands/upgrade-version-command/1-14/1-14-delete-removed-agents.command.ts

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,19 @@ export class DeleteRemovedAgentsCommand extends ActiveOrSuspendedWorkspacesMigra
9090

9191
const agentIds = agentsToDelete.map((agent) => agent.id);
9292

93-
await this.agentService.deleteManyAgents({
94-
ids: agentIds,
95-
workspaceId,
96-
isSystemBuild: true,
97-
});
93+
try {
94+
await this.agentService.deleteManyAgents({
95+
ids: agentIds,
96+
workspaceId,
97+
isSystemBuild: true,
98+
});
99+
} catch (error) {
100+
this.logger.error(
101+
`Failed to delete workspace agents \n ${JSON.stringify(error, null, 2)}`,
102+
);
103+
104+
throw error;
105+
}
98106

99107
this.logger.log(
100108
`Deleted ${agentsToDelete.length} removed agent(s): ${agentNames}`,
@@ -128,11 +136,19 @@ export class DeleteRemovedAgentsCommand extends ActiveOrSuspendedWorkspacesMigra
128136

129137
const roleIds = rolesToDelete.map((role) => role.id);
130138

131-
await this.roleService.deleteManyRoles({
132-
ids: roleIds,
133-
workspaceId,
134-
isSystemBuild: true,
135-
});
139+
try {
140+
await this.roleService.deleteManyRoles({
141+
ids: roleIds,
142+
workspaceId,
143+
isSystemBuild: true,
144+
});
145+
} catch (error) {
146+
this.logger.error(
147+
`Failed to delete workspace roles \n ${JSON.stringify(error, null, 2)}`,
148+
);
149+
150+
throw error;
151+
}
136152

137153
this.logger.log(
138154
`Deleted ${rolesToDelete.length} removed role(s): ${roleLabels}`,

packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-agent-validator.service.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { isDefined } from 'twenty-shared/utils';
77
import { AgentExceptionCode } from 'src/engine/metadata-modules/ai/ai-agent/agent.exception';
88
import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type';
99
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
10+
import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util';
1011
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
1112
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
1213
import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
@@ -67,6 +68,7 @@ export class FlatAgentValidatorService {
6768
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
6869
flatAgentMaps: optimisticFlatAgentMaps,
6970
},
71+
buildOptions,
7072
}: FlatEntityValidationArgs<
7173
typeof ALL_METADATA_NAME.agent
7274
>): FailedFlatEntityValidation<FlatAgent> {
@@ -94,10 +96,7 @@ export class FlatAgentValidatorService {
9496
return validationResult;
9597
}
9698

97-
if (
98-
existingAgent.isCustom === false &&
99-
isDefined(existingAgent.standardId)
100-
) {
99+
if (!buildOptions.isSystemBuild && isStandardMetadata(existingAgent)) {
101100
validationResult.errors.push({
102101
code: AgentExceptionCode.AGENT_IS_STANDARD,
103102
message: t`Cannot delete standard agent`,
@@ -114,6 +113,7 @@ export class FlatAgentValidatorService {
114113
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
115114
flatAgentMaps: optimisticFlatAgentMaps,
116115
},
116+
buildOptions,
117117
}: FlatEntityUpdateValidationArgs<
118118
typeof ALL_METADATA_NAME.agent
119119
>): FailedFlatEntityValidation<FlatAgent> {
@@ -140,10 +140,7 @@ export class FlatAgentValidatorService {
140140
return validationResult;
141141
}
142142

143-
if (
144-
fromFlatAgent.isCustom === false &&
145-
isDefined(fromFlatAgent.standardId)
146-
) {
143+
if (!buildOptions.isSystemBuild && isStandardMetadata(fromFlatAgent)) {
147144
validationResult.errors.push({
148145
code: AgentExceptionCode.AGENT_IS_STANDARD,
149146
message: t`Cannot update standard agent`,

packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-validator.service.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export class FlatRoleValidatorService {
6666
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
6767
flatRoleMaps: optimisticFlatRoleMaps,
6868
},
69+
buildOptions,
6970
}: FlatEntityValidationArgs<
7071
typeof ALL_METADATA_NAME.role
7172
>): FailedFlatEntityValidation<FlatRole> {
@@ -93,6 +94,7 @@ export class FlatRoleValidatorService {
9394
validationResult.errors.push(
9495
...validateRoleIsEditable({
9596
flatRole: existingRole,
97+
buildOptions,
9698
}),
9799
);
98100

@@ -105,6 +107,7 @@ export class FlatRoleValidatorService {
105107
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
106108
flatRoleMaps: optimisticFlatRoleMaps,
107109
},
110+
buildOptions,
108111
}: FlatEntityUpdateValidationArgs<
109112
typeof ALL_METADATA_NAME.role
110113
>): FailedFlatEntityValidation<FlatRole> {
@@ -131,6 +134,7 @@ export class FlatRoleValidatorService {
131134
validationResult.errors.push(
132135
...validateRoleIsEditable({
133136
flatRole: fromFlatRole,
137+
buildOptions,
134138
}),
135139
);
136140

packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-is-editable.util.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,18 @@ import {
66
PermissionsExceptionMessage,
77
} from 'src/engine/metadata-modules/permissions/permissions.exception';
88
import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
9+
import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type';
910

1011
export const validateRoleIsEditable = ({
1112
flatRole,
13+
buildOptions,
1214
}: {
1315
flatRole: FlatRole;
16+
buildOptions: WorkspaceMigrationBuilderOptions;
1417
}): FlatEntityValidationError[] => {
1518
const errors: FlatEntityValidationError[] = [];
1619

17-
if (!flatRole.isEditable) {
20+
if (!buildOptions.isSystemBuild && !flatRole.isEditable) {
1821
errors.push({
1922
code: PermissionsExceptionCode.ROLE_NOT_EDITABLE,
2023
message: PermissionsExceptionMessage.ROLE_NOT_EDITABLE,

0 commit comments

Comments
 (0)