diff --git a/src/server/services/session-discovery.ts b/src/server/services/session-discovery.ts index 9264275..8189137 100644 --- a/src/server/services/session-discovery.ts +++ b/src/server/services/session-discovery.ts @@ -80,6 +80,7 @@ export async function discoverSessions( modified: entry.modified || "", messageCount: entry.messageCount || 0, path: resolved, + duration: computeDuration(entry.created, entry.modified), }); } } catch { @@ -102,3 +103,12 @@ export async function discoverSessions( return sessions; } + +function computeDuration(created?: string, modified?: string): number { + if (!created || !modified) return 0; + const createdMs = new Date(created).getTime(); + const modifiedMs = new Date(modified).getTime(); + if (isNaN(createdMs) || isNaN(modifiedMs)) return 0; + const diff = modifiedMs - createdMs; + return diff > 0 ? diff : 0; +} diff --git a/src/shared/types.ts b/src/shared/types.ts index f27a92a..0d2814d 100644 --- a/src/shared/types.ts +++ b/src/shared/types.ts @@ -28,6 +28,7 @@ export interface SessionEntry { modified: string; messageCount: number; path: string; + duration?: number; // Duration in milliseconds from first to last message } export interface SessionListResponse {