File size: 6,984 Bytes
a0e51e6
 
 
376ee15
 
 
 
a0e51e6
 
 
376ee15
 
a0e51e6
376ee15
 
 
 
a0e51e6
 
376ee15
 
 
 
 
 
 
 
 
a0e51e6
376ee15
 
 
 
b89c526
 
 
 
 
 
 
 
 
 
 
a0e51e6
376ee15
 
 
 
ded3107
a0e51e6
376ee15
a0e51e6
 
 
 
 
376ee15
 
a0e51e6
376ee15
 
 
 
 
a0e51e6
376ee15
a0e51e6
 
376ee15
 
a0e51e6
376ee15
 
 
 
a0e51e6
376ee15
a0e51e6
 
376ee15
 
a0e51e6
376ee15
 
 
 
a0e51e6
 
 
 
055f5e6
 
331b00a
 
 
 
 
 
055f5e6
331b00a
 
 
055f5e6
 
a0e51e6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
376ee15
ded3107
 
d775462
ded3107
d775462
 
 
 
 
 
 
b9a7843
 
ded3107
 
a277afd
 
 
 
 
 
ded3107
e26d04d
d775462
 
 
 
 
 
 
 
 
 
 
a277afd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
-- Основные таблицы когнитивного ядра

-- Дневниковые записи (размышления, наблюдения, воспоминания)
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
);

-- Заметки, подсказки, сообщения пользователя и LLM
CREATE TABLE IF NOT EXISTS notes (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    text TEXT NOT NULL,
    tags TEXT,
    user_did TEXT DEFAULT 'ALL'
    source TEXT DEFAULT 'user', -- user | llm | system
    links TEXT DEFAULT '',
    read INTEGER DEFAULT 0,     -- 0 = непрочитано LLM, 1 = прочитано
    hidden INTEGER DEFAULT 0,   -- 0 = отображать пользователю, 1 = скрыть
    priority INTEGER DEFAULT 0,
    timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
    llm_id TEXT
);

-- Лог процессов: задачи, ошибки, события
CREATE TABLE IF NOT EXISTS process_log (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    value TEXT,
    tags TEXT,
    status TEXT DEFAULT 'ok',  -- ok | warning | error | timeout | offline | close
    priority INTEGER DEFAULT 0,
    timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
    llm_id TEXT
);

-- Память LLM (контекст размышлений)
CREATE TABLE IF NOT EXISTS llm_memory (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT,
    content TEXT NOT NULL,
    tags TEXT, -- goal,observation,meta,...
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    llm_id TEXT
);

-- Краткосрочная память LLM (история общения)
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
);

-- Список известных HMP-агентов
CREATE TABLE IF NOT EXISTS agent_peers (
    id TEXT PRIMARY KEY,             -- UUID или псевдоним агента
    name TEXT,                       -- Человеко-читаемое имя
    addresses TEXT,                  -- JSON: ["http://1.2.3.4:9000", "p2p://..."]
    tags TEXT,                       -- DHT, Postman, Friend, Local и т.д.
    status TEXT DEFAULT 'unknown',  -- online | offline | untrusted | blacklisted | quarantined | unknown
    last_seen DATETIME,             
    description TEXT,
    capabilities TEXT,               -- JSON: {"can_sync": true, ...}
    pubkey TEXT,                     -- Публичный ключ или хэш
    software_info TEXT,              -- JSON: версия, ОС и др.
    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, -- SQL-схема таблицы
    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)
);

-- Список LLM-агентов (возможно удалённые)
CREATE TABLE IF NOT EXISTS llm_registry (
    id TEXT PRIMARY KEY, -- UUID или псевдоним
    name TEXT,
    description TEXT,
    registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- Список пользователей
CREATE TABLE users (
  user_id INTEGER PRIMARY KEY AUTOINCREMENT,
  ban DATETIME DEFAULT NULL,           -- если стоит дата/время, то пользователь забанен до этого момента
  username TEXT,                       -- имя пользователя (необязательно уникальное)
  did TEXT UNIQUE,                     -- децентрализованный идентификатор
  mail TEXT UNIQUE,                    -- электронная почта
  password_hash TEXT,                  -- хэш пароля
  info TEXT,                           -- произвольная информация, JSON
  contacts TEXT,                       -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
  language TEXT,                       -- список предпочитаемых языков, через запятую, например: "ru,en"
  operator BOOLEAN DEFAULT 0           -- является ли пользователь оператором (1 - да, 0 - нет)
);

-- Список групп пользователей
CREATE TABLE IF NOT EXISTS users_group (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    group_name TEXT UNIQUE NOT NULL,
    description TEXT,
    users TEXT -- JSON-массив или CSV со списком DID, например: '["did:example:123", "did:example:456"]'
);

-- Таблица для хранения токенов восстановления пароля
CREATE TABLE 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)
);