natroc 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/AGENTS.md +494 -0
  2. package/LICENSE +7 -0
  3. package/README.md +0 -0
  4. package/install.ps1 +109 -0
  5. package/install.sh +132 -0
  6. package/package.json +77 -0
  7. package/server/dist/agent/agent-loop.d.ts +71 -0
  8. package/server/dist/agent/agent-loop.js +171 -0
  9. package/server/dist/agent/agent-loop.js.map +1 -0
  10. package/server/dist/agent/home-context.d.ts +29 -0
  11. package/server/dist/agent/home-context.js +134 -0
  12. package/server/dist/agent/home-context.js.map +1 -0
  13. package/server/dist/agent/improvement-engine.d.ts +23 -0
  14. package/server/dist/agent/improvement-engine.js +107 -0
  15. package/server/dist/agent/improvement-engine.js.map +1 -0
  16. package/server/dist/agent/tools/index.d.ts +14 -0
  17. package/server/dist/agent/tools/index.js +85 -0
  18. package/server/dist/agent/tools/index.js.map +1 -0
  19. package/server/dist/agent/tools/list-directory.d.ts +2 -0
  20. package/server/dist/agent/tools/list-directory.js +27 -0
  21. package/server/dist/agent/tools/list-directory.js.map +1 -0
  22. package/server/dist/agent/tools/read-file.d.ts +2 -0
  23. package/server/dist/agent/tools/read-file.js +30 -0
  24. package/server/dist/agent/tools/read-file.js.map +1 -0
  25. package/server/dist/agent/tools/run-command.d.ts +2 -0
  26. package/server/dist/agent/tools/run-command.js +72 -0
  27. package/server/dist/agent/tools/run-command.js.map +1 -0
  28. package/server/dist/agent/tools/system-info.d.ts +2 -0
  29. package/server/dist/agent/tools/system-info.js +28 -0
  30. package/server/dist/agent/tools/system-info.js.map +1 -0
  31. package/server/dist/agent/tools/types.d.ts +18 -0
  32. package/server/dist/agent/tools/types.js +2 -0
  33. package/server/dist/agent/tools/types.js.map +1 -0
  34. package/server/dist/agent/tools/util.d.ts +7 -0
  35. package/server/dist/agent/tools/util.js +24 -0
  36. package/server/dist/agent/tools/util.js.map +1 -0
  37. package/server/dist/agent/tools/write-file.d.ts +2 -0
  38. package/server/dist/agent/tools/write-file.js +25 -0
  39. package/server/dist/agent/tools/write-file.js.map +1 -0
  40. package/server/dist/app.d.ts +8 -0
  41. package/server/dist/app.js +39 -0
  42. package/server/dist/app.js.map +1 -0
  43. package/server/dist/auth/password.d.ts +7 -0
  44. package/server/dist/auth/password.js +20 -0
  45. package/server/dist/auth/password.js.map +1 -0
  46. package/server/dist/channels/channel-runtime.d.ts +32 -0
  47. package/server/dist/channels/channel-runtime.js +484 -0
  48. package/server/dist/channels/channel-runtime.js.map +1 -0
  49. package/server/dist/cli/agent-deliver.d.ts +14 -0
  50. package/server/dist/cli/agent-deliver.js +183 -0
  51. package/server/dist/cli/agent-deliver.js.map +1 -0
  52. package/server/dist/cli/args.d.ts +11 -0
  53. package/server/dist/cli/args.js +57 -0
  54. package/server/dist/cli/args.js.map +1 -0
  55. package/server/dist/cli/cli-token.d.ts +1 -0
  56. package/server/dist/cli/cli-token.js +22 -0
  57. package/server/dist/cli/cli-token.js.map +1 -0
  58. package/server/dist/cli/daemon.d.ts +2 -0
  59. package/server/dist/cli/daemon.js +252 -0
  60. package/server/dist/cli/daemon.js.map +1 -0
  61. package/server/dist/cli.d.ts +2 -0
  62. package/server/dist/cli.js +416 -0
  63. package/server/dist/cli.js.map +1 -0
  64. package/server/dist/config/natroc-home.d.ts +13 -0
  65. package/server/dist/config/natroc-home.js +730 -0
  66. package/server/dist/config/natroc-home.js.map +1 -0
  67. package/server/dist/gateway/agent-service.d.ts +16 -0
  68. package/server/dist/gateway/agent-service.js +261 -0
  69. package/server/dist/gateway/agent-service.js.map +1 -0
  70. package/server/dist/gateway/connection.d.ts +38 -0
  71. package/server/dist/gateway/connection.js +254 -0
  72. package/server/dist/gateway/connection.js.map +1 -0
  73. package/server/dist/gateway/gateway.d.ts +79 -0
  74. package/server/dist/gateway/gateway.js +150 -0
  75. package/server/dist/gateway/gateway.js.map +1 -0
  76. package/server/dist/gateway/index.d.ts +8 -0
  77. package/server/dist/gateway/index.js +26 -0
  78. package/server/dist/gateway/index.js.map +1 -0
  79. package/server/dist/gateway/protocol.d.ts +102 -0
  80. package/server/dist/gateway/protocol.js +63 -0
  81. package/server/dist/gateway/protocol.js.map +1 -0
  82. package/server/dist/gateway/rpc/agent.d.ts +3 -0
  83. package/server/dist/gateway/rpc/agent.js +174 -0
  84. package/server/dist/gateway/rpc/agent.js.map +1 -0
  85. package/server/dist/gateway/rpc/agents.d.ts +2 -0
  86. package/server/dist/gateway/rpc/agents.js +68 -0
  87. package/server/dist/gateway/rpc/agents.js.map +1 -0
  88. package/server/dist/gateway/rpc/auth.d.ts +3 -0
  89. package/server/dist/gateway/rpc/auth.js +180 -0
  90. package/server/dist/gateway/rpc/auth.js.map +1 -0
  91. package/server/dist/gateway/rpc/channels.d.ts +2 -0
  92. package/server/dist/gateway/rpc/channels.js +230 -0
  93. package/server/dist/gateway/rpc/channels.js.map +1 -0
  94. package/server/dist/gateway/rpc/conversations.d.ts +3 -0
  95. package/server/dist/gateway/rpc/conversations.js +36 -0
  96. package/server/dist/gateway/rpc/conversations.js.map +1 -0
  97. package/server/dist/gateway/rpc/projects.d.ts +3 -0
  98. package/server/dist/gateway/rpc/projects.js +49 -0
  99. package/server/dist/gateway/rpc/projects.js.map +1 -0
  100. package/server/dist/gateway/rpc/providers.d.ts +3 -0
  101. package/server/dist/gateway/rpc/providers.js +106 -0
  102. package/server/dist/gateway/rpc/providers.js.map +1 -0
  103. package/server/dist/gateway/rpc/usage.d.ts +2 -0
  104. package/server/dist/gateway/rpc/usage.js +41 -0
  105. package/server/dist/gateway/rpc/usage.js.map +1 -0
  106. package/server/dist/gateway/types.d.ts +43 -0
  107. package/server/dist/gateway/types.js +20 -0
  108. package/server/dist/gateway/types.js.map +1 -0
  109. package/server/dist/gateway/ws-server.d.ts +10 -0
  110. package/server/dist/gateway/ws-server.js +37 -0
  111. package/server/dist/gateway/ws-server.js.map +1 -0
  112. package/server/dist/index.d.ts +1 -0
  113. package/server/dist/index.js +9 -0
  114. package/server/dist/index.js.map +1 -0
  115. package/server/dist/local-runtime.d.ts +9 -0
  116. package/server/dist/local-runtime.js +16 -0
  117. package/server/dist/local-runtime.js.map +1 -0
  118. package/server/dist/providers/configured-adapters.d.ts +9 -0
  119. package/server/dist/providers/configured-adapters.js +34 -0
  120. package/server/dist/providers/configured-adapters.js.map +1 -0
  121. package/server/dist/providers/ollama.d.ts +23 -0
  122. package/server/dist/providers/ollama.js +164 -0
  123. package/server/dist/providers/ollama.js.map +1 -0
  124. package/server/dist/providers/openrouter.d.ts +24 -0
  125. package/server/dist/providers/openrouter.js +201 -0
  126. package/server/dist/providers/openrouter.js.map +1 -0
  127. package/server/dist/providers/thinking.d.ts +18 -0
  128. package/server/dist/providers/thinking.js +58 -0
  129. package/server/dist/providers/thinking.js.map +1 -0
  130. package/server/dist/providers/types.d.ts +55 -0
  131. package/server/dist/providers/types.js +2 -0
  132. package/server/dist/providers/types.js.map +1 -0
  133. package/server/dist/routes/schemas.d.ts +51 -0
  134. package/server/dist/routes/schemas.js +53 -0
  135. package/server/dist/routes/schemas.js.map +1 -0
  136. package/server/dist/runtime.d.ts +47 -0
  137. package/server/dist/runtime.js +29 -0
  138. package/server/dist/runtime.js.map +1 -0
  139. package/server/dist/server.d.ts +11 -0
  140. package/server/dist/server.js +19 -0
  141. package/server/dist/server.js.map +1 -0
  142. package/server/dist/storage/agent-repository.d.ts +59 -0
  143. package/server/dist/storage/agent-repository.js +192 -0
  144. package/server/dist/storage/agent-repository.js.map +1 -0
  145. package/server/dist/storage/auth-repository.d.ts +49 -0
  146. package/server/dist/storage/auth-repository.js +139 -0
  147. package/server/dist/storage/auth-repository.js.map +1 -0
  148. package/server/dist/storage/channel-repository.d.ts +152 -0
  149. package/server/dist/storage/channel-repository.js +413 -0
  150. package/server/dist/storage/channel-repository.js.map +1 -0
  151. package/server/dist/storage/conversation-repository.d.ts +63 -0
  152. package/server/dist/storage/conversation-repository.js +196 -0
  153. package/server/dist/storage/conversation-repository.js.map +1 -0
  154. package/server/dist/storage/database.d.ts +11 -0
  155. package/server/dist/storage/database.js +360 -0
  156. package/server/dist/storage/database.js.map +1 -0
  157. package/server/dist/storage/memory-repository.d.ts +70 -0
  158. package/server/dist/storage/memory-repository.js +279 -0
  159. package/server/dist/storage/memory-repository.js.map +1 -0
  160. package/server/dist/storage/project-repository.d.ts +25 -0
  161. package/server/dist/storage/project-repository.js +67 -0
  162. package/server/dist/storage/project-repository.js.map +1 -0
  163. package/server/dist/storage/provider-repository.d.ts +44 -0
  164. package/server/dist/storage/provider-repository.js +159 -0
  165. package/server/dist/storage/provider-repository.js.map +1 -0
  166. package/server/dist/storage/tool-call-repository.d.ts +35 -0
  167. package/server/dist/storage/tool-call-repository.js +83 -0
  168. package/server/dist/storage/tool-call-repository.js.map +1 -0
  169. package/server/dist/storage/usage-repository.d.ts +76 -0
  170. package/server/dist/storage/usage-repository.js +249 -0
  171. package/server/dist/storage/usage-repository.js.map +1 -0
  172. package/server/dist/storage/vault.d.ts +3 -0
  173. package/server/dist/storage/vault.js +57 -0
  174. package/server/dist/storage/vault.js.map +1 -0
  175. package/ui/README.md +0 -0
  176. package/ui/dist/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  177. package/ui/dist/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  178. package/ui/dist/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  179. package/ui/dist/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  180. package/ui/dist/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  181. package/ui/dist/assets/index-DKaFmZNO.js +114 -0
  182. package/ui/dist/assets/index-DOfPcjx3.css +2 -0
  183. package/ui/dist/index.html +14 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-repository.js","sourceRoot":"","sources":["../../src/storage/conversation-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { DatabaseSync } from "node:sqlite";
