Moved all Mongoose model interfaces to @gadget/api to commonize the data structures being passed around the system as JSON objects via HTTP and Socket.IO.
45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
// src/models/drone-monitor.ts
|
|
// Copyright (C) 2026 Robert Colbert <rob.colbert@openplatform.us>
|
|
// All Rights Reserved
|
|
|
|
import { Types, Schema, model } from "mongoose";
|
|
import { IDroneMonitor, IMemoryMonitor } from "@gadget/api";
|
|
|
|
export const MemoryMonitorSchema = new Schema<IMemoryMonitor>({
|
|
count: { type: Number, default: 0, required: true },
|
|
bytes: { type: Number, default: 0, required: true },
|
|
});
|
|
|
|
export const DroneMonitorSchema = new Schema<IDroneMonitor>({
|
|
registration: { type: Types.ObjectId, required: true, index: 1 },
|
|
timestamp: { type: Date, required: true, index: -1 },
|
|
memory: {
|
|
rss: { type: Number, required: true },
|
|
v8: {
|
|
heapTotal: { type: Number, required: true },
|
|
heapUsed: { type: Number, required: true },
|
|
heapExternal: { type: Number, required: true, default: 0 },
|
|
},
|
|
os: {
|
|
total: { type: Number, required: true },
|
|
free: { type: Number, required: true },
|
|
},
|
|
ai: {
|
|
subagents: { type: MemoryMonitorSchema, required: true },
|
|
fileOperations: { type: MemoryMonitorSchema, required: true },
|
|
toolCalls: { type: MemoryMonitorSchema, required: true },
|
|
},
|
|
logs: { type: MemoryMonitorSchema, required: true },
|
|
},
|
|
});
|
|
|
|
export const DroneMonitor = model<IDroneMonitor>(
|
|
"DroneMonitor",
|
|
DroneMonitorSchema,
|
|
);
|
|
export default DroneMonitor;
|
|
|
|
(async () => {
|
|
await DroneMonitor.syncIndexes();
|
|
})();
|