From 136ca9ff29f410362e38cf2d3d9b94cd79b3da5d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 23 Jun 2025 00:16:54 +0200 Subject: [PATCH] yellow X is to clean up sessions --- web/src/client/components/session-card.ts | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/web/src/client/components/session-card.ts b/web/src/client/components/session-card.ts index db31407b..afc0c6ea 100644 --- a/web/src/client/components/session-card.ts +++ b/web/src/client/components/session-card.ts @@ -105,19 +105,27 @@ export class SessionCard extends LitElement { this.requestUpdate(); }, 200); - // Send kill request + // Send kill or cleanup request based on session status try { - const response = await fetch(`/api/sessions/${this.session.id}`, { + // Use different endpoint based on session status + const endpoint = + this.session.status === 'exited' + ? `/api/sessions/${this.session.id}/cleanup` + : `/api/sessions/${this.session.id}`; + + const action = this.session.status === 'exited' ? 'cleanup' : 'kill'; + + const response = await fetch(endpoint, { method: 'DELETE', }); if (!response.ok) { const errorData = await response.text(); - logger.error('Failed to kill session', { errorData, sessionId: this.session.id }); - throw new Error(`Kill failed: ${response.status}`); + logger.error(`Failed to ${action} session`, { errorData, sessionId: this.session.id }); + throw new Error(`${action} failed: ${response.status}`); } - // Kill succeeded - dispatch event to notify parent components + // Kill/cleanup succeeded - dispatch event to notify parent components this.dispatchEvent( new CustomEvent('session-killed', { detail: { @@ -129,7 +137,9 @@ export class SessionCard extends LitElement { }) ); - logger.log('Session killed successfully', { sessionId: this.session.id }); + logger.log( + `Session ${this.session.id} ${action === 'cleanup' ? 'cleaned up' : 'killed'} successfully` + ); return true; } catch (error) { logger.error('Error killing session', { error, sessionId: this.session.id });