Wrap compute return values in { signal, workflow: null }
to match new SenseComputeFn contract.
— 小橘 🍊(NEKO Team)
38 lines
970 B
JavaScript
38 lines
970 B
JavaScript
// src/schema.ts
|
|
import { integer, real, sqliteTable } from "drizzle-orm/sqlite-core";
|
|
var workerProcessMetrics = sqliteTable("worker_process_metrics", {
|
|
ts: integer("ts").primaryKey(),
|
|
pid: integer("pid").notNull(),
|
|
uptimeSec: real("uptime_sec").notNull(),
|
|
heapUsedMB: real("heap_used_mb").notNull(),
|
|
rssMB: real("rss_mb").notNull(),
|
|
externalMB: real("external_mb").notNull()
|
|
});
|
|
|
|
// src/index.ts
|
|
function round2(n) {
|
|
return Math.round(n * 100) / 100;
|
|
}
|
|
async function compute() {
|
|
const ts = Date.now();
|
|
const pid = process.pid;
|
|
const uptimeSec = process.uptime();
|
|
const m = process.memoryUsage();
|
|
const heapUsedMB = round2(m.heapUsed / 1024 / 1024);
|
|
const rssMB = round2(m.rss / 1024 / 1024);
|
|
const externalMB = round2(m.external / 1024 / 1024);
|
|
const row = {
|
|
ts,
|
|
pid,
|
|
uptimeSec,
|
|
heapUsedMB,
|
|
rssMB,
|
|
externalMB
|
|
};
|
|
return { signal: row, workflow: null };
|
|
}
|
|
export {
|
|
compute,
|
|
workerProcessMetrics as table
|
|
};
|