/
ncit
/
multiagentsystem
Обзор
Документация
Войти
/
ncit
/
multiagentsystem
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
supabase/migrations/001_initial_schema.sql
165 строк
9 KB
Nikita
feat: initial multi-agent platform scaffold
09 июн 2026, 00:48
09 июн 2026, 00:48
19cef10
Код
Авторство
О чём код?
-- ═══════════════════════════════════════════════════════════════════════════════ -- AGENTS PLATFORM — Database Schema -- ═══════════════════════════════════════════════════════════════════════════════ -- Enable pgvector for embeddings CREATE EXTENSION IF NOT EXISTS vector; -- ═══════════════════════════════════════════════════════════════════════════════ -- AGENT CONFIGURATIONS (per-user agent definitions) -- ═══════════════════════════════════════════════════════════════════════════════ CREATE TABLE IF NOT EXISTS agent_configs ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, user_id UUID NOT NULL, -- References auth.users after Supabase auth setup agent_type TEXT NOT NULL, -- 'coder', 'image-gen', 'marketing-copywriter', etc. name TEXT NOT NULL, -- User-facing name model_id TEXT NOT NULL DEFAULT 'openai/gpt-4o', instructions TEXT, -- Custom system prompt (overrides default) tool_ids TEXT[] DEFAULT '{}', -- Tools from the tool registry config JSONB DEFAULT '{}', -- Additional agent config (temperature, etc.) is_public BOOLEAN DEFAULT false, -- Whether it appears in marketplace forked_from UUID REFERENCES agent_configs(id), created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now() ); CREATE INDEX idx_agent_configs_user ON agent_configs(user_id); CREATE INDEX idx_agent_configs_type ON agent_configs(agent_type); CREATE INDEX idx_agent_configs_public ON agent_configs(is_public) WHERE is_public = true; -- ═══════════════════════════════════════════════════════════════════════════════ -- AGENT RUNS (execution history) -- ═══════════════════════════════════════════════════════════════════════════════ CREATE TABLE IF NOT EXISTS agent_runs ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, user_id UUID NOT NULL, agent_config_id UUID REFERENCES agent_configs(id) ON DELETE SET NULL, agent_type TEXT NOT NULL, session_id TEXT, trigger_job_id TEXT, -- Links to Trigger.dev job status TEXT DEFAULT 'pending' CHECK (status IN ('pending', 'running', 'done', 'failed')), input_message TEXT, result JSONB, cost_usd NUMERIC(12, 6) DEFAULT 0, tokens_used INT DEFAULT 0, latency_ms INT, created_at TIMESTAMPTZ DEFAULT now() ); CREATE INDEX idx_agent_runs_user ON agent_runs(user_id); CREATE INDEX idx_agent_runs_status ON agent_runs(status); CREATE INDEX idx_agent_runs_created ON agent_runs(created_at DESC); -- ═══════════════════════════════════════════════════════════════════════════════ -- AGENT SESSIONS (Agno storage — conversation history) -- ═══════════════════════════════════════════════════════════════════════════════ CREATE TABLE IF NOT EXISTS agent_sessions ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, session_id TEXT NOT NULL, user_id TEXT, agent_name TEXT, data JSONB, created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now() ); CREATE INDEX idx_agent_sessions_session ON agent_sessions(session_id); CREATE INDEX idx_agent_sessions_user ON agent_sessions(user_id); -- ═══════════════════════════════════════════════════════════════════════════════ -- AGENT MEMORY (Agno memory — per-user persistent facts) -- ═══════════════════════════════════════════════════════════════════════════════ CREATE TABLE IF NOT EXISTS agent_memory ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, session_id TEXT, user_id TEXT, agent_name TEXT, data JSONB, created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now() ); CREATE INDEX idx_agent_memory_user ON agent_memory(user_id); CREATE INDEX idx_agent_memory_session ON agent_memory(session_id); -- ═══════════════════════════════════════════════════════════════════════════════ -- PROMPTS (versioned prompt registry) -- ═══════════════════════════════════════════════════════════════════════════════ CREATE TABLE IF NOT EXISTS prompts ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, slug TEXT NOT NULL, version INT DEFAULT 1, owner_id UUID, -- NULL = system prompt name TEXT NOT NULL, description TEXT DEFAULT '', template TEXT NOT NULL, -- Supports $variable syntax variables JSONB DEFAULT '[]', tags TEXT[] DEFAULT '{}', is_public BOOLEAN DEFAULT false, forked_from UUID REFERENCES prompts(id), stars INT DEFAULT 0, use_count INT DEFAULT 0, created_at TIMESTAMPTZ DEFAULT now(), UNIQUE(slug, version, owner_id) ); CREATE INDEX idx_prompts_slug ON prompts(slug); CREATE INDEX idx_prompts_public ON prompts(is_public) WHERE is_public = true; CREATE INDEX idx_prompts_tags ON prompts USING gin(tags); -- ═══════════════════════════════════════════════════════════════════════════════ -- WORKFLOWS (DAG pipelines) -- ═══════════════════════════════════════════════════════════════════════════════ CREATE TABLE IF NOT EXISTS workflows ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, slug TEXT NOT NULL, version INT DEFAULT 1, owner_id UUID, name TEXT NOT NULL, description TEXT DEFAULT '', dag JSONB NOT NULL, -- {nodes: [...], edges: [...]} tags TEXT[] DEFAULT '{}', is_public BOOLEAN DEFAULT false, forked_from UUID REFERENCES workflows(id), stars INT DEFAULT 0, run_count INT DEFAULT 0, created_at TIMESTAMPTZ DEFAULT now(), UNIQUE(slug, version, owner_id) ); CREATE INDEX idx_workflows_public ON workflows(is_public) WHERE is_public = true; -- ═══════════════════════════════════════════════════════════════════════════════ -- REVIEWS (marketplace ratings) -- ═══════════════════════════════════════════════════════════════════════════════ CREATE TABLE IF NOT EXISTS reviews ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, target_type TEXT NOT NULL CHECK (target_type IN ('agent', 'prompt', 'workflow')), target_id UUID NOT NULL, user_id UUID NOT NULL, rating INT CHECK (rating BETWEEN 1 AND 5), comment TEXT, created_at TIMESTAMPTZ DEFAULT now(), UNIQUE(target_type, target_id, user_id) ); -- ═══════════════════════════════════════════════════════════════════════════════ -- USER SETTINGS -- ═══════════════════════════════════════════════════════════════════════════════ CREATE TABLE IF NOT EXISTS user_settings ( user_id UUID PRIMARY KEY, openrouter_api_key TEXT, -- Encrypted, user's own key preferred_model TEXT DEFAULT 'openai/gpt-4o', language TEXT DEFAULT 'en', notification_preferences JSONB DEFAULT '{}', created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now() );