|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
|
id TEXT PRIMARY KEY,
|
|
|
mobile_number TEXT UNIQUE NOT NULL,
|
|
|
full_name TEXT NOT NULL,
|
|
|
password_hash TEXT NOT NULL,
|
|
|
avatar_url TEXT,
|
|
|
preferences TEXT,
|
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
|
);
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
|
id TEXT PRIMARY KEY,
|
|
|
user_id TEXT NOT NULL,
|
|
|
title TEXT,
|
|
|
metadata TEXT,
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
expires_at DATETIME,
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
|
);
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS conversations (
|
|
|
id TEXT PRIMARY KEY,
|
|
|
session_id TEXT NOT NULL,
|
|
|
role TEXT NOT NULL,
|
|
|
content TEXT NOT NULL,
|
|
|
metadata TEXT,
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
|
|
|
);
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS files (
|
|
|
id TEXT PRIMARY KEY,
|
|
|
user_id TEXT NOT NULL,
|
|
|
session_id TEXT,
|
|
|
filename TEXT NOT NULL,
|
|
|
content_type TEXT,
|
|
|
size INTEGER,
|
|
|
r2_key TEXT NOT NULL,
|
|
|
bucket TEXT NOT NULL,
|
|
|
metadata TEXT,
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
|
FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE SET NULL
|
|
|
);
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS agents (
|
|
|
id TEXT PRIMARY KEY,
|
|
|
user_id TEXT NOT NULL,
|
|
|
name TEXT NOT NULL,
|
|
|
description TEXT,
|
|
|
system_prompt TEXT,
|
|
|
model TEXT,
|
|
|
tools TEXT,
|
|
|
config TEXT,
|
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
|
);
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS agent_sessions (
|
|
|
id TEXT PRIMARY KEY,
|
|
|
agent_id TEXT NOT NULL,
|
|
|
user_id TEXT NOT NULL,
|
|
|
session_id TEXT NOT NULL,
|
|
|
durable_object_id TEXT,
|
|
|
status TEXT DEFAULT 'active',
|
|
|
metadata TEXT,
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
FOREIGN KEY (agent_id) REFERENCES agents(id) ON DELETE CASCADE,
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
|
FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
|
|
|
);
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS usage_logs (
|
|
|
id TEXT PRIMARY KEY,
|
|
|
user_id TEXT NOT NULL,
|
|
|
session_id TEXT,
|
|
|
agent_id TEXT,
|
|
|
action TEXT NOT NULL,
|
|
|
resource_type TEXT,
|
|
|
resource_id TEXT,
|
|
|
tokens_used INTEGER DEFAULT 0,
|
|
|
duration_ms INTEGER DEFAULT 0,
|
|
|
cost_cents INTEGER DEFAULT 0,
|
|
|
metadata TEXT,
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
|
FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE SET NULL,
|
|
|
FOREIGN KEY (agent_id) REFERENCES agents(id) ON DELETE SET NULL
|
|
|
);
|
|
|
|
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_users_mobile_number ON users(mobile_number);
|
|
|
CREATE INDEX IF NOT EXISTS idx_sessions_user_id ON sessions(user_id);
|
|
|
CREATE INDEX IF NOT EXISTS idx_sessions_created_at ON sessions(created_at);
|
|
|
CREATE INDEX IF NOT EXISTS idx_conversations_session_id ON conversations(session_id);
|
|
|
CREATE INDEX IF NOT EXISTS idx_conversations_created_at ON conversations(created_at);
|
|
|
CREATE INDEX IF NOT EXISTS idx_files_user_id ON files(user_id);
|
|
|
CREATE INDEX IF NOT EXISTS idx_files_session_id ON files(session_id);
|
|
|
CREATE INDEX IF NOT EXISTS idx_files_created_at ON files(created_at);
|
|
|
CREATE INDEX IF NOT EXISTS idx_agents_user_id ON agents(user_id);
|
|
|
CREATE INDEX IF NOT EXISTS idx_agent_sessions_user_id ON agent_sessions(user_id);
|
|
|
CREATE INDEX IF NOT EXISTS idx_agent_sessions_session_id ON agent_sessions(session_id);
|
|
|
CREATE INDEX IF NOT EXISTS idx_usage_logs_user_id ON usage_logs(user_id);
|
|
|
CREATE INDEX IF NOT EXISTS idx_usage_logs_created_at ON usage_logs(created_at);
|
|
|
|
|
|
|
|
|
INSERT OR IGNORE INTO users (id, mobile_number, full_name, password_hash)
|
|
|
VALUES ('system', '0000000000', 'OpenManus System', 'system_hash');
|
|
|
|
|
|
|
|
|
INSERT OR IGNORE INTO agents (id, user_id, name, description, system_prompt, model, tools)
|
|
|
VALUES (
|
|
|
'default-agent',
|
|
|
'system',
|
|
|
'OpenManus Assistant',
|
|
|
'Default OpenManus AI assistant with full capabilities',
|
|
|
'You are OpenManus, an intelligent AI assistant with access to various tools and services. You help users with a wide range of tasks including file management, data analysis, web browsing, and more. Always be helpful, accurate, and concise in your responses.',
|
|
|
'gpt-4-turbo-preview',
|
|
|
'["file_operations", "web_search", "data_analysis", "browser_use", "python_execute"]'
|
|
|
);
|
|
|
|