be1f86044e
Phase 3 of RFC #308: Stateful Sense refactor. - Examples (cpu-usage, nerve-health) use initialState + compute(state) - CLI create/init templates generate stateful sense (no SQLite/Drizzle) - Removed: sense query, sense schema commands (no more per-sense SQLite) - Removed: sense-sqlite.ts, schema templates, migration templates - Updated all CLI tests for new sense structure Refs #308, closes #311
18 lines
517 B
TypeScript
18 lines
517 B
TypeScript
import { loadavg } from "node:os";
|
|
|
|
type CpuState = {
|
|
samples: Array<{ ts: number; value: number }>;
|
|
};
|
|
|
|
export const initialState: CpuState = { samples: [] };
|
|
|
|
export async function compute(state: CpuState): Promise<{
|
|
state: CpuState;
|
|
workflow: null;
|
|
}> {
|
|
const [oneMin] = loadavg();
|
|
const value = typeof oneMin === "number" && !Number.isNaN(oneMin) ? oneMin : 0;
|
|
const newSamples = [...state.samples.slice(-99), { ts: Date.now(), value }];
|
|
return { state: { samples: newSamples }, workflow: null };
|
|
}
|