All checks were successful
Dev Build / build-test (pull_request) Successful in 2m13s
98 lines
3.5 KiB
SQL
98 lines
3.5 KiB
SQL
-- Migration: 001_initial_schema
|
|
-- Description: Creates the core Control Center database schema.
|
|
|
|
-- Enable UUID extension
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
-- ============================================
|
|
-- Table: agents
|
|
-- ============================================
|
|
CREATE TABLE agents (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
name TEXT NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'idle'
|
|
CHECK (status IN ('active', 'idle', 'thinking', 'error', 'offline')),
|
|
task TEXT,
|
|
progress INT NOT NULL DEFAULT 0
|
|
CHECK (progress >= 0 AND progress <= 100),
|
|
session_key TEXT,
|
|
channel TEXT,
|
|
last_activity TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
COMMENT ON TABLE agents IS 'Registered agents and their current state';
|
|
COMMENT ON COLUMN agents.status IS 'Agent lifecycle status: active, idle, thinking, error, offline';
|
|
|
|
-- ============================================
|
|
-- Table: sessions
|
|
-- ============================================
|
|
CREATE TABLE sessions (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
agent_id UUID NOT NULL,
|
|
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
ended_at TIMESTAMPTZ,
|
|
status TEXT NOT NULL DEFAULT 'running'
|
|
CHECK (status IN ('running', 'completed', 'crashed', 'terminated')),
|
|
CONSTRAINT fk_sessions_agent
|
|
FOREIGN KEY (agent_id) REFERENCES agents(id)
|
|
ON DELETE CASCADE
|
|
);
|
|
|
|
COMMENT ON TABLE sessions IS 'Agent session history';
|
|
|
|
-- ============================================
|
|
-- Table: task_logs
|
|
-- ============================================
|
|
CREATE TABLE task_logs (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
agent_id UUID NOT NULL,
|
|
task TEXT NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'pending'
|
|
CHECK (status IN ('pending', 'running', 'completed', 'failed', 'cancelled')),
|
|
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
completed_at TIMESTAMPTZ,
|
|
error_message TEXT,
|
|
CONSTRAINT fk_task_logs_agent
|
|
FOREIGN KEY (agent_id) REFERENCES agents(id)
|
|
ON DELETE CASCADE
|
|
);
|
|
|
|
COMMENT ON TABLE task_logs IS 'Historical record of tasks assigned to agents';
|
|
|
|
-- ============================================
|
|
-- Table: projects
|
|
-- ============================================
|
|
CREATE TABLE projects (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
name TEXT NOT NULL,
|
|
description TEXT,
|
|
status TEXT NOT NULL DEFAULT 'planned'
|
|
CHECK (status IN ('planned', 'in_progress', 'completed', 'paused', 'cancelled')),
|
|
agent_id UUID,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT fk_projects_agent
|
|
FOREIGN KEY (agent_id) REFERENCES agents(id)
|
|
ON DELETE SET NULL
|
|
);
|
|
|
|
COMMENT ON TABLE projects IS 'Projects managed by the Control Center';
|
|
|
|
-- ============================================
|
|
-- Table: agent_events
|
|
-- ============================================
|
|
CREATE TABLE agent_events (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
agent_id UUID NOT NULL,
|
|
event_type TEXT NOT NULL,
|
|
payload JSONB,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT fk_agent_events_agent
|
|
FOREIGN KEY (agent_id) REFERENCES agents(id)
|
|
ON DELETE CASCADE
|
|
);
|
|
|
|
COMMENT ON TABLE agent_events IS 'Event stream for agent lifecycle and telemetry';
|