@elizaos/plugin-localdb 2.0.0-alpha.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 (74) hide show
  1. package/dist/browser/adapter.d.ts +157 -0
  2. package/dist/browser/adapter.d.ts.map +1 -0
  3. package/dist/browser/adapter.js +636 -0
  4. package/dist/browser/adapter.js.map +1 -0
  5. package/dist/browser/generated/specs/specs.d.ts +55 -0
  6. package/dist/browser/generated/specs/specs.d.ts.map +1 -0
  7. package/dist/browser/generated/specs/specs.js +35 -0
  8. package/dist/browser/generated/specs/specs.js.map +1 -0
  9. package/dist/browser/hnsw.d.ts +45 -0
  10. package/dist/browser/hnsw.d.ts.map +1 -0
  11. package/dist/browser/hnsw.js +291 -0
  12. package/dist/browser/hnsw.js.map +1 -0
  13. package/dist/browser/index.browser.d.ts +11 -0
  14. package/dist/browser/index.browser.d.ts.map +1 -0
  15. package/dist/browser/index.browser.js +42 -0
  16. package/dist/browser/index.browser.js.map +1 -0
  17. package/dist/browser/index.d.ts +2 -0
  18. package/dist/browser/index.d.ts.map +1 -0
  19. package/dist/browser/index.js +3 -0
  20. package/dist/browser/index.js.map +1 -0
  21. package/dist/browser/index.node.d.ts +11 -0
  22. package/dist/browser/index.node.d.ts.map +1 -0
  23. package/dist/browser/index.node.js +43 -0
  24. package/dist/browser/index.node.js.map +1 -0
  25. package/dist/browser/storage-browser.d.ts +23 -0
  26. package/dist/browser/storage-browser.d.ts.map +1 -0
  27. package/dist/browser/storage-browser.js +118 -0
  28. package/dist/browser/storage-browser.js.map +1 -0
  29. package/dist/browser/storage-node.d.ts +22 -0
  30. package/dist/browser/storage-node.d.ts.map +1 -0
  31. package/dist/browser/storage-node.js +156 -0
  32. package/dist/browser/storage-node.js.map +1 -0
  33. package/dist/browser/types.d.ts +50 -0
  34. package/dist/browser/types.d.ts.map +1 -0
  35. package/dist/browser/types.js +15 -0
  36. package/dist/browser/types.js.map +1 -0
  37. package/dist/index.d.ts +2 -0
  38. package/dist/node/adapter.d.ts +157 -0
  39. package/dist/node/adapter.d.ts.map +1 -0
  40. package/dist/node/adapter.js +636 -0
  41. package/dist/node/adapter.js.map +1 -0
  42. package/dist/node/generated/specs/specs.d.ts +55 -0
  43. package/dist/node/generated/specs/specs.d.ts.map +1 -0
  44. package/dist/node/generated/specs/specs.js +35 -0
  45. package/dist/node/generated/specs/specs.js.map +1 -0
  46. package/dist/node/hnsw.d.ts +45 -0
  47. package/dist/node/hnsw.d.ts.map +1 -0
  48. package/dist/node/hnsw.js +291 -0
  49. package/dist/node/hnsw.js.map +1 -0
  50. package/dist/node/index.browser.d.ts +11 -0
  51. package/dist/node/index.browser.d.ts.map +1 -0
  52. package/dist/node/index.browser.js +42 -0
  53. package/dist/node/index.browser.js.map +1 -0
  54. package/dist/node/index.d.ts +2 -0
  55. package/dist/node/index.d.ts.map +1 -0
  56. package/dist/node/index.js +3 -0
  57. package/dist/node/index.js.map +1 -0
  58. package/dist/node/index.node.d.ts +11 -0
  59. package/dist/node/index.node.d.ts.map +1 -0
  60. package/dist/node/index.node.js +43 -0
  61. package/dist/node/index.node.js.map +1 -0
  62. package/dist/node/storage-browser.d.ts +23 -0
  63. package/dist/node/storage-browser.d.ts.map +1 -0
  64. package/dist/node/storage-browser.js +118 -0
  65. package/dist/node/storage-browser.js.map +1 -0
  66. package/dist/node/storage-node.d.ts +22 -0
  67. package/dist/node/storage-node.d.ts.map +1 -0
  68. package/dist/node/storage-node.js +156 -0
  69. package/dist/node/storage-node.js.map +1 -0
  70. package/dist/node/types.d.ts +50 -0
  71. package/dist/node/types.d.ts.map +1 -0
  72. package/dist/node/types.js +15 -0
  73. package/dist/node/types.js.map +1 -0
  74. package/package.json +64 -0
