Skip to content

Commit 541b332

Browse files
removed the non version aware delete buttons from the agent list, and added a version aware delete button to every agent version in the settings tab that makes sure the agent is not in use before deleting and confirms the delete.
1 parent 588ab52 commit 541b332

File tree

3 files changed

+31
-34
lines changed

3 files changed

+31
-34
lines changed

editor/ui_app_shell.py

Lines changed: 22 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,28 @@ def __init__(self, config_path="config.json", engine_loaded=True, core_lib=None)
9595

9696
self.focus_set()
9797

98+
def delete_specific_agent_version(self, agent_full_id):
99+
if not agent_full_id: return
100+
101+
dependents = self.config_manager.check_agent_usage(agent_full_id)
102+
if dependents:
103+
messagebox.showerror(
104+
"Cannot Delete Version",
105+
f"Cannot delete '{agent_full_id}' because it is used by:\n\n- " + "\n- ".join(set(dependents))
106+
)
107+
return
108+
109+
msg = f"Are you sure you want to delete this specific agent version?\n\n{agent_full_id}\n\nThis cannot be undone."
110+
if not messagebox.askyesno("Confirm Delete", msg, parent=self):
111+
return
112+
113+
self.config_manager.delete_agent(agent_full_id)
114+
self.config_manager.save()
115+
116+
self.refresh_agent_list()
117+
self.show_welcome_message()
118+
self.show_toast(f"Agent version '{agent_full_id}' deleted.")
119+
98120
def _get_major_version_str(self, full_id: str) -> str | None:
99121
"""
100122
Extracts the major version string (e.g., 'v1', 'v2') from a full ID.
@@ -395,9 +417,6 @@ def refresh_agent_list(self):
395417
row = ctk.CTkFrame(self.agent_scroll_frame, fg_color="transparent")
396418
row.pack(fill="x", padx=2, pady=2)
397419

398-
del_btn = ctk.CTkButton(row, text="X", width=30, fg_color=self.theme['colors']['error'], command=lambda n=display_name: self.delete_agent(agent_name=n, confirm=True))
399-
del_btn.pack(side="right")
400-
401420
btn = ctk.CTkButton(row, text=f"[{prefix}] {display_name}", anchor="w", font=main_font)
402421
btn.pack(side="left", fill="x", expand=True)
403422

@@ -611,37 +630,6 @@ def sort_key(full_id):
611630
self.refresh_agent_list()
612631
self.show_welcome_message()
613632

614-
def delete_agent(self, agent_name=None, confirm=False):
615-
grouping_key = agent_name
616-
if not grouping_key: return
617-
618-
ids_to_delete = self.agent_families.get(grouping_key, [])
619-
if not ids_to_delete:
620-
messagebox.showerror("Error", f"Agent '{grouping_key}' not found.")
621-
return
622-
623-
all_deps = []
624-
for full_id in ids_to_delete:
625-
deps = self.config_manager.check_agent_usage(full_id)
626-
if deps: all_deps.extend(deps)
627-
628-
if all_deps:
629-
messagebox.showerror("Cannot Delete", f"Cannot delete '{grouping_key}' because one or more of its versions are used by:\n- " + "\n- ".join(set(all_deps)))
630-
return
631-
632-
msg = f"Are you sure you want to delete '{grouping_key}' and all its {len(ids_to_delete)} version(s)? This cannot be undone."
633-
if confirm and not messagebox.askyesno("Confirm Delete", msg):
634-
return
635-
636-
for full_id in ids_to_delete:
637-
self.config_manager.delete_agent(full_id)
638-
639-
self.config_manager.save()
640-
self.refresh_agent_list()
641-
642-
if self.current_agent_name in ids_to_delete:
643-
self.show_welcome_message()
644-
645633
def open_global_config(self):
646634
modal = GlobalConfigEditorModal(self, self.config_manager, self.theme); self.wait_window(modal)
647635
if modal.saved: self.config_manager.save(); self.show_toast("Global configuration saved successfully!")

editor/ui_editors.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,9 @@ def create_settings_tab(self, tab):
627627
copy_button = ctk.CTkButton(tab, text="Copy Agent Definition to Clipboard", command=self.copy_agent_definition_to_clipboard)
628628
copy_button.pack(fill="x", padx=10, pady=(15, 5))
629629

630+
delete_button = ctk.CTkButton(tab, text="Delete This Agent Version", command=lambda: self.app_ref.delete_specific_agent_version(self.agent_name), fg_color=self.theme['colors']['error'])
631+
delete_button.pack(fill="x", padx=10, pady=5)
632+
630633
def create_gui_hints_tab(self, tab):
631634
tab.configure(fg_color=self.theme['colors']['bg_secondary'])
632635
tab.grid_rowconfigure(0, weight=1); tab.grid_columnconfigure(0, weight=1)
@@ -753,6 +756,9 @@ def create_settings_tab(self, tab):
753756
copy_button = ctk.CTkButton(tab, text="Copy Agent Definition to Clipboard", command=self.copy_agent_definition_to_clipboard)
754757
copy_button.pack(fill="x", padx=10, pady=(15, 5))
755758

759+
delete_button = ctk.CTkButton(tab, text="Delete This Agent Version", command=lambda: self.app_ref.delete_specific_agent_version(self.agent_name), fg_color=self.theme['colors']['error'])
760+
delete_button.pack(fill="x", padx=10, pady=5)
761+
756762
def create_gui_hints_tab(self, tab):
757763
tab.configure(fg_color=self.theme['colors']['bg_secondary'])
758764
tab.grid_rowconfigure(0, weight=1); tab.grid_columnconfigure(0, weight=1)

editor/workflow_editor.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ def create_settings_tab(self, tab):
217217
copy_button = ctk.CTkButton(tab, text="Copy Agent Definition to Clipboard", command=self.copy_agent_definition_to_clipboard)
218218
copy_button.pack(fill="x", padx=10, pady=(15, 5))
219219

220+
delete_button = ctk.CTkButton(tab, text="Delete This Agent Version", command=lambda: self.app_ref.delete_specific_agent_version(self.agent_name), fg_color=self.theme['colors']['error'])
221+
delete_button.pack(fill="x", padx=10, pady=5)
222+
220223
def create_gui_hints_tab(self, tab):
221224
tab.configure(fg_color=self.theme['colors']['bg_secondary'])
222225
tab.grid_rowconfigure(0, weight=1); tab.grid_columnconfigure(0, weight=1)

0 commit comments

Comments
 (0)