System health, datan activity, commits, CI/CD — all in one view
1import type { WorkParticle } from './types';23let particleBuffer: WorkParticle[] = [];4let listeners: Array<(particles: WorkParticle[]) => void> = [];56export function trackParticle(7 particle: Omit<WorkParticle, 'id' | 'timestamp' | 'status'>8): WorkParticle {9 const wp: WorkParticle = {10 ...particle,11 id: `wp-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`,12 timestamp: new Date().toISOString(),13 status: 'created',14 };15 particleBuffer.push(wp);16 if (particleBuffer.length > 1000) {17 particleBuffer = particleBuffer.slice(-500);18 }19 listeners.forEach((fn) => fn([...particleBuffer]));20 return wp;21}2223export function getRecentParticles(limit: number = 50): WorkParticle[] {24 return particleBuffer.slice(-limit);25}