@@ -0,0 +1,636 @@
1
+ import { DatabaseAdapter, logger, } from "@elizaos/core";
2
+ import { SimpleHNSW } from "./hnsw";
3
+ import { COLLECTIONS } from "./types";
4
+ function toMemory(stored) {
5
+ return {
6
+ id: stored.id,
7
+ entityId: stored.entityId,
8
+ agentId: stored.agentId,
9
+ createdAt: stored.createdAt,
10
+ content: stored.content,
11
+ embedding: stored.embedding,
12
+ roomId: stored.roomId,
13
+ worldId: stored.worldId,
14
+ unique: stored.unique,
15
+ similarity: stored.similarity,
16
+ metadata: stored.metadata,
17
+ };
18
+ }
19
+ function toMemories(stored) {
20
+ return stored.map(toMemory);
21
+ }
22
+ export class LocalDatabaseAdapter extends DatabaseAdapter {
23
+ storage;
24
+ vectorIndex;
25
+ embeddingDimension = 384;
26
+ ready = false;
27
+ agentId;
28
+ constructor(storage, agentId) {
29
+ super();
30
+ this.storage = storage;
31
+ this.agentId = agentId;
32
+ this.vectorIndex = new SimpleHNSW(async () => {
33
+ const index = this.vectorIndex.getIndex();
34
+ await this.storage.saveRaw("vectors/hnsw_index.json", JSON.stringify(index));
35
+ }, async () => {
36
+ const data = await this.storage.loadRaw("vectors/hnsw_index.json");
37
+ if (data) {
38
+ try {
39
+ return JSON.parse(data);
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ return null;
46
+ });
47
+ }
48
+ async initialize() {
49
+ await this.init();
50
+ }
51
+ async init() {
52
+ await this.storage.init();
53
+ await this.vectorIndex.init(this.embeddingDimension);
54
+ this.ready = true;
55
+ logger.info({ src: "plugin:localdb" }, "Local database initialized");
56
+ }
57
+ async runPluginMigrations(_plugins, _options) {
58
+ logger.debug({ src: "plugin:localdb" }, "Plugin migrations not needed for JSON storage");
59
+ }
60
+ async isReady() {
61
+ return this.ready && (await this.storage.isReady());
62
+ }
63
+ async close() {
64
+ await this.vectorIndex.save();
65
+ await this.storage.close();
66
+ this.ready = false;
67
+ logger.info({ src: "plugin:localdb" }, "Local database closed");
68
+ }
69
+ async getConnection() {
70
+ return this.storage;
71
+ }
72
+ async getAgent(agentId) {
73
+ return this.storage.get(COLLECTIONS.AGENTS, agentId);
74
+ }
75
+ async getAgents() {
76
+ return this.storage.getAll(COLLECTIONS.AGENTS);
77
+ }
78
+ async createAgent(agent) {
79
+ if (!agent.id)
80
+ return false;
81
+ await this.storage.set(COLLECTIONS.AGENTS, agent.id, agent);
82
+ return true;
83
+ }
84
+ async updateAgent(agentId, agent) {
85
+ const existing = await this.getAgent(agentId);
86
+ if (!existing)
87
+ return false;
88
+ await this.storage.set(COLLECTIONS.AGENTS, agentId, {
89
+ ...existing,
90
+ ...agent,
91
+ });
92
+ return true;
93
+ }
94
+ async deleteAgent(agentId) {
95
+ return this.storage.delete(COLLECTIONS.AGENTS, agentId);
96
+ }
97
+ async ensureEmbeddingDimension(dimension) {
98
+ if (this.embeddingDimension !== dimension) {
99
+ this.embeddingDimension = dimension;
100
+ await this.vectorIndex.init(dimension);
101
+ }
102
+ }
103
+ async getEntitiesByIds(entityIds) {
104
+ const entities = [];
105
+ for (const id of entityIds) {
106
+ const entity = await this.storage.get(COLLECTIONS.ENTITIES, id);
107
+ if (entity)
108
+ entities.push(entity);
109
+ }
110
+ return entities.length > 0 ? entities : null;
111
+ }
112
+ async getEntitiesForRoom(roomId, includeComponents = false) {
113
+ const participants = await this.storage.getWhere(COLLECTIONS.PARTICIPANTS, (p) => p.roomId === roomId);
114
+ const entityIds = participants.map((p) => p.entityId);
115
+ const entities = [];
116
+ for (const entityId of entityIds) {
117
+ const entity = await this.storage.get(COLLECTIONS.ENTITIES, entityId);
118
+ if (entity) {
119
+ if (includeComponents) {
120
+ const components = await this.getComponents(entityId);
121
+ entity.components = components;
122
+ }
123
+ entities.push(entity);
124
+ }
125
+ }
126
+ return entities;
127
+ }
128
+ async createEntities(entities) {
129
+ for (const entity of entities) {
130
+ if (!entity.id)
131
+ continue;
132
+ await this.storage.set(COLLECTIONS.ENTITIES, entity.id, entity);
133
+ }
134
+ return true;
135
+ }
136
+ async updateEntity(entity) {
137
+ if (!entity.id)
138
+ return;
139
+ await this.storage.set(COLLECTIONS.ENTITIES, entity.id, entity);
140
+ }
141
+ async getComponent(entityId, type, worldId, sourceEntityId) {
142
+ const components = await this.storage.getWhere(COLLECTIONS.COMPONENTS, (c) => c.entityId === entityId &&
143
+ c.type === type &&
144
+ (worldId === undefined || c.worldId === worldId) &&
145
+ (sourceEntityId === undefined || c.sourceEntityId === sourceEntityId));
146
+ return components[0] ?? null;
147
+ }
148
+ async getComponents(entityId, worldId, sourceEntityId) {
149
+ return this.storage.getWhere(COLLECTIONS.COMPONENTS, (c) => c.entityId === entityId &&
150
+ (worldId === undefined || c.worldId === worldId) &&
151
+ (sourceEntityId === undefined || c.sourceEntityId === sourceEntityId));
152
+ }
153
+ async createComponent(component) {
154
+ if (!component.id)
155
+ return false;
156
+ await this.storage.set(COLLECTIONS.COMPONENTS, component.id, component);
157
+ return true;
158
+ }
159
+ async updateComponent(component) {
160
+ if (!component.id)
161
+ return;
162
+ await this.storage.set(COLLECTIONS.COMPONENTS, component.id, component);
163
+ }
164
+ async deleteComponent(componentId) {
165
+ await this.storage.delete(COLLECTIONS.COMPONENTS, componentId);
166
+ }
167
+ async getMemories(params) {
168
+ let memories = await this.storage.getWhere(COLLECTIONS.MEMORIES, (m) => {
169
+ if (params.entityId && m.entityId !== params.entityId)
170
+ return false;
171
+ if (params.agentId && m.agentId !== params.agentId)
172
+ return false;
173
+ if (params.roomId && m.roomId !== params.roomId)
174
+ return false;
175
+ if (params.worldId && m.worldId !== params.worldId)
176
+ return false;
177
+ if (params.tableName && m.metadata?.type !== params.tableName)
178
+ return false;
179
+ if (params.start && m.createdAt && m.createdAt < params.start)
180
+ return false;
181
+ if (params.end && m.createdAt && m.createdAt > params.end)
182
+ return false;
183
+ if (params.unique && !m.unique)
184
+ return false;
185
+ return true;
186
+ });
187
+ memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));
188
+ if (params.offset) {
189
+ memories = memories.slice(params.offset);
190
+ }
191
+ if (params.count) {
192
+ memories = memories.slice(0, params.count);
193
+ }
194
+ return toMemories(memories);
195
+ }
196
+ async getMemoriesByRoomIds(params) {
197
+ const memories = await this.storage.getWhere(COLLECTIONS.MEMORIES, (m) => params.roomIds.includes(m.roomId) &&
198
+ (params.tableName ? m.metadata?.type === params.tableName : true));
199
+ memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));
200
+ if (params.limit) {
201
+ return toMemories(memories.slice(0, params.limit));
202
+ }
203
+ return toMemories(memories);
204
+ }
205
+ async getMemoryById(id) {
206
+ return this.storage.get(COLLECTIONS.MEMORIES, id);
207
+ }
208
+ async getMemoriesByIds(memoryIds, tableName) {
209
+ const memories = [];
210
+ for (const id of memoryIds) {
211
+ const memory = await this.storage.get(COLLECTIONS.MEMORIES, id);
212
+ if (memory) {
213
+ if (tableName && memory.metadata?.type !== tableName)
214
+ continue;
215
+ memories.push(toMemory(memory));
216
+ }
217
+ }
218
+ return memories;
219
+ }
220
+ async getCachedEmbeddings(params) {
221
+ const memories = await this.storage.getWhere(COLLECTIONS.MEMORIES, (m) => m.metadata?.type === params.query_table_name);
222
+ const results = [];
223
+ for (const memory of memories) {
224
+ if (!memory.embedding)
225
+ continue;
226
+ const memoryRecord = memory;
227
+ const fieldValue = memoryRecord[params.query_field_name];
228
+ const content = String(fieldValue ?? "");
229
+ const score = this.simpleStringScore(params.query_input, content);
230
+ if (score <= params.query_threshold) {
231
+ results.push({
232
+ embedding: memory.embedding,
233
+ levenshtein_score: score,
234
+ });
235
+ }
236
+ }
237
+ return results.slice(0, params.query_match_count);
238
+ }
239
+ simpleStringScore(a, b) {
240
+ if (a === b)
241
+ return 0;
242
+ const aLower = a.toLowerCase();
243
+ const bLower = b.toLowerCase();
244
+ if (aLower === bLower)
245
+ return 0.1;
246
+ if (aLower.includes(bLower) || bLower.includes(aLower))
247
+ return 0.3;
248
+ return 1;
249
+ }
250
+ async log(params) {
251
+ const id = crypto.randomUUID();
252
+ const log = {
253
+ id,
254
+ entityId: params.entityId,
255
+ roomId: params.roomId,
256
+ body: params.body,
257
+ type: params.type,
258
+ createdAt: new Date(),
259
+ };
260
+ await this.storage.set(COLLECTIONS.LOGS, id, log);
261
+ }
262
+ async getLogs(params) {
263
+ let logs = await this.storage.getWhere(COLLECTIONS.LOGS, (l) => {
264
+ if (params.entityId && l.entityId !== params.entityId)
265
+ return false;
266
+ if (params.roomId && l.roomId !== params.roomId)
267
+ return false;
268
+ if (params.type && l.type !== params.type)
269
+ return false;
270
+ return true;
271
+ });
272
+ logs.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
273
+ if (params.offset) {
274
+ logs = logs.slice(params.offset);
275
+ }
276
+ if (params.count) {
277
+ logs = logs.slice(0, params.count);
278
+ }
279
+ return logs;
280
+ }
281
+ async deleteLog(logId) {
282
+ await this.storage.delete(COLLECTIONS.LOGS, logId);
283
+ }
284
+ async searchMemories(params) {
285
+ const threshold = params.match_threshold ?? 0.5;
286
+ const count = params.count ?? 10;
287
+ const results = await this.vectorIndex.search(params.embedding, count * 2, threshold);
288
+ const memories = [];
289
+ for (const result of results) {
290
+ const memory = await this.storage.get(COLLECTIONS.MEMORIES, result.id);
291
+ if (!memory)
292
+ continue;
293
+ if (params.tableName && memory.metadata?.type !== params.tableName)
294
+ continue;
295
+ if (params.roomId && memory.roomId !== params.roomId)
296
+ continue;
297
+ if (params.worldId && memory.worldId !== params.worldId)
298
+ continue;
299
+ if (params.entityId && memory.entityId !== params.entityId)
300
+ continue;
301
+ if (params.unique && !memory.unique)
302
+ continue;
303
+ memories.push({
304
+ ...toMemory(memory),
305
+ similarity: result.similarity,
306
+ });
307
+ }
308
+ return memories.slice(0, count);
309
+ }
310
+ async createMemory(memory, tableName, unique = false) {
311
+ const id = memory.id ?? crypto.randomUUID();
312
+ const now = Date.now();
313
+ const storedMemory = {
314
+ ...memory,
315
+ id,
316
+ agentId: memory.agentId ?? this.agentId,
317
+ unique: unique || memory.unique,
318
+ createdAt: memory.createdAt ?? now,
319
+ metadata: {
320
+ ...memory.metadata,
321
+ type: tableName,
322
+ },
323
+ };
324
+ await this.storage.set(COLLECTIONS.MEMORIES, id, storedMemory);
325
+ if (memory.embedding && memory.embedding.length > 0) {
326
+ await this.vectorIndex.add(id, memory.embedding);
327
+ await this.vectorIndex.save();
328
+ }
329
+ return id;
330
+ }
331
+ async updateMemory(memory) {
332
+ const existing = await this.getMemoryById(memory.id);
333
+ if (!existing)
334
+ return false;
335
+ const updated = {
336
+ ...existing,
337
+ ...memory,
338
+ metadata: {
339
+ ...existing.metadata,
340
+ ...memory.metadata,
341
+ },
342
+ };
343
+ await this.storage.set(COLLECTIONS.MEMORIES, memory.id, updated);
344
+ if (memory.embedding && memory.embedding.length > 0) {
345
+ await this.vectorIndex.add(memory.id, memory.embedding);
346
+ await this.vectorIndex.save();
347
+ }
348
+ return true;
349
+ }
350
+ async deleteMemory(memoryId) {
351
+ await this.storage.delete(COLLECTIONS.MEMORIES, memoryId);
352
+ await this.vectorIndex.remove(memoryId);
353
+ await this.vectorIndex.save();
354
+ }
355
+ async deleteManyMemories(memoryIds) {
356
+ for (const id of memoryIds) {
357
+ await this.deleteMemory(id);
358
+ }
359
+ }
360
+ async deleteAllMemories(roomId, tableName) {
361
+ const memories = await this.getMemories({ roomId, tableName });
362
+ await this.deleteManyMemories(memories.map((m) => m.id).filter((id) => id !== undefined));
363
+ }
364
+ async countMemories(roomId, unique = false, tableName) {
365
+ return this.storage.count(COLLECTIONS.MEMORIES, (memory) => {
366
+ if (memory.roomId !== roomId)
367
+ return false;
368
+ if (unique && !memory.unique)
369
+ return false;
370
+ if (tableName && memory.metadata?.type !== tableName)
371
+ return false;
372
+ return true;
373
+ });
374
+ }
375
+ async getMemoriesByWorldId(params) {
376
+ const memories = await this.storage.getWhere(COLLECTIONS.MEMORIES, (m) => m.worldId === params.worldId &&
377
+ (params.tableName ? m.metadata?.type === params.tableName : true));
378
+ memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));
379
+ if (params.count) {
380
+ return toMemories(memories.slice(0, params.count));
381
+ }
382
+ return toMemories(memories);
383
+ }
384
+ async createWorld(world) {
385
+ const id = world.id ?? crypto.randomUUID();
386
+ await this.storage.set(COLLECTIONS.WORLDS, id, { ...world, id });
387
+ return id;
388
+ }
389
+ async getWorld(id) {
390
+ return this.storage.get(COLLECTIONS.WORLDS, id);
391
+ }
392
+ async removeWorld(id) {
393
+ await this.storage.delete(COLLECTIONS.WORLDS, id);
394
+ }
395
+ async getAllWorlds() {
396
+ return this.storage.getAll(COLLECTIONS.WORLDS);
397
+ }
398
+ async updateWorld(world) {
399
+ if (!world.id)
400
+ return;
401
+ await this.storage.set(COLLECTIONS.WORLDS, world.id, world);
402
+ }
403
+ async getRoomsByIds(roomIds) {
404
+ const rooms = [];
405
+ for (const id of roomIds) {
406
+ const room = await this.storage.get(COLLECTIONS.ROOMS, id);
407
+ if (room)
408
+ rooms.push(room);
409
+ }
410
+ return rooms.length > 0 ? rooms : null;
411
+ }
412
+ async createRooms(rooms) {
413
+ const ids = [];
414
+ for (const room of rooms) {
415
+ const id = room.id ?? crypto.randomUUID();
416
+ await this.storage.set(COLLECTIONS.ROOMS, id, { ...room, id });
417
+ ids.push(id);
418
+ }
419
+ return ids;
420
+ }
421
+ async deleteRoom(roomId) {
422
+ await this.storage.delete(COLLECTIONS.ROOMS, roomId);
423
+ await this.storage.deleteWhere(COLLECTIONS.PARTICIPANTS, (p) => p.roomId === roomId);
424
+ await this.storage.deleteWhere(COLLECTIONS.MEMORIES, (m) => m.roomId === roomId);
425
+ }
426
+ async deleteRoomsByWorldId(worldId) {
427
+ const rooms = await this.getRoomsByWorld(worldId);
428
+ for (const room of rooms) {
429
+ if (room.id) {
430
+ await this.deleteRoom(room.id);
431
+ }
432
+ }
433
+ }
434
+ async updateRoom(room) {
435
+ if (!room.id)
436
+ return;
437
+ await this.storage.set(COLLECTIONS.ROOMS, room.id, room);
438
+ }
439
+ async getRoomsForParticipant(entityId) {
440
+ const participants = await this.storage.getWhere(COLLECTIONS.PARTICIPANTS, (p) => p.entityId === entityId);
441
+ return participants.map((p) => p.roomId);
442
+ }
443
+ async getRoomsForParticipants(userIds) {
444
+ const participants = await this.storage.getWhere(COLLECTIONS.PARTICIPANTS, (p) => userIds.includes(p.entityId));
445
+ return [...new Set(participants.map((p) => p.roomId))];
446
+ }
447
+ async getRoomsByWorld(worldId) {
448
+ return this.storage.getWhere(COLLECTIONS.ROOMS, (r) => r.worldId === worldId);
449
+ }
450
+ async removeParticipant(entityId, roomId) {
451
+ const participants = await this.storage.getWhere(COLLECTIONS.PARTICIPANTS, (p) => p.entityId === entityId && p.roomId === roomId);
452
+ if (participants.length === 0)
453
+ return false;
454
+ for (const p of participants) {
455
+ if (p.id) {
456
+ await this.storage.delete(COLLECTIONS.PARTICIPANTS, p.id);
457
+ }
458
+ }
459
+ return true;
460
+ }
461
+ async getParticipantsForEntity(entityId) {
462
+ const stored = await this.storage.getWhere(COLLECTIONS.PARTICIPANTS, (p) => p.entityId === entityId);
463
+ const participants = [];
464
+ for (const p of stored) {
465
+ const entity = await this.storage.get(COLLECTIONS.ENTITIES, p.entityId);
466
+ if (entity) {
467
+ participants.push({
468
+ id: p.id,
469
+ entity,
470
+ });
471
+ }
472
+ }
473
+ return participants;
474
+ }
475
+ async getParticipantsForRoom(roomId) {
476
+ const participants = await this.storage.getWhere(COLLECTIONS.PARTICIPANTS, (p) => p.roomId === roomId);
477
+ return participants.map((p) => p.entityId);
478
+ }
479
+ async isRoomParticipant(roomId, entityId) {
480
+ const participants = await this.storage.getWhere(COLLECTIONS.PARTICIPANTS, (p) => p.roomId === roomId && p.entityId === entityId);
481
+ return participants.length > 0;
482
+ }
483
+ async addParticipantsRoom(entityIds, roomId) {
484
+ for (const entityId of entityIds) {
485
+ const exists = await this.isRoomParticipant(roomId, entityId);
486
+ if (!exists) {
487
+ const id = crypto.randomUUID();
488
+ const participant = {
489
+ id,
490
+ entityId,
491
+ roomId,
492
+ };
493
+ await this.storage.set(COLLECTIONS.PARTICIPANTS, id, participant);
494
+ }
495
+ }
496
+ return true;
497
+ }
498
+ async getParticipantUserState(roomId, entityId) {
499
+ const participants = await this.storage.getWhere(COLLECTIONS.PARTICIPANTS, (p) => p.roomId === roomId && p.entityId === entityId);
500
+ if (participants.length === 0)
501
+ return null;
502
+ const state = participants[0].userState;
503
+ if (state === "FOLLOWED" || state === "MUTED")
504
+ return state;
505
+ return null;
506
+ }
507
+ async setParticipantUserState(roomId, entityId, state) {
508
+ const participants = await this.storage.getWhere(COLLECTIONS.PARTICIPANTS, (p) => p.roomId === roomId && p.entityId === entityId);
509
+ for (const p of participants) {
510
+ if (p.id) {
511
+ await this.storage.set(COLLECTIONS.PARTICIPANTS, p.id, {
512
+ ...p,
513
+ userState: state,
514
+ });
515
+ }
516
+ }
517
+ }
518
+ async createRelationship(params) {
519
+ const id = crypto.randomUUID();
520
+ const relationship = {
521
+ id,
522
+ sourceEntityId: params.sourceEntityId,
523
+ targetEntityId: params.targetEntityId,
524
+ agentId: this.agentId,
525
+ tags: params.tags ?? [],
526
+ metadata: params.metadata ?? {},
527
+ createdAt: new Date().toISOString(),
528
+ };
529
+ await this.storage.set(COLLECTIONS.RELATIONSHIPS, id, relationship);
530
+ return true;
531
+ }
532
+ async getRelationship(params) {
533
+ const relationships = await this.storage.getWhere(COLLECTIONS.RELATIONSHIPS, (r) => r.sourceEntityId === params.sourceEntityId && r.targetEntityId === params.targetEntityId);
534
+ if (relationships.length === 0)
535
+ return null;
536
+ const r = relationships[0];
537
+ return {
538
+ id: r.id,
539
+ sourceEntityId: r.sourceEntityId,
540
+ targetEntityId: r.targetEntityId,
541
+ agentId: r.agentId ?? this.agentId,
542
+ tags: r.tags ?? [],
543
+ metadata: r.metadata ?? {},
544
+ createdAt: r.createdAt,
545
+ };
546
+ }
547
+ async getRelationships(params) {
548
+ const stored = await this.storage.getWhere(COLLECTIONS.RELATIONSHIPS, (r) => {
549
+ const isInvolved = r.sourceEntityId === params.entityId || r.targetEntityId === params.entityId;
550
+ if (!isInvolved)
551
+ return false;
552
+ if (params.tags && params.tags.length > 0) {
553
+ return params.tags.some((tag) => r.tags?.includes(tag));
554
+ }
555
+ return true;
556
+ });
557
+ return stored.map((r) => ({
558
+ id: r.id,
559
+ sourceEntityId: r.sourceEntityId,
560
+ targetEntityId: r.targetEntityId,
561
+ agentId: r.agentId ?? this.agentId,
562
+ tags: r.tags ?? [],
563
+ metadata: r.metadata ?? {},
564
+ createdAt: r.createdAt,
565
+ }));
566
+ }
567
+ async updateRelationship(relationship) {
568
+ const existing = await this.getRelationship({
569
+ sourceEntityId: relationship.sourceEntityId,
570
+ targetEntityId: relationship.targetEntityId,
571
+ });
572
+ if (!existing || !existing.id)
573
+ return;
574
+ const stored = {
575
+ id: existing.id,
576
+ sourceEntityId: relationship.sourceEntityId,
577
+ targetEntityId: relationship.targetEntityId,
578
+ agentId: relationship.agentId,
579
+ tags: relationship.tags ?? existing.tags ?? [],
580
+ metadata: { ...(existing.metadata ?? {}), ...(relationship.metadata ?? {}) },
581
+ createdAt: existing.createdAt ?? new Date().toISOString(),
582
+ };
583
+ await this.storage.set(COLLECTIONS.RELATIONSHIPS, existing.id, stored);
584
+ }
585
+ async getCache(key) {
586
+ const cached = await this.storage.get(COLLECTIONS.CACHE, key);
587
+ if (!cached)
588
+ return undefined;
589
+ if (cached.expiresAt && Date.now() > cached.expiresAt) {
590
+ await this.deleteCache(key);
591
+ return undefined;
592
+ }
593
+ return cached.value;
594
+ }
595
+ async setCache(key, value) {
596
+ await this.storage.set(COLLECTIONS.CACHE, key, { value });
597
+ return true;
598
+ }
599
+ async deleteCache(key) {
600
+ return this.storage.delete(COLLECTIONS.CACHE, key);
601
+ }
602
+ async createTask(task) {
603
+ const id = task.id ?? crypto.randomUUID();
604
+ await this.storage.set(COLLECTIONS.TASKS, id, { ...task, id });
605
+ return id;
606
+ }
607
+ async getTasks(params) {
608
+ return this.storage.getWhere(COLLECTIONS.TASKS, (t) => {
609
+ if (params.roomId && t.roomId !== params.roomId)
610
+ return false;
611
+ if (params.entityId && t.entityId !== params.entityId)
612
+ return false;
613
+ if (params.tags && params.tags.length > 0) {
614
+ if (!t.tags?.some((tag) => params.tags?.includes(tag)))
615
+ return false;
616
+ }
617
+ return true;
618
+ });
619
+ }
620
+ async getTask(id) {
621
+ return this.storage.get(COLLECTIONS.TASKS, id);
622
+ }
623
+ async getTasksByName(name) {
624
+ return this.storage.getWhere(COLLECTIONS.TASKS, (t) => t.name === name);
625
+ }
626
+ async updateTask(id, task) {
627
+ const existing = await this.getTask(id);
628
+ if (!existing)
629
+ return;
630
+ await this.storage.set(COLLECTIONS.TASKS, id, { ...existing, ...task });
631
+ }
632
+ async deleteTask(id) {
633
+ await this.storage.delete(COLLECTIONS.TASKS, id);
634
+ }
635
+ }
636
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../adapter.ts"],"names":[],"mappings":"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"}