Gemini
feat: add detailed logging
01d5a5d
-- 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);