diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx index 07dd461a1f..ef060b6899 100644 --- a/packages/tui/src/routes/session/index.tsx +++ b/packages/tui/src/routes/session/index.tsx @@ -51,6 +51,7 @@ import { useClient } from "../../context/client" import { useEditorContext } from "../../context/editor" import { openEditor } from "../../editor" import { useDialog } from "../../ui/dialog" +import { DialogConfirm } from "../../ui/dialog-confirm" import { DialogSessionRename } from "../../component/dialog-session-rename" import { DialogMessage } from "./dialog-message" import { DialogFork } from "./dialog-fork" @@ -521,6 +522,32 @@ export function Session() { slash: { name: "rename" }, run: () => DialogSessionRename.show(dialog, route.sessionID, session()?.title), }, + { + title: "Delete session", + id: "session.delete", + group: "Session", + slash: { name: "delete" }, + run: async () => { + const current = session() + if (!current) return + const confirmed = await DialogConfirm.show( + dialog, + "Delete Session", + `Delete "${current.title}"? This action cannot be undone.`, + ) + if (confirmed !== true) return + const error = await client.api.session.remove({ sessionID: route.sessionID }).then( + () => undefined, + (error) => error, + ) + if (!error) return + toast.show({ + message: `Failed to delete session: ${errorMessage(error)}`, + variant: "error", + duration: 5000, + }) + }, + }, { title: "Jump to message", id: "session.timeline",