import type {
TaskRecord,
TaskRegistrySummary,
TaskRuntimeCounts,
TaskStatusCounts,
} from "./task-registry.types.js" ;
function createEmptyTaskStatusCounts(): TaskStatusCounts {
return {
queued: 0 ,
running: 0 ,
succeeded: 0 ,
failed: 0 ,
timed_out: 0 ,
cancelled: 0 ,
lost: 0 ,
};
}
function createEmptyTaskRuntimeCounts(): TaskRuntimeCounts {
return {
subagent: 0 ,
acp: 0 ,
cli: 0 ,
cron: 0 ,
};
}
export function createEmptyTaskRegistrySummary(): TaskRegistrySummary {
return {
total: 0 ,
active: 0 ,
terminal: 0 ,
failures: 0 ,
byStatus: createEmptyTaskStatusCounts(),
byRuntime: createEmptyTaskRuntimeCounts(),
};
}
export function summarizeTaskRecords(records: Iterable<TaskRecord>): TaskRegistrySummary {
const summary = createEmptyTaskRegistrySummary();
for (const task of records) {
summary.total += 1 ;
summary.byStatus[task.status] += 1 ;
summary.byRuntime[task.runtime] += 1 ;
if (task.status === "queued" || task.status === "running" ) {
summary.active += 1 ;
} else {
summary.terminal += 1 ;
}
if (task.status === "failed" || task.status === "timed_out" || task.status === "lost" ) {
summary.failures += 1 ;
}
}
return summary;
}
Messung V0.5 in Prozent C=100 H=87 G=93
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland