From 4b730a887523cd489fcd587c4658c0905db44dc2 Mon Sep 17 00:00:00 2001 From: Agile Agents Date: Wed, 9 Sep 2026 22:08:55 +0800 Subject: [PATCH] agile(issue-71): implement ticket --- acceptance/routing/duration.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/acceptance/routing/duration.ts b/acceptance/routing/duration.ts index e57eb6f..00c9c56 100644 --- a/acceptance/routing/duration.ts +++ b/acceptance/routing/duration.ts @@ -1,4 +1,20 @@ /** Formats elapsed milliseconds for a task display. */ -export function formatDuration(_milliseconds: number | null): string { - throw new Error("Not implemented"); +export function formatDuration(milliseconds: number | null): string { + if (milliseconds === null || !Number.isFinite(milliseconds)) { + return "Unavailable"; + } + + const seconds = Math.floor(Math.max(0, milliseconds) / 1000); + if (seconds < 60) { + return `${seconds}s`; + } + + const minutes = Math.floor(seconds / 60); + const remainingSeconds = seconds % 60; + if (seconds < 3600) { + return `${minutes}m ${remainingSeconds}s`; + } + + const hours = Math.floor(minutes / 60); + return `${hours}h ${minutes % 60}m ${remainingSeconds}s`; }