|
|
|
CREATE TABLE IF NOT EXISTS diary_entries ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
text TEXT NOT NULL, |
|
tags TEXT, |
|
priority INTEGER DEFAULT 0, |
|
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, |
|
llm_id TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS concepts ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
name TEXT NOT NULL UNIQUE, |
|
description TEXT, |
|
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, |
|
llm_id TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS links ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
from_concept_id INTEGER, |
|
to_concept_id INTEGER, |
|
relation_type TEXT, |
|
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, |
|
llm_id TEXT, |
|
FOREIGN KEY(from_concept_id) REFERENCES concepts(id), |
|
FOREIGN KEY(to_concept_id) REFERENCES concepts(id) |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS diary_graph_index ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
source_entry_id INTEGER NOT NULL, |
|
target_entry_id INTEGER NOT NULL, |
|
relation TEXT NOT NULL, |
|
strength REAL DEFAULT 1.0, |
|
context TEXT, |
|
timestamp TEXT DEFAULT CURRENT_TIMESTAMP |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS system_prompts ( |
|
id TEXT PRIMARY KEY, |
|
name TEXT NOT NULL, |
|
type TEXT CHECK(type IN ('full','short')), |
|
version TEXT, |
|
source TEXT CHECK(source IN ('local','mesh','mixed')), |
|
content TEXT NOT NULL, |
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS ethics_policies ( |
|
id TEXT PRIMARY KEY, |
|
version TEXT, |
|
source TEXT CHECK(source IN ('local','mesh','mixed')), |
|
sync_enabled BOOLEAN, |
|
mesh_endpoint TEXT, |
|
consensus_threshold REAL, |
|
check_interval TEXT, |
|
model_type TEXT, |
|
model_weights_json TEXT, |
|
principles_json TEXT, |
|
evaluation_json TEXT, |
|
violation_policy_json TEXT, |
|
audit_json TEXT, |
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS notes ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
text TEXT NOT NULL, |
|
code TEXT, |
|
tags TEXT, |
|
mentions TEXT DEFAULT '[]', |
|
hashtags TEXT DEFAULT '[]', |
|
user_did TEXT DEFAULT 'ALL', |
|
agent_did TEXT, |
|
source TEXT DEFAULT 'user', |
|
links TEXT DEFAULT '', |
|
read INTEGER DEFAULT 0, |
|
hidden INTEGER DEFAULT 0, |
|
priority INTEGER DEFAULT 0, |
|
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, |
|
llm_id TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS attachments ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
message_id INTEGER NOT NULL, |
|
filename TEXT, |
|
mime_type TEXT, |
|
size INTEGER, |
|
binary BLOB NOT NULL, |
|
FOREIGN KEY (message_id) REFERENCES notes(id) ON DELETE CASCADE |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS process_log ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
name TEXT NOT NULL, |
|
value TEXT, |
|
tags TEXT, |
|
status TEXT DEFAULT 'ok', |
|
priority INTEGER DEFAULT 0, |
|
timestamp TEXT DEFAULT CURRENT_TIMESTAMP, |
|
llm_id TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS main_process ( |
|
name TEXT PRIMARY KEY, |
|
heartbeat TEXT, |
|
stop INTEGER DEFAULT 0 |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS llm_memory ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
title TEXT, |
|
content TEXT NOT NULL, |
|
tags TEXT, |
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
|
llm_id TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS llm_recent_responses ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, |
|
role TEXT CHECK(role IN ('user', 'assistant')) NOT NULL, |
|
content TEXT NOT NULL, |
|
llm_id TEXT, |
|
reflection TEXT, |
|
novelty_score REAL, |
|
new_ideas JSON, |
|
refined_ideas TEXT, |
|
discarded_ideas JSON, |
|
tags JSON, |
|
emotions JSON |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS agent_peers ( |
|
id TEXT PRIMARY KEY, |
|
name TEXT, |
|
addresses TEXT, |
|
tags TEXT, |
|
status TEXT DEFAULT 'unknown', |
|
source TEXT, |
|
last_seen DATETIME, |
|
description TEXT, |
|
capabilities TEXT, |
|
pubkey TEXT, |
|
heard_from TEXT, |
|
software_info TEXT, |
|
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS agent_tables ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
table_name TEXT NOT NULL UNIQUE, |
|
description TEXT, |
|
schema TEXT NOT NULL, |
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
|
llm_id TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS agent_scripts ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
name TEXT NOT NULL, |
|
version TEXT NOT NULL, |
|
code TEXT NOT NULL, |
|
language TEXT DEFAULT 'python', |
|
description TEXT, |
|
tags TEXT, |
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
|
llm_id TEXT, |
|
UNIQUE(name, version) |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS external_services ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
name TEXT NOT NULL, |
|
type TEXT NOT NULL, |
|
base_url TEXT NOT NULL, |
|
description TEXT, |
|
active BOOLEAN DEFAULT true, |
|
inactive_reason TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS external_accounts ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
service_id INTEGER NOT NULL, |
|
login TEXT NOT NULL, |
|
password TEXT NOT NULL, |
|
purpose TEXT, |
|
active BOOLEAN DEFAULT true, |
|
inactive_reason TEXT, |
|
FOREIGN KEY (service_id) REFERENCES external_services(id) ON DELETE CASCADE |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS stagnation_strategies ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
name TEXT NOT NULL, |
|
description TEXT NOT NULL, |
|
source TEXT, |
|
tags TEXT, |
|
reputation REAL DEFAULT 0, |
|
active BOOLEAN DEFAULT true, |
|
inactive_reason TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS thinking_methods ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
name TEXT NOT NULL, |
|
description TEXT NOT NULL, |
|
type TEXT, |
|
source TEXT, |
|
tags TEXT, |
|
reputation REAL DEFAULT 0, |
|
active BOOLEAN DEFAULT true, |
|
inactive_reason TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS ratings ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
agent_id TEXT NOT NULL, |
|
target_type TEXT NOT NULL, |
|
target_id INTEGER NOT NULL, |
|
rating INTEGER NOT NULL, |
|
comment TEXT, |
|
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS llm_registry ( |
|
id TEXT PRIMARY KEY, |
|
name TEXT, |
|
description TEXT, |
|
config_json TEXT, |
|
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS identity ( |
|
id TEXT PRIMARY KEY, |
|
name TEXT, |
|
pubkey TEXT, |
|
privkey TEXT, |
|
metadata TEXT, |
|
created_at TEXT, |
|
updated_at TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS config ( |
|
key TEXT PRIMARY KEY, |
|
value TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS users ( |
|
user_id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
ban DATETIME DEFAULT NULL, |
|
username TEXT, |
|
badges TEXT, |
|
did TEXT UNIQUE NOT NULL, |
|
mail TEXT UNIQUE NOT NULL, |
|
password_hash TEXT NOT NULL, |
|
info TEXT, |
|
profile TEXT, |
|
contacts TEXT, |
|
language TEXT, |
|
groups TEXT DEFAULT '[]', |
|
operator BOOLEAN DEFAULT 0 |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS users_group ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
group_name TEXT UNIQUE NOT NULL, |
|
description TEXT |
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS password_reset_tokens ( |
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
user_id INTEGER NOT NULL, |
|
token TEXT UNIQUE NOT NULL, |
|
created_at DATETIME NOT NULL, |
|
expires_at DATETIME NOT NULL, |
|
used BOOLEAN DEFAULT 0, |
|
FOREIGN KEY(user_id) REFERENCES users(user_id) |
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
DROP TRIGGER IF EXISTS trg_update_reputation_insert; |
|
DROP TRIGGER IF EXISTS trg_update_reputation_update; |
|
DROP TRIGGER IF EXISTS trg_update_reputation_delete; |
|
|
|
|
|
CREATE TRIGGER trg_update_reputation_insert |
|
AFTER INSERT ON ratings |
|
BEGIN |
|
|
|
UPDATE thinking_methods |
|
SET reputation = ( |
|
SELECT COALESCE(AVG(rating),0) |
|
FROM ratings |
|
WHERE target_type = 'thinking_method' |
|
AND target_id = NEW.target_id |
|
) |
|
WHERE id = NEW.target_id |
|
AND NEW.target_type = 'thinking_method'; |
|
|
|
|
|
UPDATE stagnation_strategies |
|
SET reputation = ( |
|
SELECT COALESCE(AVG(rating),0) |
|
FROM ratings |
|
WHERE target_type = 'stagnation_strategy' |
|
AND target_id = NEW.target_id |
|
) |
|
WHERE id = NEW.target_id |
|
AND NEW.target_type = 'stagnation_strategy'; |
|
END; |
|
|
|
|
|
CREATE TRIGGER trg_update_reputation_update |
|
AFTER UPDATE ON ratings |
|
BEGIN |
|
|
|
UPDATE thinking_methods |
|
SET reputation = ( |
|
SELECT COALESCE(AVG(rating),0) |
|
FROM ratings |
|
WHERE target_type = 'thinking_method' |
|
AND target_id = NEW.target_id |
|
) |
|
WHERE id = NEW.target_id |
|
AND NEW.target_type = 'thinking_method'; |
|
|
|
|
|
UPDATE stagnation_strategies |
|
SET reputation = ( |
|
SELECT COALESCE(AVG(rating),0) |
|
FROM ratings |
|
WHERE target_type = 'stagnation_strategy' |
|
AND target_id = NEW.target_id |
|
) |
|
WHERE id = NEW.target_id |
|
AND NEW.target_type = 'stagnation_strategy'; |
|
END; |
|
|
|
|
|
CREATE TRIGGER trg_update_reputation_delete |
|
AFTER DELETE ON ratings |
|
BEGIN |
|
|
|
UPDATE thinking_methods |
|
SET reputation = ( |
|
SELECT COALESCE(AVG(rating),0) |
|
FROM ratings |
|
WHERE target_type = 'thinking_method' |
|
AND target_id = OLD.target_id |
|
) |
|
WHERE id = OLD.target_id |
|
AND OLD.target_type = 'thinking_method'; |
|
|
|
|
|
UPDATE stagnation_strategies |
|
SET reputation = ( |
|
SELECT COALESCE(AVG(rating),0) |
|
FROM ratings |
|
WHERE target_type = 'stagnation_strategy' |
|
AND target_id = OLD.target_id |
|
) |
|
WHERE id = OLD.target_id |
|
AND OLD.target_type = 'stagnation_strategy'; |
|
END; |
|
|
|
|
|
|
|
|
|
|
|
DROP VIEW IF EXISTS rated_entities; |
|
CREATE VIEW rated_entities AS |
|
SELECT |
|
'thinking_method' AS entity_type, |
|
tm.id AS entity_id, |
|
tm.name, |
|
tm.description, |
|
tm.tags, |
|
tm.reputation, |
|
COUNT(r.id) AS ratings_count |
|
FROM thinking_methods tm |
|
LEFT JOIN ratings r |
|
ON r.target_type = 'thinking_method' AND r.target_id = tm.id |
|
GROUP BY tm.id |
|
|
|
UNION ALL |
|
|
|
SELECT |
|
'stagnation_strategy' AS entity_type, |
|
ss.id AS entity_id, |
|
ss.name, |
|
ss.description, |
|
ss.tags, |
|
ss.reputation, |
|
COUNT(r.id) AS ratings_count |
|
FROM stagnation_strategies ss |
|
LEFT JOIN ratings r |
|
ON r.target_type = 'stagnation_strategy' AND r.target_id = ss.id |
|
GROUP BY ss.id; |
|
|