|
|
|
|
|
CREATE TABLE IF NOT EXISTS diary_entries ( |
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
text TEXT NOT NULL, |
|
|
tags TEXT, |
|
|
concept_refs TEXT, |
|
|
rating REAL DEFAULT NULL, |
|
|
priority INTEGER DEFAULT 0, |
|
|
archive 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, |
|
|
tags 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, |
|
|
tags 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 goals ( |
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
name TEXT NOT NULL, |
|
|
description TEXT, |
|
|
tags TEXT, |
|
|
status TEXT DEFAULT 'active', |
|
|
priority TEXT DEFAULT 'normal', |
|
|
constraints TEXT, |
|
|
success_criteria TEXT, |
|
|
created_at TEXT DEFAULT CURRENT_TIMESTAMP, |
|
|
updated_at TEXT, |
|
|
llm_id TEXT |
|
|
); |
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS goal_links ( |
|
|
parent_goal_id INTEGER NOT NULL, |
|
|
child_goal_id INTEGER NOT NULL, |
|
|
relation_type TEXT DEFAULT 'subgoal', |
|
|
PRIMARY KEY (parent_goal_id, child_goal_id), |
|
|
FOREIGN KEY (parent_goal_id) REFERENCES goals(id), |
|
|
FOREIGN KEY (child_goal_id) REFERENCES goals(id) |
|
|
); |
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS tasks ( |
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
goal_id INTEGER, |
|
|
name TEXT NOT NULL, |
|
|
description TEXT, |
|
|
tags TEXT, |
|
|
status TEXT DEFAULT 'open', |
|
|
priority INTEGER DEFAULT 0, |
|
|
pinned INTEGER DEFAULT 0, |
|
|
created_at TEXT DEFAULT CURRENT_TIMESTAMP, |
|
|
updated_at TEXT, |
|
|
repl_mode TEXT DEFAULT 'none', |
|
|
repl_status TEXT DEFAULT 'stopped', |
|
|
repl_config JSON, |
|
|
llm_id TEXT, |
|
|
FOREIGN KEY(goal_id) REFERENCES goals(id) |
|
|
); |
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS agent_reputation ( |
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
agent_id INTEGER NOT NULL, |
|
|
identity TEXT, |
|
|
reputation_score REAL DEFAULT 0.0, |
|
|
trust_level TEXT, |
|
|
notes TEXT, |
|
|
last_interaction TEXT, |
|
|
FOREIGN KEY(agent_id) REFERENCES agent_peers(id) |
|
|
); |
|
|
|
|
|
|
|
|
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 ethics_cases ( |
|
|
case_id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
thought_id INTEGER, |
|
|
verdict TEXT, |
|
|
reason TEXT, |
|
|
suggested_alternative TEXT, |
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
|
|
synced BOOLEAN DEFAULT 0, |
|
|
FOREIGN KEY(thought_id) REFERENCES diary_entries(id) |
|
|
ON DELETE SET NULL |
|
|
ON UPDATE CASCADE |
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS notes ( |
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
topic TEXT, |
|
|
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', |
|
|
task_id INTEGER, |
|
|
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, |
|
|
task_id INTEGER REFERENCES tasks(id), |
|
|
confidence REAL DEFAULT NULL, |
|
|
unverified_facts_json TEXT DEFAULT '[]', |
|
|
reflection TEXT, |
|
|
novelty_score REAL, |
|
|
new_ideas JSON, |
|
|
refined_ideas TEXT, |
|
|
discarded_ideas JSON, |
|
|
tags JSON, |
|
|
emotions JSON, |
|
|
auto_pass BOOLEAN DEFAULT 0, |
|
|
self_validation BOOLEAN DEFAULT 0 |
|
|
rating REAL, |
|
|
distribution JSON, |
|
|
validators JSON |
|
|
); |
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS abstracts ( |
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
title TEXT, |
|
|
summary TEXT, |
|
|
tags JSON, |
|
|
sources JSON, |
|
|
updated_at TEXT DEFAULT CURRENT_TIMESTAMP, |
|
|
llm_id TEXT |
|
|
); |
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS unverified_facts ( |
|
|
id TEXT PRIMARY KEY, |
|
|
context_msg_id INTEGER, |
|
|
claim TEXT NOT NULL, |
|
|
context_snippet TEXT, |
|
|
confidence REAL, |
|
|
sources_json TEXT, |
|
|
why_unverified TEXT, |
|
|
status TEXT DEFAULT 'open', |
|
|
assigned_task_id INTEGER, |
|
|
checker_agent TEXT, |
|
|
resolution_json TEXT DEFAULT `pending`, |
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
|
|
last_checked_at DATETIME |
|
|
); |
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_unverified_facts_status ON unverified_facts(status); |
|
|
CREATE INDEX IF NOT EXISTS idx_unverified_facts_context ON unverified_facts(context_msg_id); |
|
|
|
|
|
|
|
|
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, |
|
|
is_validator BOOLEAN DEFAULT 0, |
|
|
trust_score REAL DEFAULT 1.0, |
|
|
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; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DROP VIEW IF EXISTS tag_usage; |
|
|
CREATE VIEW tag_usage AS |
|
|
|
|
|
WITH diary_split AS ( |
|
|
SELECT |
|
|
id AS source_id, |
|
|
'diary_entries' AS source_table, |
|
|
TRIM(value) AS tag, |
|
|
timestamp AS entry_time |
|
|
FROM diary_entries, |
|
|
json_each('[' || REPLACE(IFNULL(tags,''), ',', '","') || ']') |
|
|
), |
|
|
|
|
|
|
|
|
concepts_split AS ( |
|
|
SELECT |
|
|
id AS source_id, |
|
|
'concepts' AS source_table, |
|
|
TRIM(value) AS tag, |
|
|
timestamp AS entry_time |
|
|
FROM concepts, |
|
|
json_each('[' || REPLACE(IFNULL(tags,''), ',', '","') || ']') |
|
|
), |
|
|
|
|
|
|
|
|
links_split AS ( |
|
|
SELECT |
|
|
id AS source_id, |
|
|
'links' AS source_table, |
|
|
TRIM(value) AS tag, |
|
|
timestamp AS entry_time |
|
|
FROM links, |
|
|
json_each('[' || REPLACE(IFNULL(tags,''), ',', '","') || ']') |
|
|
), |
|
|
|
|
|
|
|
|
goals_split AS ( |
|
|
SELECT |
|
|
id AS source_id, |
|
|
'goals' AS source_table, |
|
|
TRIM(value) AS tag, |
|
|
timestamp AS entry_time |
|
|
FROM goals, |
|
|
json_each('[' || REPLACE(IFNULL(tags,''), ',', '","') || ']') |
|
|
), |
|
|
|
|
|
|
|
|
tasks_split AS ( |
|
|
SELECT |
|
|
id AS source_id, |
|
|
'tasks' AS source_table, |
|
|
TRIM(value) AS tag, |
|
|
timestamp AS entry_time |
|
|
FROM tasks, |
|
|
json_each('[' || REPLACE(IFNULL(tags,''), ',', '","') || ']') |
|
|
), |
|
|
|
|
|
|
|
|
all_tags AS ( |
|
|
SELECT * FROM diary_split |
|
|
UNION ALL |
|
|
SELECT * FROM concepts_split |
|
|
UNION ALL |
|
|
SELECT * FROM links_split |
|
|
UNION ALL |
|
|
SELECT * FROM goals_split |
|
|
UNION ALL |
|
|
SELECT * FROM tasks_split |
|
|
) |
|
|
|
|
|
|
|
|
SELECT |
|
|
tag, |
|
|
COUNT(source_id) AS usage_count, |
|
|
MIN(entry_time) AS first_used, |
|
|
MAX(entry_time) AS last_used, |
|
|
GROUP_CONCAT(DISTINCT source_table) AS sources |
|
|
FROM all_tags |
|
|
WHERE tag IS NOT NULL AND tag <> '' |
|
|
GROUP BY tag |
|
|
ORDER BY usage_count DESC; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE VIEW IF NOT EXISTS validation_stats AS |
|
|
SELECT |
|
|
r.id AS msg_id, |
|
|
COUNT(v->>'LLM') AS validator_count, |
|
|
AVG(CAST(v->>'rating' AS REAL)) AS avg_rating_unweighted, |
|
|
SUM(CAST(v->>'rating' AS REAL) * COALESCE(l.trust_score, 1.0)) |
|
|
/ NULLIF(SUM(COALESCE(l.trust_score, 1.0)), 0) AS avg_rating_weighted, |
|
|
MAX(r.updated_at) - MIN(r.updated_at) AS response_time, |
|
|
SUM(CASE WHEN v->>'rating' = '0' THEN 1 ELSE 0 END) * 1.0 / COUNT(v) AS uncertainty_ratio |
|
|
FROM llm_recent_responses r, |
|
|
json_each(r.validators) v |
|
|
LEFT JOIN llm_registry l ON l.name = v->>'LLM' |
|
|
GROUP BY r.id; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS anti_stagnation_metrics ( |
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
tick_id TEXT NOT NULL, |
|
|
novelty_score REAL DEFAULT 0, |
|
|
new_ideas INTEGER DEFAULT 0, |
|
|
refined_ideas INTEGER DEFAULT 0, |
|
|
discarded_ideas INTEGER DEFAULT 0, |
|
|
emotions_json TEXT, |
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP |
|
|
); |
|
|
|
|
|
|
|
|
CREATE VIEW IF NOT EXISTS v_anti_stagnation_trends AS |
|
|
SELECT |
|
|
date(created_at) AS day, |
|
|
AVG(novelty_score) AS avg_novelty, |
|
|
SUM(new_ideas) AS total_new_ideas, |
|
|
SUM(refined_ideas) AS total_refined, |
|
|
SUM(discarded_ideas) AS total_discarded |
|
|
FROM anti_stagnation_metrics |
|
|
GROUP BY date(created_at) |
|
|
ORDER BY day; |
|
|
|