agent-world 0.11.1 → 0.12.0

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 (267) hide show
  1. package/README.md +17 -7
  2. package/dist/cli/commands.d.ts +109 -0
  3. package/dist/cli/commands.js +2024 -0
  4. package/dist/cli/display.d.ts +124 -0
  5. package/dist/cli/display.js +381 -0
  6. package/dist/cli/hitl.d.ts +33 -0
  7. package/dist/cli/hitl.js +81 -0
  8. package/dist/cli/index.d.ts +2 -0
  9. package/dist/cli/stream.d.ts +41 -0
  10. package/dist/cli/stream.js +222 -0
  11. package/dist/core/activity-tracker.d.ts +16 -0
  12. package/dist/core/activity-tracker.d.ts.map +1 -0
  13. package/dist/core/activity-tracker.js +91 -0
  14. package/dist/core/activity-tracker.js.map +1 -0
  15. package/dist/core/ai-commands.d.ts +16 -0
  16. package/dist/core/ai-commands.d.ts.map +1 -0
  17. package/dist/core/ai-commands.js +24 -0
  18. package/dist/core/ai-commands.js.map +1 -0
  19. package/dist/core/ai-sdk-patch.d.ts +24 -0
  20. package/dist/core/ai-sdk-patch.d.ts.map +1 -0
  21. package/dist/core/ai-sdk-patch.js +169 -0
  22. package/dist/core/ai-sdk-patch.js.map +1 -0
  23. package/dist/core/anthropic-direct.d.ts +52 -0
  24. package/dist/core/anthropic-direct.d.ts.map +1 -0
  25. package/dist/core/anthropic-direct.js +301 -0
  26. package/dist/core/anthropic-direct.js.map +1 -0
  27. package/dist/core/approval-cache.d.ts +104 -0
  28. package/dist/core/approval-cache.d.ts.map +1 -0
  29. package/dist/core/approval-cache.js +150 -0
  30. package/dist/core/approval-cache.js.map +1 -0
  31. package/dist/core/chat-constants.d.ts +20 -0
  32. package/dist/core/chat-constants.d.ts.map +1 -0
  33. package/dist/core/chat-constants.js +22 -0
  34. package/dist/core/chat-constants.js.map +1 -0
  35. package/dist/core/create-agent-tool.d.ts +66 -0
  36. package/dist/core/create-agent-tool.d.ts.map +1 -0
  37. package/dist/core/create-agent-tool.js +212 -0
  38. package/dist/core/create-agent-tool.js.map +1 -0
  39. package/dist/core/events/approval-checker.d.ts +61 -0
  40. package/dist/core/events/approval-checker.d.ts.map +1 -0
  41. package/dist/core/events/approval-checker.js +226 -0
  42. package/dist/core/events/approval-checker.js.map +1 -0
  43. package/dist/core/events/index.d.ts +25 -0
  44. package/dist/core/events/index.d.ts.map +1 -0
  45. package/dist/core/events/index.js +30 -0
  46. package/dist/core/events/index.js.map +1 -0
  47. package/dist/core/events/memory-manager.d.ts +73 -0
  48. package/dist/core/events/memory-manager.d.ts.map +1 -0
  49. package/dist/core/events/memory-manager.js +1218 -0
  50. package/dist/core/events/memory-manager.js.map +1 -0
  51. package/dist/core/events/mention-logic.d.ts +39 -0
  52. package/dist/core/events/mention-logic.d.ts.map +1 -0
  53. package/dist/core/events/mention-logic.js +163 -0
  54. package/dist/core/events/mention-logic.js.map +1 -0
  55. package/dist/core/events/orchestrator.d.ts +69 -0
  56. package/dist/core/events/orchestrator.d.ts.map +1 -0
  57. package/dist/core/events/orchestrator.js +883 -0
  58. package/dist/core/events/orchestrator.js.map +1 -0
  59. package/dist/core/events/persistence.d.ts +41 -0
  60. package/dist/core/events/persistence.d.ts.map +1 -0
  61. package/dist/core/events/persistence.js +296 -0
  62. package/dist/core/events/persistence.js.map +1 -0
  63. package/dist/core/events/publishers.d.ts +81 -0
  64. package/dist/core/events/publishers.d.ts.map +1 -0
  65. package/dist/core/events/publishers.js +272 -0
  66. package/dist/core/events/publishers.js.map +1 -0
  67. package/dist/core/events/subscribers.d.ts +45 -0
  68. package/dist/core/events/subscribers.d.ts.map +1 -0
  69. package/dist/core/events/subscribers.js +288 -0
  70. package/dist/core/events/subscribers.js.map +1 -0
  71. package/dist/core/events/tool-bridge-logging.d.ts +28 -0
  72. package/dist/core/events/tool-bridge-logging.d.ts.map +1 -0
  73. package/dist/core/events/tool-bridge-logging.js +94 -0
  74. package/dist/core/events/tool-bridge-logging.js.map +1 -0
  75. package/dist/core/events-metadata.d.ts +72 -0
  76. package/dist/core/events-metadata.d.ts.map +1 -0
  77. package/dist/core/events-metadata.js +167 -0
  78. package/dist/core/events-metadata.js.map +1 -0
  79. package/dist/core/events.d.ts +186 -0
  80. package/dist/core/events.d.ts.map +1 -0
  81. package/dist/core/events.js +1248 -0
  82. package/dist/core/events.js.map +1 -0
  83. package/dist/core/export.d.ts +106 -0
  84. package/dist/core/export.d.ts.map +1 -0
  85. package/dist/core/export.js +705 -0
  86. package/dist/core/export.js.map +1 -0
  87. package/dist/core/file-tools.d.ts +114 -0
  88. package/dist/core/file-tools.d.ts.map +1 -0
  89. package/dist/core/file-tools.js +370 -0
  90. package/dist/core/file-tools.js.map +1 -0
  91. package/dist/core/google-direct.d.ts +58 -0
  92. package/dist/core/google-direct.d.ts.map +1 -0
  93. package/dist/core/google-direct.js +298 -0
  94. package/dist/core/google-direct.js.map +1 -0
  95. package/dist/core/hitl.d.ts +54 -0
  96. package/dist/core/hitl.d.ts.map +1 -0
  97. package/dist/core/hitl.js +153 -0
  98. package/dist/core/hitl.js.map +1 -0
  99. package/dist/core/index.d.ts +59 -0
  100. package/dist/core/index.d.ts.map +1 -0
  101. package/dist/core/index.js +70 -0
  102. package/dist/core/index.js.map +1 -0
  103. package/dist/core/llm-config.d.ts +128 -0
  104. package/dist/core/llm-config.d.ts.map +1 -0
  105. package/dist/core/llm-config.js +164 -0
  106. package/dist/core/llm-config.js.map +1 -0
  107. package/dist/core/llm-manager.d.ts +163 -0
  108. package/dist/core/llm-manager.d.ts.map +1 -0
  109. package/dist/core/llm-manager.js +669 -0
  110. package/dist/core/llm-manager.js.map +1 -0
  111. package/dist/core/load-skill-tool.d.ts +55 -0
  112. package/dist/core/load-skill-tool.d.ts.map +1 -0
  113. package/dist/core/load-skill-tool.js +468 -0
  114. package/dist/core/load-skill-tool.js.map +1 -0
  115. package/dist/core/logger.d.ts +88 -0
  116. package/dist/core/logger.d.ts.map +1 -0
  117. package/dist/core/logger.js +358 -0
  118. package/dist/core/logger.js.map +1 -0
  119. package/dist/core/managers.d.ts +131 -0
  120. package/dist/core/managers.d.ts.map +1 -0
  121. package/dist/core/managers.js +1223 -0
  122. package/dist/core/managers.js.map +1 -0
  123. package/dist/core/mcp-server-registry.d.ts +304 -0
  124. package/dist/core/mcp-server-registry.d.ts.map +1 -0
  125. package/dist/core/mcp-server-registry.js +1769 -0
  126. package/dist/core/mcp-server-registry.js.map +1 -0
  127. package/dist/core/mcp-tools.d.ts +56 -0
  128. package/dist/core/mcp-tools.d.ts.map +1 -0
  129. package/dist/core/mcp-tools.js +186 -0
  130. package/dist/core/mcp-tools.js.map +1 -0
  131. package/dist/core/message-prep.d.ts +81 -0
  132. package/dist/core/message-prep.d.ts.map +1 -0
  133. package/dist/core/message-prep.js +223 -0
  134. package/dist/core/message-prep.js.map +1 -0
  135. package/dist/core/message-processing-control.d.ts +54 -0
  136. package/dist/core/message-processing-control.d.ts.map +1 -0
  137. package/dist/core/message-processing-control.js +139 -0
  138. package/dist/core/message-processing-control.js.map +1 -0
  139. package/dist/core/openai-direct.d.ts +80 -0
  140. package/dist/core/openai-direct.d.ts.map +1 -0
  141. package/dist/core/openai-direct.js +374 -0
  142. package/dist/core/openai-direct.js.map +1 -0
  143. package/dist/core/shell-cmd-tool.d.ts +235 -0
  144. package/dist/core/shell-cmd-tool.d.ts.map +1 -0
  145. package/dist/core/shell-cmd-tool.js +1157 -0
  146. package/dist/core/shell-cmd-tool.js.map +1 -0
  147. package/dist/core/shell-process-registry.d.ts +88 -0
  148. package/dist/core/shell-process-registry.d.ts.map +1 -0
  149. package/dist/core/shell-process-registry.js +309 -0
  150. package/dist/core/shell-process-registry.js.map +1 -0
  151. package/dist/core/skill-registry.d.ts +75 -0
  152. package/dist/core/skill-registry.d.ts.map +1 -0
  153. package/dist/core/skill-registry.js +369 -0
  154. package/dist/core/skill-registry.js.map +1 -0
  155. package/dist/core/skill-script-runner.d.ts +89 -0
  156. package/dist/core/skill-script-runner.d.ts.map +1 -0
  157. package/dist/core/skill-script-runner.js +274 -0
  158. package/dist/core/skill-script-runner.js.map +1 -0
  159. package/dist/core/skill-selector.d.ts +65 -0
  160. package/dist/core/skill-selector.d.ts.map +1 -0
  161. package/dist/core/skill-selector.js +190 -0
  162. package/dist/core/skill-selector.js.map +1 -0
  163. package/dist/core/skill-settings.d.ts +20 -0
  164. package/dist/core/skill-settings.d.ts.map +1 -0
  165. package/dist/core/skill-settings.js +40 -0
  166. package/dist/core/skill-settings.js.map +1 -0
  167. package/dist/core/storage/agent-storage.d.ts +134 -0
  168. package/dist/core/storage/agent-storage.d.ts.map +1 -0
  169. package/dist/core/storage/agent-storage.js +498 -0
  170. package/dist/core/storage/agent-storage.js.map +1 -0
  171. package/dist/core/storage/eventStorage/fileEventStorage.d.ts +100 -0
  172. package/dist/core/storage/eventStorage/fileEventStorage.d.ts.map +1 -0
  173. package/dist/core/storage/eventStorage/fileEventStorage.js +494 -0
  174. package/dist/core/storage/eventStorage/fileEventStorage.js.map +1 -0
  175. package/dist/core/storage/eventStorage/index.d.ts +31 -0
  176. package/dist/core/storage/eventStorage/index.d.ts.map +1 -0
  177. package/dist/core/storage/eventStorage/index.js +31 -0
  178. package/dist/core/storage/eventStorage/index.js.map +1 -0
  179. package/dist/core/storage/eventStorage/memoryEventStorage.d.ts +87 -0
  180. package/dist/core/storage/eventStorage/memoryEventStorage.d.ts.map +1 -0
  181. package/dist/core/storage/eventStorage/memoryEventStorage.js +244 -0
  182. package/dist/core/storage/eventStorage/memoryEventStorage.js.map +1 -0
  183. package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts +45 -0
  184. package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts.map +1 -0
  185. package/dist/core/storage/eventStorage/sqliteEventStorage.js +301 -0
  186. package/dist/core/storage/eventStorage/sqliteEventStorage.js.map +1 -0
  187. package/dist/core/storage/eventStorage/types.d.ts +142 -0
  188. package/dist/core/storage/eventStorage/types.d.ts.map +1 -0
  189. package/dist/core/storage/eventStorage/types.js +43 -0
  190. package/dist/core/storage/eventStorage/types.js.map +1 -0
  191. package/dist/core/storage/eventStorage/validation.d.ts +30 -0
  192. package/dist/core/storage/eventStorage/validation.d.ts.map +1 -0
  193. package/dist/core/storage/eventStorage/validation.js +68 -0
  194. package/dist/core/storage/eventStorage/validation.js.map +1 -0
  195. package/dist/core/storage/legacy-migrations.d.ts +45 -0
  196. package/dist/core/storage/legacy-migrations.d.ts.map +1 -0
  197. package/dist/core/storage/legacy-migrations.js +295 -0
  198. package/dist/core/storage/legacy-migrations.js.map +1 -0
  199. package/dist/core/storage/memory-storage.d.ts +105 -0
  200. package/dist/core/storage/memory-storage.d.ts.map +1 -0
  201. package/dist/core/storage/memory-storage.js +415 -0
  202. package/dist/core/storage/memory-storage.js.map +1 -0
  203. package/dist/core/storage/migration-runner.d.ts +96 -0
  204. package/dist/core/storage/migration-runner.d.ts.map +1 -0
  205. package/dist/core/storage/migration-runner.js +306 -0
  206. package/dist/core/storage/migration-runner.js.map +1 -0
  207. package/dist/core/storage/queue-storage.d.ts +147 -0
  208. package/dist/core/storage/queue-storage.d.ts.map +1 -0
  209. package/dist/core/storage/queue-storage.js +290 -0
  210. package/dist/core/storage/queue-storage.js.map +1 -0
  211. package/dist/core/storage/skill-storage.d.ts +136 -0
  212. package/dist/core/storage/skill-storage.d.ts.map +1 -0
  213. package/dist/core/storage/skill-storage.js +474 -0
  214. package/dist/core/storage/skill-storage.js.map +1 -0
  215. package/dist/core/storage/sqlite-schema.d.ts +95 -0
  216. package/dist/core/storage/sqlite-schema.d.ts.map +1 -0
  217. package/dist/core/storage/sqlite-schema.js +156 -0
  218. package/dist/core/storage/sqlite-schema.js.map +1 -0
  219. package/dist/core/storage/sqlite-storage.d.ts +146 -0
  220. package/dist/core/storage/sqlite-storage.d.ts.map +1 -0
  221. package/dist/core/storage/sqlite-storage.js +709 -0
  222. package/dist/core/storage/sqlite-storage.js.map +1 -0
  223. package/dist/core/storage/storage-factory.d.ts +61 -0
  224. package/dist/core/storage/storage-factory.d.ts.map +1 -0
  225. package/dist/core/storage/storage-factory.js +794 -0
  226. package/dist/core/storage/storage-factory.js.map +1 -0
  227. package/dist/core/storage/validation.d.ts +36 -0
  228. package/dist/core/storage/validation.d.ts.map +1 -0
  229. package/dist/core/storage/validation.js +79 -0
  230. package/dist/core/storage/validation.js.map +1 -0
  231. package/dist/core/storage/world-storage.d.ts +114 -0
  232. package/dist/core/storage/world-storage.d.ts.map +1 -0
  233. package/dist/core/storage/world-storage.js +378 -0
  234. package/dist/core/storage/world-storage.js.map +1 -0
  235. package/dist/core/subscription.d.ts +43 -0
  236. package/dist/core/subscription.d.ts.map +1 -0
  237. package/dist/core/subscription.js +227 -0
  238. package/dist/core/subscription.js.map +1 -0
  239. package/dist/core/tool-utils.d.ts +80 -0
  240. package/dist/core/tool-utils.d.ts.map +1 -0
  241. package/dist/core/tool-utils.js +273 -0
  242. package/dist/core/tool-utils.js.map +1 -0
  243. package/dist/core/types.d.ts +595 -0
  244. package/dist/core/types.d.ts.map +1 -0
  245. package/dist/core/types.js +158 -0
  246. package/dist/core/types.js.map +1 -0
  247. package/dist/core/utils.d.ts +138 -0
  248. package/dist/core/utils.d.ts.map +1 -0
  249. package/dist/core/utils.js +478 -0
  250. package/dist/core/utils.js.map +1 -0
  251. package/dist/core/world-class.d.ts +43 -0
  252. package/dist/core/world-class.d.ts.map +1 -0
  253. package/dist/core/world-class.js +90 -0
  254. package/dist/core/world-class.js.map +1 -0
  255. package/dist/index.d.ts +18 -0
  256. package/dist/public/assets/agent-sprites-DJFgj-zP.png +0 -0
  257. package/dist/public/assets/border-KHK37r8y.svg +83 -0
  258. package/dist/public/assets/index-C9kPXL6G.css +1 -0
  259. package/dist/public/assets/index-DOQEHGWt.js +96 -0
  260. package/dist/public/index.html +21 -0
  261. package/dist/server/api.d.ts +2 -0
  262. package/dist/server/api.js +1124 -0
  263. package/dist/server/index.d.ts +29 -0
  264. package/dist/server/sse-handler.d.ts +62 -0
  265. package/dist/server/sse-handler.js +234 -0
  266. package/package.json +15 -3
  267. package/scripts/launch-electron.js +0 -58
