Fixed agent version display issue

This commit is contained in:
Muhammad Ibrahim
2025-09-22 01:45:27 +01:00
parent 797be20c45
commit 1392976a7b
3 changed files with 50 additions and 13 deletions

View File

@@ -1098,26 +1098,48 @@ router.delete('/agent/versions/:versionId', authenticateToken, requireManageSett
try {
const { versionId } = req.params;
// Validate versionId format
if (!versionId || versionId.length < 10) {
return res.status(400).json({
error: 'Invalid agent version ID format',
details: 'The provided ID does not match expected format'
});
}
const agentVersion = await prisma.agent_versions.findUnique({
where: { id: versionId }
});
if (!agentVersion) {
return res.status(404).json({ error: 'Agent version not found' });
return res.status(404).json({
error: 'Agent version not found',
details: `No agent version found with ID: ${versionId}`,
suggestion: 'Please refresh the page to get the latest agent versions'
});
}
if (agentVersion.is_current) {
return res.status(400).json({ error: 'Cannot delete current agent version' });
return res.status(400).json({
error: 'Cannot delete current agent version',
details: `Version ${agentVersion.version} is currently active`,
suggestion: 'Set another version as current before deleting this one'
});
}
await prisma.agent_versions.delete({
where: { id: versionId }
});
res.json({ message: 'Agent version deleted successfully' });
res.json({
message: 'Agent version deleted successfully',
deletedVersion: agentVersion.version
});
} catch (error) {
console.error('Delete agent version error:', error);
res.status(500).json({ error: 'Failed to delete agent version' });
res.status(500).json({
error: 'Failed to delete agent version',
details: error.message
});
}
});

View File

@@ -0,0 +1 @@

View File

@@ -169,6 +169,20 @@ const Settings = () => {
mutationFn: (id) => agentVersionAPI.delete(id).then(res => res.data),
onSuccess: () => {
queryClient.invalidateQueries(['agentVersions']);
},
onError: (error) => {
console.error('Delete agent version error:', error);
// Show user-friendly error message
if (error.response?.data?.error === 'Agent version not found') {
alert('Agent version not found. Please refresh the page to get the latest data.');
// Force refresh the agent versions list
queryClient.invalidateQueries(['agentVersions']);
} else if (error.response?.data?.error === 'Cannot delete current agent version') {
alert('Cannot delete the current agent version. Please set another version as current first.');
} else {
alert(`Failed to delete agent version: ${error.response?.data?.error || error.message}`);
}
}
});
@@ -654,14 +668,14 @@ const Settings = () => {
<CheckCircle className="h-4 w-4 text-green-600 dark:text-green-400" />
<span className="text-sm font-medium text-secondary-700 dark:text-secondary-300">Current Version:</span>
<span className="text-sm text-secondary-900 dark:text-white font-mono">
{agentVersions.find(v => v.isCurrent)?.version || 'None'}
{agentVersions.find(v => v.is_current)?.version || 'None'}
</span>
</div>
<div className="flex items-center gap-2">
<Star className="h-4 w-4 text-yellow-600 dark:text-yellow-400" />
<span className="text-sm font-medium text-secondary-700 dark:text-secondary-300">Default Version:</span>
<span className="text-sm text-secondary-900 dark:text-white font-mono">
{agentVersions.find(v => v.isDefault)?.version || 'None'}
{agentVersions.find(v => v.is_default)?.version || 'None'}
</span>
</div>
</div>
@@ -692,22 +706,22 @@ const Settings = () => {
<h3 className="text-lg font-medium text-secondary-900 dark:text-white">
Version {version.version}
</h3>
{version.isDefault && (
{version.is_default && (
<span className="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-primary-100 text-primary-800 dark:bg-primary-900 dark:text-primary-200">
<Star className="h-3 w-3 mr-1" />
Default
</span>
)}
{version.isCurrent && (
{version.is_current && (
<span className="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200">
Current
</span>
)}
</div>
{version.releaseNotes && (
{version.release_notes && (
<div className="text-sm text-secondary-500 dark:text-secondary-300 mt-1">
<p className="line-clamp-3 whitespace-pre-line">
{version.releaseNotes}
{version.release_notes}
</p>
</div>
)}
@@ -729,7 +743,7 @@ const Settings = () => {
</button>
<button
onClick={() => setCurrentAgentVersionMutation.mutate(version.id)}
disabled={version.isCurrent || setCurrentAgentVersionMutation.isPending}
disabled={version.is_current || setCurrentAgentVersionMutation.isPending}
className="btn-outline text-xs flex items-center gap-1"
>
<CheckCircle className="h-3 w-3" />
@@ -737,7 +751,7 @@ const Settings = () => {
</button>
<button
onClick={() => setDefaultAgentVersionMutation.mutate(version.id)}
disabled={version.isDefault || setDefaultAgentVersionMutation.isPending}
disabled={version.is_default || setDefaultAgentVersionMutation.isPending}
className="btn-outline text-xs flex items-center gap-1"
>
<Star className="h-3 w-3" />
@@ -745,7 +759,7 @@ const Settings = () => {
</button>
<button
onClick={() => deleteAgentVersionMutation.mutate(version.id)}
disabled={version.isDefault || version.isCurrent || deleteAgentVersionMutation.isPending}
disabled={version.is_default || version.is_current || deleteAgentVersionMutation.isPending}
className="btn-danger text-xs flex items-center gap-1"
>
<Trash2 className="h-3 w-3" />