Spaces:
Sleeping
Sleeping
| -- Document Table | |
| CREATE TABLE IF NOT EXISTS document ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| name VARCHAR(255) NOT NULL DEFAULT '', | |
| title VARCHAR(511) NOT NULL DEFAULT '', | |
| extract_status TEXT CHECK(extract_status IN ('INITIALIZED', 'SUCCESS', 'FAILED')) NOT NULL DEFAULT 'INITIALIZED', | |
| embedding_status TEXT CHECK(embedding_status IN ('INITIALIZED', 'SUCCESS', 'FAILED')) NOT NULL DEFAULT 'INITIALIZED', | |
| analyze_status TEXT CHECK(analyze_status IN ('INITIALIZED', 'SUCCESS', 'FAILED')) NOT NULL DEFAULT 'INITIALIZED', | |
| mime_type VARCHAR(50) NOT NULL DEFAULT '', | |
| raw_content TEXT DEFAULT NULL, | |
| user_description VARCHAR(255) NOT NULL DEFAULT '', | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| url VARCHAR(1023) NOT NULL DEFAULT '', | |
| document_size INTEGER NOT NULL DEFAULT 0, | |
| insight TEXT DEFAULT NULL, -- JSON data stored as TEXT | |
| summary TEXT DEFAULT NULL, -- JSON data stored as TEXT | |
| keywords TEXT DEFAULT NULL | |
| ); | |
| -- Document table indexes | |
| CREATE INDEX IF NOT EXISTS idx_extract_status ON document(extract_status); | |
| CREATE INDEX IF NOT EXISTS idx_name ON document(name); | |
| CREATE INDEX IF NOT EXISTS idx_create_time ON document(create_time); | |
| -- Chunk Table | |
| CREATE TABLE IF NOT EXISTS chunk ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| document_id INTEGER NOT NULL, | |
| content TEXT NOT NULL, | |
| has_embedding BOOLEAN NOT NULL DEFAULT 0, | |
| tags TEXT DEFAULT NULL, -- JSON data stored as TEXT | |
| topic VARCHAR(255) DEFAULT NULL, | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| FOREIGN KEY (document_id) REFERENCES document(id) | |
| ); | |
| -- Chunk table indexes | |
| CREATE INDEX IF NOT EXISTS idx_document_id ON chunk(document_id); | |
| CREATE INDEX IF NOT EXISTS idx_has_embedding ON chunk(has_embedding); | |
| -- L1 Version Table | |
| CREATE TABLE IF NOT EXISTS l1_versions ( | |
| version INTEGER PRIMARY KEY, | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| status VARCHAR(50) NOT NULL, | |
| description VARCHAR(500) | |
| ); | |
| -- L1 Bio Table | |
| CREATE TABLE IF NOT EXISTS l1_bios ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| version INTEGER NOT NULL, | |
| content TEXT, | |
| content_third_view TEXT, | |
| summary TEXT, | |
| summary_third_view TEXT, | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| FOREIGN KEY (version) REFERENCES l1_versions(version) | |
| ); | |
| -- L1 Shade Table | |
| CREATE TABLE IF NOT EXISTS l1_shades ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| version INTEGER NOT NULL, | |
| name VARCHAR(200), | |
| aspect VARCHAR(200), | |
| icon VARCHAR(100), | |
| desc_third_view TEXT, | |
| content_third_view TEXT, | |
| desc_second_view TEXT, | |
| content_second_view TEXT, | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| FOREIGN KEY (version) REFERENCES l1_versions(version) | |
| ); | |
| -- L1 Cluster Table | |
| CREATE TABLE IF NOT EXISTS l1_clusters ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| version INTEGER NOT NULL, | |
| cluster_id VARCHAR(100), | |
| memory_ids TEXT, -- JSON data stored as TEXT | |
| cluster_center TEXT, -- JSON data stored as TEXT | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| FOREIGN KEY (version) REFERENCES l1_versions(version) | |
| ); | |
| -- L1 Chunk Topic Table | |
| CREATE TABLE IF NOT EXISTS l1_chunk_topics ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| version INTEGER NOT NULL, | |
| chunk_id VARCHAR(100), | |
| topic TEXT, | |
| tags TEXT, -- JSON data stored as TEXT | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| FOREIGN KEY (version) REFERENCES l1_versions(version) | |
| ); | |
| -- Status Biography Table | |
| CREATE TABLE IF NOT EXISTS status_biography ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| content TEXT NOT NULL, | |
| content_third_view TEXT NOT NULL, | |
| summary TEXT NOT NULL, | |
| summary_third_view TEXT NOT NULL, | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- Personal Load Table | |
| CREATE TABLE IF NOT EXISTS loads ( | |
| id VARCHAR(36) PRIMARY KEY, -- UUID | |
| name VARCHAR(255) NOT NULL, -- load name | |
| description TEXT, -- load description | |
| email VARCHAR(255) NOT NULL DEFAULT '', -- load email | |
| avatar_data TEXT, -- load avatar base64 encoded data | |
| instance_id VARCHAR(255), -- upload instance ID | |
| instance_password VARCHAR(255), -- upload instance password | |
| status TEXT CHECK(status IN ('active', 'inactive', 'deleted')) DEFAULT 'active', | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| CREATE INDEX IF NOT EXISTS idx_loads_status ON loads(status); | |
| CREATE INDEX IF NOT EXISTS idx_loads_created_at ON loads(created_at); | |
| -- Memory Files Table | |
| CREATE TABLE IF NOT EXISTS memories ( | |
| id VARCHAR(36) NOT NULL, | |
| name VARCHAR(255) NOT NULL, | |
| size INTEGER NOT NULL, | |
| type VARCHAR(50) NOT NULL, | |
| path VARCHAR(1024) NOT NULL, | |
| meta_data TEXT, -- JSON data stored as TEXT | |
| document_id VARCHAR(36), | |
| created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| status TEXT CHECK(status IN ('active', 'deleted')) NOT NULL DEFAULT 'active', | |
| PRIMARY KEY (id) | |
| ); | |
| CREATE INDEX IF NOT EXISTS idx_memories_document_id ON memories(document_id); | |
| CREATE INDEX IF NOT EXISTS idx_memories_created_at ON memories(created_at); | |
| CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type); | |
| CREATE INDEX IF NOT EXISTS idx_memories_status ON memories(status); | |
| -- Roles Table | |
| CREATE TABLE IF NOT EXISTS roles ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| uuid VARCHAR(64) NOT NULL UNIQUE, | |
| name VARCHAR(100) NOT NULL UNIQUE, | |
| description VARCHAR(500), | |
| system_prompt TEXT NOT NULL, | |
| icon VARCHAR(100), | |
| is_active BOOLEAN NOT NULL DEFAULT 1, | |
| enable_l0_retrieval BOOLEAN NOT NULL DEFAULT 1, | |
| enable_l1_retrieval BOOLEAN NOT NULL DEFAULT 1, | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| CREATE INDEX IF NOT EXISTS idx_roles_name ON roles(name); | |
| CREATE INDEX IF NOT EXISTS idx_roles_uuid ON roles(uuid); | |
| CREATE INDEX IF NOT EXISTS idx_roles_is_active ON roles(is_active); | |
| -- Insert predefined Roles (only if they don't exist) | |
| INSERT OR IGNORE INTO roles (uuid, name, description, system_prompt, icon) VALUES | |
| ('role_interviewer_8f3a1c2e4b5d6f7a9e0b1d2c3f4e5d6b', | |
| 'Interviewer (a test case)', | |
| 'Professional interviewer who asks insightful questions to learn about people', | |
| 'You are a professional interviewer with expertise in asking insightful questions to understand people deeply, and you are facing the interviewee, and you dont know his/her background. Your responsibilities include:\n1. Asking thoughtful, open-ended questions\n2. Following up on interesting points\n3. sharing what you know to attract the interviewee.', | |
| 'interview-icon'); | |
| -- User LLM Configuration Table | |
| CREATE TABLE IF NOT EXISTS user_llm_configs ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| provider_type VARCHAR(50) NOT NULL DEFAULT 'openai', | |
| key VARCHAR(200), | |
| -- Chat configuration | |
| chat_endpoint VARCHAR(200), | |
| chat_api_key VARCHAR(200), | |
| chat_model_name VARCHAR(200), | |
| -- Embedding configuration | |
| embedding_endpoint VARCHAR(200), | |
| embedding_api_key VARCHAR(200), | |
| embedding_model_name VARCHAR(200), | |
| -- Thinking configuration | |
| thinking_model_name VARCHAR(200), | |
| thinking_endpoint VARCHAR(200), | |
| thinking_api_key VARCHAR(200), | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- User LLM Configuration table indexes | |
| CREATE INDEX IF NOT EXISTS idx_user_llm_configs_created_at ON user_llm_configs(created_at); | |
| -- Spaces Table | |
| CREATE TABLE IF NOT EXISTS spaces ( | |
| id VARCHAR(255) PRIMARY KEY, | |
| title VARCHAR(255) NOT NULL, | |
| objective TEXT NOT NULL, | |
| participants TEXT NOT NULL, -- JSON array stored as TEXT | |
| host VARCHAR(255) NOT NULL, | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| status INTEGER DEFAULT 1, | |
| conclusion TEXT, | |
| space_share_id VARCHAR(255) | |
| ); | |
| -- Space Messages Table | |
| CREATE TABLE IF NOT EXISTS space_messages ( | |
| id VARCHAR(255) PRIMARY KEY, | |
| space_id VARCHAR(255) NOT NULL, | |
| sender_endpoint VARCHAR(255) NOT NULL, | |
| content TEXT NOT NULL, | |
| message_type VARCHAR(50) NOT NULL, | |
| round INTEGER DEFAULT 0, | |
| create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | |
| role VARCHAR(50) DEFAULT 'participant', | |
| FOREIGN KEY (space_id) REFERENCES spaces(id) | |
| ); | |
| -- Space Messages Table Indexes | |
| CREATE INDEX IF NOT EXISTS idx_space_messages_space_id ON space_messages(space_id); | |
| CREATE INDEX IF NOT EXISTS idx_space_messages_round ON space_messages(round); | |
| CREATE INDEX IF NOT EXISTS idx_space_messages_create_time ON space_messages(create_time); | |
| -- Space Table Indexes | |
| CREATE INDEX IF NOT EXISTS idx_spaces_create_time ON spaces(create_time); | |
| CREATE INDEX IF NOT EXISTS idx_spaces_status ON spaces(status); |