Add AgentOS daemon control plane and maintenance tooling

This commit is contained in:
-Puter
2026-07-19 06:29:51 +05:30
parent a37e0cc3c9
commit ec84c52155
621 changed files with 97578 additions and 15 deletions

View File

@@ -2,6 +2,66 @@ import { defineSchema, defineTable } from "convex/server";
import { v } from "convex/values";
export default defineSchema({
daemonDefinitions: defineTable({
daemonId: v.string(),
name: v.string(),
desiredState: v.union(v.literal("online"), v.literal("offline")),
agentOsConfig: v.any(),
configVersion: v.number(),
createdAt: v.number(),
updatedAt: v.number(),
}).index("by_daemonId", ["daemonId"]),
daemonPresence: defineTable({
daemonId: v.string(),
sessionId: v.string(),
status: v.union(
v.literal("online"),
v.literal("draining"),
v.literal("offline")
),
hostname: v.string(),
platform: v.string(),
architecture: v.string(),
version: v.string(),
startedAt: v.number(),
lastHeartbeatAt: v.number(),
})
.index("by_daemonId", ["daemonId"])
.index("by_sessionId", ["sessionId"]),
daemonCommands: defineTable({
daemonId: v.string(),
method: v.string(),
args: v.any(),
actorKey: v.array(v.string()),
status: v.union(
v.literal("queued"),
v.literal("claimed"),
v.literal("running"),
v.literal("succeeded"),
v.literal("failed"),
v.literal("cancelled")
),
attempts: v.number(),
claimedBySessionId: v.optional(v.string()),
leaseExpiresAt: v.optional(v.number()),
createdAt: v.number(),
updatedAt: v.number(),
startedAt: v.optional(v.number()),
completedAt: v.optional(v.number()),
result: v.optional(v.any()),
error: v.optional(v.string()),
})
.index("by_daemonId_and_status", ["daemonId", "status"])
.index("by_status_and_leaseExpiresAt", ["status", "leaseExpiresAt"]),
daemonCommandEvents: defineTable({
daemonId: v.string(),
commandId: v.optional(v.id("daemonCommands")),
kind: v.string(),
data: v.any(),
createdAt: v.number(),
})
.index("by_daemonId_and_createdAt", ["daemonId", "createdAt"])
.index("by_commandId_and_createdAt", ["commandId", "createdAt"]),
todos: defineTable({
text: v.string(),
completed: v.boolean(),