fix: show clear toast when agent definition is missing
Surface missing agent definitions during delete Avoid hiding delete errors behind generic failures Add localized toast copy
This commit is contained in:
@@ -181,19 +181,31 @@ export const AgentsSidebar: React.FC<AgentsSidebarProps> = ({ onItemSelect }) =>
|
||||
}
|
||||
|
||||
setIsConfirmActionPending(true);
|
||||
const success = await deleteAgent(confirmActionAgent.name, (confirmActionAgent as Agent & { scope?: AgentScope }).scope);
|
||||
try {
|
||||
const success = await deleteAgent(confirmActionAgent.name, (confirmActionAgent as Agent & { scope?: AgentScope }).scope);
|
||||
|
||||
if (success) {
|
||||
if (confirmActionType === 'delete') {
|
||||
toast.success(t('settings.agents.sidebar.toast.agentDeleted', { name: confirmActionAgent.name }));
|
||||
if (success) {
|
||||
if (confirmActionType === 'delete') {
|
||||
toast.success(t('settings.agents.sidebar.toast.agentDeleted', { name: confirmActionAgent.name }));
|
||||
} else {
|
||||
toast.success(t('settings.agents.sidebar.toast.agentReset', { name: confirmActionAgent.name }));
|
||||
}
|
||||
closeConfirmActionDialog();
|
||||
} else if (confirmActionType === 'delete') {
|
||||
toast.error(t('settings.agents.sidebar.toast.deleteFailed'));
|
||||
} else {
|
||||
toast.success(t('settings.agents.sidebar.toast.agentReset', { name: confirmActionAgent.name }));
|
||||
toast.error(t('settings.agents.sidebar.toast.resetFailed'));
|
||||
}
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : '';
|
||||
const definitionMissing = /built-in|not deletable|not found/i.test(message);
|
||||
if (confirmActionType === 'delete') {
|
||||
toast.error(definitionMissing
|
||||
? t('settings.agents.sidebar.toast.definitionNotFound')
|
||||
: t('settings.agents.sidebar.toast.deleteFailed'));
|
||||
} else {
|
||||
toast.error(t('settings.agents.sidebar.toast.resetFailed'));
|
||||
}
|
||||
closeConfirmActionDialog();
|
||||
} else if (confirmActionType === 'delete') {
|
||||
toast.error(t('settings.agents.sidebar.toast.deleteFailed'));
|
||||
} else {
|
||||
toast.error(t('settings.agents.sidebar.toast.resetFailed'));
|
||||
}
|
||||
|
||||
setIsConfirmActionPending(false);
|
||||
|
||||
@@ -392,6 +392,7 @@ export const settingsDict = {
|
||||
'settings.agents.sidebar.toast.agentDeleted': 'Agent "{name}" deleted successfully',
|
||||
'settings.agents.sidebar.toast.agentReset': 'Agent "{name}" reset to default',
|
||||
'settings.agents.sidebar.toast.deleteFailed': 'Failed to delete agent',
|
||||
'settings.agents.sidebar.toast.definitionNotFound': 'Agent definition not found. Nothing was changed.',
|
||||
'settings.agents.sidebar.toast.resetFailed': 'Failed to reset agent',
|
||||
'settings.agents.sidebar.toast.agentNameRequired': 'Agent name is required',
|
||||
'settings.agents.sidebar.toast.agentExists': 'An agent with this name already exists',
|
||||
|
||||
@@ -359,6 +359,7 @@ export const settingsDict = {
|
||||
"settings.agents.sidebar.toast.agentDeleted": "Agente \"{name}\" eliminado correctamente",
|
||||
"settings.agents.sidebar.toast.agentReset": "Agente \"{name}\" restablecido a la configuración predeterminada",
|
||||
"settings.agents.sidebar.toast.deleteFailed": "No se pudo eliminar el agente",
|
||||
"settings.agents.sidebar.toast.definitionNotFound": "No se encontró la definición del agente. No se cambió nada.",
|
||||
"settings.agents.sidebar.toast.resetFailed": "No se pudo restablecer el agente",
|
||||
"settings.agents.sidebar.toast.agentNameRequired": "Se requiere el nombre del agente",
|
||||
"settings.agents.sidebar.toast.agentExists": "Ya existe un agente con este nombre",
|
||||
|
||||
@@ -348,6 +348,7 @@ export const settingsDict = {
|
||||
'settings.agents.sidebar.toast.agentDeleted': 'Agent "{name}" supprimé avec succès',
|
||||
'settings.agents.sidebar.toast.agentReset': 'Agent "{name}" réinitialisé aux valeurs par défaut',
|
||||
'settings.agents.sidebar.toast.deleteFailed': 'Échec de la suppression de l\'agent',
|
||||
'settings.agents.sidebar.toast.definitionNotFound': 'Définition de l’agent introuvable. Aucune modification effectuée.',
|
||||
'settings.agents.sidebar.toast.resetFailed': 'Échec de la réinitialisation de l\'agent',
|
||||
'settings.agents.sidebar.toast.agentNameRequired': 'Le nom de l\'agent est requis',
|
||||
'settings.agents.sidebar.toast.agentExists': 'Un agent portant ce nom existe déjà',
|
||||
|
||||
@@ -359,6 +359,7 @@ export const settingsDict = {
|
||||
'settings.agents.sidebar.toast.agentDeleted': '"{name}" 에이전트를 삭제했습니다',
|
||||
'settings.agents.sidebar.toast.agentReset': '"{name}" 에이전트를 기본값으로 초기화했습니다',
|
||||
'settings.agents.sidebar.toast.deleteFailed': '에이전트를 삭제하지 못했습니다',
|
||||
'settings.agents.sidebar.toast.definitionNotFound': '에이전트 정의를 찾을 수 없습니다. 변경된 내용이 없습니다.',
|
||||
'settings.agents.sidebar.toast.resetFailed': '에이전트를 초기화하지 못했습니다',
|
||||
'settings.agents.sidebar.toast.agentNameRequired': '에이전트 이름은 필수입니다',
|
||||
'settings.agents.sidebar.toast.agentExists': '같은 이름의 에이전트가 이미 존재합니다',
|
||||
|
||||
@@ -79,6 +79,7 @@ export const settingsDict = {
|
||||
'settings.agents.sidebar.toast.agentReset': 'Agent "{name}" został zresetowany do domyślnych ustawień',
|
||||
'settings.agents.sidebar.toast.builtInCannotDelete': 'Wbudowanych agentów nie można usuwać',
|
||||
'settings.agents.sidebar.toast.deleteFailed': 'Nie udało się usunąć agenta',
|
||||
'settings.agents.sidebar.toast.definitionNotFound': 'Nie znaleziono definicji agenta. Nic nie zmieniono.',
|
||||
'settings.agents.sidebar.toast.removeOldAfterRenameFailed': 'Nie udało się usunąć starego agenta po zmianie nazwy',
|
||||
'settings.agents.sidebar.toast.renameFailed': 'Nie udało się zmienić nazwy agenta',
|
||||
'settings.agents.sidebar.toast.resetFailed': 'Nie udało się zresetować agenta',
|
||||
|
||||
@@ -359,6 +359,7 @@ export const settingsDict = {
|
||||
"settings.agents.sidebar.toast.agentDeleted": "Agente \"{name}\" excluído com sucesso",
|
||||
"settings.agents.sidebar.toast.agentReset": "Agente \"{name}\" redefinido para as configurações padrão",
|
||||
"settings.agents.sidebar.toast.deleteFailed": "Não foi possível excluir o agente",
|
||||
"settings.agents.sidebar.toast.definitionNotFound": "Definição do agente não encontrada. Nada foi alterado.",
|
||||
"settings.agents.sidebar.toast.resetFailed": "Não foi possível redefinir o agente",
|
||||
"settings.agents.sidebar.toast.agentNameRequired": "É necessário informar o nome do agente",
|
||||
"settings.agents.sidebar.toast.agentExists": "Já existe um agente com este nome",
|
||||
|
||||
@@ -359,6 +359,7 @@ export const settingsDict = {
|
||||
"settings.agents.sidebar.toast.agentDeleted": "Агент \"{name}\" успішно видалено",
|
||||
"settings.agents.sidebar.toast.agentReset": "Агента \"{name}\" скинуто до значень за замовчуванням",
|
||||
"settings.agents.sidebar.toast.deleteFailed": "Не вдалося видалити агента",
|
||||
"settings.agents.sidebar.toast.definitionNotFound": "Визначення агента не знайдено. Нічого не змінено.",
|
||||
"settings.agents.sidebar.toast.resetFailed": "Не вдалося скинути агента",
|
||||
"settings.agents.sidebar.toast.agentNameRequired": "Потрібно вказати ім’я агента",
|
||||
"settings.agents.sidebar.toast.agentExists": "Агент із такою назвою вже існує",
|
||||
|
||||
@@ -359,6 +359,7 @@ export const settingsDict = {
|
||||
'settings.agents.sidebar.toast.agentDeleted': '智能体“{name}”已删除',
|
||||
'settings.agents.sidebar.toast.agentReset': '智能体“{name}”已重置为默认值',
|
||||
'settings.agents.sidebar.toast.deleteFailed': '删除智能体失败',
|
||||
'settings.agents.sidebar.toast.definitionNotFound': '未找到智能体定义。未进行任何更改。',
|
||||
'settings.agents.sidebar.toast.resetFailed': '重置智能体失败',
|
||||
'settings.agents.sidebar.toast.agentNameRequired': '智能体名称为必填项',
|
||||
'settings.agents.sidebar.toast.agentExists': '已存在同名智能体',
|
||||
|
||||
@@ -356,6 +356,7 @@
|
||||
'settings.agents.sidebar.toast.agentDeleted': 'Agent「{name}」已刪除',
|
||||
'settings.agents.sidebar.toast.agentReset': 'Agent「{name}」已重設為預設值',
|
||||
'settings.agents.sidebar.toast.deleteFailed': '刪除 agent 失敗',
|
||||
'settings.agents.sidebar.toast.definitionNotFound': '找不到 agent 定義。未變更任何內容。',
|
||||
'settings.agents.sidebar.toast.resetFailed': '重設 agent 失敗',
|
||||
'settings.agents.sidebar.toast.agentNameRequired': 'Agent 名稱為必填項',
|
||||
'settings.agents.sidebar.toast.agentExists': '已存在同名 agent',
|
||||
|
||||
@@ -493,8 +493,9 @@ export const useAgentsStore = create<AgentsStore>()(
|
||||
set({ selectedAgentName: null });
|
||||
}
|
||||
return loaded;
|
||||
} catch {
|
||||
return false;
|
||||
} catch (error) {
|
||||
console.error('Failed to delete agent:', error);
|
||||
throw error;
|
||||
} finally {
|
||||
if (!requiresReload) {
|
||||
finishConfigUpdate();
|
||||
|
||||
Reference in New Issue
Block a user