@@ -0,0 +1,301 @@
1
+ /**
2
+ * SQLite Event Storage Implementation
3
+ *
4
+ * Implements EventStorage interface using SQLite database with the repository's existing DB client pattern.
5
+ * Uses parameterized SQL queries and transactions for data integrity and performance.
6
+ *
7
+ * Features:
8
+ * - Parameterized SQL queries to prevent SQL injection
9
+ * - Transaction support for batch operations
10
+ * - Automatic sequence number generation per world/chat using MAX(seq) + 1
11
+ * - Cascade delete via foreign keys to worlds/chats tables
12
+ * - Efficient querying with indexed columns
13
+ * - JSON storage for payload and metadata
14
+ * - Duplicate event ID handling with INSERT OR IGNORE
15
+ *
16
+ * Cascade Delete Behavior:
17
+ * - Foreign keys ensure events are deleted when their parent world is deleted
18
+ * - Foreign keys ensure events are deleted when their parent chat is deleted
19
+ * - PRAGMA foreign_keys = ON must be enabled (done in sqlite-schema.ts)
20
+ *
21
+ * Implementation Notes:
22
+ * - Uses sqlite3 Database from the existing schema pattern
23
+ * - Follows the promisify pattern used in sqlite-storage.ts
24
+ * - Supports both time-based and sequence-based pagination
25
+ * - Auto-increments sequence number using COALESCE(MAX(seq), 0) + 1
26
+ * - No separate sequence tracking table needed (removed event_sequences)
27
+ * - Uses INSERT OR IGNORE to prevent UNIQUE constraint violations from duplicate event IDs
28
+ * (can occur due to retries, multiple listeners, or error recovery)
29
+ *
30
+ * Changes:
31
+ * - 2025-11-09: CRITICAL FIX - Let AUTOINCREMENT handle seq, don't set manually (was causing INSERT failures)
32
+ * - 2025-11-03: Added INSERT OR IGNORE to handle duplicate event IDs gracefully
33
+ * - 2025-11-06: Removed event_sequences table, use MAX(seq) + 1 for auto-increment
34
+ */
35
+ import { validateEventForPersistence } from './validation.js';
36
+ /**
37
+ * Helper to promisify db.run
38
+ */
39
+ function dbRun(db, sql, ...params) {
40
+ return new Promise((resolve, reject) => {
41
+ db.run(sql, params, function (err) {
42
+ if (err)
43
+ reject(err);
44
+ else
45
+ resolve(this);
46
+ });
47
+ });
48
+ }
49
+ /**
50
+ * Helper to promisify db.get
51
+ */
52
+ function dbGet(db, sql, ...params) {
53
+ return new Promise((resolve, reject) => {
54
+ db.get(sql, params, (err, row) => {
55
+ if (err)
56
+ reject(err);
57
+ else
58
+ resolve(row);
59
+ });
60
+ });
61
+ }
62
+ /**
63
+ * Helper to promisify db.all
64
+ */
65
+ function dbAll(db, sql, ...params) {
66
+ return new Promise((resolve, reject) => {
67
+ db.all(sql, params, (err, rows) => {
68
+ if (err)
69
+ reject(err);
70
+ else
71
+ resolve(rows || []);
72
+ });
73
+ });
74
+ }
75
+ /**
76
+ * Create SQLite event storage context
77
+ */
78
+ export async function createSQLiteEventStorage(db) {
79
+ const ctx = {
80
+ db,
81
+ isInitialized: false
82
+ };
83
+ await ensureInitialized(ctx);
84
+ return {
85
+ saveEvent: (event) => saveEvent(ctx, event),
86
+ saveEvents: (events) => saveEvents(ctx, events),
87
+ getEventsByWorldAndChat: (worldId, chatId, options) => getEventsByWorldAndChat(ctx, worldId, chatId, options),
88
+ deleteEventsByWorldAndChat: (worldId, chatId) => deleteEventsByWorldAndChat(ctx, worldId, chatId),
89
+ deleteEventsByWorld: (worldId) => deleteEventsByWorld(ctx, worldId),
90
+ getLatestSeq: (worldId, chatId) => getLatestSeq(ctx, worldId, chatId),
91
+ getEventRange: (worldId, chatId, fromSeq, toSeq) => getEventRange(ctx, worldId, chatId, fromSeq, toSeq),
92
+ };
93
+ }
94
+ /**
95
+ * Ensure the events table is created
96
+ * The events table should already exist from the migration, but this provides a fallback
97
+ */
98
+ async function ensureInitialized(ctx) {
99
+ if (ctx.isInitialized)
100
+ return;
101
+ // Check if events table exists
102
+ const eventsTableCheck = await dbGet(ctx.db, "SELECT name FROM sqlite_master WHERE type='table' AND name='events'");
103
+ if (!eventsTableCheck) {
104
+ // Table doesn't exist, create it
105
+ // This is a fallback - normally the migration should create this table
106
+ // Note: Foreign keys are omitted here because parent tables may not exist yet
107
+ // In production, the migration script handles this properly with foreign keys
108
+ await dbRun(ctx.db, `
109
+ CREATE TABLE IF NOT EXISTS events (
110
+ id TEXT PRIMARY KEY,
111
+ world_id TEXT NOT NULL,
112
+ chat_id TEXT,
113
+ seq INTEGER,
114
+ type TEXT NOT NULL,
115
+ payload TEXT NOT NULL,
116
+ meta TEXT,
117
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
118
+ )
119
+ `);
120
+ // Create indexes
121
+ await dbRun(ctx.db, `
122
+ CREATE INDEX IF NOT EXISTS idx_events_world_chat_time
123
+ ON events(world_id, chat_id, created_at)
124
+ `);
125
+ await dbRun(ctx.db, `
126
+ CREATE INDEX IF NOT EXISTS idx_events_world_chat_seq
127
+ ON events(world_id, chat_id, seq)
128
+ `);
129
+ await dbRun(ctx.db, `
130
+ CREATE INDEX IF NOT EXISTS idx_events_type
131
+ ON events(type)
132
+ `);
133
+ await dbRun(ctx.db, `
134
+ CREATE INDEX IF NOT EXISTS idx_events_world_id
135
+ ON events(world_id)
136
+ `);
137
+ }
138
+ ctx.isInitialized = true;
139
+ }
140
+ /**
141
+ * Save a single event
142
+ */
143
+ async function saveEvent(ctx, event) {
144
+ await ensureInitialized(ctx);
145
+ // Validate event metadata before persistence
146
+ validateEventForPersistence(event);
147
+ // seq is AUTOINCREMENT - don't specify it, let SQLite handle it
148
+ await dbRun(ctx.db, `INSERT OR IGNORE INTO events (id, world_id, chat_id, type, payload, meta, created_at)
149
+ VALUES (?, ?, ?, ?, ?, ?, ?)`, event.id, event.worldId, event.chatId, event.type, JSON.stringify(event.payload), event.meta ? JSON.stringify(event.meta) : null, event.createdAt.toISOString());
150
+ }
151
+ /**
152
+ * Save multiple events in a transaction
153
+ */
154
+ async function saveEvents(ctx, events) {
155
+ await ensureInitialized(ctx);
156
+ if (events.length === 0)
157
+ return;
158
+ // Use transaction for batch insert
159
+ await dbRun(ctx.db, 'BEGIN TRANSACTION');
160
+ try {
161
+ for (const event of events) {
162
+ // Validate event metadata before persistence
163
+ validateEventForPersistence(event);
164
+ // seq is AUTOINCREMENT - let SQLite handle it
165
+ await dbRun(ctx.db, `INSERT OR IGNORE INTO events (id, world_id, chat_id, type, payload, meta, created_at)
166
+ VALUES (?, ?, ?, ?, ?, ?, ?)`, event.id, event.worldId, event.chatId, event.type, JSON.stringify(event.payload), event.meta ? JSON.stringify(event.meta) : null, event.createdAt.toISOString());
167
+ }
168
+ await dbRun(ctx.db, 'COMMIT');
169
+ }
170
+ catch (error) {
171
+ await dbRun(ctx.db, 'ROLLBACK');
172
+ throw error;
173
+ }
174
+ }
175
+ /**
176
+ * Get events for a specific world and chat with filtering options
177
+ */
178
+ async function getEventsByWorldAndChat(ctx, worldId, chatId, options = {}) {
179
+ await ensureInitialized(ctx);
180
+ const whereClauses = ['world_id = ?'];
181
+ const params = [worldId];
182
+ // Handle chatId (including NULL case)
183
+ if (chatId === null) {
184
+ whereClauses.push('chat_id IS NULL');
185
+ }
186
+ else {
187
+ whereClauses.push('chat_id = ?');
188
+ params.push(chatId);
189
+ }
190
+ // Add optional filters
191
+ if (options.sinceSeq !== undefined) {
192
+ whereClauses.push('seq > ?');
193
+ params.push(options.sinceSeq);
194
+ }
195
+ if (options.sinceTime !== undefined) {
196
+ whereClauses.push('created_at > ?');
197
+ params.push(options.sinceTime.toISOString());
198
+ }
199
+ if (options.types && options.types.length > 0) {
200
+ const placeholders = options.types.map(() => '?').join(', ');
201
+ whereClauses.push(`type IN (${placeholders})`);
202
+ params.push(...options.types);
203
+ }
204
+ // Build query
205
+ let sql = `SELECT id, world_id, chat_id, seq, type, payload, meta, created_at
206
+ FROM events
207
+ WHERE ${whereClauses.join(' AND ')}`;
208
+ // Add ordering
209
+ const order = options.order || 'asc';
210
+ sql += ` ORDER BY seq ${order.toUpperCase()}, created_at ${order.toUpperCase()}`;
211
+ // Add limit
212
+ if (options.limit) {
213
+ sql += ` LIMIT ?`;
214
+ params.push(options.limit);
215
+ }
216
+ const rows = await dbAll(ctx.db, sql, ...params);
217
+ // Parse JSON fields and convert to StoredEvent
218
+ return rows.map(row => ({
219
+ id: row.id,
220
+ worldId: row.world_id,
221
+ chatId: row.chat_id,
222
+ seq: row.seq,
223
+ type: row.type,
224
+ payload: JSON.parse(row.payload),
225
+ meta: row.meta ? JSON.parse(row.meta) : undefined,
226
+ createdAt: new Date(row.created_at)
227
+ }));
228
+ }
229
+ /**
230
+ * Delete all events for a specific world and chat
231
+ */
232
+ async function deleteEventsByWorldAndChat(ctx, worldId, chatId) {
233
+ await ensureInitialized(ctx);
234
+ let sql;
235
+ let params;
236
+ if (chatId === null) {
237
+ sql = 'DELETE FROM events WHERE world_id = ? AND chat_id IS NULL';
238
+ params = [worldId];
239
+ }
240
+ else {
241
+ sql = 'DELETE FROM events WHERE world_id = ? AND chat_id = ?';
242
+ params = [worldId, chatId];
243
+ }
244
+ const result = await dbRun(ctx.db, sql, ...params);
245
+ return result.changes || 0;
246
+ }
247
+ /**
248
+ * Delete all events for a specific world (all chats)
249
+ */
250
+ async function deleteEventsByWorld(ctx, worldId) {
251
+ await ensureInitialized(ctx);
252
+ const result = await dbRun(ctx.db, 'DELETE FROM events WHERE world_id = ?', worldId);
253
+ return result.changes || 0;
254
+ }
255
+ /**
256
+ * Get the latest sequence number for a world/chat context
257
+ * Returns 0 if no events exist
258
+ */
259
+ async function getLatestSeq(ctx, worldId, chatId) {
260
+ await ensureInitialized(ctx);
261
+ const result = await dbGet(ctx.db, `SELECT COALESCE(MAX(seq), 0) as latestSeq
262
+ FROM events
263
+ WHERE world_id = ? AND (chat_id = ? OR (chat_id IS NULL AND ? IS NULL))`, worldId, chatId, chatId);
264
+ return result.latestSeq || 0;
265
+ }
266
+ /**
267
+ * Get events within a specific sequence range (inclusive)
268
+ */
269
+ async function getEventRange(ctx, worldId, chatId, fromSeq, toSeq) {
270
+ await ensureInitialized(ctx);
271
+ const whereClauses = ['world_id = ?'];
272
+ const params = [worldId];
273
+ // Handle chatId (including NULL case)
274
+ if (chatId === null) {
275
+ whereClauses.push('chat_id IS NULL');
276
+ }
277
+ else {
278
+ whereClauses.push('chat_id = ?');
279
+ params.push(chatId);
280
+ }
281
+ // Add sequence range filter
282
+ whereClauses.push('seq >= ? AND seq <= ?');
283
+ params.push(fromSeq, toSeq);
284
+ const sql = `SELECT id, world_id, chat_id, seq, type, payload, meta, created_at
285
+ FROM events
286
+ WHERE ${whereClauses.join(' AND ')}
287
+ ORDER BY seq ASC, created_at ASC`;
288
+ const rows = await dbAll(ctx.db, sql, ...params);
289
+ // Parse JSON fields and convert to StoredEvent
290
+ return rows.map(row => ({
291
+ id: row.id,
292
+ worldId: row.world_id,
293
+ chatId: row.chat_id,
294
+ seq: row.seq,
295
+ type: row.type,
296
+ payload: JSON.parse(row.payload),
297
+ meta: row.meta ? JSON.parse(row.meta) : undefined,
298
+ createdAt: new Date(row.created_at)
299
+ }));
300
+ }
301
+ //# sourceMappingURL=sqliteEventStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqliteEventStorage.js","sourceRoot":"","sources":["../../../../core/storage/eventStorage/sqliteEventStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Event Storage Types and Interfaces
3
+ *
4
+ * Defines the interface and types for persistent event storage across different backends.
5
+ * Events are keyed by worldId and chatId, matching patterns used by existing world and agent storage.
6
+ *
7
+ * Features:
8
+ * - Type-safe event storage interface
9
+ * - Support for sequence-based ordering within world/chat contexts
10
+ * - Pagination and filtering capabilities
11
+ * - Multiple backend implementations (SQLite, in-memory, file-backed)
12
+ *
13
+ * Recent Changes:
14
+ * - 2026-02-08: Removed legacy manual tool-intervention metadata fields from message/tool event metadata
15
+ *
16
+ * Event Structure:
17
+ * - id: Unique identifier (UUID)
18
+ * - worldId: World context for the event
19
+ * - chatId: Optional chat context (nullable)
20
+ * - seq: Optional sequence number for ordering
21
+ * - type: Event type (message, sse, tool, system, etc.)
22
+ * - payload: Event-specific data as JSON
23
+ * - meta: Metadata like timestamp, sender, etc.
24
+ * - createdAt: Event creation timestamp
25
+ */
26
+ export interface StoredEvent {
27
+ id: string;
28
+ worldId: string;
29
+ chatId: string | null;
30
+ seq?: number | null;
31
+ type: string;
32
+ payload: any;
33
+ meta?: any;
34
+ createdAt: Date;
35
+ }
36
+ /**
37
+ * Enhanced metadata for message events
38
+ * All fields REQUIRED - no legacy support
39
+ */
40
+ export interface MessageEventMetadata {
41
+ sender: string;
42
+ chatId: string | null;
43
+ ownerAgentIds: string[];
44
+ recipientAgentId: string | null;
45
+ originalSender: string | null;
46
+ deliveredToAgents: string[];
47
+ messageDirection: 'outgoing' | 'incoming' | 'broadcast';
48
+ isMemoryOnly: boolean;
49
+ isCrossAgentMessage: boolean;
50
+ isHumanMessage: boolean;
51
+ threadRootId: string | null;
52
+ threadDepth: number;
53
+ isReply: boolean;
54
+ hasReplies: boolean;
55
+ llmTokensInput: number | null;
56
+ llmTokensOutput: number | null;
57
+ llmLatency: number | null;
58
+ llmProvider: string | null;
59
+ llmModel: string | null;
60
+ hasToolCalls: boolean;
61
+ toolCallCount: number;
62
+ }
63
+ /**
64
+ * Enhanced metadata for tool events
65
+ */
66
+ export interface ToolEventMetadata {
67
+ agentName: string;
68
+ toolType: string;
69
+ ownerAgentId: string;
70
+ triggeredByMessageId: string;
71
+ executionDuration: number;
72
+ resultSize: number;
73
+ }
74
+ /**
75
+ * Validation: All message events must have complete metadata
76
+ */
77
+ export declare function validateMessageEventMetadata(meta: any): meta is MessageEventMetadata;
78
+ export interface GetEventsOptions {
79
+ /**
80
+ * Get events with sequence number greater than this value
81
+ */
82
+ sinceSeq?: number;
83
+ /**
84
+ * Get events created after this timestamp
85
+ */
86
+ sinceTime?: Date;
87
+ /**
88
+ * Maximum number of events to return
89
+ */
90
+ limit?: number;
91
+ /**
92
+ * Order by sequence or time
93
+ * Default: 'asc'
94
+ */
95
+ order?: 'asc' | 'desc';
96
+ /**
97
+ * Filter by event types
98
+ */
99
+ types?: string[];
100
+ ownerAgentId?: string;
101
+ recipientAgentId?: string;
102
+ isMemoryOnly?: boolean;
103
+ isCrossAgent?: boolean;
104
+ threadRootId?: string;
105
+ hasToolCalls?: boolean;
106
+ }
107
+ export interface EventStorage {
108
+ /**
109
+ * Save a single event to storage
110
+ */
111
+ saveEvent(event: StoredEvent): Promise<void>;
112
+ /**
113
+ * Save multiple events in a batch
114
+ */
115
+ saveEvents(events: StoredEvent[]): Promise<void>;
116
+ /**
117
+ * Get events for a specific world and chat
118
+ */
119
+ getEventsByWorldAndChat(worldId: string, chatId: string | null, options?: GetEventsOptions): Promise<StoredEvent[]>;
120
+ /**
121
+ * Delete all events for a specific world and chat
122
+ */
123
+ deleteEventsByWorldAndChat(worldId: string, chatId: string | null): Promise<number>;
124
+ /**
125
+ * Delete all events for a specific world (all chats)
126
+ */
127
+ deleteEventsByWorld(worldId: string): Promise<number>;
128
+ /**
129
+ * Get the latest sequence number for a world/chat context
130
+ * Returns 0 if no events exist
131
+ */
132
+ getLatestSeq(worldId: string, chatId: string | null): Promise<number>;
133
+ /**
134
+ * Get events within a specific sequence range (inclusive)
135
+ */
136
+ getEventRange(worldId: string, chatId: string | null, fromSeq: number, toSeq: number): Promise<StoredEvent[]>;
137
+ /**
138
+ * Close/cleanup storage resources
139
+ */
140
+ close?(): Promise<void>;
141
+ }
142
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../core/storage/eventStorage/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Event Storage Types and Interfaces
3
+ *
4
+ * Defines the interface and types for persistent event storage across different backends.
5
+ * Events are keyed by worldId and chatId, matching patterns used by existing world and agent storage.
6
+ *
7
+ * Features:
8
+ * - Type-safe event storage interface
9
+ * - Support for sequence-based ordering within world/chat contexts
10
+ * - Pagination and filtering capabilities
11
+ * - Multiple backend implementations (SQLite, in-memory, file-backed)
12
+ *
13
+ * Recent Changes:
14
+ * - 2026-02-08: Removed legacy manual tool-intervention metadata fields from message/tool event metadata
15
+ *
16
+ * Event Structure:
17
+ * - id: Unique identifier (UUID)
18
+ * - worldId: World context for the event
19
+ * - chatId: Optional chat context (nullable)
20
+ * - seq: Optional sequence number for ordering
21
+ * - type: Event type (message, sse, tool, system, etc.)
22
+ * - payload: Event-specific data as JSON
23
+ * - meta: Metadata like timestamp, sender, etc.
24
+ * - createdAt: Event creation timestamp
25
+ */
26
+ /**
27
+ * Validation: All message events must have complete metadata
28
+ */
29
+ export function validateMessageEventMetadata(meta) {
30
+ return !!(meta &&
31
+ typeof meta.sender === 'string' &&
32
+ Array.isArray(meta.ownerAgentIds) &&
33
+ typeof meta.messageDirection === 'string' &&
34
+ typeof meta.isMemoryOnly === 'boolean' &&
35
+ typeof meta.isCrossAgentMessage === 'boolean' &&
36
+ typeof meta.isHumanMessage === 'boolean' &&
37
+ typeof meta.threadDepth === 'number' &&
38
+ typeof meta.isReply === 'boolean' &&
39
+ typeof meta.hasReplies === 'boolean' &&
40
+ typeof meta.hasToolCalls === 'boolean' &&
41
+ typeof meta.toolCallCount === 'number');
42
+ }
43
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../core/storage/eventStorage/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAoEH;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAS;IACpD,OAAO,CAAC,CAAC,CACP,IAAI;QACJ,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAC/B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QACjC,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;QACzC,OAAO,IAAI,CAAC,YAAY,KAAK,SAAS;QACtC,OAAO,IAAI,CAAC,mBAAmB,KAAK,SAAS;QAC7C,OAAO,IAAI,CAAC,cAAc,KAAK,SAAS;QACxC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;QACpC,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;QACjC,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS;QACpC,OAAO,IAAI,CAAC,YAAY,KAAK,SAAS;QACtC,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CACvC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Event Validation and Default Metadata Creation
3
+ *
4
+ * Provides strict validation for event metadata before persistence and
5
+ * default metadata creation helpers to ensure all events have complete metadata.
6
+ *
7
+ * Features:
8
+ * - validateEventForPersistence: Strict validation that throws on incomplete metadata
9
+ * - createDefaultMessageMetadata: Create safe defaults for all required fields
10
+ * - Type-safe validation with TypeScript type guards
11
+ *
12
+ * Recent Changes:
13
+ * - 2026-02-08: Removed legacy manual tool-intervention metadata defaults
14
+ *
15
+ * Implementation: 2025-11-07
16
+ * - Clean build approach - all metadata fields required from creation
17
+ * - No legacy event support - validation enforces completeness
18
+ * - Human vs agent message type detection
19
+ */
20
+ import type { StoredEvent, MessageEventMetadata } from './types.js';
21
+ /**
22
+ * Validate event before persistence
23
+ * Throws error if metadata is incomplete
24
+ */
25
+ export declare function validateEventForPersistence(event: StoredEvent): void;
26
+ /**
27
+ * Create default metadata values for required fields
28
+ */
29
+ export declare function createDefaultMessageMetadata(sender: string): MessageEventMetadata;
30
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../core/storage/eventStorage/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGpE;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAkBpE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CA0BjF"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Event Validation and Default Metadata Creation
3
+ *
4
+ * Provides strict validation for event metadata before persistence and
5
+ * default metadata creation helpers to ensure all events have complete metadata.
6
+ *
7
+ * Features:
8
+ * - validateEventForPersistence: Strict validation that throws on incomplete metadata
9
+ * - createDefaultMessageMetadata: Create safe defaults for all required fields
10
+ * - Type-safe validation with TypeScript type guards
11
+ *
12
+ * Recent Changes:
13
+ * - 2026-02-08: Removed legacy manual tool-intervention metadata defaults
14
+ *
15
+ * Implementation: 2025-11-07
16
+ * - Clean build approach - all metadata fields required from creation
17
+ * - No legacy event support - validation enforces completeness
18
+ * - Human vs agent message type detection
19
+ */
20
+ import { validateMessageEventMetadata } from './types.js';
21
+ /**
22
+ * Validate event before persistence
23
+ * Throws error if metadata is incomplete
24
+ */
25
+ export function validateEventForPersistence(event) {
26
+ if (event.type === 'message') {
27
+ if (!validateMessageEventMetadata(event.meta)) {
28
+ throw new Error(`Invalid message event metadata for event ${event.id}. ` +
29
+ `All metadata fields are required. Missing or invalid fields detected.`);
30
+ }
31
+ }
32
+ if (event.type === 'tool') {
33
+ if (!event.meta?.ownerAgentId || !event.meta?.triggeredByMessageId) {
34
+ throw new Error(`Invalid tool event metadata for event ${event.id}. ` +
35
+ `ownerAgentId and triggeredByMessageId are required.`);
36
+ }
37
+ }
38
+ }
39
+ /**
40
+ * Create default metadata values for required fields
41
+ */
42
+ export function createDefaultMessageMetadata(sender) {
43
+ const isHuman = sender === 'human' || sender === 'user';
44
+ return {
45
+ sender,
46
+ chatId: null,
47
+ ownerAgentIds: [],
48
+ recipientAgentId: null,
49
+ originalSender: null,
50
+ deliveredToAgents: [],
51
+ messageDirection: 'broadcast',
52
+ isMemoryOnly: false,
53
+ isCrossAgentMessage: false,
54
+ isHumanMessage: isHuman,
55
+ threadRootId: null,
56
+ threadDepth: 0,
57
+ isReply: false,
58
+ hasReplies: false,
59
+ llmTokensInput: null,
60
+ llmTokensOutput: null,
61
+ llmLatency: null,
62
+ llmProvider: null,
63
+ llmModel: null,
64
+ hasToolCalls: false,
65
+ toolCallCount: 0
66
+ };
67
+ }
68
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../core/storage/eventStorage/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAkB;IAC5D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,4CAA4C,KAAK,CAAC,EAAE,IAAI;gBACxD,uEAAuE,CACxE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,CAAC,EAAE,IAAI;gBACrD,qDAAqD,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAc;IACzD,MAAM,OAAO,GAAG,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,CAAC;IAExD,OAAO;QACL,MAAM;QACN,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,iBAAiB,EAAE,EAAE;QACrB,gBAAgB,EAAE,WAAW;QAC7B,YAAY,EAAE,KAAK;QACnB,mBAAmB,EAAE,KAAK;QAC1B,cAAc,EAAE,OAAO;QACvB,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,CAAC;QACd,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,CAAC;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Legacy Migration Bridge (v0-7)
3
+ *
4
+ * Purpose: Handles migration from TypeScript-based migrations to SQL-based migrations
5
+ *
6
+ * Features:
7
+ * - Detects databases using old migration system (PRAGMA user_version only)
8
+ * - Applies appropriate schema updates based on current version
9
+ * - Syncs state to new migration tracking system
10
+ * - Ensures smooth transition with zero data loss
11
+ *
12
+ * Supported Legacy Versions:
13
+ * - v0: Base schema or unversioned database
14
+ * - v1-7: Various column additions and features
15
+ *
16
+ * After running legacy migrations, database will be at v7 and ready for new SQL migrations (v8+)
17
+ *
18
+ * Implementation:
19
+ * - 2025-11-02: Initial implementation for migration system transition
20
+ */
21
+ import type { Database } from 'sqlite3';
22
+ /**
23
+ * Check if database is using legacy migration system
24
+ * Legacy databases have PRAGMA user_version but no schema_migrations table
25
+ */
26
+ export declare function isLegacyDatabase(db: Database): Promise<boolean>;
27
+ /**
28
+ * Get current version from PRAGMA user_version
29
+ */
30
+ export declare function getLegacyVersion(db: Database): Promise<number>;
31
+ /**
32
+ * Apply legacy migrations to bring database from v0-7 to v7
33
+ * This replicates the old TypeScript migration logic
34
+ */
35
+ export declare function applyLegacyMigrations(db: Database): Promise<void>;
36
+ /**
37
+ * Sync legacy database to new migration tracking system
38
+ * Creates schema_migrations table and records that v1-7 have been applied
39
+ */
40
+ export declare function syncToNewMigrationSystem(db: Database): Promise<void>;
41
+ /**
42
+ * Main function to handle legacy migration and sync
43
+ */
44
+ export declare function migrateLegacyDatabase(db: Database): Promise<void>;
45
+ //# sourceMappingURL=legacy-migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-migrations.d.ts","sourceRoot":"","sources":["../../../core/storage/legacy-migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMxC;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAgCrE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAQpE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAqLvE;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD1E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBvE"}