Fix standard agent and roles deletion command (#16686)
# Introduction Caught red handed, introduced a failing command in https://github.com/twentyhq/twenty/pull/16499 that was failing even in system build which is should not
This commit is contained in:
+26
-10
@@ -90,11 +90,19 @@ export class DeleteRemovedAgentsCommand extends ActiveOrSuspendedWorkspacesMigra
|
||||
|
||||
const agentIds = agentsToDelete.map((agent) => agent.id);
|
||||
|
||||
await this.agentService.deleteManyAgents({
|
||||
ids: agentIds,
|
||||
workspaceId,
|
||||
isSystemBuild: true,
|
||||
});
|
||||
try {
|
||||
await this.agentService.deleteManyAgents({
|
||||
ids: agentIds,
|
||||
workspaceId,
|
||||
isSystemBuild: true,
|
||||
});
|
||||
} catch (error) {
|
||||
this.logger.error(
|
||||
`Failed to delete workspace agents \n ${JSON.stringify(error, null, 2)}`,
|
||||
);
|
||||
|
||||
throw error;
|
||||
}
|
||||
|
||||
this.logger.log(
|
||||
`Deleted ${agentsToDelete.length} removed agent(s): ${agentNames}`,
|
||||
@@ -128,11 +136,19 @@ export class DeleteRemovedAgentsCommand extends ActiveOrSuspendedWorkspacesMigra
|
||||
|
||||
const roleIds = rolesToDelete.map((role) => role.id);
|
||||
|
||||
await this.roleService.deleteManyRoles({
|
||||
ids: roleIds,
|
||||
workspaceId,
|
||||
isSystemBuild: true,
|
||||
});
|
||||
try {
|
||||
await this.roleService.deleteManyRoles({
|
||||
ids: roleIds,
|
||||
workspaceId,
|
||||
isSystemBuild: true,
|
||||
});
|
||||
} catch (error) {
|
||||
this.logger.error(
|
||||
`Failed to delete workspace roles \n ${JSON.stringify(error, null, 2)}`,
|
||||
);
|
||||
|
||||
throw error;
|
||||
}
|
||||
|
||||
this.logger.log(
|
||||
`Deleted ${rolesToDelete.length} removed role(s): ${roleLabels}`,
|
||||
|
||||
+5
-8
@@ -7,6 +7,7 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { AgentExceptionCode } from 'src/engine/metadata-modules/ai/ai-agent/agent.exception';
|
||||
import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type';
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
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 {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatAgentMaps: optimisticFlatAgentMaps,
|
||||
},
|
||||
buildOptions,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.agent
|
||||
>): FailedFlatEntityValidation<FlatAgent> {
|
||||
@@ -94,10 +96,7 @@ export class FlatAgentValidatorService {
|
||||
return validationResult;
|
||||
}
|
||||
|
||||
if (
|
||||
existingAgent.isCustom === false &&
|
||||
isDefined(existingAgent.standardId)
|
||||
) {
|
||||
if (!buildOptions.isSystemBuild && isStandardMetadata(existingAgent)) {
|
||||
validationResult.errors.push({
|
||||
code: AgentExceptionCode.AGENT_IS_STANDARD,
|
||||
message: t`Cannot delete standard agent`,
|
||||
@@ -114,6 +113,7 @@ export class FlatAgentValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatAgentMaps: optimisticFlatAgentMaps,
|
||||
},
|
||||
buildOptions,
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.agent
|
||||
>): FailedFlatEntityValidation<FlatAgent> {
|
||||
@@ -140,10 +140,7 @@ export class FlatAgentValidatorService {
|
||||
return validationResult;
|
||||
}
|
||||
|
||||
if (
|
||||
fromFlatAgent.isCustom === false &&
|
||||
isDefined(fromFlatAgent.standardId)
|
||||
) {
|
||||
if (!buildOptions.isSystemBuild && isStandardMetadata(fromFlatAgent)) {
|
||||
validationResult.errors.push({
|
||||
code: AgentExceptionCode.AGENT_IS_STANDARD,
|
||||
message: t`Cannot update standard agent`,
|
||||
|
||||
+4
@@ -66,6 +66,7 @@ export class FlatRoleValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatRoleMaps: optimisticFlatRoleMaps,
|
||||
},
|
||||
buildOptions,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.role
|
||||
>): FailedFlatEntityValidation<FlatRole> {
|
||||
@@ -93,6 +94,7 @@ export class FlatRoleValidatorService {
|
||||
validationResult.errors.push(
|
||||
...validateRoleIsEditable({
|
||||
flatRole: existingRole,
|
||||
buildOptions,
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -105,6 +107,7 @@ export class FlatRoleValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatRoleMaps: optimisticFlatRoleMaps,
|
||||
},
|
||||
buildOptions,
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.role
|
||||
>): FailedFlatEntityValidation<FlatRole> {
|
||||
@@ -131,6 +134,7 @@ export class FlatRoleValidatorService {
|
||||
validationResult.errors.push(
|
||||
...validateRoleIsEditable({
|
||||
flatRole: fromFlatRole,
|
||||
buildOptions,
|
||||
}),
|
||||
);
|
||||
|
||||
|
||||
+4
-1
@@ -6,15 +6,18 @@ import {
|
||||
PermissionsExceptionMessage,
|
||||
} from 'src/engine/metadata-modules/permissions/permissions.exception';
|
||||
import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type';
|
||||
|
||||
export const validateRoleIsEditable = ({
|
||||
flatRole,
|
||||
buildOptions,
|
||||
}: {
|
||||
flatRole: FlatRole;
|
||||
buildOptions: WorkspaceMigrationBuilderOptions;
|
||||
}): FlatEntityValidationError[] => {
|
||||
const errors: FlatEntityValidationError[] = [];
|
||||
|
||||
if (!flatRole.isEditable) {
|
||||
if (!buildOptions.isSystemBuild && !flatRole.isEditable) {
|
||||
errors.push({
|
||||
code: PermissionsExceptionCode.ROLE_NOT_EDITABLE,
|
||||
message: PermissionsExceptionMessage.ROLE_NOT_EDITABLE,
|
||||
|
||||
Reference in New Issue
Block a user