Add 5 pi extensions: pi-subagents, pi-crew, rpiv-pi, pi-interactive-shell, pi-intercom
This commit is contained in:
21
extensions/pi-crew/src/runtime/worker-heartbeat.ts
Normal file
21
extensions/pi-crew/src/runtime/worker-heartbeat.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
export interface WorkerHeartbeatState {
|
||||
workerId: string;
|
||||
pid?: number;
|
||||
lastSeenAt: string;
|
||||
lastStdoutAt?: string;
|
||||
lastEventAt?: string;
|
||||
turnCount?: number;
|
||||
alive?: boolean;
|
||||
}
|
||||
|
||||
export function createWorkerHeartbeat(workerId: string, pid?: number, now = new Date()): WorkerHeartbeatState {
|
||||
return { workerId, pid, lastSeenAt: now.toISOString(), alive: true };
|
||||
}
|
||||
|
||||
export function touchWorkerHeartbeat(heartbeat: WorkerHeartbeatState, updates: Partial<Omit<WorkerHeartbeatState, "workerId">> = {}, now = new Date()): WorkerHeartbeatState {
|
||||
return { ...heartbeat, ...updates, lastSeenAt: now.toISOString() };
|
||||
}
|
||||
|
||||
export function isWorkerHeartbeatStale(heartbeat: WorkerHeartbeatState, staleMs: number, now = new Date()): boolean {
|
||||
return now.getTime() - Date.parse(heartbeat.lastSeenAt) > staleMs;
|
||||
}
|
||||
Reference in New Issue
Block a user