2
+ export type DatabaseConnection = DatabaseSync;
3
+ export declare function openDatabase(path: string): DatabaseConnection;
4
+ export declare function migrateDatabase(db: DatabaseConnection): void;
5
+ /**
6
+ * Menjalankan `fn` dalam satu transaksi (BEGIN/COMMIT; ROLLBACK saat error).
7
+ * Pengganti `db.transaction()` milik better-sqlite3 yang tidak tersedia di
8
+ * node:sqlite.
9
+ */
10
+ export declare function runInTransaction<T>(db: DatabaseConnection, fn: () => T): T;
11
+ export declare function assignLegacyDataToSingleUser(db: DatabaseConnection): void;
@@ -0,0 +1,360 @@
1
+ import { DatabaseSync } from "node:sqlite";
2
+ import { dirname } from "node:path";
3
+ import { mkdirSync } from "node:fs";
4
+ const SCHEMA_SQL = `
5
+ CREATE TABLE IF NOT EXISTS provider_connections (
6
+ id TEXT PRIMARY KEY,
7
+ user_id TEXT,
8
+ provider TEXT NOT NULL,
9
+ display_name TEXT NOT NULL,
10
+ base_url TEXT,
11
+ default_model TEXT,
12
+ secret_ref TEXT,
13
+ is_active INTEGER NOT NULL DEFAULT 0,
14
+ created_at TEXT NOT NULL,
15
+ updated_at TEXT NOT NULL,
16
+ UNIQUE(user_id, provider)
17
+ );
18
+
19
+ CREATE TABLE IF NOT EXISTS provider_secrets (
20
+ secret_ref TEXT PRIMARY KEY,
21
+ user_id TEXT,
22
+ provider TEXT NOT NULL,
23
+ encrypted_value TEXT NOT NULL,
24
+ created_at TEXT NOT NULL,
25
+ updated_at TEXT NOT NULL
26
+ );
27
+
28
+ CREATE TABLE IF NOT EXISTS conversations (
29
+ id TEXT PRIMARY KEY,
30
+ user_id TEXT,
31
+ agent_id TEXT,
32
+ channel TEXT,
33
+ title TEXT NOT NULL,
34
+ active_provider TEXT,
35
+ created_at TEXT NOT NULL,
36
+ updated_at TEXT NOT NULL
37
+ );
38
+
39
+ CREATE TABLE IF NOT EXISTS messages (
40
+ id TEXT PRIMARY KEY,
41
+ user_id TEXT,
42
+ conversation_id TEXT NOT NULL,
43
+ role TEXT NOT NULL,
44
+ content TEXT NOT NULL,
45
+ provider TEXT,
46
+ model TEXT,
47
+ created_at TEXT NOT NULL,
48
+ FOREIGN KEY (conversation_id) REFERENCES conversations(id) ON DELETE CASCADE
49
+ );
50
+
51
+ CREATE TABLE IF NOT EXISTS agent_memory_entries (
52
+ id TEXT PRIMARY KEY,
53
+ user_id TEXT,
54
+ kind TEXT NOT NULL CHECK (kind IN ('memory', 'knowledge', 'skill')),
55
+ title TEXT NOT NULL,
56
+ content TEXT NOT NULL,
57
+ source_conversation_id TEXT,
58
+ status TEXT NOT NULL CHECK (status IN ('active', 'archived')),
59
+ created_at TEXT NOT NULL,
60
+ updated_at TEXT NOT NULL
61
+ );
62
+
63
+ CREATE TABLE IF NOT EXISTS improvement_proposals (
64
+ id TEXT PRIMARY KEY,
65
+ user_id TEXT,
66
+ kind TEXT NOT NULL CHECK (kind IN ('memory', 'knowledge', 'skill')),
67
+ title TEXT NOT NULL,
68
+ content TEXT NOT NULL,
69
+ reason TEXT NOT NULL,
70
+ source_conversation_id TEXT,
71
+ status TEXT NOT NULL CHECK (status IN ('pending', 'approved', 'rejected')),
72
+ created_at TEXT NOT NULL,
73
+ updated_at TEXT NOT NULL,
74
+ decided_at TEXT
75
+ );
76
+
77
+ CREATE TABLE IF NOT EXISTS agent_tool_calls (
78
+ id TEXT PRIMARY KEY,
79
+ user_id TEXT,
80
+ conversation_id TEXT NOT NULL,
81
+ tool_name TEXT NOT NULL,
82
+ args_json TEXT NOT NULL,
83
+ result_output TEXT NOT NULL,
84
+ status TEXT NOT NULL CHECK (status IN ('ok', 'error')),
85
+ risk TEXT NOT NULL CHECK (risk IN ('low', 'high')),
86
+ created_at TEXT NOT NULL,
87
+ FOREIGN KEY (conversation_id) REFERENCES conversations(id) ON DELETE CASCADE
88
+ );
89
+
90
+ CREATE TABLE IF NOT EXISTS agents (
91
+ id TEXT PRIMARY KEY,
92
+ user_id TEXT NOT NULL,
93
+ name TEXT NOT NULL,
94
+ description TEXT NOT NULL DEFAULT '',
95
+ default_provider TEXT,
96
+ default_model TEXT,
97
+ workspace TEXT,
98
+ system_prompt TEXT NOT NULL DEFAULT '',
99
+ config_json TEXT NOT NULL DEFAULT '{}',
100
+ is_enabled INTEGER NOT NULL DEFAULT 1,
101
+ is_default INTEGER NOT NULL DEFAULT 0,
102
+ created_at TEXT NOT NULL,
103
+ updated_at TEXT NOT NULL
104
+ );
105
+
106
+ CREATE TABLE IF NOT EXISTS usage_events (
107
+ id TEXT PRIMARY KEY,
108
+ user_id TEXT NOT NULL,
109
+ provider TEXT NOT NULL,
110
+ model TEXT NOT NULL,
111
+ agent_id TEXT,
112
+ channel TEXT NOT NULL DEFAULT 'app',
113
+ conversation_id TEXT,
114
+ message_id TEXT,
115
+ input_tokens INTEGER,
116
+ output_tokens INTEGER,
117
+ reasoning_tokens INTEGER,
118
+ total_tokens INTEGER,
119
+ cost_usd REAL,
120
+ duration_ms INTEGER,
121
+ status TEXT NOT NULL CHECK (status IN ('success', 'error')),
122
+ usage_status TEXT NOT NULL CHECK (usage_status IN ('actual', 'unknown')),
123
+ raw_usage_json TEXT,
124
+ created_at TEXT NOT NULL
125
+ );
126
+
127
+ CREATE TABLE IF NOT EXISTS channel_accounts (
128
+ id TEXT PRIMARY KEY,
129
+ user_id TEXT NOT NULL,
130
+ channel TEXT NOT NULL CHECK (channel IN ('telegram', 'whatsapp')),
131
+ display_name TEXT NOT NULL,
132
+ account_ref TEXT,
133
+ secret_ref TEXT,
134
+ status TEXT NOT NULL CHECK (status IN ('disconnected', 'connecting', 'connected', 'error')),
135
+ is_enabled INTEGER NOT NULL DEFAULT 1,
136
+ allowlist_json TEXT NOT NULL DEFAULT '[]',
137
+ metadata_json TEXT NOT NULL DEFAULT '{}',
138
+ last_error TEXT,
139
+ connected_at TEXT,
140
+ created_at TEXT NOT NULL,
141
+ updated_at TEXT NOT NULL
142
+ );
143
+
144
+ CREATE TABLE IF NOT EXISTS channel_secrets (
145
+ secret_ref TEXT PRIMARY KEY,
146
+ user_id TEXT NOT NULL,
147
+ channel TEXT NOT NULL CHECK (channel IN ('telegram', 'whatsapp')),
148
+ encrypted_value TEXT NOT NULL,
149
+ created_at TEXT NOT NULL,
150
+ updated_at TEXT NOT NULL
151
+ );
152
+
153
+ CREATE TABLE IF NOT EXISTS channel_bindings (
154
+ id TEXT PRIMARY KEY,
155
+ user_id TEXT NOT NULL,
156
+ account_id TEXT NOT NULL,
157
+ agent_id TEXT NOT NULL,
158
+ peer TEXT NOT NULL,
159
+ is_enabled INTEGER NOT NULL DEFAULT 1,
160
+ created_at TEXT NOT NULL,
161
+ updated_at TEXT NOT NULL,
162
+ UNIQUE(user_id, account_id, peer),
163
+ FOREIGN KEY (account_id) REFERENCES channel_accounts(id) ON DELETE CASCADE,
164
+ FOREIGN KEY (agent_id) REFERENCES agents(id) ON DELETE CASCADE
165
+ );
166
+
167
+ CREATE TABLE IF NOT EXISTS channel_logs (
168
+ id TEXT PRIMARY KEY,
169
+ user_id TEXT NOT NULL,
170
+ account_id TEXT NOT NULL,
171
+ binding_id TEXT,
172
+ channel TEXT NOT NULL CHECK (channel IN ('telegram', 'whatsapp')),
173
+ peer TEXT NOT NULL,
174
+ direction TEXT NOT NULL CHECK (direction IN ('inbound', 'outbound')),
175
+ message_text TEXT NOT NULL,
176
+ status TEXT NOT NULL CHECK (status IN ('ok', 'error')),
177
+ error TEXT,
178
+ created_at TEXT NOT NULL,
179
+ FOREIGN KEY (account_id) REFERENCES channel_accounts(id) ON DELETE CASCADE,
180
+ FOREIGN KEY (binding_id) REFERENCES channel_bindings(id) ON DELETE SET NULL
181
+ );
182
+
183
+ CREATE TABLE IF NOT EXISTS projects (
184
+ id TEXT PRIMARY KEY,
185
+ name TEXT NOT NULL,
186
+ description TEXT NOT NULL DEFAULT '',
187
+ created_at TEXT NOT NULL,
188
+ updated_at TEXT NOT NULL
189
+ );
190
+
191
+ CREATE TABLE IF NOT EXISTS users (
192
+ id TEXT PRIMARY KEY,
193
+ username TEXT NOT NULL UNIQUE,
194
+ full_name TEXT NOT NULL,
195
+ password_hash TEXT NOT NULL,
196
+ password_salt TEXT NOT NULL,
197
+ avatar_file_name TEXT,
198
+ created_at TEXT NOT NULL,
199
+ updated_at TEXT NOT NULL
200
+ );
201
+
202
+ CREATE TABLE IF NOT EXISTS sessions (
203
+ token TEXT PRIMARY KEY,
204
+ user_id TEXT NOT NULL,
205
+ created_at TEXT NOT NULL,
206
+ expires_at TEXT NOT NULL,
207
+ FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
208
+ );
209
+
210
+ CREATE VIRTUAL TABLE IF NOT EXISTS agent_memory_entries_fts USING fts5(
211
+ title,
212
+ content,
213
+ kind,
214
+ content='agent_memory_entries',
215
+ content_rowid='rowid'
216
+ );
217
+
218
+ CREATE TRIGGER IF NOT EXISTS agent_memory_entries_ai AFTER INSERT ON agent_memory_entries BEGIN
219
+ INSERT INTO agent_memory_entries_fts(rowid, title, content, kind)
220
+ VALUES (new.rowid, new.title, new.content, new.kind);
221
+ END;
222
+
223
+ CREATE TRIGGER IF NOT EXISTS agent_memory_entries_ad AFTER DELETE ON agent_memory_entries BEGIN
224
+ INSERT INTO agent_memory_entries_fts(agent_memory_entries_fts, rowid, title, content, kind)
225
+ VALUES ('delete', old.rowid, old.title, old.content, old.kind);
226
+ END;
227
+
228
+ CREATE TRIGGER IF NOT EXISTS agent_memory_entries_au AFTER UPDATE ON agent_memory_entries BEGIN
229
+ INSERT INTO agent_memory_entries_fts(agent_memory_entries_fts, rowid, title, content, kind)
230
+ VALUES ('delete', old.rowid, old.title, old.content, old.kind);
231
+ INSERT INTO agent_memory_entries_fts(rowid, title, content, kind)
232
+ VALUES (new.rowid, new.title, new.content, new.kind);
233
+ END;
234
+ `;
235
+ export function openDatabase(path) {
236
+ mkdirSync(dirname(path), { recursive: true });
237
+ const db = new DatabaseSync(path);
238
+ migrateDatabase(db);
239
+ return db;
240
+ }
241
+ export function migrateDatabase(db) {
242
+ db.exec("PRAGMA journal_mode = WAL;");
243
+ db.exec("PRAGMA foreign_keys = ON;");
244
+ db.exec(SCHEMA_SQL);
245
+ ensureProviderConnectionsSchema(db);
246
+ ensureColumn(db, "users", "avatar_file_name", "TEXT");
247
+ ensureColumn(db, "provider_secrets", "user_id", "TEXT");
248
+ ensureColumn(db, "conversations", "user_id", "TEXT");
249
+ ensureColumn(db, "conversations", "agent_id", "TEXT");
250
+ ensureColumn(db, "conversations", "channel", "TEXT");
251
+ ensureColumn(db, "messages", "user_id", "TEXT");
252
+ ensureColumn(db, "agent_memory_entries", "user_id", "TEXT");
253
+ ensureColumn(db, "improvement_proposals", "user_id", "TEXT");
254
+ ensureColumn(db, "agent_tool_calls", "user_id", "TEXT");
255
+ assignLegacyDataToSingleUser(db);
256
+ }
257
+ /**
258
+ * Menjalankan `fn` dalam satu transaksi (BEGIN/COMMIT; ROLLBACK saat error).
259
+ * Pengganti `db.transaction()` milik better-sqlite3 yang tidak tersedia di
260
+ * node:sqlite.
261
+ */
262
+ export function runInTransaction(db, fn) {
263
+ db.exec("BEGIN");
264
+ try {
265
+ const result = fn();
266
+ db.exec("COMMIT");
267
+ return result;
268
+ }
269
+ catch (error) {
270
+ db.exec("ROLLBACK");
271
+ throw error;
272
+ }
273
+ }
274
+ function ensureColumn(db, tableName, columnName, definition) {
275
+ const tableInfoStatement = `PRAGMA table_info(${tableName})`;
276
+ const columns = db
277
+ .prepare(tableInfoStatement)
278
+ .all();
279
+ if (columns.some((column) => column.name === columnName))
280
+ return;
281
+ const alterStatement = `ALTER TABLE ${tableName} ADD COLUMN ${columnName} ${definition}`;
282
+ db.exec(alterStatement);
283
+ }
284
+ export function assignLegacyDataToSingleUser(db) {
285
+ const users = db
286
+ .prepare("SELECT id FROM users ORDER BY created_at ASC, rowid ASC LIMIT 2")
287
+ .all();
288
+ if (users.length !== 1)
289
+ return;
290
+ const userId = users[0].id;
291
+ const tables = [
292
+ "provider_connections",
293
+ "provider_secrets",
294
+ "conversations",
295
+ "messages",
296
+ "agent_memory_entries",
297
+ "improvement_proposals",
298
+ "agent_tool_calls",
299
+ ];
300
+ for (const table of tables) {
301
+ if (!hasColumn(db, table, "user_id"))
302
+ continue;
303
+ db.prepare(`UPDATE ${table} SET user_id = ? WHERE user_id IS NULL`).run(userId);
304
+ }
305
+ }
306
+ function ensureProviderConnectionsSchema(db) {
307
+ if (hasColumn(db, "provider_connections", "user_id"))
308
+ return;
309
+ db.exec(`
310
+ ALTER TABLE provider_connections RENAME TO provider_connections_legacy;
311
+
312
+ CREATE TABLE provider_connections (
313
+ id TEXT PRIMARY KEY,
314
+ user_id TEXT,
315
+ provider TEXT NOT NULL,
316
+ display_name TEXT NOT NULL,
317
+ base_url TEXT,
318
+ default_model TEXT,
319
+ secret_ref TEXT,
320
+ is_active INTEGER NOT NULL DEFAULT 0,
321
+ created_at TEXT NOT NULL,
322
+ updated_at TEXT NOT NULL,
323
+ UNIQUE(user_id, provider)
324
+ );
325
+
326
+ INSERT INTO provider_connections (
327
+ id,
328
+ user_id,
329
+ provider,
330
+ display_name,
331
+ base_url,
332
+ default_model,
333
+ secret_ref,
334
+ is_active,
335
+ created_at,
336
+ updated_at
337
+ )
338
+ SELECT
339
+ id,
340
+ NULL,
341
+ provider,
342
+ display_name,
343
+ base_url,
344
+ default_model,
345
+ secret_ref,
346
+ is_active,
347
+ created_at,
348
+ updated_at
349
+ FROM provider_connections_legacy;
350
+
351
+ DROP TABLE provider_connections_legacy;
352
+ `);
353
+ }
354
+ function hasColumn(db, tableName, columnName) {
355
+ const columns = db
356
+ .prepare(`PRAGMA table_info(${tableName})`)
357
+ .all();
358
+ return columns.some((column) => column.name === columnName);
359
+ }
360
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { type DatabaseConnection } from "./database.js";
2
+ export type AgentMemoryKind = "memory" | "knowledge" | "skill";
3
+ export type AgentMemoryStatus = "active" | "archived";
4
+ export type ImprovementProposalStatus = "pending" | "approved" | "rejected";
5
+ export type AgentMemoryEntry = {
6
+ id: string;
7
+ userId: string | null;
8
+ kind: AgentMemoryKind;
9
+ title: string;
10
+ content: string;
11
+ sourceConversationId: string | null;
12
+ status: AgentMemoryStatus;
13
+ createdAt: string;
14
+ updatedAt: string;
15
+ };
16
+ export type ImprovementProposal = {
17
+ id: string;
18
+ userId: string | null;
19
+ kind: AgentMemoryKind;
20
+ title: string;
21
+ content: string;
22
+ reason: string;
23
+ sourceConversationId: string | null;
24
+ status: ImprovementProposalStatus;
25
+ createdAt: string;
26
+ updatedAt: string;
27
+ decidedAt: string | null;
28
+ };
29
+ export type CreateProposalInput = {
30
+ userId?: string | null;
31
+ kind: AgentMemoryKind;
32
+ title: string;
33
+ content: string;
34
+ reason: string;
35
+ sourceConversationId?: string | null;
36
+ };
37
+ export declare class MemoryRepository {
38
+ private readonly db;
39
+ constructor(db: DatabaseConnection);
40
+ listEntries(options?: {
41
+ kind?: AgentMemoryKind;
42
+ limit?: number;
43
+ userId?: string;
44
+ }): AgentMemoryEntry[];
45
+ searchEntries(query: string, limit?: number, options?: {
46
+ userId?: string;
47
+ }): AgentMemoryEntry[];
48
+ countEntries(options?: {
49
+ userId?: string;
50
+ }): number;
51
+ createProposal(input: CreateProposalInput): ImprovementProposal;
52
+ listProposals(options?: {
53
+ status?: ImprovementProposalStatus;
54
+ limit?: number;
55
+ userId?: string;
56
+ }): ImprovementProposal[];
57
+ countPendingProposals(options?: {
58
+ userId?: string;
59
+ }): number;
60
+ getProposal(id: string, options?: {
61
+ userId?: string;
62
+ }): ImprovementProposal | null;
63
+ approveProposal(id: string, options?: {
64
+ userId?: string;
65
+ }): AgentMemoryEntry;
66
+ rejectProposal(id: string, options?: {
67
+ userId?: string;
68
+ }): ImprovementProposal;
69
+ private getEntry;
70
+ }