@elizaos/plugin-inmemorydb 2.0.0-alpha.2 → 2.0.0-alpha.3
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.
- package/dist/browser/adapter.d.ts +8 -1
- package/dist/browser/adapter.d.ts.map +1 -1
- package/dist/browser/index.js +35 -2
- package/dist/browser/index.js.map +4 -4
- package/dist/browser/types.d.ts +2 -0
- package/dist/browser/types.d.ts.map +1 -1
- package/dist/node/index.js +35 -2
- package/dist/node/index.js.map +4 -4
- package/package.json +14 -3
- package/LICENSE +0 -21
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Agent, type Component, DatabaseAdapter, type Entity, type Log, type LogBody, type Memory, type MemoryMetadata, type Metadata, type Participant, type Relationship, type Room, type Task, type UUID, type World } from "@elizaos/core";
|
|
1
|
+
import { type Agent, type Component, DatabaseAdapter, type Entity, type Log, type LogBody, type Memory, type MemoryMetadata, type Metadata, type PairingAllowlistEntry, type PairingChannel, type PairingRequest, type Participant, type Relationship, type Room, type Task, type UUID, type World } from "@elizaos/core";
|
|
2
2
|
import { type IStorage } from "./types";
|
|
3
3
|
export declare class InMemoryDatabaseAdapter extends DatabaseAdapter<IStorage> {
|
|
4
4
|
private storage;
|
|
@@ -153,5 +153,12 @@ export declare class InMemoryDatabaseAdapter extends DatabaseAdapter<IStorage> {
|
|
|
153
153
|
getTasksByName(name: string): Promise<Task[]>;
|
|
154
154
|
updateTask(id: UUID, task: Partial<Task>): Promise<void>;
|
|
155
155
|
deleteTask(id: UUID): Promise<void>;
|
|
156
|
+
getPairingRequests(channel: PairingChannel, agentId: UUID): Promise<PairingRequest[]>;
|
|
157
|
+
createPairingRequest(request: PairingRequest): Promise<UUID>;
|
|
158
|
+
updatePairingRequest(request: PairingRequest): Promise<void>;
|
|
159
|
+
deletePairingRequest(id: UUID): Promise<void>;
|
|
160
|
+
getPairingAllowlist(channel: PairingChannel, agentId: UUID): Promise<PairingAllowlistEntry[]>;
|
|
161
|
+
createPairingAllowlistEntry(entry: PairingAllowlistEntry): Promise<UUID>;
|
|
162
|
+
deletePairingAllowlistEntry(id: UUID): Promise<void>;
|
|
156
163
|
}
|
|
157
164
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/index.js
CHANGED
|
@@ -250,7 +250,9 @@ var COLLECTIONS = {
|
|
|
250
250
|
TASKS: "tasks",
|
|
251
251
|
CACHE: "cache",
|
|
252
252
|
LOGS: "logs",
|
|
253
|
-
EMBEDDINGS: "embeddings"
|
|
253
|
+
EMBEDDINGS: "embeddings",
|
|
254
|
+
PAIRING_REQUESTS: "pairing_requests",
|
|
255
|
+
PAIRING_ALLOWLIST: "pairing_allowlist"
|
|
254
256
|
};
|
|
255
257
|
|
|
256
258
|
// typescript/adapter.ts
|
|
@@ -863,6 +865,37 @@ class InMemoryDatabaseAdapter extends DatabaseAdapter {
|
|
|
863
865
|
async deleteTask(id) {
|
|
864
866
|
await this.storage.delete(COLLECTIONS.TASKS, id);
|
|
865
867
|
}
|
|
868
|
+
async getPairingRequests(channel, agentId) {
|
|
869
|
+
return this.storage.getWhere(COLLECTIONS.PAIRING_REQUESTS, (r) => r.channel === channel && r.agentId === agentId);
|
|
870
|
+
}
|
|
871
|
+
async createPairingRequest(request) {
|
|
872
|
+
const id = request.id ?? crypto.randomUUID();
|
|
873
|
+
await this.storage.set(COLLECTIONS.PAIRING_REQUESTS, id, { ...request, id });
|
|
874
|
+
return id;
|
|
875
|
+
}
|
|
876
|
+
async updatePairingRequest(request) {
|
|
877
|
+
const existing = await this.storage.get(COLLECTIONS.PAIRING_REQUESTS, request.id);
|
|
878
|
+
if (existing) {
|
|
879
|
+
await this.storage.set(COLLECTIONS.PAIRING_REQUESTS, request.id, {
|
|
880
|
+
...existing,
|
|
881
|
+
...request
|
|
882
|
+
});
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
async deletePairingRequest(id) {
|
|
886
|
+
await this.storage.delete(COLLECTIONS.PAIRING_REQUESTS, id);
|
|
887
|
+
}
|
|
888
|
+
async getPairingAllowlist(channel, agentId) {
|
|
889
|
+
return this.storage.getWhere(COLLECTIONS.PAIRING_ALLOWLIST, (e) => e.channel === channel && e.agentId === agentId);
|
|
890
|
+
}
|
|
891
|
+
async createPairingAllowlistEntry(entry) {
|
|
892
|
+
const id = entry.id ?? crypto.randomUUID();
|
|
893
|
+
await this.storage.set(COLLECTIONS.PAIRING_ALLOWLIST, id, { ...entry, id });
|
|
894
|
+
return id;
|
|
895
|
+
}
|
|
896
|
+
async deletePairingAllowlistEntry(id) {
|
|
897
|
+
await this.storage.delete(COLLECTIONS.PAIRING_ALLOWLIST, id);
|
|
898
|
+
}
|
|
866
899
|
}
|
|
867
900
|
|
|
868
901
|
// typescript/storage-memory.ts
|
|
@@ -985,5 +1018,5 @@ export {
|
|
|
985
1018
|
COLLECTIONS
|
|
986
1019
|
};
|
|
987
1020
|
|
|
988
|
-
//# debugId=
|
|
1021
|
+
//# debugId=A96220E613784BE464756E2164756E21
|
|
989
1022
|
//# sourceMappingURL=index.js.map
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"sources": ["../../index.ts", "../../adapter.ts", "../../hnsw.ts", "../../types.ts", "../../storage-memory.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import {\n type IAgentRuntime,\n type IDatabaseAdapter,\n logger,\n type Plugin,\n type UUID,\n} from \"@elizaos/core\";\nimport { InMemoryDatabaseAdapter } from \"./adapter\";\nimport { MemoryStorage } from \"./storage-memory\";\n\nconst GLOBAL_SINGLETONS = Symbol.for(\"@elizaos/plugin-inmemorydb/global-singletons\");\ntype GlobalSymbols = typeof globalThis & {\n [GLOBAL_SINGLETONS]?: {\n storageManager?: MemoryStorage;\n };\n};\nconst globalSymbols: GlobalSymbols = globalThis as GlobalSymbols;\n\nif (!globalSymbols[GLOBAL_SINGLETONS]) {\n globalSymbols[GLOBAL_SINGLETONS] = {};\n}\nconst globalSingletons = globalSymbols[GLOBAL_SINGLETONS];\n\nexport function createDatabaseAdapter(agentId: UUID): IDatabaseAdapter {\n if (!globalSingletons.storageManager) {\n globalSingletons.storageManager = new MemoryStorage();\n }\n\n return new InMemoryDatabaseAdapter(globalSingletons.storageManager, agentId);\n}\n\nexport const plugin: Plugin = {\n name: \"@elizaos/plugin-inmemorydb\",\n description: \"Pure in-memory, ephemeral database storage for elizaOS - no persistence\",\n\n async init(_config: Record<string, string>, runtime: IAgentRuntime): Promise<void> {\n logger.info({ src: \"plugin:inmemorydb\" }, \"Initializing in-memory database plugin\");\n\n interface RuntimeWithAdapter {\n adapter?: IDatabaseAdapter;\n hasDatabaseAdapter?: () => boolean;\n getDatabaseAdapter?: () => IDatabaseAdapter | undefined;\n databaseAdapter?: IDatabaseAdapter;\n }\n const runtimeWithAdapter = runtime as RuntimeWithAdapter;\n\n const hasAdapter =\n runtimeWithAdapter.adapter !== undefined ||\n runtimeWithAdapter.databaseAdapter !== undefined ||\n (runtimeWithAdapter.hasDatabaseAdapter?.() ?? false);\n\n if (hasAdapter) {\n logger.debug(\n { src: \"plugin:inmemorydb\" },\n \"Database adapter already exists, skipping initialization\"\n );\n return;\n }\n\n const adapter = createDatabaseAdapter(runtime.agentId);\n\n await adapter.init();\n runtime.registerDatabaseAdapter(adapter);\n\n logger.success(\n { src: \"plugin:inmemorydb\" },\n \"In-memory database adapter registered successfully\"\n );\n },\n};\n\nexport { InMemoryDatabaseAdapter } from \"./adapter\";\nexport { EphemeralHNSW } from \"./hnsw\";\nexport { MemoryStorage } from \"./storage-memory\";\nexport * from \"./types\";\n\nexport default plugin;\n",
|
|
6
|
-
"import {\n type Agent,\n type Component,\n type Content,\n DatabaseAdapter,\n type Entity,\n type Log,\n type LogBody,\n logger,\n type Memory,\n type MemoryMetadata,\n type MemoryTypeAlias,\n type Metadata,\n type Participant,\n type Relationship,\n type Room,\n type Task,\n type UUID,\n type World,\n} from \"@elizaos/core\";\nimport { EphemeralHNSW } from \"./hnsw\";\nimport { COLLECTIONS, type IStorage } from \"./types\";\n\ninterface StoredParticipant {\n id: string;\n entityId: string;\n roomId: string;\n userState?: \"FOLLOWED\" | \"MUTED\" | null;\n}\n\ninterface StoredMemory {\n id?: string;\n entityId: string;\n agentId?: string;\n createdAt?: number;\n content: Content;\n embedding?: number[];\n roomId: string;\n worldId?: string;\n unique?: boolean;\n similarity?: number;\n metadata?: MemoryMetadata;\n}\n\nfunction toMemory(stored: StoredMemory): Memory {\n return {\n id: stored.id as UUID | undefined,\n entityId: stored.entityId as UUID,\n agentId: stored.agentId as UUID | undefined,\n createdAt: stored.createdAt,\n content: stored.content as Content,\n embedding: stored.embedding,\n roomId: stored.roomId as UUID,\n worldId: stored.worldId as UUID | undefined,\n unique: stored.unique,\n similarity: stored.similarity,\n metadata: stored.metadata as MemoryMetadata | undefined,\n };\n}\n\nfunction toMemories(stored: StoredMemory[]): Memory[] {\n return stored.map(toMemory);\n}\n\ninterface StoredRelationship {\n id: string;\n sourceEntityId: string;\n targetEntityId: string;\n agentId?: string;\n tags?: string[];\n metadata?: Metadata;\n createdAt?: string;\n}\n\nexport class InMemoryDatabaseAdapter extends DatabaseAdapter<IStorage> {\n private storage: IStorage;\n private vectorIndex: EphemeralHNSW;\n private embeddingDimension = 384;\n private ready = false;\n private agentId: UUID;\n\n constructor(storage: IStorage, agentId: UUID) {\n super();\n this.storage = storage;\n this.agentId = agentId;\n this.db = storage;\n this.vectorIndex = new EphemeralHNSW();\n }\n\n async initialize(): Promise<void> {\n await this.init();\n }\n\n async init(): Promise<void> {\n await this.storage.init();\n await this.vectorIndex.init(this.embeddingDimension);\n this.ready = true;\n logger.info({ src: \"plugin:inmemorydb\" }, \"In-memory database initialized\");\n }\n\n async runPluginMigrations(\n _plugins: Array<{ name: string; schema?: Record<string, unknown> }>,\n _options?: { verbose?: boolean; force?: boolean; dryRun?: boolean }\n ): Promise<void> {\n logger.debug(\n { src: \"plugin:inmemorydb\" },\n \"Plugin migrations not needed for in-memory storage\"\n );\n }\n\n async isReady(): Promise<boolean> {\n return this.ready && (await this.storage.isReady());\n }\n\n async close(): Promise<void> {\n await this.vectorIndex.clear();\n await this.storage.close();\n this.ready = false;\n logger.info({ src: \"plugin:inmemorydb\" }, \"In-memory database closed\");\n }\n\n async getConnection(): Promise<IStorage> {\n return this.storage;\n }\n\n async getAgent(agentId: UUID): Promise<Agent | null> {\n return this.storage.get<Agent>(COLLECTIONS.AGENTS, agentId);\n }\n\n async getAgents(): Promise<Partial<Agent>[]> {\n return this.storage.getAll<Agent>(COLLECTIONS.AGENTS);\n }\n\n async createAgent(agent: Partial<Agent>): Promise<boolean> {\n if (!agent.id) return false;\n await this.storage.set(COLLECTIONS.AGENTS, agent.id, agent);\n return true;\n }\n\n async updateAgent(agentId: UUID, agent: Partial<Agent>): Promise<boolean> {\n const existing = await this.getAgent(agentId);\n if (!existing) return false;\n await this.storage.set(COLLECTIONS.AGENTS, agentId, {\n ...existing,\n ...agent,\n });\n return true;\n }\n\n async deleteAgent(agentId: UUID): Promise<boolean> {\n return this.storage.delete(COLLECTIONS.AGENTS, agentId);\n }\n\n async ensureEmbeddingDimension(dimension: number): Promise<void> {\n if (this.embeddingDimension !== dimension) {\n this.embeddingDimension = dimension;\n await this.vectorIndex.init(dimension);\n }\n }\n\n async getEntitiesByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n const entities: Entity[] = [];\n for (const id of entityIds) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, id);\n if (entity) entities.push(entity);\n }\n return entities.length > 0 ? entities : null;\n }\n\n async getEntitiesForRoom(roomId: UUID, includeComponents = false): Promise<Entity[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n\n const entityIds = participants.map((p) => p.entityId);\n const entities: Entity[] = [];\n\n for (const entityId of entityIds) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, entityId);\n if (entity) {\n if (includeComponents) {\n const components = await this.getComponents(entityId as UUID);\n (entity as Entity & { components?: Component[] }).components = components;\n }\n entities.push(entity);\n }\n }\n\n return entities;\n }\n\n async createEntities(entities: Entity[]): Promise<boolean> {\n for (const entity of entities) {\n if (!entity.id) continue;\n await this.storage.set(COLLECTIONS.ENTITIES, entity.id, entity);\n }\n return true;\n }\n\n async updateEntity(entity: Entity): Promise<void> {\n if (!entity.id) return;\n await this.storage.set(COLLECTIONS.ENTITIES, entity.id, entity);\n }\n\n async getComponent(\n entityId: UUID,\n type: string,\n worldId?: UUID,\n sourceEntityId?: UUID\n ): Promise<Component | null> {\n const components = await this.storage.getWhere<Component>(\n COLLECTIONS.COMPONENTS,\n (c) =>\n c.entityId === entityId &&\n c.type === type &&\n (worldId === undefined || c.worldId === worldId) &&\n (sourceEntityId === undefined || c.sourceEntityId === sourceEntityId)\n );\n return components[0] ?? null;\n }\n\n async getComponents(entityId: UUID, worldId?: UUID, sourceEntityId?: UUID): Promise<Component[]> {\n return this.storage.getWhere<Component>(\n COLLECTIONS.COMPONENTS,\n (c) =>\n c.entityId === entityId &&\n (worldId === undefined || c.worldId === worldId) &&\n (sourceEntityId === undefined || c.sourceEntityId === sourceEntityId)\n );\n }\n\n async createComponent(component: Component): Promise<boolean> {\n if (!component.id) return false;\n await this.storage.set(COLLECTIONS.COMPONENTS, component.id, component);\n return true;\n }\n\n async updateComponent(component: Component): Promise<void> {\n if (!component.id) return;\n await this.storage.set(COLLECTIONS.COMPONENTS, component.id, component);\n }\n\n async deleteComponent(componentId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.COMPONENTS, componentId);\n }\n\n async getMemories(params: {\n entityId?: UUID;\n agentId?: UUID;\n count?: number;\n offset?: number;\n unique?: boolean;\n tableName: string;\n start?: number;\n end?: number;\n roomId?: UUID;\n worldId?: UUID;\n }): Promise<Memory[]> {\n let memories = await this.storage.getWhere<StoredMemory>(COLLECTIONS.MEMORIES, (m) => {\n if (params.entityId && m.entityId !== params.entityId) return false;\n if (params.agentId && m.agentId !== params.agentId) return false;\n if (params.roomId && m.roomId !== params.roomId) return false;\n if (params.worldId && m.worldId !== params.worldId) return false;\n if (params.tableName && m.metadata?.type !== params.tableName) return false;\n if (params.start && m.createdAt && m.createdAt < params.start) return false;\n if (params.end && m.createdAt && m.createdAt > params.end) return false;\n if (params.unique && !m.unique) return false;\n return true;\n });\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.offset) {\n memories = memories.slice(params.offset);\n }\n if (params.count) {\n memories = memories.slice(0, params.count);\n }\n\n return toMemories(memories);\n }\n\n async getMemoriesByRoomIds(params: {\n roomIds: UUID[];\n tableName: string;\n limit?: number;\n }): Promise<Memory[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) =>\n params.roomIds.includes(m.roomId as UUID) &&\n (params.tableName ? m.metadata?.type === params.tableName : true)\n );\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.limit) {\n return toMemories(memories.slice(0, params.limit));\n }\n return toMemories(memories);\n }\n\n async getMemoryById(id: UUID): Promise<Memory | null> {\n return this.storage.get<Memory>(COLLECTIONS.MEMORIES, id);\n }\n\n async getMemoriesByIds(memoryIds: UUID[], tableName?: string): Promise<Memory[]> {\n const memories: Memory[] = [];\n for (const id of memoryIds) {\n const memory = await this.storage.get<StoredMemory>(COLLECTIONS.MEMORIES, id);\n if (memory) {\n if (tableName && memory.metadata?.type !== tableName) continue;\n memories.push(toMemory(memory));\n }\n }\n return memories;\n }\n\n async getCachedEmbeddings(params: {\n query_table_name: string;\n query_threshold: number;\n query_input: string;\n query_field_name: string;\n query_field_sub_name: string;\n query_match_count: number;\n }): Promise<{ embedding: number[]; levenshtein_score: number }[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) => m.metadata?.type === params.query_table_name\n );\n\n const results: { embedding: number[]; levenshtein_score: number }[] = [];\n\n for (const memory of memories) {\n if (!memory.embedding) continue;\n\n const memoryRecord = memory as StoredMemory & Record<string, unknown>;\n const fieldValue = memoryRecord[params.query_field_name];\n const content = String(fieldValue ?? \"\");\n const score = this.simpleStringScore(params.query_input, content);\n\n if (score <= params.query_threshold) {\n results.push({\n embedding: memory.embedding,\n levenshtein_score: score,\n });\n }\n }\n\n return results.slice(0, params.query_match_count);\n }\n\n private simpleStringScore(a: string, b: string): number {\n if (a === b) return 0;\n const aLower = a.toLowerCase();\n const bLower = b.toLowerCase();\n if (aLower === bLower) return 0.1;\n if (aLower.includes(bLower) || bLower.includes(aLower)) return 0.3;\n return 1;\n }\n\n async log(params: { body: LogBody; entityId: UUID; roomId: UUID; type: string }): Promise<void> {\n const id = crypto.randomUUID() as UUID;\n const log: Log = {\n id,\n entityId: params.entityId,\n roomId: params.roomId,\n body: params.body,\n type: params.type,\n createdAt: new Date(),\n };\n await this.storage.set(COLLECTIONS.LOGS, id, log);\n }\n\n async getLogs(params: {\n entityId?: UUID;\n roomId?: UUID;\n type?: string;\n count?: number;\n offset?: number;\n }): Promise<Log[]> {\n let logs = await this.storage.getWhere<Log>(COLLECTIONS.LOGS, (l) => {\n if (params.entityId && l.entityId !== params.entityId) return false;\n if (params.roomId && l.roomId !== params.roomId) return false;\n if (params.type && l.type !== params.type) return false;\n return true;\n });\n\n logs.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());\n\n if (params.offset) {\n logs = logs.slice(params.offset);\n }\n if (params.count) {\n logs = logs.slice(0, params.count);\n }\n\n return logs;\n }\n\n async deleteLog(logId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.LOGS, logId);\n }\n\n async searchMemories(params: {\n tableName: string;\n embedding: number[];\n match_threshold?: number;\n count?: number;\n unique?: boolean;\n query?: string;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n }): Promise<Memory[]> {\n const threshold = params.match_threshold ?? 0.5;\n const count = params.count ?? 10;\n\n const results = await this.vectorIndex.search(params.embedding, count * 2, threshold);\n\n const memories: Memory[] = [];\n for (const result of results) {\n const memory = await this.storage.get<StoredMemory>(COLLECTIONS.MEMORIES, result.id);\n if (!memory) continue;\n\n if (params.tableName && memory.metadata?.type !== params.tableName) continue;\n if (params.roomId && memory.roomId !== params.roomId) continue;\n if (params.worldId && memory.worldId !== params.worldId) continue;\n if (params.entityId && memory.entityId !== params.entityId) continue;\n if (params.unique && !memory.unique) continue;\n\n memories.push({\n ...toMemory(memory),\n similarity: result.similarity,\n });\n }\n\n return memories.slice(0, count);\n }\n\n async createMemory(memory: Memory, tableName: string, unique = false): Promise<UUID> {\n const id = memory.id ?? (crypto.randomUUID() as UUID);\n const now = Date.now();\n\n const storedMemory: StoredMemory = {\n ...memory,\n id,\n agentId: memory.agentId ?? this.agentId,\n unique: unique || memory.unique,\n createdAt: memory.createdAt ?? now,\n metadata: {\n ...(memory.metadata ?? {}),\n type: tableName as MemoryTypeAlias,\n } as StoredMemory[\"metadata\"],\n };\n\n await this.storage.set(COLLECTIONS.MEMORIES, id, storedMemory);\n\n if (memory.embedding && memory.embedding.length > 0) {\n await this.vectorIndex.add(id, memory.embedding);\n }\n\n return id;\n }\n\n async updateMemory(\n memory: Partial<Memory> & { id: UUID; metadata?: MemoryMetadata }\n ): Promise<boolean> {\n const existing = await this.getMemoryById(memory.id);\n if (!existing) return false;\n\n const updated = {\n ...existing,\n ...memory,\n metadata: {\n ...(existing.metadata ?? {}),\n ...(memory.metadata ?? {}),\n } as MemoryMetadata,\n };\n\n await this.storage.set(COLLECTIONS.MEMORIES, memory.id, updated);\n\n if (memory.embedding && memory.embedding.length > 0) {\n await this.vectorIndex.add(memory.id, memory.embedding);\n }\n\n return true;\n }\n\n async deleteMemory(memoryId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.MEMORIES, memoryId);\n await this.vectorIndex.remove(memoryId);\n }\n\n async deleteManyMemories(memoryIds: UUID[]): Promise<void> {\n for (const id of memoryIds) {\n await this.deleteMemory(id);\n }\n }\n\n async deleteAllMemories(roomId: UUID, tableName: string): Promise<void> {\n const memories = await this.getMemories({ roomId, tableName });\n await this.deleteManyMemories(\n memories.map((m) => m.id).filter((id): id is UUID => id !== undefined)\n );\n }\n\n async countMemories(roomId: UUID, unique = false, tableName?: string): Promise<number> {\n return this.storage.count<StoredMemory>(COLLECTIONS.MEMORIES, (memory) => {\n if (memory.roomId !== roomId) return false;\n if (unique && !memory.unique) return false;\n if (tableName && memory.metadata?.type !== tableName) return false;\n return true;\n });\n }\n\n async getMemoriesByWorldId(params: {\n worldId: UUID;\n count?: number;\n tableName?: string;\n }): Promise<Memory[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) =>\n m.worldId === params.worldId &&\n (params.tableName ? m.metadata?.type === params.tableName : true)\n );\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.count) {\n return toMemories(memories.slice(0, params.count));\n }\n return toMemories(memories);\n }\n\n async createWorld(world: World): Promise<UUID> {\n const id = world.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.WORLDS, id, { ...world, id });\n return id;\n }\n\n async getWorld(id: UUID): Promise<World | null> {\n return this.storage.get<World>(COLLECTIONS.WORLDS, id);\n }\n\n async removeWorld(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.WORLDS, id);\n }\n\n async getAllWorlds(): Promise<World[]> {\n return this.storage.getAll<World>(COLLECTIONS.WORLDS);\n }\n\n async updateWorld(world: World): Promise<void> {\n if (!world.id) return;\n await this.storage.set(COLLECTIONS.WORLDS, world.id, world);\n }\n\n async getRoomsByIds(roomIds: UUID[]): Promise<Room[] | null> {\n const rooms: Room[] = [];\n for (const id of roomIds) {\n const room = await this.storage.get<Room>(COLLECTIONS.ROOMS, id);\n if (room) rooms.push(room);\n }\n return rooms.length > 0 ? rooms : null;\n }\n\n async createRooms(rooms: Room[]): Promise<UUID[]> {\n const ids: UUID[] = [];\n for (const room of rooms) {\n const id = room.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.ROOMS, id, { ...room, id });\n ids.push(id);\n }\n return ids;\n }\n\n async deleteRoom(roomId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.ROOMS, roomId);\n await this.storage.deleteWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n await this.storage.deleteWhere<StoredMemory>(COLLECTIONS.MEMORIES, (m) => m.roomId === roomId);\n }\n\n async deleteRoomsByWorldId(worldId: UUID): Promise<void> {\n const rooms = await this.getRoomsByWorld(worldId);\n for (const room of rooms) {\n if (room.id) {\n await this.deleteRoom(room.id);\n }\n }\n }\n\n async updateRoom(room: Room): Promise<void> {\n if (!room.id) return;\n await this.storage.set(COLLECTIONS.ROOMS, room.id, room);\n }\n\n async getRoomsForParticipant(entityId: UUID): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId\n );\n return participants.map((p) => p.roomId as UUID);\n }\n\n async getRoomsForParticipants(userIds: UUID[]): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => userIds.includes(p.entityId as UUID)\n );\n return [...new Set(participants.map((p) => p.roomId as UUID))];\n }\n\n async getRoomsByWorld(worldId: UUID): Promise<Room[]> {\n return this.storage.getWhere<Room>(COLLECTIONS.ROOMS, (r) => r.worldId === worldId);\n }\n\n async removeParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId && p.roomId === roomId\n );\n\n if (participants.length === 0) return false;\n\n for (const p of participants) {\n if (p.id) {\n await this.storage.delete(COLLECTIONS.PARTICIPANTS, p.id);\n }\n }\n return true;\n }\n\n async getParticipantsForEntity(entityId: UUID): Promise<Participant[]> {\n const stored = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId\n );\n\n const participants: Participant[] = [];\n for (const p of stored) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, p.entityId);\n if (entity) {\n participants.push({\n id: p.id as UUID,\n entity,\n });\n }\n }\n return participants;\n }\n\n async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n return participants.map((p) => p.entityId as UUID);\n }\n\n async isRoomParticipant(roomId: UUID, entityId: UUID): Promise<boolean> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n return participants.length > 0;\n }\n\n async addParticipantsRoom(entityIds: UUID[], roomId: UUID): Promise<boolean> {\n for (const entityId of entityIds) {\n const exists = await this.isRoomParticipant(roomId, entityId);\n if (!exists) {\n const id = crypto.randomUUID();\n const participant: StoredParticipant = {\n id,\n entityId,\n roomId,\n };\n await this.storage.set(COLLECTIONS.PARTICIPANTS, id, participant);\n }\n }\n return true;\n }\n\n async getParticipantUserState(\n roomId: UUID,\n entityId: UUID\n ): Promise<\"FOLLOWED\" | \"MUTED\" | null> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n\n if (participants.length === 0) return null;\n const state = participants[0].userState;\n if (state === \"FOLLOWED\" || state === \"MUTED\") return state;\n return null;\n }\n\n async setParticipantUserState(\n roomId: UUID,\n entityId: UUID,\n state: \"FOLLOWED\" | \"MUTED\" | null\n ): Promise<void> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n\n for (const p of participants) {\n if (p.id) {\n await this.storage.set(COLLECTIONS.PARTICIPANTS, p.id, {\n ...p,\n userState: state,\n });\n }\n }\n }\n\n async createRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n tags?: string[];\n metadata?: Metadata;\n }): Promise<boolean> {\n const id = crypto.randomUUID() as UUID;\n const relationship: StoredRelationship = {\n id,\n sourceEntityId: params.sourceEntityId,\n targetEntityId: params.targetEntityId,\n agentId: this.agentId,\n tags: params.tags ?? [],\n metadata: params.metadata ?? {},\n createdAt: new Date().toISOString(),\n };\n await this.storage.set(COLLECTIONS.RELATIONSHIPS, id, relationship);\n return true;\n }\n\n async getRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n }): Promise<Relationship | null> {\n const relationships = await this.storage.getWhere<StoredRelationship>(\n COLLECTIONS.RELATIONSHIPS,\n (r) =>\n r.sourceEntityId === params.sourceEntityId && r.targetEntityId === params.targetEntityId\n );\n\n if (relationships.length === 0) return null;\n\n const r = relationships[0];\n return {\n id: r.id as UUID,\n sourceEntityId: r.sourceEntityId as UUID,\n targetEntityId: r.targetEntityId as UUID,\n agentId: (r.agentId as UUID) ?? this.agentId,\n tags: r.tags ?? [],\n metadata: r.metadata ?? {},\n createdAt: r.createdAt,\n };\n }\n\n async getRelationships(params: { entityId: UUID; tags?: string[] }): Promise<Relationship[]> {\n const stored = await this.storage.getWhere<StoredRelationship>(\n COLLECTIONS.RELATIONSHIPS,\n (r) => {\n const isInvolved =\n r.sourceEntityId === params.entityId || r.targetEntityId === params.entityId;\n if (!isInvolved) return false;\n if (params.tags && params.tags.length > 0) {\n return params.tags.some((tag) => r.tags?.includes(tag));\n }\n return true;\n }\n );\n\n return stored.map((r) => ({\n id: r.id as UUID,\n sourceEntityId: r.sourceEntityId as UUID,\n targetEntityId: r.targetEntityId as UUID,\n agentId: (r.agentId as UUID) ?? this.agentId,\n tags: r.tags ?? [],\n metadata: r.metadata ?? {},\n createdAt: r.createdAt,\n }));\n }\n\n async updateRelationship(relationship: Relationship): Promise<void> {\n const existing = await this.getRelationship({\n sourceEntityId: relationship.sourceEntityId,\n targetEntityId: relationship.targetEntityId,\n });\n\n if (!existing || !existing.id) return;\n\n const stored: StoredRelationship = {\n id: existing.id,\n sourceEntityId: relationship.sourceEntityId,\n targetEntityId: relationship.targetEntityId,\n agentId: relationship.agentId,\n tags: relationship.tags ?? existing.tags ?? [],\n metadata: { ...(existing.metadata ?? {}), ...(relationship.metadata ?? {}) },\n createdAt: existing.createdAt ?? new Date().toISOString(),\n };\n\n await this.storage.set(COLLECTIONS.RELATIONSHIPS, existing.id, stored);\n }\n\n async getCache<T>(key: string): Promise<T | undefined> {\n const cached = await this.storage.get<{ value: T; expiresAt?: number }>(COLLECTIONS.CACHE, key);\n if (!cached) return undefined;\n\n if (cached.expiresAt && Date.now() > cached.expiresAt) {\n await this.deleteCache(key);\n return undefined;\n }\n\n return cached.value;\n }\n\n async setCache<T>(key: string, value: T): Promise<boolean> {\n await this.storage.set(COLLECTIONS.CACHE, key, { value });\n return true;\n }\n\n async deleteCache(key: string): Promise<boolean> {\n return this.storage.delete(COLLECTIONS.CACHE, key);\n }\n\n async createTask(task: Task): Promise<UUID> {\n const id = task.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.TASKS, id, { ...task, id });\n return id;\n }\n\n async getTasks(params: { roomId?: UUID; tags?: string[]; entityId?: UUID }): Promise<Task[]> {\n return this.storage.getWhere<Task>(COLLECTIONS.TASKS, (t) => {\n if (params.roomId && t.roomId !== params.roomId) return false;\n if (params.entityId && t.entityId !== params.entityId) return false;\n if (params.tags && params.tags.length > 0) {\n if (!t.tags?.some((tag) => params.tags?.includes(tag))) return false;\n }\n return true;\n });\n }\n\n async getTask(id: UUID): Promise<Task | null> {\n return this.storage.get<Task>(COLLECTIONS.TASKS, id);\n }\n\n async getTasksByName(name: string): Promise<Task[]> {\n return this.storage.getWhere<Task>(COLLECTIONS.TASKS, (t) => t.name === name);\n }\n\n async updateTask(id: UUID, task: Partial<Task>): Promise<void> {\n const existing = await this.getTask(id);\n if (!existing) return;\n await this.storage.set(COLLECTIONS.TASKS, id, { ...existing, ...task });\n }\n\n async deleteTask(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.TASKS, id);\n }\n}\n",
|
|
6
|
+
"import {\n type Agent,\n type Component,\n type Content,\n DatabaseAdapter,\n type Entity,\n type Log,\n type LogBody,\n logger,\n type Memory,\n type MemoryMetadata,\n type MemoryTypeAlias,\n type Metadata,\n type PairingAllowlistEntry,\n type PairingChannel,\n type PairingRequest,\n type Participant,\n type Relationship,\n type Room,\n type Task,\n type UUID,\n type World,\n} from \"@elizaos/core\";\nimport { EphemeralHNSW } from \"./hnsw\";\nimport { COLLECTIONS, type IStorage } from \"./types\";\n\ninterface StoredParticipant {\n id: string;\n entityId: string;\n roomId: string;\n userState?: \"FOLLOWED\" | \"MUTED\" | null;\n}\n\ninterface StoredMemory {\n id?: string;\n entityId: string;\n agentId?: string;\n createdAt?: number;\n content: Content;\n embedding?: number[];\n roomId: string;\n worldId?: string;\n unique?: boolean;\n similarity?: number;\n metadata?: MemoryMetadata;\n}\n\nfunction toMemory(stored: StoredMemory): Memory {\n return {\n id: stored.id as UUID | undefined,\n entityId: stored.entityId as UUID,\n agentId: stored.agentId as UUID | undefined,\n createdAt: stored.createdAt,\n content: stored.content as Content,\n embedding: stored.embedding,\n roomId: stored.roomId as UUID,\n worldId: stored.worldId as UUID | undefined,\n unique: stored.unique,\n similarity: stored.similarity,\n metadata: stored.metadata as MemoryMetadata | undefined,\n };\n}\n\nfunction toMemories(stored: StoredMemory[]): Memory[] {\n return stored.map(toMemory);\n}\n\ninterface StoredRelationship {\n id: string;\n sourceEntityId: string;\n targetEntityId: string;\n agentId?: string;\n tags?: string[];\n metadata?: Metadata;\n createdAt?: string;\n}\n\nexport class InMemoryDatabaseAdapter extends DatabaseAdapter<IStorage> {\n private storage: IStorage;\n private vectorIndex: EphemeralHNSW;\n private embeddingDimension = 384;\n private ready = false;\n private agentId: UUID;\n\n constructor(storage: IStorage, agentId: UUID) {\n super();\n this.storage = storage;\n this.agentId = agentId;\n this.db = storage;\n this.vectorIndex = new EphemeralHNSW();\n }\n\n async initialize(): Promise<void> {\n await this.init();\n }\n\n async init(): Promise<void> {\n await this.storage.init();\n await this.vectorIndex.init(this.embeddingDimension);\n this.ready = true;\n logger.info({ src: \"plugin:inmemorydb\" }, \"In-memory database initialized\");\n }\n\n async runPluginMigrations(\n _plugins: Array<{ name: string; schema?: Record<string, unknown> }>,\n _options?: { verbose?: boolean; force?: boolean; dryRun?: boolean }\n ): Promise<void> {\n logger.debug(\n { src: \"plugin:inmemorydb\" },\n \"Plugin migrations not needed for in-memory storage\"\n );\n }\n\n async isReady(): Promise<boolean> {\n return this.ready && (await this.storage.isReady());\n }\n\n async close(): Promise<void> {\n await this.vectorIndex.clear();\n await this.storage.close();\n this.ready = false;\n logger.info({ src: \"plugin:inmemorydb\" }, \"In-memory database closed\");\n }\n\n async getConnection(): Promise<IStorage> {\n return this.storage;\n }\n\n async getAgent(agentId: UUID): Promise<Agent | null> {\n return this.storage.get<Agent>(COLLECTIONS.AGENTS, agentId);\n }\n\n async getAgents(): Promise<Partial<Agent>[]> {\n return this.storage.getAll<Agent>(COLLECTIONS.AGENTS);\n }\n\n async createAgent(agent: Partial<Agent>): Promise<boolean> {\n if (!agent.id) return false;\n await this.storage.set(COLLECTIONS.AGENTS, agent.id, agent);\n return true;\n }\n\n async updateAgent(agentId: UUID, agent: Partial<Agent>): Promise<boolean> {\n const existing = await this.getAgent(agentId);\n if (!existing) return false;\n await this.storage.set(COLLECTIONS.AGENTS, agentId, {\n ...existing,\n ...agent,\n });\n return true;\n }\n\n async deleteAgent(agentId: UUID): Promise<boolean> {\n return this.storage.delete(COLLECTIONS.AGENTS, agentId);\n }\n\n async ensureEmbeddingDimension(dimension: number): Promise<void> {\n if (this.embeddingDimension !== dimension) {\n this.embeddingDimension = dimension;\n await this.vectorIndex.init(dimension);\n }\n }\n\n async getEntitiesByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n const entities: Entity[] = [];\n for (const id of entityIds) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, id);\n if (entity) entities.push(entity);\n }\n return entities.length > 0 ? entities : null;\n }\n\n async getEntitiesForRoom(roomId: UUID, includeComponents = false): Promise<Entity[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n\n const entityIds = participants.map((p) => p.entityId);\n const entities: Entity[] = [];\n\n for (const entityId of entityIds) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, entityId);\n if (entity) {\n if (includeComponents) {\n const components = await this.getComponents(entityId as UUID);\n (entity as Entity & { components?: Component[] }).components = components;\n }\n entities.push(entity);\n }\n }\n\n return entities;\n }\n\n async createEntities(entities: Entity[]): Promise<boolean> {\n for (const entity of entities) {\n if (!entity.id) continue;\n await this.storage.set(COLLECTIONS.ENTITIES, entity.id, entity);\n }\n return true;\n }\n\n async updateEntity(entity: Entity): Promise<void> {\n if (!entity.id) return;\n await this.storage.set(COLLECTIONS.ENTITIES, entity.id, entity);\n }\n\n async getComponent(\n entityId: UUID,\n type: string,\n worldId?: UUID,\n sourceEntityId?: UUID\n ): Promise<Component | null> {\n const components = await this.storage.getWhere<Component>(\n COLLECTIONS.COMPONENTS,\n (c) =>\n c.entityId === entityId &&\n c.type === type &&\n (worldId === undefined || c.worldId === worldId) &&\n (sourceEntityId === undefined || c.sourceEntityId === sourceEntityId)\n );\n return components[0] ?? null;\n }\n\n async getComponents(entityId: UUID, worldId?: UUID, sourceEntityId?: UUID): Promise<Component[]> {\n return this.storage.getWhere<Component>(\n COLLECTIONS.COMPONENTS,\n (c) =>\n c.entityId === entityId &&\n (worldId === undefined || c.worldId === worldId) &&\n (sourceEntityId === undefined || c.sourceEntityId === sourceEntityId)\n );\n }\n\n async createComponent(component: Component): Promise<boolean> {\n if (!component.id) return false;\n await this.storage.set(COLLECTIONS.COMPONENTS, component.id, component);\n return true;\n }\n\n async updateComponent(component: Component): Promise<void> {\n if (!component.id) return;\n await this.storage.set(COLLECTIONS.COMPONENTS, component.id, component);\n }\n\n async deleteComponent(componentId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.COMPONENTS, componentId);\n }\n\n async getMemories(params: {\n entityId?: UUID;\n agentId?: UUID;\n count?: number;\n offset?: number;\n unique?: boolean;\n tableName: string;\n start?: number;\n end?: number;\n roomId?: UUID;\n worldId?: UUID;\n }): Promise<Memory[]> {\n let memories = await this.storage.getWhere<StoredMemory>(COLLECTIONS.MEMORIES, (m) => {\n if (params.entityId && m.entityId !== params.entityId) return false;\n if (params.agentId && m.agentId !== params.agentId) return false;\n if (params.roomId && m.roomId !== params.roomId) return false;\n if (params.worldId && m.worldId !== params.worldId) return false;\n if (params.tableName && m.metadata?.type !== params.tableName) return false;\n if (params.start && m.createdAt && m.createdAt < params.start) return false;\n if (params.end && m.createdAt && m.createdAt > params.end) return false;\n if (params.unique && !m.unique) return false;\n return true;\n });\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.offset) {\n memories = memories.slice(params.offset);\n }\n if (params.count) {\n memories = memories.slice(0, params.count);\n }\n\n return toMemories(memories);\n }\n\n async getMemoriesByRoomIds(params: {\n roomIds: UUID[];\n tableName: string;\n limit?: number;\n }): Promise<Memory[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) =>\n params.roomIds.includes(m.roomId as UUID) &&\n (params.tableName ? m.metadata?.type === params.tableName : true)\n );\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.limit) {\n return toMemories(memories.slice(0, params.limit));\n }\n return toMemories(memories);\n }\n\n async getMemoryById(id: UUID): Promise<Memory | null> {\n return this.storage.get<Memory>(COLLECTIONS.MEMORIES, id);\n }\n\n async getMemoriesByIds(memoryIds: UUID[], tableName?: string): Promise<Memory[]> {\n const memories: Memory[] = [];\n for (const id of memoryIds) {\n const memory = await this.storage.get<StoredMemory>(COLLECTIONS.MEMORIES, id);\n if (memory) {\n if (tableName && memory.metadata?.type !== tableName) continue;\n memories.push(toMemory(memory));\n }\n }\n return memories;\n }\n\n async getCachedEmbeddings(params: {\n query_table_name: string;\n query_threshold: number;\n query_input: string;\n query_field_name: string;\n query_field_sub_name: string;\n query_match_count: number;\n }): Promise<{ embedding: number[]; levenshtein_score: number }[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) => m.metadata?.type === params.query_table_name\n );\n\n const results: { embedding: number[]; levenshtein_score: number }[] = [];\n\n for (const memory of memories) {\n if (!memory.embedding) continue;\n\n const memoryRecord = memory as StoredMemory & Record<string, unknown>;\n const fieldValue = memoryRecord[params.query_field_name];\n const content = String(fieldValue ?? \"\");\n const score = this.simpleStringScore(params.query_input, content);\n\n if (score <= params.query_threshold) {\n results.push({\n embedding: memory.embedding,\n levenshtein_score: score,\n });\n }\n }\n\n return results.slice(0, params.query_match_count);\n }\n\n private simpleStringScore(a: string, b: string): number {\n if (a === b) return 0;\n const aLower = a.toLowerCase();\n const bLower = b.toLowerCase();\n if (aLower === bLower) return 0.1;\n if (aLower.includes(bLower) || bLower.includes(aLower)) return 0.3;\n return 1;\n }\n\n async log(params: { body: LogBody; entityId: UUID; roomId: UUID; type: string }): Promise<void> {\n const id = crypto.randomUUID() as UUID;\n const log: Log = {\n id,\n entityId: params.entityId,\n roomId: params.roomId,\n body: params.body,\n type: params.type,\n createdAt: new Date(),\n };\n await this.storage.set(COLLECTIONS.LOGS, id, log);\n }\n\n async getLogs(params: {\n entityId?: UUID;\n roomId?: UUID;\n type?: string;\n count?: number;\n offset?: number;\n }): Promise<Log[]> {\n let logs = await this.storage.getWhere<Log>(COLLECTIONS.LOGS, (l) => {\n if (params.entityId && l.entityId !== params.entityId) return false;\n if (params.roomId && l.roomId !== params.roomId) return false;\n if (params.type && l.type !== params.type) return false;\n return true;\n });\n\n logs.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());\n\n if (params.offset) {\n logs = logs.slice(params.offset);\n }\n if (params.count) {\n logs = logs.slice(0, params.count);\n }\n\n return logs;\n }\n\n async deleteLog(logId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.LOGS, logId);\n }\n\n async searchMemories(params: {\n tableName: string;\n embedding: number[];\n match_threshold?: number;\n count?: number;\n unique?: boolean;\n query?: string;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n }): Promise<Memory[]> {\n const threshold = params.match_threshold ?? 0.5;\n const count = params.count ?? 10;\n\n const results = await this.vectorIndex.search(params.embedding, count * 2, threshold);\n\n const memories: Memory[] = [];\n for (const result of results) {\n const memory = await this.storage.get<StoredMemory>(COLLECTIONS.MEMORIES, result.id);\n if (!memory) continue;\n\n if (params.tableName && memory.metadata?.type !== params.tableName) continue;\n if (params.roomId && memory.roomId !== params.roomId) continue;\n if (params.worldId && memory.worldId !== params.worldId) continue;\n if (params.entityId && memory.entityId !== params.entityId) continue;\n if (params.unique && !memory.unique) continue;\n\n memories.push({\n ...toMemory(memory),\n similarity: result.similarity,\n });\n }\n\n return memories.slice(0, count);\n }\n\n async createMemory(memory: Memory, tableName: string, unique = false): Promise<UUID> {\n const id = memory.id ?? (crypto.randomUUID() as UUID);\n const now = Date.now();\n\n const storedMemory: StoredMemory = {\n ...memory,\n id,\n agentId: memory.agentId ?? this.agentId,\n unique: unique || memory.unique,\n createdAt: memory.createdAt ?? now,\n metadata: {\n ...(memory.metadata ?? {}),\n type: tableName as MemoryTypeAlias,\n } as StoredMemory[\"metadata\"],\n };\n\n await this.storage.set(COLLECTIONS.MEMORIES, id, storedMemory);\n\n if (memory.embedding && memory.embedding.length > 0) {\n await this.vectorIndex.add(id, memory.embedding);\n }\n\n return id;\n }\n\n async updateMemory(\n memory: Partial<Memory> & { id: UUID; metadata?: MemoryMetadata }\n ): Promise<boolean> {\n const existing = await this.getMemoryById(memory.id);\n if (!existing) return false;\n\n const updated = {\n ...existing,\n ...memory,\n metadata: {\n ...(existing.metadata ?? {}),\n ...(memory.metadata ?? {}),\n } as MemoryMetadata,\n };\n\n await this.storage.set(COLLECTIONS.MEMORIES, memory.id, updated);\n\n if (memory.embedding && memory.embedding.length > 0) {\n await this.vectorIndex.add(memory.id, memory.embedding);\n }\n\n return true;\n }\n\n async deleteMemory(memoryId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.MEMORIES, memoryId);\n await this.vectorIndex.remove(memoryId);\n }\n\n async deleteManyMemories(memoryIds: UUID[]): Promise<void> {\n for (const id of memoryIds) {\n await this.deleteMemory(id);\n }\n }\n\n async deleteAllMemories(roomId: UUID, tableName: string): Promise<void> {\n const memories = await this.getMemories({ roomId, tableName });\n await this.deleteManyMemories(\n memories.map((m) => m.id).filter((id): id is UUID => id !== undefined)\n );\n }\n\n async countMemories(roomId: UUID, unique = false, tableName?: string): Promise<number> {\n return this.storage.count<StoredMemory>(COLLECTIONS.MEMORIES, (memory) => {\n if (memory.roomId !== roomId) return false;\n if (unique && !memory.unique) return false;\n if (tableName && memory.metadata?.type !== tableName) return false;\n return true;\n });\n }\n\n async getMemoriesByWorldId(params: {\n worldId: UUID;\n count?: number;\n tableName?: string;\n }): Promise<Memory[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) =>\n m.worldId === params.worldId &&\n (params.tableName ? m.metadata?.type === params.tableName : true)\n );\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.count) {\n return toMemories(memories.slice(0, params.count));\n }\n return toMemories(memories);\n }\n\n async createWorld(world: World): Promise<UUID> {\n const id = world.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.WORLDS, id, { ...world, id });\n return id;\n }\n\n async getWorld(id: UUID): Promise<World | null> {\n return this.storage.get<World>(COLLECTIONS.WORLDS, id);\n }\n\n async removeWorld(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.WORLDS, id);\n }\n\n async getAllWorlds(): Promise<World[]> {\n return this.storage.getAll<World>(COLLECTIONS.WORLDS);\n }\n\n async updateWorld(world: World): Promise<void> {\n if (!world.id) return;\n await this.storage.set(COLLECTIONS.WORLDS, world.id, world);\n }\n\n async getRoomsByIds(roomIds: UUID[]): Promise<Room[] | null> {\n const rooms: Room[] = [];\n for (const id of roomIds) {\n const room = await this.storage.get<Room>(COLLECTIONS.ROOMS, id);\n if (room) rooms.push(room);\n }\n return rooms.length > 0 ? rooms : null;\n }\n\n async createRooms(rooms: Room[]): Promise<UUID[]> {\n const ids: UUID[] = [];\n for (const room of rooms) {\n const id = room.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.ROOMS, id, { ...room, id });\n ids.push(id);\n }\n return ids;\n }\n\n async deleteRoom(roomId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.ROOMS, roomId);\n await this.storage.deleteWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n await this.storage.deleteWhere<StoredMemory>(COLLECTIONS.MEMORIES, (m) => m.roomId === roomId);\n }\n\n async deleteRoomsByWorldId(worldId: UUID): Promise<void> {\n const rooms = await this.getRoomsByWorld(worldId);\n for (const room of rooms) {\n if (room.id) {\n await this.deleteRoom(room.id);\n }\n }\n }\n\n async updateRoom(room: Room): Promise<void> {\n if (!room.id) return;\n await this.storage.set(COLLECTIONS.ROOMS, room.id, room);\n }\n\n async getRoomsForParticipant(entityId: UUID): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId\n );\n return participants.map((p) => p.roomId as UUID);\n }\n\n async getRoomsForParticipants(userIds: UUID[]): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => userIds.includes(p.entityId as UUID)\n );\n return [...new Set(participants.map((p) => p.roomId as UUID))];\n }\n\n async getRoomsByWorld(worldId: UUID): Promise<Room[]> {\n return this.storage.getWhere<Room>(COLLECTIONS.ROOMS, (r) => r.worldId === worldId);\n }\n\n async removeParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId && p.roomId === roomId\n );\n\n if (participants.length === 0) return false;\n\n for (const p of participants) {\n if (p.id) {\n await this.storage.delete(COLLECTIONS.PARTICIPANTS, p.id);\n }\n }\n return true;\n }\n\n async getParticipantsForEntity(entityId: UUID): Promise<Participant[]> {\n const stored = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId\n );\n\n const participants: Participant[] = [];\n for (const p of stored) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, p.entityId);\n if (entity) {\n participants.push({\n id: p.id as UUID,\n entity,\n });\n }\n }\n return participants;\n }\n\n async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n return participants.map((p) => p.entityId as UUID);\n }\n\n async isRoomParticipant(roomId: UUID, entityId: UUID): Promise<boolean> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n return participants.length > 0;\n }\n\n async addParticipantsRoom(entityIds: UUID[], roomId: UUID): Promise<boolean> {\n for (const entityId of entityIds) {\n const exists = await this.isRoomParticipant(roomId, entityId);\n if (!exists) {\n const id = crypto.randomUUID();\n const participant: StoredParticipant = {\n id,\n entityId,\n roomId,\n };\n await this.storage.set(COLLECTIONS.PARTICIPANTS, id, participant);\n }\n }\n return true;\n }\n\n async getParticipantUserState(\n roomId: UUID,\n entityId: UUID\n ): Promise<\"FOLLOWED\" | \"MUTED\" | null> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n\n if (participants.length === 0) return null;\n const state = participants[0].userState;\n if (state === \"FOLLOWED\" || state === \"MUTED\") return state;\n return null;\n }\n\n async setParticipantUserState(\n roomId: UUID,\n entityId: UUID,\n state: \"FOLLOWED\" | \"MUTED\" | null\n ): Promise<void> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n\n for (const p of participants) {\n if (p.id) {\n await this.storage.set(COLLECTIONS.PARTICIPANTS, p.id, {\n ...p,\n userState: state,\n });\n }\n }\n }\n\n async createRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n tags?: string[];\n metadata?: Metadata;\n }): Promise<boolean> {\n const id = crypto.randomUUID() as UUID;\n const relationship: StoredRelationship = {\n id,\n sourceEntityId: params.sourceEntityId,\n targetEntityId: params.targetEntityId,\n agentId: this.agentId,\n tags: params.tags ?? [],\n metadata: params.metadata ?? {},\n createdAt: new Date().toISOString(),\n };\n await this.storage.set(COLLECTIONS.RELATIONSHIPS, id, relationship);\n return true;\n }\n\n async getRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n }): Promise<Relationship | null> {\n const relationships = await this.storage.getWhere<StoredRelationship>(\n COLLECTIONS.RELATIONSHIPS,\n (r) =>\n r.sourceEntityId === params.sourceEntityId && r.targetEntityId === params.targetEntityId\n );\n\n if (relationships.length === 0) return null;\n\n const r = relationships[0];\n return {\n id: r.id as UUID,\n sourceEntityId: r.sourceEntityId as UUID,\n targetEntityId: r.targetEntityId as UUID,\n agentId: (r.agentId as UUID) ?? this.agentId,\n tags: r.tags ?? [],\n metadata: r.metadata ?? {},\n createdAt: r.createdAt,\n };\n }\n\n async getRelationships(params: { entityId: UUID; tags?: string[] }): Promise<Relationship[]> {\n const stored = await this.storage.getWhere<StoredRelationship>(\n COLLECTIONS.RELATIONSHIPS,\n (r) => {\n const isInvolved =\n r.sourceEntityId === params.entityId || r.targetEntityId === params.entityId;\n if (!isInvolved) return false;\n if (params.tags && params.tags.length > 0) {\n return params.tags.some((tag) => r.tags?.includes(tag));\n }\n return true;\n }\n );\n\n return stored.map((r) => ({\n id: r.id as UUID,\n sourceEntityId: r.sourceEntityId as UUID,\n targetEntityId: r.targetEntityId as UUID,\n agentId: (r.agentId as UUID) ?? this.agentId,\n tags: r.tags ?? [],\n metadata: r.metadata ?? {},\n createdAt: r.createdAt,\n }));\n }\n\n async updateRelationship(relationship: Relationship): Promise<void> {\n const existing = await this.getRelationship({\n sourceEntityId: relationship.sourceEntityId,\n targetEntityId: relationship.targetEntityId,\n });\n\n if (!existing || !existing.id) return;\n\n const stored: StoredRelationship = {\n id: existing.id,\n sourceEntityId: relationship.sourceEntityId,\n targetEntityId: relationship.targetEntityId,\n agentId: relationship.agentId,\n tags: relationship.tags ?? existing.tags ?? [],\n metadata: { ...(existing.metadata ?? {}), ...(relationship.metadata ?? {}) },\n createdAt: existing.createdAt ?? new Date().toISOString(),\n };\n\n await this.storage.set(COLLECTIONS.RELATIONSHIPS, existing.id, stored);\n }\n\n async getCache<T>(key: string): Promise<T | undefined> {\n const cached = await this.storage.get<{ value: T; expiresAt?: number }>(COLLECTIONS.CACHE, key);\n if (!cached) return undefined;\n\n if (cached.expiresAt && Date.now() > cached.expiresAt) {\n await this.deleteCache(key);\n return undefined;\n }\n\n return cached.value;\n }\n\n async setCache<T>(key: string, value: T): Promise<boolean> {\n await this.storage.set(COLLECTIONS.CACHE, key, { value });\n return true;\n }\n\n async deleteCache(key: string): Promise<boolean> {\n return this.storage.delete(COLLECTIONS.CACHE, key);\n }\n\n async createTask(task: Task): Promise<UUID> {\n const id = task.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.TASKS, id, { ...task, id });\n return id;\n }\n\n async getTasks(params: { roomId?: UUID; tags?: string[]; entityId?: UUID }): Promise<Task[]> {\n return this.storage.getWhere<Task>(COLLECTIONS.TASKS, (t) => {\n if (params.roomId && t.roomId !== params.roomId) return false;\n if (params.entityId && t.entityId !== params.entityId) return false;\n if (params.tags && params.tags.length > 0) {\n if (!t.tags?.some((tag) => params.tags?.includes(tag))) return false;\n }\n return true;\n });\n }\n\n async getTask(id: UUID): Promise<Task | null> {\n return this.storage.get<Task>(COLLECTIONS.TASKS, id);\n }\n\n async getTasksByName(name: string): Promise<Task[]> {\n return this.storage.getWhere<Task>(COLLECTIONS.TASKS, (t) => t.name === name);\n }\n\n async updateTask(id: UUID, task: Partial<Task>): Promise<void> {\n const existing = await this.getTask(id);\n if (!existing) return;\n await this.storage.set(COLLECTIONS.TASKS, id, { ...existing, ...task });\n }\n\n async deleteTask(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.TASKS, id);\n }\n\n // ===============================\n // Pairing Methods\n // ===============================\n\n async getPairingRequests(channel: PairingChannel, agentId: UUID): Promise<PairingRequest[]> {\n return this.storage.getWhere<PairingRequest>(\n COLLECTIONS.PAIRING_REQUESTS,\n (r) => r.channel === channel && r.agentId === agentId\n );\n }\n\n async createPairingRequest(request: PairingRequest): Promise<UUID> {\n const id = request.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.PAIRING_REQUESTS, id, { ...request, id });\n return id;\n }\n\n async updatePairingRequest(request: PairingRequest): Promise<void> {\n const existing = await this.storage.get<PairingRequest>(\n COLLECTIONS.PAIRING_REQUESTS,\n request.id\n );\n if (existing) {\n await this.storage.set(COLLECTIONS.PAIRING_REQUESTS, request.id, {\n ...existing,\n ...request,\n });\n }\n }\n\n async deletePairingRequest(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.PAIRING_REQUESTS, id);\n }\n\n async getPairingAllowlist(\n channel: PairingChannel,\n agentId: UUID\n ): Promise<PairingAllowlistEntry[]> {\n return this.storage.getWhere<PairingAllowlistEntry>(\n COLLECTIONS.PAIRING_ALLOWLIST,\n (e) => e.channel === channel && e.agentId === agentId\n );\n }\n\n async createPairingAllowlistEntry(entry: PairingAllowlistEntry): Promise<UUID> {\n const id = entry.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.PAIRING_ALLOWLIST, id, { ...entry, id });\n return id;\n }\n\n async deletePairingAllowlistEntry(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.PAIRING_ALLOWLIST, id);\n }\n}\n",
|
|
7
7
|
"import type { IVectorStorage, VectorSearchResult } from \"./types\";\n\ninterface HNSWNode {\n id: string;\n vector: number[];\n level: number;\n neighbors: Map<number, Set<string>>;\n}\n\ninterface HNSWConfig {\n M: number;\n efConstruction: number;\n efSearch: number;\n mL: number;\n}\n\nfunction cosineDistance(a: number[], b: number[]): number {\n if (a.length !== b.length) {\n throw new Error(`Vector dimension mismatch: ${a.length} vs ${b.length}`);\n }\n\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n dotProduct += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n\n const magnitude = Math.sqrt(normA) * Math.sqrt(normB);\n if (magnitude === 0) return 1;\n\n return 1 - dotProduct / magnitude;\n}\n\nexport class EphemeralHNSW implements IVectorStorage {\n private nodes: Map<string, HNSWNode> = new Map();\n private entryPoint: string | null = null;\n private maxLevel = 0;\n private dimension = 0;\n private config: HNSWConfig;\n\n constructor() {\n this.config = {\n M: 16,\n efConstruction: 200,\n efSearch: 50,\n mL: 1 / Math.log(16),\n };\n }\n\n async init(dimension: number): Promise<void> {\n this.dimension = dimension;\n }\n\n private getRandomLevel(): number {\n let level = 0;\n while (Math.random() < Math.exp(-level * this.config.mL) && level < 16) {\n level++;\n }\n return level;\n }\n\n async add(id: string, vector: number[]): Promise<void> {\n if (vector.length !== this.dimension) {\n throw new Error(\n `Vector dimension mismatch: expected ${this.dimension}, got ${vector.length}`\n );\n }\n\n const existing = this.nodes.get(id);\n if (existing) {\n existing.vector = vector;\n return;\n }\n\n const level = this.getRandomLevel();\n const newNode: HNSWNode = {\n id,\n vector,\n level,\n neighbors: new Map(),\n };\n\n for (let l = 0; l <= level; l++) {\n newNode.neighbors.set(l, new Set());\n }\n\n if (this.entryPoint === null) {\n this.entryPoint = id;\n this.maxLevel = level;\n this.nodes.set(id, newNode);\n return;\n }\n\n let currentNode = this.entryPoint;\n\n for (let l = this.maxLevel; l > level; l--) {\n currentNode = this.searchLayer(vector, currentNode, 1, l)[0]?.id ?? currentNode;\n }\n\n for (let l = Math.min(level, this.maxLevel); l >= 0; l--) {\n const neighbors = this.searchLayer(vector, currentNode, this.config.efConstruction, l);\n\n const M = this.config.M;\n const selectedNeighbors = neighbors.slice(0, M);\n\n for (const neighbor of selectedNeighbors) {\n const neighborSet = newNode.neighbors.get(l);\n if (neighborSet) {\n neighborSet.add(neighbor.id);\n }\n\n const neighborNode = this.nodes.get(neighbor.id);\n if (neighborNode) {\n let neighborSet = neighborNode.neighbors.get(l);\n if (!neighborSet) {\n neighborSet = new Set();\n neighborNode.neighbors.set(l, neighborSet);\n }\n neighborSet.add(id);\n\n if (neighborSet.size > M) {\n const toKeep = this.selectBestNeighbors(neighborNode.vector, neighborSet, M);\n neighborNode.neighbors.set(l, new Set(toKeep.map((n) => n.id)));\n }\n }\n }\n\n if (neighbors.length > 0) {\n currentNode = neighbors[0].id;\n }\n }\n\n this.nodes.set(id, newNode);\n\n if (level > this.maxLevel) {\n this.maxLevel = level;\n this.entryPoint = id;\n }\n }\n\n private searchLayer(\n query: number[],\n entryId: string,\n ef: number,\n level: number\n ): Array<{ id: string; distance: number }> {\n const visited = new Set<string>([entryId]);\n const entryNode = this.nodes.get(entryId);\n if (!entryNode) return [];\n\n const entryDist = cosineDistance(query, entryNode.vector);\n\n const candidates: Array<{ id: string; distance: number }> = [\n { id: entryId, distance: entryDist },\n ];\n\n const results: Array<{ id: string; distance: number }> = [{ id: entryId, distance: entryDist }];\n\n while (candidates.length > 0) {\n candidates.sort((a, b) => a.distance - b.distance);\n const current = candidates.shift();\n if (!current) break;\n\n results.sort((a, b) => b.distance - a.distance);\n const furthestResult = results[0];\n\n if (current.distance > furthestResult.distance) {\n break;\n }\n\n const currentNode = this.nodes.get(current.id);\n if (!currentNode) continue;\n\n const neighbors = currentNode.neighbors.get(level);\n if (!neighbors) continue;\n\n for (const neighborId of neighbors) {\n if (visited.has(neighborId)) continue;\n visited.add(neighborId);\n\n const neighborNode = this.nodes.get(neighborId);\n if (!neighborNode) continue;\n\n const dist = cosineDistance(query, neighborNode.vector);\n\n if (results.length < ef || dist < furthestResult.distance) {\n candidates.push({ id: neighborId, distance: dist });\n results.push({ id: neighborId, distance: dist });\n\n if (results.length > ef) {\n results.sort((a, b) => b.distance - a.distance);\n results.pop();\n }\n }\n }\n }\n\n results.sort((a, b) => a.distance - b.distance);\n return results;\n }\n\n private selectBestNeighbors(\n nodeVector: number[],\n neighborIds: Set<string>,\n M: number\n ): Array<{ id: string; distance: number }> {\n const neighbors: Array<{ id: string; distance: number }> = [];\n\n for (const id of neighborIds) {\n const node = this.nodes.get(id);\n if (node) {\n neighbors.push({\n id,\n distance: cosineDistance(nodeVector, node.vector),\n });\n }\n }\n\n neighbors.sort((a, b) => a.distance - b.distance);\n return neighbors.slice(0, M);\n }\n\n async remove(id: string): Promise<void> {\n const node = this.nodes.get(id);\n if (!node) return;\n\n for (const [level, neighbors] of node.neighbors) {\n for (const neighborId of neighbors) {\n const neighborNode = this.nodes.get(neighborId);\n if (neighborNode) {\n neighborNode.neighbors.get(level)?.delete(id);\n }\n }\n }\n\n this.nodes.delete(id);\n\n if (this.entryPoint === id) {\n if (this.nodes.size === 0) {\n this.entryPoint = null;\n this.maxLevel = 0;\n } else {\n let maxLevel = 0;\n let newEntry: string | null = null;\n for (const [nodeId, n] of this.nodes) {\n if (n.level >= maxLevel) {\n maxLevel = n.level;\n newEntry = nodeId;\n }\n }\n this.entryPoint = newEntry;\n this.maxLevel = maxLevel;\n }\n }\n }\n\n async search(query: number[], k: number, threshold = 0.5): Promise<VectorSearchResult[]> {\n if (this.entryPoint === null || this.nodes.size === 0) {\n return [];\n }\n\n if (query.length !== this.dimension) {\n throw new Error(`Query dimension mismatch: expected ${this.dimension}, got ${query.length}`);\n }\n\n let currentNode = this.entryPoint;\n\n for (let l = this.maxLevel; l > 0; l--) {\n const closest = this.searchLayer(query, currentNode, 1, l);\n if (closest.length > 0) {\n currentNode = closest[0].id;\n }\n }\n\n const results = this.searchLayer(query, currentNode, Math.max(k, this.config.efSearch), 0);\n\n return results\n .slice(0, k)\n .filter((r) => 1 - r.distance >= threshold)\n .map((r) => ({\n id: r.id,\n distance: r.distance,\n similarity: 1 - r.distance,\n }));\n }\n\n async clear(): Promise<void> {\n this.nodes.clear();\n this.entryPoint = null;\n this.maxLevel = 0;\n }\n\n size(): number {\n return this.nodes.size;\n }\n}\n",
|
|
8
|
-
"export interface IStorage {\n init(): Promise<void>;\n close(): Promise<void>;\n isReady(): Promise<boolean>;\n get<T>(collection: string, id: string): Promise<T | null>;\n getAll<T>(collection: string): Promise<T[]>;\n getWhere<T>(collection: string, predicate: (item: T) => boolean): Promise<T[]>;\n set<T>(collection: string, id: string, data: T): Promise<void>;\n delete(collection: string, id: string): Promise<boolean>;\n deleteMany(collection: string, ids: string[]): Promise<void>;\n deleteWhere<T = Record<string, unknown>>(\n collection: string,\n predicate: (item: T) => boolean\n ): Promise<void>;\n count<T = Record<string, unknown>>(\n collection: string,\n predicate?: (item: T) => boolean\n ): Promise<number>;\n clear(): Promise<void>;\n}\n\nexport interface IVectorStorage {\n init(dimension: number): Promise<void>;\n add(id: string, vector: number[]): Promise<void>;\n remove(id: string): Promise<void>;\n search(query: number[], k: number, threshold?: number): Promise<VectorSearchResult[]>;\n clear(): Promise<void>;\n}\n\nexport interface VectorSearchResult {\n id: string;\n distance: number;\n similarity: number;\n}\n\nexport const COLLECTIONS = {\n AGENTS: \"agents\",\n ENTITIES: \"entities\",\n MEMORIES: \"memories\",\n ROOMS: \"rooms\",\n WORLDS: \"worlds\",\n COMPONENTS: \"components\",\n RELATIONSHIPS: \"relationships\",\n PARTICIPANTS: \"participants\",\n TASKS: \"tasks\",\n CACHE: \"cache\",\n LOGS: \"logs\",\n EMBEDDINGS: \"embeddings\",\n} as const;\n\nexport type CollectionName = (typeof COLLECTIONS)[keyof typeof COLLECTIONS];\n",
|
|
8
|
+
"export interface IStorage {\n init(): Promise<void>;\n close(): Promise<void>;\n isReady(): Promise<boolean>;\n get<T>(collection: string, id: string): Promise<T | null>;\n getAll<T>(collection: string): Promise<T[]>;\n getWhere<T>(collection: string, predicate: (item: T) => boolean): Promise<T[]>;\n set<T>(collection: string, id: string, data: T): Promise<void>;\n delete(collection: string, id: string): Promise<boolean>;\n deleteMany(collection: string, ids: string[]): Promise<void>;\n deleteWhere<T = Record<string, unknown>>(\n collection: string,\n predicate: (item: T) => boolean\n ): Promise<void>;\n count<T = Record<string, unknown>>(\n collection: string,\n predicate?: (item: T) => boolean\n ): Promise<number>;\n clear(): Promise<void>;\n}\n\nexport interface IVectorStorage {\n init(dimension: number): Promise<void>;\n add(id: string, vector: number[]): Promise<void>;\n remove(id: string): Promise<void>;\n search(query: number[], k: number, threshold?: number): Promise<VectorSearchResult[]>;\n clear(): Promise<void>;\n}\n\nexport interface VectorSearchResult {\n id: string;\n distance: number;\n similarity: number;\n}\n\nexport const COLLECTIONS = {\n AGENTS: \"agents\",\n ENTITIES: \"entities\",\n MEMORIES: \"memories\",\n ROOMS: \"rooms\",\n WORLDS: \"worlds\",\n COMPONENTS: \"components\",\n RELATIONSHIPS: \"relationships\",\n PARTICIPANTS: \"participants\",\n TASKS: \"tasks\",\n CACHE: \"cache\",\n LOGS: \"logs\",\n EMBEDDINGS: \"embeddings\",\n PAIRING_REQUESTS: \"pairing_requests\",\n PAIRING_ALLOWLIST: \"pairing_allowlist\",\n} as const;\n\nexport type CollectionName = (typeof COLLECTIONS)[keyof typeof COLLECTIONS];\n",
|
|
9
9
|
"import type { IStorage } from \"./types\";\n\nexport class MemoryStorage implements IStorage {\n private collections: Map<string, Map<string, unknown>> = new Map();\n private ready = false;\n\n async init(): Promise<void> {\n this.ready = true;\n }\n\n async close(): Promise<void> {\n this.collections.clear();\n this.ready = false;\n }\n\n async isReady(): Promise<boolean> {\n return this.ready;\n }\n\n private getCollection(collection: string): Map<string, unknown> {\n let col = this.collections.get(collection);\n if (!col) {\n col = new Map();\n this.collections.set(collection, col);\n }\n return col;\n }\n\n async get<T>(collection: string, id: string): Promise<T | null> {\n const col = this.getCollection(collection);\n const item = col.get(id);\n return item !== undefined ? (item as T) : null;\n }\n\n async getAll<T>(collection: string): Promise<T[]> {\n const col = this.getCollection(collection);\n return Array.from(col.values()) as T[];\n }\n\n async getWhere<T>(collection: string, predicate: (item: T) => boolean): Promise<T[]> {\n const all = await this.getAll<T>(collection);\n return all.filter(predicate);\n }\n\n async set<T>(collection: string, id: string, data: T): Promise<void> {\n const col = this.getCollection(collection);\n col.set(id, data);\n }\n\n async delete(collection: string, id: string): Promise<boolean> {\n const col = this.getCollection(collection);\n return col.delete(id);\n }\n\n async deleteMany(collection: string, ids: string[]): Promise<void> {\n const col = this.getCollection(collection);\n for (const id of ids) {\n col.delete(id);\n }\n }\n\n async deleteWhere<T = Record<string, unknown>>(\n collection: string,\n predicate: (item: T) => boolean\n ): Promise<void> {\n const col = this.getCollection(collection);\n const toDelete: string[] = [];\n\n for (const [id, item] of col) {\n if (predicate(item as T)) {\n toDelete.push(id);\n }\n }\n\n for (const id of toDelete) {\n col.delete(id);\n }\n }\n\n async count<T = Record<string, unknown>>(\n collection: string,\n predicate?: (item: T) => boolean\n ): Promise<number> {\n const col = this.getCollection(collection);\n\n if (!predicate) {\n return col.size;\n }\n\n let count = 0;\n for (const item of col.values()) {\n if (predicate(item as T)) {\n count++;\n }\n }\n return count;\n }\n\n async clear(): Promise<void> {\n this.collections.clear();\n }\n}\n"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "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",
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "A96220E613784BE464756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
package/dist/browser/types.d.ts
CHANGED
|
@@ -37,6 +37,8 @@ export declare const COLLECTIONS: {
|
|
|
37
37
|
readonly CACHE: "cache";
|
|
38
38
|
readonly LOGS: "logs";
|
|
39
39
|
readonly EMBEDDINGS: "embeddings";
|
|
40
|
+
readonly PAIRING_REQUESTS: "pairing_requests";
|
|
41
|
+
readonly PAIRING_ALLOWLIST: "pairing_allowlist";
|
|
40
42
|
};
|
|
41
43
|
export type CollectionName = (typeof COLLECTIONS)[keyof typeof COLLECTIONS];
|
|
42
44
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/E,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC9B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC/B,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACtF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/E,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC9B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC/B,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACtF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;CAed,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
|
package/dist/node/index.js
CHANGED
|
@@ -250,7 +250,9 @@ var COLLECTIONS = {
|
|
|
250
250
|
TASKS: "tasks",
|
|
251
251
|
CACHE: "cache",
|
|
252
252
|
LOGS: "logs",
|
|
253
|
-
EMBEDDINGS: "embeddings"
|
|
253
|
+
EMBEDDINGS: "embeddings",
|
|
254
|
+
PAIRING_REQUESTS: "pairing_requests",
|
|
255
|
+
PAIRING_ALLOWLIST: "pairing_allowlist"
|
|
254
256
|
};
|
|
255
257
|
|
|
256
258
|
// typescript/adapter.ts
|
|
@@ -863,6 +865,37 @@ class InMemoryDatabaseAdapter extends DatabaseAdapter {
|
|
|
863
865
|
async deleteTask(id) {
|
|
864
866
|
await this.storage.delete(COLLECTIONS.TASKS, id);
|
|
865
867
|
}
|
|
868
|
+
async getPairingRequests(channel, agentId) {
|
|
869
|
+
return this.storage.getWhere(COLLECTIONS.PAIRING_REQUESTS, (r) => r.channel === channel && r.agentId === agentId);
|
|
870
|
+
}
|
|
871
|
+
async createPairingRequest(request) {
|
|
872
|
+
const id = request.id ?? crypto.randomUUID();
|
|
873
|
+
await this.storage.set(COLLECTIONS.PAIRING_REQUESTS, id, { ...request, id });
|
|
874
|
+
return id;
|
|
875
|
+
}
|
|
876
|
+
async updatePairingRequest(request) {
|
|
877
|
+
const existing = await this.storage.get(COLLECTIONS.PAIRING_REQUESTS, request.id);
|
|
878
|
+
if (existing) {
|
|
879
|
+
await this.storage.set(COLLECTIONS.PAIRING_REQUESTS, request.id, {
|
|
880
|
+
...existing,
|
|
881
|
+
...request
|
|
882
|
+
});
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
async deletePairingRequest(id) {
|
|
886
|
+
await this.storage.delete(COLLECTIONS.PAIRING_REQUESTS, id);
|
|
887
|
+
}
|
|
888
|
+
async getPairingAllowlist(channel, agentId) {
|
|
889
|
+
return this.storage.getWhere(COLLECTIONS.PAIRING_ALLOWLIST, (e) => e.channel === channel && e.agentId === agentId);
|
|
890
|
+
}
|
|
891
|
+
async createPairingAllowlistEntry(entry) {
|
|
892
|
+
const id = entry.id ?? crypto.randomUUID();
|
|
893
|
+
await this.storage.set(COLLECTIONS.PAIRING_ALLOWLIST, id, { ...entry, id });
|
|
894
|
+
return id;
|
|
895
|
+
}
|
|
896
|
+
async deletePairingAllowlistEntry(id) {
|
|
897
|
+
await this.storage.delete(COLLECTIONS.PAIRING_ALLOWLIST, id);
|
|
898
|
+
}
|
|
866
899
|
}
|
|
867
900
|
|
|
868
901
|
// typescript/storage-memory.ts
|
|
@@ -985,5 +1018,5 @@ export {
|
|
|
985
1018
|
COLLECTIONS
|
|
986
1019
|
};
|
|
987
1020
|
|
|
988
|
-
//# debugId=
|
|
1021
|
+
//# debugId=A96220E613784BE464756E2164756E21
|
|
989
1022
|
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"sources": ["../../index.ts", "../../adapter.ts", "../../hnsw.ts", "../../types.ts", "../../storage-memory.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import {\n type IAgentRuntime,\n type IDatabaseAdapter,\n logger,\n type Plugin,\n type UUID,\n} from \"@elizaos/core\";\nimport { InMemoryDatabaseAdapter } from \"./adapter\";\nimport { MemoryStorage } from \"./storage-memory\";\n\nconst GLOBAL_SINGLETONS = Symbol.for(\"@elizaos/plugin-inmemorydb/global-singletons\");\ntype GlobalSymbols = typeof globalThis & {\n [GLOBAL_SINGLETONS]?: {\n storageManager?: MemoryStorage;\n };\n};\nconst globalSymbols: GlobalSymbols = globalThis as GlobalSymbols;\n\nif (!globalSymbols[GLOBAL_SINGLETONS]) {\n globalSymbols[GLOBAL_SINGLETONS] = {};\n}\nconst globalSingletons = globalSymbols[GLOBAL_SINGLETONS];\n\nexport function createDatabaseAdapter(agentId: UUID): IDatabaseAdapter {\n if (!globalSingletons.storageManager) {\n globalSingletons.storageManager = new MemoryStorage();\n }\n\n return new InMemoryDatabaseAdapter(globalSingletons.storageManager, agentId);\n}\n\nexport const plugin: Plugin = {\n name: \"@elizaos/plugin-inmemorydb\",\n description: \"Pure in-memory, ephemeral database storage for elizaOS - no persistence\",\n\n async init(_config: Record<string, string>, runtime: IAgentRuntime): Promise<void> {\n logger.info({ src: \"plugin:inmemorydb\" }, \"Initializing in-memory database plugin\");\n\n interface RuntimeWithAdapter {\n adapter?: IDatabaseAdapter;\n hasDatabaseAdapter?: () => boolean;\n getDatabaseAdapter?: () => IDatabaseAdapter | undefined;\n databaseAdapter?: IDatabaseAdapter;\n }\n const runtimeWithAdapter = runtime as RuntimeWithAdapter;\n\n const hasAdapter =\n runtimeWithAdapter.adapter !== undefined ||\n runtimeWithAdapter.databaseAdapter !== undefined ||\n (runtimeWithAdapter.hasDatabaseAdapter?.() ?? false);\n\n if (hasAdapter) {\n logger.debug(\n { src: \"plugin:inmemorydb\" },\n \"Database adapter already exists, skipping initialization\"\n );\n return;\n }\n\n const adapter = createDatabaseAdapter(runtime.agentId);\n\n await adapter.init();\n runtime.registerDatabaseAdapter(adapter);\n\n logger.success(\n { src: \"plugin:inmemorydb\" },\n \"In-memory database adapter registered successfully\"\n );\n },\n};\n\nexport { InMemoryDatabaseAdapter } from \"./adapter\";\nexport { EphemeralHNSW } from \"./hnsw\";\nexport { MemoryStorage } from \"./storage-memory\";\nexport * from \"./types\";\n\nexport default plugin;\n",
|
|
6
|
-
"import {\n type Agent,\n type Component,\n type Content,\n DatabaseAdapter,\n type Entity,\n type Log,\n type LogBody,\n logger,\n type Memory,\n type MemoryMetadata,\n type MemoryTypeAlias,\n type Metadata,\n type Participant,\n type Relationship,\n type Room,\n type Task,\n type UUID,\n type World,\n} from \"@elizaos/core\";\nimport { EphemeralHNSW } from \"./hnsw\";\nimport { COLLECTIONS, type IStorage } from \"./types\";\n\ninterface StoredParticipant {\n id: string;\n entityId: string;\n roomId: string;\n userState?: \"FOLLOWED\" | \"MUTED\" | null;\n}\n\ninterface StoredMemory {\n id?: string;\n entityId: string;\n agentId?: string;\n createdAt?: number;\n content: Content;\n embedding?: number[];\n roomId: string;\n worldId?: string;\n unique?: boolean;\n similarity?: number;\n metadata?: MemoryMetadata;\n}\n\nfunction toMemory(stored: StoredMemory): Memory {\n return {\n id: stored.id as UUID | undefined,\n entityId: stored.entityId as UUID,\n agentId: stored.agentId as UUID | undefined,\n createdAt: stored.createdAt,\n content: stored.content as Content,\n embedding: stored.embedding,\n roomId: stored.roomId as UUID,\n worldId: stored.worldId as UUID | undefined,\n unique: stored.unique,\n similarity: stored.similarity,\n metadata: stored.metadata as MemoryMetadata | undefined,\n };\n}\n\nfunction toMemories(stored: StoredMemory[]): Memory[] {\n return stored.map(toMemory);\n}\n\ninterface StoredRelationship {\n id: string;\n sourceEntityId: string;\n targetEntityId: string;\n agentId?: string;\n tags?: string[];\n metadata?: Metadata;\n createdAt?: string;\n}\n\nexport class InMemoryDatabaseAdapter extends DatabaseAdapter<IStorage> {\n private storage: IStorage;\n private vectorIndex: EphemeralHNSW;\n private embeddingDimension = 384;\n private ready = false;\n private agentId: UUID;\n\n constructor(storage: IStorage, agentId: UUID) {\n super();\n this.storage = storage;\n this.agentId = agentId;\n this.db = storage;\n this.vectorIndex = new EphemeralHNSW();\n }\n\n async initialize(): Promise<void> {\n await this.init();\n }\n\n async init(): Promise<void> {\n await this.storage.init();\n await this.vectorIndex.init(this.embeddingDimension);\n this.ready = true;\n logger.info({ src: \"plugin:inmemorydb\" }, \"In-memory database initialized\");\n }\n\n async runPluginMigrations(\n _plugins: Array<{ name: string; schema?: Record<string, unknown> }>,\n _options?: { verbose?: boolean; force?: boolean; dryRun?: boolean }\n ): Promise<void> {\n logger.debug(\n { src: \"plugin:inmemorydb\" },\n \"Plugin migrations not needed for in-memory storage\"\n );\n }\n\n async isReady(): Promise<boolean> {\n return this.ready && (await this.storage.isReady());\n }\n\n async close(): Promise<void> {\n await this.vectorIndex.clear();\n await this.storage.close();\n this.ready = false;\n logger.info({ src: \"plugin:inmemorydb\" }, \"In-memory database closed\");\n }\n\n async getConnection(): Promise<IStorage> {\n return this.storage;\n }\n\n async getAgent(agentId: UUID): Promise<Agent | null> {\n return this.storage.get<Agent>(COLLECTIONS.AGENTS, agentId);\n }\n\n async getAgents(): Promise<Partial<Agent>[]> {\n return this.storage.getAll<Agent>(COLLECTIONS.AGENTS);\n }\n\n async createAgent(agent: Partial<Agent>): Promise<boolean> {\n if (!agent.id) return false;\n await this.storage.set(COLLECTIONS.AGENTS, agent.id, agent);\n return true;\n }\n\n async updateAgent(agentId: UUID, agent: Partial<Agent>): Promise<boolean> {\n const existing = await this.getAgent(agentId);\n if (!existing) return false;\n await this.storage.set(COLLECTIONS.AGENTS, agentId, {\n ...existing,\n ...agent,\n });\n return true;\n }\n\n async deleteAgent(agentId: UUID): Promise<boolean> {\n return this.storage.delete(COLLECTIONS.AGENTS, agentId);\n }\n\n async ensureEmbeddingDimension(dimension: number): Promise<void> {\n if (this.embeddingDimension !== dimension) {\n this.embeddingDimension = dimension;\n await this.vectorIndex.init(dimension);\n }\n }\n\n async getEntitiesByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n const entities: Entity[] = [];\n for (const id of entityIds) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, id);\n if (entity) entities.push(entity);\n }\n return entities.length > 0 ? entities : null;\n }\n\n async getEntitiesForRoom(roomId: UUID, includeComponents = false): Promise<Entity[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n\n const entityIds = participants.map((p) => p.entityId);\n const entities: Entity[] = [];\n\n for (const entityId of entityIds) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, entityId);\n if (entity) {\n if (includeComponents) {\n const components = await this.getComponents(entityId as UUID);\n (entity as Entity & { components?: Component[] }).components = components;\n }\n entities.push(entity);\n }\n }\n\n return entities;\n }\n\n async createEntities(entities: Entity[]): Promise<boolean> {\n for (const entity of entities) {\n if (!entity.id) continue;\n await this.storage.set(COLLECTIONS.ENTITIES, entity.id, entity);\n }\n return true;\n }\n\n async updateEntity(entity: Entity): Promise<void> {\n if (!entity.id) return;\n await this.storage.set(COLLECTIONS.ENTITIES, entity.id, entity);\n }\n\n async getComponent(\n entityId: UUID,\n type: string,\n worldId?: UUID,\n sourceEntityId?: UUID\n ): Promise<Component | null> {\n const components = await this.storage.getWhere<Component>(\n COLLECTIONS.COMPONENTS,\n (c) =>\n c.entityId === entityId &&\n c.type === type &&\n (worldId === undefined || c.worldId === worldId) &&\n (sourceEntityId === undefined || c.sourceEntityId === sourceEntityId)\n );\n return components[0] ?? null;\n }\n\n async getComponents(entityId: UUID, worldId?: UUID, sourceEntityId?: UUID): Promise<Component[]> {\n return this.storage.getWhere<Component>(\n COLLECTIONS.COMPONENTS,\n (c) =>\n c.entityId === entityId &&\n (worldId === undefined || c.worldId === worldId) &&\n (sourceEntityId === undefined || c.sourceEntityId === sourceEntityId)\n );\n }\n\n async createComponent(component: Component): Promise<boolean> {\n if (!component.id) return false;\n await this.storage.set(COLLECTIONS.COMPONENTS, component.id, component);\n return true;\n }\n\n async updateComponent(component: Component): Promise<void> {\n if (!component.id) return;\n await this.storage.set(COLLECTIONS.COMPONENTS, component.id, component);\n }\n\n async deleteComponent(componentId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.COMPONENTS, componentId);\n }\n\n async getMemories(params: {\n entityId?: UUID;\n agentId?: UUID;\n count?: number;\n offset?: number;\n unique?: boolean;\n tableName: string;\n start?: number;\n end?: number;\n roomId?: UUID;\n worldId?: UUID;\n }): Promise<Memory[]> {\n let memories = await this.storage.getWhere<StoredMemory>(COLLECTIONS.MEMORIES, (m) => {\n if (params.entityId && m.entityId !== params.entityId) return false;\n if (params.agentId && m.agentId !== params.agentId) return false;\n if (params.roomId && m.roomId !== params.roomId) return false;\n if (params.worldId && m.worldId !== params.worldId) return false;\n if (params.tableName && m.metadata?.type !== params.tableName) return false;\n if (params.start && m.createdAt && m.createdAt < params.start) return false;\n if (params.end && m.createdAt && m.createdAt > params.end) return false;\n if (params.unique && !m.unique) return false;\n return true;\n });\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.offset) {\n memories = memories.slice(params.offset);\n }\n if (params.count) {\n memories = memories.slice(0, params.count);\n }\n\n return toMemories(memories);\n }\n\n async getMemoriesByRoomIds(params: {\n roomIds: UUID[];\n tableName: string;\n limit?: number;\n }): Promise<Memory[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) =>\n params.roomIds.includes(m.roomId as UUID) &&\n (params.tableName ? m.metadata?.type === params.tableName : true)\n );\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.limit) {\n return toMemories(memories.slice(0, params.limit));\n }\n return toMemories(memories);\n }\n\n async getMemoryById(id: UUID): Promise<Memory | null> {\n return this.storage.get<Memory>(COLLECTIONS.MEMORIES, id);\n }\n\n async getMemoriesByIds(memoryIds: UUID[], tableName?: string): Promise<Memory[]> {\n const memories: Memory[] = [];\n for (const id of memoryIds) {\n const memory = await this.storage.get<StoredMemory>(COLLECTIONS.MEMORIES, id);\n if (memory) {\n if (tableName && memory.metadata?.type !== tableName) continue;\n memories.push(toMemory(memory));\n }\n }\n return memories;\n }\n\n async getCachedEmbeddings(params: {\n query_table_name: string;\n query_threshold: number;\n query_input: string;\n query_field_name: string;\n query_field_sub_name: string;\n query_match_count: number;\n }): Promise<{ embedding: number[]; levenshtein_score: number }[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) => m.metadata?.type === params.query_table_name\n );\n\n const results: { embedding: number[]; levenshtein_score: number }[] = [];\n\n for (const memory of memories) {\n if (!memory.embedding) continue;\n\n const memoryRecord = memory as StoredMemory & Record<string, unknown>;\n const fieldValue = memoryRecord[params.query_field_name];\n const content = String(fieldValue ?? \"\");\n const score = this.simpleStringScore(params.query_input, content);\n\n if (score <= params.query_threshold) {\n results.push({\n embedding: memory.embedding,\n levenshtein_score: score,\n });\n }\n }\n\n return results.slice(0, params.query_match_count);\n }\n\n private simpleStringScore(a: string, b: string): number {\n if (a === b) return 0;\n const aLower = a.toLowerCase();\n const bLower = b.toLowerCase();\n if (aLower === bLower) return 0.1;\n if (aLower.includes(bLower) || bLower.includes(aLower)) return 0.3;\n return 1;\n }\n\n async log(params: { body: LogBody; entityId: UUID; roomId: UUID; type: string }): Promise<void> {\n const id = crypto.randomUUID() as UUID;\n const log: Log = {\n id,\n entityId: params.entityId,\n roomId: params.roomId,\n body: params.body,\n type: params.type,\n createdAt: new Date(),\n };\n await this.storage.set(COLLECTIONS.LOGS, id, log);\n }\n\n async getLogs(params: {\n entityId?: UUID;\n roomId?: UUID;\n type?: string;\n count?: number;\n offset?: number;\n }): Promise<Log[]> {\n let logs = await this.storage.getWhere<Log>(COLLECTIONS.LOGS, (l) => {\n if (params.entityId && l.entityId !== params.entityId) return false;\n if (params.roomId && l.roomId !== params.roomId) return false;\n if (params.type && l.type !== params.type) return false;\n return true;\n });\n\n logs.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());\n\n if (params.offset) {\n logs = logs.slice(params.offset);\n }\n if (params.count) {\n logs = logs.slice(0, params.count);\n }\n\n return logs;\n }\n\n async deleteLog(logId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.LOGS, logId);\n }\n\n async searchMemories(params: {\n tableName: string;\n embedding: number[];\n match_threshold?: number;\n count?: number;\n unique?: boolean;\n query?: string;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n }): Promise<Memory[]> {\n const threshold = params.match_threshold ?? 0.5;\n const count = params.count ?? 10;\n\n const results = await this.vectorIndex.search(params.embedding, count * 2, threshold);\n\n const memories: Memory[] = [];\n for (const result of results) {\n const memory = await this.storage.get<StoredMemory>(COLLECTIONS.MEMORIES, result.id);\n if (!memory) continue;\n\n if (params.tableName && memory.metadata?.type !== params.tableName) continue;\n if (params.roomId && memory.roomId !== params.roomId) continue;\n if (params.worldId && memory.worldId !== params.worldId) continue;\n if (params.entityId && memory.entityId !== params.entityId) continue;\n if (params.unique && !memory.unique) continue;\n\n memories.push({\n ...toMemory(memory),\n similarity: result.similarity,\n });\n }\n\n return memories.slice(0, count);\n }\n\n async createMemory(memory: Memory, tableName: string, unique = false): Promise<UUID> {\n const id = memory.id ?? (crypto.randomUUID() as UUID);\n const now = Date.now();\n\n const storedMemory: StoredMemory = {\n ...memory,\n id,\n agentId: memory.agentId ?? this.agentId,\n unique: unique || memory.unique,\n createdAt: memory.createdAt ?? now,\n metadata: {\n ...(memory.metadata ?? {}),\n type: tableName as MemoryTypeAlias,\n } as StoredMemory[\"metadata\"],\n };\n\n await this.storage.set(COLLECTIONS.MEMORIES, id, storedMemory);\n\n if (memory.embedding && memory.embedding.length > 0) {\n await this.vectorIndex.add(id, memory.embedding);\n }\n\n return id;\n }\n\n async updateMemory(\n memory: Partial<Memory> & { id: UUID; metadata?: MemoryMetadata }\n ): Promise<boolean> {\n const existing = await this.getMemoryById(memory.id);\n if (!existing) return false;\n\n const updated = {\n ...existing,\n ...memory,\n metadata: {\n ...(existing.metadata ?? {}),\n ...(memory.metadata ?? {}),\n } as MemoryMetadata,\n };\n\n await this.storage.set(COLLECTIONS.MEMORIES, memory.id, updated);\n\n if (memory.embedding && memory.embedding.length > 0) {\n await this.vectorIndex.add(memory.id, memory.embedding);\n }\n\n return true;\n }\n\n async deleteMemory(memoryId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.MEMORIES, memoryId);\n await this.vectorIndex.remove(memoryId);\n }\n\n async deleteManyMemories(memoryIds: UUID[]): Promise<void> {\n for (const id of memoryIds) {\n await this.deleteMemory(id);\n }\n }\n\n async deleteAllMemories(roomId: UUID, tableName: string): Promise<void> {\n const memories = await this.getMemories({ roomId, tableName });\n await this.deleteManyMemories(\n memories.map((m) => m.id).filter((id): id is UUID => id !== undefined)\n );\n }\n\n async countMemories(roomId: UUID, unique = false, tableName?: string): Promise<number> {\n return this.storage.count<StoredMemory>(COLLECTIONS.MEMORIES, (memory) => {\n if (memory.roomId !== roomId) return false;\n if (unique && !memory.unique) return false;\n if (tableName && memory.metadata?.type !== tableName) return false;\n return true;\n });\n }\n\n async getMemoriesByWorldId(params: {\n worldId: UUID;\n count?: number;\n tableName?: string;\n }): Promise<Memory[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) =>\n m.worldId === params.worldId &&\n (params.tableName ? m.metadata?.type === params.tableName : true)\n );\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.count) {\n return toMemories(memories.slice(0, params.count));\n }\n return toMemories(memories);\n }\n\n async createWorld(world: World): Promise<UUID> {\n const id = world.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.WORLDS, id, { ...world, id });\n return id;\n }\n\n async getWorld(id: UUID): Promise<World | null> {\n return this.storage.get<World>(COLLECTIONS.WORLDS, id);\n }\n\n async removeWorld(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.WORLDS, id);\n }\n\n async getAllWorlds(): Promise<World[]> {\n return this.storage.getAll<World>(COLLECTIONS.WORLDS);\n }\n\n async updateWorld(world: World): Promise<void> {\n if (!world.id) return;\n await this.storage.set(COLLECTIONS.WORLDS, world.id, world);\n }\n\n async getRoomsByIds(roomIds: UUID[]): Promise<Room[] | null> {\n const rooms: Room[] = [];\n for (const id of roomIds) {\n const room = await this.storage.get<Room>(COLLECTIONS.ROOMS, id);\n if (room) rooms.push(room);\n }\n return rooms.length > 0 ? rooms : null;\n }\n\n async createRooms(rooms: Room[]): Promise<UUID[]> {\n const ids: UUID[] = [];\n for (const room of rooms) {\n const id = room.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.ROOMS, id, { ...room, id });\n ids.push(id);\n }\n return ids;\n }\n\n async deleteRoom(roomId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.ROOMS, roomId);\n await this.storage.deleteWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n await this.storage.deleteWhere<StoredMemory>(COLLECTIONS.MEMORIES, (m) => m.roomId === roomId);\n }\n\n async deleteRoomsByWorldId(worldId: UUID): Promise<void> {\n const rooms = await this.getRoomsByWorld(worldId);\n for (const room of rooms) {\n if (room.id) {\n await this.deleteRoom(room.id);\n }\n }\n }\n\n async updateRoom(room: Room): Promise<void> {\n if (!room.id) return;\n await this.storage.set(COLLECTIONS.ROOMS, room.id, room);\n }\n\n async getRoomsForParticipant(entityId: UUID): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId\n );\n return participants.map((p) => p.roomId as UUID);\n }\n\n async getRoomsForParticipants(userIds: UUID[]): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => userIds.includes(p.entityId as UUID)\n );\n return [...new Set(participants.map((p) => p.roomId as UUID))];\n }\n\n async getRoomsByWorld(worldId: UUID): Promise<Room[]> {\n return this.storage.getWhere<Room>(COLLECTIONS.ROOMS, (r) => r.worldId === worldId);\n }\n\n async removeParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId && p.roomId === roomId\n );\n\n if (participants.length === 0) return false;\n\n for (const p of participants) {\n if (p.id) {\n await this.storage.delete(COLLECTIONS.PARTICIPANTS, p.id);\n }\n }\n return true;\n }\n\n async getParticipantsForEntity(entityId: UUID): Promise<Participant[]> {\n const stored = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId\n );\n\n const participants: Participant[] = [];\n for (const p of stored) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, p.entityId);\n if (entity) {\n participants.push({\n id: p.id as UUID,\n entity,\n });\n }\n }\n return participants;\n }\n\n async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n return participants.map((p) => p.entityId as UUID);\n }\n\n async isRoomParticipant(roomId: UUID, entityId: UUID): Promise<boolean> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n return participants.length > 0;\n }\n\n async addParticipantsRoom(entityIds: UUID[], roomId: UUID): Promise<boolean> {\n for (const entityId of entityIds) {\n const exists = await this.isRoomParticipant(roomId, entityId);\n if (!exists) {\n const id = crypto.randomUUID();\n const participant: StoredParticipant = {\n id,\n entityId,\n roomId,\n };\n await this.storage.set(COLLECTIONS.PARTICIPANTS, id, participant);\n }\n }\n return true;\n }\n\n async getParticipantUserState(\n roomId: UUID,\n entityId: UUID\n ): Promise<\"FOLLOWED\" | \"MUTED\" | null> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n\n if (participants.length === 0) return null;\n const state = participants[0].userState;\n if (state === \"FOLLOWED\" || state === \"MUTED\") return state;\n return null;\n }\n\n async setParticipantUserState(\n roomId: UUID,\n entityId: UUID,\n state: \"FOLLOWED\" | \"MUTED\" | null\n ): Promise<void> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n\n for (const p of participants) {\n if (p.id) {\n await this.storage.set(COLLECTIONS.PARTICIPANTS, p.id, {\n ...p,\n userState: state,\n });\n }\n }\n }\n\n async createRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n tags?: string[];\n metadata?: Metadata;\n }): Promise<boolean> {\n const id = crypto.randomUUID() as UUID;\n const relationship: StoredRelationship = {\n id,\n sourceEntityId: params.sourceEntityId,\n targetEntityId: params.targetEntityId,\n agentId: this.agentId,\n tags: params.tags ?? [],\n metadata: params.metadata ?? {},\n createdAt: new Date().toISOString(),\n };\n await this.storage.set(COLLECTIONS.RELATIONSHIPS, id, relationship);\n return true;\n }\n\n async getRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n }): Promise<Relationship | null> {\n const relationships = await this.storage.getWhere<StoredRelationship>(\n COLLECTIONS.RELATIONSHIPS,\n (r) =>\n r.sourceEntityId === params.sourceEntityId && r.targetEntityId === params.targetEntityId\n );\n\n if (relationships.length === 0) return null;\n\n const r = relationships[0];\n return {\n id: r.id as UUID,\n sourceEntityId: r.sourceEntityId as UUID,\n targetEntityId: r.targetEntityId as UUID,\n agentId: (r.agentId as UUID) ?? this.agentId,\n tags: r.tags ?? [],\n metadata: r.metadata ?? {},\n createdAt: r.createdAt,\n };\n }\n\n async getRelationships(params: { entityId: UUID; tags?: string[] }): Promise<Relationship[]> {\n const stored = await this.storage.getWhere<StoredRelationship>(\n COLLECTIONS.RELATIONSHIPS,\n (r) => {\n const isInvolved =\n r.sourceEntityId === params.entityId || r.targetEntityId === params.entityId;\n if (!isInvolved) return false;\n if (params.tags && params.tags.length > 0) {\n return params.tags.some((tag) => r.tags?.includes(tag));\n }\n return true;\n }\n );\n\n return stored.map((r) => ({\n id: r.id as UUID,\n sourceEntityId: r.sourceEntityId as UUID,\n targetEntityId: r.targetEntityId as UUID,\n agentId: (r.agentId as UUID) ?? this.agentId,\n tags: r.tags ?? [],\n metadata: r.metadata ?? {},\n createdAt: r.createdAt,\n }));\n }\n\n async updateRelationship(relationship: Relationship): Promise<void> {\n const existing = await this.getRelationship({\n sourceEntityId: relationship.sourceEntityId,\n targetEntityId: relationship.targetEntityId,\n });\n\n if (!existing || !existing.id) return;\n\n const stored: StoredRelationship = {\n id: existing.id,\n sourceEntityId: relationship.sourceEntityId,\n targetEntityId: relationship.targetEntityId,\n agentId: relationship.agentId,\n tags: relationship.tags ?? existing.tags ?? [],\n metadata: { ...(existing.metadata ?? {}), ...(relationship.metadata ?? {}) },\n createdAt: existing.createdAt ?? new Date().toISOString(),\n };\n\n await this.storage.set(COLLECTIONS.RELATIONSHIPS, existing.id, stored);\n }\n\n async getCache<T>(key: string): Promise<T | undefined> {\n const cached = await this.storage.get<{ value: T; expiresAt?: number }>(COLLECTIONS.CACHE, key);\n if (!cached) return undefined;\n\n if (cached.expiresAt && Date.now() > cached.expiresAt) {\n await this.deleteCache(key);\n return undefined;\n }\n\n return cached.value;\n }\n\n async setCache<T>(key: string, value: T): Promise<boolean> {\n await this.storage.set(COLLECTIONS.CACHE, key, { value });\n return true;\n }\n\n async deleteCache(key: string): Promise<boolean> {\n return this.storage.delete(COLLECTIONS.CACHE, key);\n }\n\n async createTask(task: Task): Promise<UUID> {\n const id = task.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.TASKS, id, { ...task, id });\n return id;\n }\n\n async getTasks(params: { roomId?: UUID; tags?: string[]; entityId?: UUID }): Promise<Task[]> {\n return this.storage.getWhere<Task>(COLLECTIONS.TASKS, (t) => {\n if (params.roomId && t.roomId !== params.roomId) return false;\n if (params.entityId && t.entityId !== params.entityId) return false;\n if (params.tags && params.tags.length > 0) {\n if (!t.tags?.some((tag) => params.tags?.includes(tag))) return false;\n }\n return true;\n });\n }\n\n async getTask(id: UUID): Promise<Task | null> {\n return this.storage.get<Task>(COLLECTIONS.TASKS, id);\n }\n\n async getTasksByName(name: string): Promise<Task[]> {\n return this.storage.getWhere<Task>(COLLECTIONS.TASKS, (t) => t.name === name);\n }\n\n async updateTask(id: UUID, task: Partial<Task>): Promise<void> {\n const existing = await this.getTask(id);\n if (!existing) return;\n await this.storage.set(COLLECTIONS.TASKS, id, { ...existing, ...task });\n }\n\n async deleteTask(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.TASKS, id);\n }\n}\n",
|
|
6
|
+
"import {\n type Agent,\n type Component,\n type Content,\n DatabaseAdapter,\n type Entity,\n type Log,\n type LogBody,\n logger,\n type Memory,\n type MemoryMetadata,\n type MemoryTypeAlias,\n type Metadata,\n type PairingAllowlistEntry,\n type PairingChannel,\n type PairingRequest,\n type Participant,\n type Relationship,\n type Room,\n type Task,\n type UUID,\n type World,\n} from \"@elizaos/core\";\nimport { EphemeralHNSW } from \"./hnsw\";\nimport { COLLECTIONS, type IStorage } from \"./types\";\n\ninterface StoredParticipant {\n id: string;\n entityId: string;\n roomId: string;\n userState?: \"FOLLOWED\" | \"MUTED\" | null;\n}\n\ninterface StoredMemory {\n id?: string;\n entityId: string;\n agentId?: string;\n createdAt?: number;\n content: Content;\n embedding?: number[];\n roomId: string;\n worldId?: string;\n unique?: boolean;\n similarity?: number;\n metadata?: MemoryMetadata;\n}\n\nfunction toMemory(stored: StoredMemory): Memory {\n return {\n id: stored.id as UUID | undefined,\n entityId: stored.entityId as UUID,\n agentId: stored.agentId as UUID | undefined,\n createdAt: stored.createdAt,\n content: stored.content as Content,\n embedding: stored.embedding,\n roomId: stored.roomId as UUID,\n worldId: stored.worldId as UUID | undefined,\n unique: stored.unique,\n similarity: stored.similarity,\n metadata: stored.metadata as MemoryMetadata | undefined,\n };\n}\n\nfunction toMemories(stored: StoredMemory[]): Memory[] {\n return stored.map(toMemory);\n}\n\ninterface StoredRelationship {\n id: string;\n sourceEntityId: string;\n targetEntityId: string;\n agentId?: string;\n tags?: string[];\n metadata?: Metadata;\n createdAt?: string;\n}\n\nexport class InMemoryDatabaseAdapter extends DatabaseAdapter<IStorage> {\n private storage: IStorage;\n private vectorIndex: EphemeralHNSW;\n private embeddingDimension = 384;\n private ready = false;\n private agentId: UUID;\n\n constructor(storage: IStorage, agentId: UUID) {\n super();\n this.storage = storage;\n this.agentId = agentId;\n this.db = storage;\n this.vectorIndex = new EphemeralHNSW();\n }\n\n async initialize(): Promise<void> {\n await this.init();\n }\n\n async init(): Promise<void> {\n await this.storage.init();\n await this.vectorIndex.init(this.embeddingDimension);\n this.ready = true;\n logger.info({ src: \"plugin:inmemorydb\" }, \"In-memory database initialized\");\n }\n\n async runPluginMigrations(\n _plugins: Array<{ name: string; schema?: Record<string, unknown> }>,\n _options?: { verbose?: boolean; force?: boolean; dryRun?: boolean }\n ): Promise<void> {\n logger.debug(\n { src: \"plugin:inmemorydb\" },\n \"Plugin migrations not needed for in-memory storage\"\n );\n }\n\n async isReady(): Promise<boolean> {\n return this.ready && (await this.storage.isReady());\n }\n\n async close(): Promise<void> {\n await this.vectorIndex.clear();\n await this.storage.close();\n this.ready = false;\n logger.info({ src: \"plugin:inmemorydb\" }, \"In-memory database closed\");\n }\n\n async getConnection(): Promise<IStorage> {\n return this.storage;\n }\n\n async getAgent(agentId: UUID): Promise<Agent | null> {\n return this.storage.get<Agent>(COLLECTIONS.AGENTS, agentId);\n }\n\n async getAgents(): Promise<Partial<Agent>[]> {\n return this.storage.getAll<Agent>(COLLECTIONS.AGENTS);\n }\n\n async createAgent(agent: Partial<Agent>): Promise<boolean> {\n if (!agent.id) return false;\n await this.storage.set(COLLECTIONS.AGENTS, agent.id, agent);\n return true;\n }\n\n async updateAgent(agentId: UUID, agent: Partial<Agent>): Promise<boolean> {\n const existing = await this.getAgent(agentId);\n if (!existing) return false;\n await this.storage.set(COLLECTIONS.AGENTS, agentId, {\n ...existing,\n ...agent,\n });\n return true;\n }\n\n async deleteAgent(agentId: UUID): Promise<boolean> {\n return this.storage.delete(COLLECTIONS.AGENTS, agentId);\n }\n\n async ensureEmbeddingDimension(dimension: number): Promise<void> {\n if (this.embeddingDimension !== dimension) {\n this.embeddingDimension = dimension;\n await this.vectorIndex.init(dimension);\n }\n }\n\n async getEntitiesByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n const entities: Entity[] = [];\n for (const id of entityIds) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, id);\n if (entity) entities.push(entity);\n }\n return entities.length > 0 ? entities : null;\n }\n\n async getEntitiesForRoom(roomId: UUID, includeComponents = false): Promise<Entity[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n\n const entityIds = participants.map((p) => p.entityId);\n const entities: Entity[] = [];\n\n for (const entityId of entityIds) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, entityId);\n if (entity) {\n if (includeComponents) {\n const components = await this.getComponents(entityId as UUID);\n (entity as Entity & { components?: Component[] }).components = components;\n }\n entities.push(entity);\n }\n }\n\n return entities;\n }\n\n async createEntities(entities: Entity[]): Promise<boolean> {\n for (const entity of entities) {\n if (!entity.id) continue;\n await this.storage.set(COLLECTIONS.ENTITIES, entity.id, entity);\n }\n return true;\n }\n\n async updateEntity(entity: Entity): Promise<void> {\n if (!entity.id) return;\n await this.storage.set(COLLECTIONS.ENTITIES, entity.id, entity);\n }\n\n async getComponent(\n entityId: UUID,\n type: string,\n worldId?: UUID,\n sourceEntityId?: UUID\n ): Promise<Component | null> {\n const components = await this.storage.getWhere<Component>(\n COLLECTIONS.COMPONENTS,\n (c) =>\n c.entityId === entityId &&\n c.type === type &&\n (worldId === undefined || c.worldId === worldId) &&\n (sourceEntityId === undefined || c.sourceEntityId === sourceEntityId)\n );\n return components[0] ?? null;\n }\n\n async getComponents(entityId: UUID, worldId?: UUID, sourceEntityId?: UUID): Promise<Component[]> {\n return this.storage.getWhere<Component>(\n COLLECTIONS.COMPONENTS,\n (c) =>\n c.entityId === entityId &&\n (worldId === undefined || c.worldId === worldId) &&\n (sourceEntityId === undefined || c.sourceEntityId === sourceEntityId)\n );\n }\n\n async createComponent(component: Component): Promise<boolean> {\n if (!component.id) return false;\n await this.storage.set(COLLECTIONS.COMPONENTS, component.id, component);\n return true;\n }\n\n async updateComponent(component: Component): Promise<void> {\n if (!component.id) return;\n await this.storage.set(COLLECTIONS.COMPONENTS, component.id, component);\n }\n\n async deleteComponent(componentId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.COMPONENTS, componentId);\n }\n\n async getMemories(params: {\n entityId?: UUID;\n agentId?: UUID;\n count?: number;\n offset?: number;\n unique?: boolean;\n tableName: string;\n start?: number;\n end?: number;\n roomId?: UUID;\n worldId?: UUID;\n }): Promise<Memory[]> {\n let memories = await this.storage.getWhere<StoredMemory>(COLLECTIONS.MEMORIES, (m) => {\n if (params.entityId && m.entityId !== params.entityId) return false;\n if (params.agentId && m.agentId !== params.agentId) return false;\n if (params.roomId && m.roomId !== params.roomId) return false;\n if (params.worldId && m.worldId !== params.worldId) return false;\n if (params.tableName && m.metadata?.type !== params.tableName) return false;\n if (params.start && m.createdAt && m.createdAt < params.start) return false;\n if (params.end && m.createdAt && m.createdAt > params.end) return false;\n if (params.unique && !m.unique) return false;\n return true;\n });\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.offset) {\n memories = memories.slice(params.offset);\n }\n if (params.count) {\n memories = memories.slice(0, params.count);\n }\n\n return toMemories(memories);\n }\n\n async getMemoriesByRoomIds(params: {\n roomIds: UUID[];\n tableName: string;\n limit?: number;\n }): Promise<Memory[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) =>\n params.roomIds.includes(m.roomId as UUID) &&\n (params.tableName ? m.metadata?.type === params.tableName : true)\n );\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.limit) {\n return toMemories(memories.slice(0, params.limit));\n }\n return toMemories(memories);\n }\n\n async getMemoryById(id: UUID): Promise<Memory | null> {\n return this.storage.get<Memory>(COLLECTIONS.MEMORIES, id);\n }\n\n async getMemoriesByIds(memoryIds: UUID[], tableName?: string): Promise<Memory[]> {\n const memories: Memory[] = [];\n for (const id of memoryIds) {\n const memory = await this.storage.get<StoredMemory>(COLLECTIONS.MEMORIES, id);\n if (memory) {\n if (tableName && memory.metadata?.type !== tableName) continue;\n memories.push(toMemory(memory));\n }\n }\n return memories;\n }\n\n async getCachedEmbeddings(params: {\n query_table_name: string;\n query_threshold: number;\n query_input: string;\n query_field_name: string;\n query_field_sub_name: string;\n query_match_count: number;\n }): Promise<{ embedding: number[]; levenshtein_score: number }[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) => m.metadata?.type === params.query_table_name\n );\n\n const results: { embedding: number[]; levenshtein_score: number }[] = [];\n\n for (const memory of memories) {\n if (!memory.embedding) continue;\n\n const memoryRecord = memory as StoredMemory & Record<string, unknown>;\n const fieldValue = memoryRecord[params.query_field_name];\n const content = String(fieldValue ?? \"\");\n const score = this.simpleStringScore(params.query_input, content);\n\n if (score <= params.query_threshold) {\n results.push({\n embedding: memory.embedding,\n levenshtein_score: score,\n });\n }\n }\n\n return results.slice(0, params.query_match_count);\n }\n\n private simpleStringScore(a: string, b: string): number {\n if (a === b) return 0;\n const aLower = a.toLowerCase();\n const bLower = b.toLowerCase();\n if (aLower === bLower) return 0.1;\n if (aLower.includes(bLower) || bLower.includes(aLower)) return 0.3;\n return 1;\n }\n\n async log(params: { body: LogBody; entityId: UUID; roomId: UUID; type: string }): Promise<void> {\n const id = crypto.randomUUID() as UUID;\n const log: Log = {\n id,\n entityId: params.entityId,\n roomId: params.roomId,\n body: params.body,\n type: params.type,\n createdAt: new Date(),\n };\n await this.storage.set(COLLECTIONS.LOGS, id, log);\n }\n\n async getLogs(params: {\n entityId?: UUID;\n roomId?: UUID;\n type?: string;\n count?: number;\n offset?: number;\n }): Promise<Log[]> {\n let logs = await this.storage.getWhere<Log>(COLLECTIONS.LOGS, (l) => {\n if (params.entityId && l.entityId !== params.entityId) return false;\n if (params.roomId && l.roomId !== params.roomId) return false;\n if (params.type && l.type !== params.type) return false;\n return true;\n });\n\n logs.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());\n\n if (params.offset) {\n logs = logs.slice(params.offset);\n }\n if (params.count) {\n logs = logs.slice(0, params.count);\n }\n\n return logs;\n }\n\n async deleteLog(logId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.LOGS, logId);\n }\n\n async searchMemories(params: {\n tableName: string;\n embedding: number[];\n match_threshold?: number;\n count?: number;\n unique?: boolean;\n query?: string;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n }): Promise<Memory[]> {\n const threshold = params.match_threshold ?? 0.5;\n const count = params.count ?? 10;\n\n const results = await this.vectorIndex.search(params.embedding, count * 2, threshold);\n\n const memories: Memory[] = [];\n for (const result of results) {\n const memory = await this.storage.get<StoredMemory>(COLLECTIONS.MEMORIES, result.id);\n if (!memory) continue;\n\n if (params.tableName && memory.metadata?.type !== params.tableName) continue;\n if (params.roomId && memory.roomId !== params.roomId) continue;\n if (params.worldId && memory.worldId !== params.worldId) continue;\n if (params.entityId && memory.entityId !== params.entityId) continue;\n if (params.unique && !memory.unique) continue;\n\n memories.push({\n ...toMemory(memory),\n similarity: result.similarity,\n });\n }\n\n return memories.slice(0, count);\n }\n\n async createMemory(memory: Memory, tableName: string, unique = false): Promise<UUID> {\n const id = memory.id ?? (crypto.randomUUID() as UUID);\n const now = Date.now();\n\n const storedMemory: StoredMemory = {\n ...memory,\n id,\n agentId: memory.agentId ?? this.agentId,\n unique: unique || memory.unique,\n createdAt: memory.createdAt ?? now,\n metadata: {\n ...(memory.metadata ?? {}),\n type: tableName as MemoryTypeAlias,\n } as StoredMemory[\"metadata\"],\n };\n\n await this.storage.set(COLLECTIONS.MEMORIES, id, storedMemory);\n\n if (memory.embedding && memory.embedding.length > 0) {\n await this.vectorIndex.add(id, memory.embedding);\n }\n\n return id;\n }\n\n async updateMemory(\n memory: Partial<Memory> & { id: UUID; metadata?: MemoryMetadata }\n ): Promise<boolean> {\n const existing = await this.getMemoryById(memory.id);\n if (!existing) return false;\n\n const updated = {\n ...existing,\n ...memory,\n metadata: {\n ...(existing.metadata ?? {}),\n ...(memory.metadata ?? {}),\n } as MemoryMetadata,\n };\n\n await this.storage.set(COLLECTIONS.MEMORIES, memory.id, updated);\n\n if (memory.embedding && memory.embedding.length > 0) {\n await this.vectorIndex.add(memory.id, memory.embedding);\n }\n\n return true;\n }\n\n async deleteMemory(memoryId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.MEMORIES, memoryId);\n await this.vectorIndex.remove(memoryId);\n }\n\n async deleteManyMemories(memoryIds: UUID[]): Promise<void> {\n for (const id of memoryIds) {\n await this.deleteMemory(id);\n }\n }\n\n async deleteAllMemories(roomId: UUID, tableName: string): Promise<void> {\n const memories = await this.getMemories({ roomId, tableName });\n await this.deleteManyMemories(\n memories.map((m) => m.id).filter((id): id is UUID => id !== undefined)\n );\n }\n\n async countMemories(roomId: UUID, unique = false, tableName?: string): Promise<number> {\n return this.storage.count<StoredMemory>(COLLECTIONS.MEMORIES, (memory) => {\n if (memory.roomId !== roomId) return false;\n if (unique && !memory.unique) return false;\n if (tableName && memory.metadata?.type !== tableName) return false;\n return true;\n });\n }\n\n async getMemoriesByWorldId(params: {\n worldId: UUID;\n count?: number;\n tableName?: string;\n }): Promise<Memory[]> {\n const memories = await this.storage.getWhere<StoredMemory>(\n COLLECTIONS.MEMORIES,\n (m) =>\n m.worldId === params.worldId &&\n (params.tableName ? m.metadata?.type === params.tableName : true)\n );\n\n memories.sort((a, b) => (b.createdAt ?? 0) - (a.createdAt ?? 0));\n\n if (params.count) {\n return toMemories(memories.slice(0, params.count));\n }\n return toMemories(memories);\n }\n\n async createWorld(world: World): Promise<UUID> {\n const id = world.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.WORLDS, id, { ...world, id });\n return id;\n }\n\n async getWorld(id: UUID): Promise<World | null> {\n return this.storage.get<World>(COLLECTIONS.WORLDS, id);\n }\n\n async removeWorld(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.WORLDS, id);\n }\n\n async getAllWorlds(): Promise<World[]> {\n return this.storage.getAll<World>(COLLECTIONS.WORLDS);\n }\n\n async updateWorld(world: World): Promise<void> {\n if (!world.id) return;\n await this.storage.set(COLLECTIONS.WORLDS, world.id, world);\n }\n\n async getRoomsByIds(roomIds: UUID[]): Promise<Room[] | null> {\n const rooms: Room[] = [];\n for (const id of roomIds) {\n const room = await this.storage.get<Room>(COLLECTIONS.ROOMS, id);\n if (room) rooms.push(room);\n }\n return rooms.length > 0 ? rooms : null;\n }\n\n async createRooms(rooms: Room[]): Promise<UUID[]> {\n const ids: UUID[] = [];\n for (const room of rooms) {\n const id = room.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.ROOMS, id, { ...room, id });\n ids.push(id);\n }\n return ids;\n }\n\n async deleteRoom(roomId: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.ROOMS, roomId);\n await this.storage.deleteWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n await this.storage.deleteWhere<StoredMemory>(COLLECTIONS.MEMORIES, (m) => m.roomId === roomId);\n }\n\n async deleteRoomsByWorldId(worldId: UUID): Promise<void> {\n const rooms = await this.getRoomsByWorld(worldId);\n for (const room of rooms) {\n if (room.id) {\n await this.deleteRoom(room.id);\n }\n }\n }\n\n async updateRoom(room: Room): Promise<void> {\n if (!room.id) return;\n await this.storage.set(COLLECTIONS.ROOMS, room.id, room);\n }\n\n async getRoomsForParticipant(entityId: UUID): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId\n );\n return participants.map((p) => p.roomId as UUID);\n }\n\n async getRoomsForParticipants(userIds: UUID[]): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => userIds.includes(p.entityId as UUID)\n );\n return [...new Set(participants.map((p) => p.roomId as UUID))];\n }\n\n async getRoomsByWorld(worldId: UUID): Promise<Room[]> {\n return this.storage.getWhere<Room>(COLLECTIONS.ROOMS, (r) => r.worldId === worldId);\n }\n\n async removeParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId && p.roomId === roomId\n );\n\n if (participants.length === 0) return false;\n\n for (const p of participants) {\n if (p.id) {\n await this.storage.delete(COLLECTIONS.PARTICIPANTS, p.id);\n }\n }\n return true;\n }\n\n async getParticipantsForEntity(entityId: UUID): Promise<Participant[]> {\n const stored = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.entityId === entityId\n );\n\n const participants: Participant[] = [];\n for (const p of stored) {\n const entity = await this.storage.get<Entity>(COLLECTIONS.ENTITIES, p.entityId);\n if (entity) {\n participants.push({\n id: p.id as UUID,\n entity,\n });\n }\n }\n return participants;\n }\n\n async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId\n );\n return participants.map((p) => p.entityId as UUID);\n }\n\n async isRoomParticipant(roomId: UUID, entityId: UUID): Promise<boolean> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n return participants.length > 0;\n }\n\n async addParticipantsRoom(entityIds: UUID[], roomId: UUID): Promise<boolean> {\n for (const entityId of entityIds) {\n const exists = await this.isRoomParticipant(roomId, entityId);\n if (!exists) {\n const id = crypto.randomUUID();\n const participant: StoredParticipant = {\n id,\n entityId,\n roomId,\n };\n await this.storage.set(COLLECTIONS.PARTICIPANTS, id, participant);\n }\n }\n return true;\n }\n\n async getParticipantUserState(\n roomId: UUID,\n entityId: UUID\n ): Promise<\"FOLLOWED\" | \"MUTED\" | null> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n\n if (participants.length === 0) return null;\n const state = participants[0].userState;\n if (state === \"FOLLOWED\" || state === \"MUTED\") return state;\n return null;\n }\n\n async setParticipantUserState(\n roomId: UUID,\n entityId: UUID,\n state: \"FOLLOWED\" | \"MUTED\" | null\n ): Promise<void> {\n const participants = await this.storage.getWhere<StoredParticipant>(\n COLLECTIONS.PARTICIPANTS,\n (p) => p.roomId === roomId && p.entityId === entityId\n );\n\n for (const p of participants) {\n if (p.id) {\n await this.storage.set(COLLECTIONS.PARTICIPANTS, p.id, {\n ...p,\n userState: state,\n });\n }\n }\n }\n\n async createRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n tags?: string[];\n metadata?: Metadata;\n }): Promise<boolean> {\n const id = crypto.randomUUID() as UUID;\n const relationship: StoredRelationship = {\n id,\n sourceEntityId: params.sourceEntityId,\n targetEntityId: params.targetEntityId,\n agentId: this.agentId,\n tags: params.tags ?? [],\n metadata: params.metadata ?? {},\n createdAt: new Date().toISOString(),\n };\n await this.storage.set(COLLECTIONS.RELATIONSHIPS, id, relationship);\n return true;\n }\n\n async getRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n }): Promise<Relationship | null> {\n const relationships = await this.storage.getWhere<StoredRelationship>(\n COLLECTIONS.RELATIONSHIPS,\n (r) =>\n r.sourceEntityId === params.sourceEntityId && r.targetEntityId === params.targetEntityId\n );\n\n if (relationships.length === 0) return null;\n\n const r = relationships[0];\n return {\n id: r.id as UUID,\n sourceEntityId: r.sourceEntityId as UUID,\n targetEntityId: r.targetEntityId as UUID,\n agentId: (r.agentId as UUID) ?? this.agentId,\n tags: r.tags ?? [],\n metadata: r.metadata ?? {},\n createdAt: r.createdAt,\n };\n }\n\n async getRelationships(params: { entityId: UUID; tags?: string[] }): Promise<Relationship[]> {\n const stored = await this.storage.getWhere<StoredRelationship>(\n COLLECTIONS.RELATIONSHIPS,\n (r) => {\n const isInvolved =\n r.sourceEntityId === params.entityId || r.targetEntityId === params.entityId;\n if (!isInvolved) return false;\n if (params.tags && params.tags.length > 0) {\n return params.tags.some((tag) => r.tags?.includes(tag));\n }\n return true;\n }\n );\n\n return stored.map((r) => ({\n id: r.id as UUID,\n sourceEntityId: r.sourceEntityId as UUID,\n targetEntityId: r.targetEntityId as UUID,\n agentId: (r.agentId as UUID) ?? this.agentId,\n tags: r.tags ?? [],\n metadata: r.metadata ?? {},\n createdAt: r.createdAt,\n }));\n }\n\n async updateRelationship(relationship: Relationship): Promise<void> {\n const existing = await this.getRelationship({\n sourceEntityId: relationship.sourceEntityId,\n targetEntityId: relationship.targetEntityId,\n });\n\n if (!existing || !existing.id) return;\n\n const stored: StoredRelationship = {\n id: existing.id,\n sourceEntityId: relationship.sourceEntityId,\n targetEntityId: relationship.targetEntityId,\n agentId: relationship.agentId,\n tags: relationship.tags ?? existing.tags ?? [],\n metadata: { ...(existing.metadata ?? {}), ...(relationship.metadata ?? {}) },\n createdAt: existing.createdAt ?? new Date().toISOString(),\n };\n\n await this.storage.set(COLLECTIONS.RELATIONSHIPS, existing.id, stored);\n }\n\n async getCache<T>(key: string): Promise<T | undefined> {\n const cached = await this.storage.get<{ value: T; expiresAt?: number }>(COLLECTIONS.CACHE, key);\n if (!cached) return undefined;\n\n if (cached.expiresAt && Date.now() > cached.expiresAt) {\n await this.deleteCache(key);\n return undefined;\n }\n\n return cached.value;\n }\n\n async setCache<T>(key: string, value: T): Promise<boolean> {\n await this.storage.set(COLLECTIONS.CACHE, key, { value });\n return true;\n }\n\n async deleteCache(key: string): Promise<boolean> {\n return this.storage.delete(COLLECTIONS.CACHE, key);\n }\n\n async createTask(task: Task): Promise<UUID> {\n const id = task.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.TASKS, id, { ...task, id });\n return id;\n }\n\n async getTasks(params: { roomId?: UUID; tags?: string[]; entityId?: UUID }): Promise<Task[]> {\n return this.storage.getWhere<Task>(COLLECTIONS.TASKS, (t) => {\n if (params.roomId && t.roomId !== params.roomId) return false;\n if (params.entityId && t.entityId !== params.entityId) return false;\n if (params.tags && params.tags.length > 0) {\n if (!t.tags?.some((tag) => params.tags?.includes(tag))) return false;\n }\n return true;\n });\n }\n\n async getTask(id: UUID): Promise<Task | null> {\n return this.storage.get<Task>(COLLECTIONS.TASKS, id);\n }\n\n async getTasksByName(name: string): Promise<Task[]> {\n return this.storage.getWhere<Task>(COLLECTIONS.TASKS, (t) => t.name === name);\n }\n\n async updateTask(id: UUID, task: Partial<Task>): Promise<void> {\n const existing = await this.getTask(id);\n if (!existing) return;\n await this.storage.set(COLLECTIONS.TASKS, id, { ...existing, ...task });\n }\n\n async deleteTask(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.TASKS, id);\n }\n\n // ===============================\n // Pairing Methods\n // ===============================\n\n async getPairingRequests(channel: PairingChannel, agentId: UUID): Promise<PairingRequest[]> {\n return this.storage.getWhere<PairingRequest>(\n COLLECTIONS.PAIRING_REQUESTS,\n (r) => r.channel === channel && r.agentId === agentId\n );\n }\n\n async createPairingRequest(request: PairingRequest): Promise<UUID> {\n const id = request.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.PAIRING_REQUESTS, id, { ...request, id });\n return id;\n }\n\n async updatePairingRequest(request: PairingRequest): Promise<void> {\n const existing = await this.storage.get<PairingRequest>(\n COLLECTIONS.PAIRING_REQUESTS,\n request.id\n );\n if (existing) {\n await this.storage.set(COLLECTIONS.PAIRING_REQUESTS, request.id, {\n ...existing,\n ...request,\n });\n }\n }\n\n async deletePairingRequest(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.PAIRING_REQUESTS, id);\n }\n\n async getPairingAllowlist(\n channel: PairingChannel,\n agentId: UUID\n ): Promise<PairingAllowlistEntry[]> {\n return this.storage.getWhere<PairingAllowlistEntry>(\n COLLECTIONS.PAIRING_ALLOWLIST,\n (e) => e.channel === channel && e.agentId === agentId\n );\n }\n\n async createPairingAllowlistEntry(entry: PairingAllowlistEntry): Promise<UUID> {\n const id = entry.id ?? (crypto.randomUUID() as UUID);\n await this.storage.set(COLLECTIONS.PAIRING_ALLOWLIST, id, { ...entry, id });\n return id;\n }\n\n async deletePairingAllowlistEntry(id: UUID): Promise<void> {\n await this.storage.delete(COLLECTIONS.PAIRING_ALLOWLIST, id);\n }\n}\n",
|
|
7
7
|
"import type { IVectorStorage, VectorSearchResult } from \"./types\";\n\ninterface HNSWNode {\n id: string;\n vector: number[];\n level: number;\n neighbors: Map<number, Set<string>>;\n}\n\ninterface HNSWConfig {\n M: number;\n efConstruction: number;\n efSearch: number;\n mL: number;\n}\n\nfunction cosineDistance(a: number[], b: number[]): number {\n if (a.length !== b.length) {\n throw new Error(`Vector dimension mismatch: ${a.length} vs ${b.length}`);\n }\n\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n dotProduct += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n\n const magnitude = Math.sqrt(normA) * Math.sqrt(normB);\n if (magnitude === 0) return 1;\n\n return 1 - dotProduct / magnitude;\n}\n\nexport class EphemeralHNSW implements IVectorStorage {\n private nodes: Map<string, HNSWNode> = new Map();\n private entryPoint: string | null = null;\n private maxLevel = 0;\n private dimension = 0;\n private config: HNSWConfig;\n\n constructor() {\n this.config = {\n M: 16,\n efConstruction: 200,\n efSearch: 50,\n mL: 1 / Math.log(16),\n };\n }\n\n async init(dimension: number): Promise<void> {\n this.dimension = dimension;\n }\n\n private getRandomLevel(): number {\n let level = 0;\n while (Math.random() < Math.exp(-level * this.config.mL) && level < 16) {\n level++;\n }\n return level;\n }\n\n async add(id: string, vector: number[]): Promise<void> {\n if (vector.length !== this.dimension) {\n throw new Error(\n `Vector dimension mismatch: expected ${this.dimension}, got ${vector.length}`\n );\n }\n\n const existing = this.nodes.get(id);\n if (existing) {\n existing.vector = vector;\n return;\n }\n\n const level = this.getRandomLevel();\n const newNode: HNSWNode = {\n id,\n vector,\n level,\n neighbors: new Map(),\n };\n\n for (let l = 0; l <= level; l++) {\n newNode.neighbors.set(l, new Set());\n }\n\n if (this.entryPoint === null) {\n this.entryPoint = id;\n this.maxLevel = level;\n this.nodes.set(id, newNode);\n return;\n }\n\n let currentNode = this.entryPoint;\n\n for (let l = this.maxLevel; l > level; l--) {\n currentNode = this.searchLayer(vector, currentNode, 1, l)[0]?.id ?? currentNode;\n }\n\n for (let l = Math.min(level, this.maxLevel); l >= 0; l--) {\n const neighbors = this.searchLayer(vector, currentNode, this.config.efConstruction, l);\n\n const M = this.config.M;\n const selectedNeighbors = neighbors.slice(0, M);\n\n for (const neighbor of selectedNeighbors) {\n const neighborSet = newNode.neighbors.get(l);\n if (neighborSet) {\n neighborSet.add(neighbor.id);\n }\n\n const neighborNode = this.nodes.get(neighbor.id);\n if (neighborNode) {\n let neighborSet = neighborNode.neighbors.get(l);\n if (!neighborSet) {\n neighborSet = new Set();\n neighborNode.neighbors.set(l, neighborSet);\n }\n neighborSet.add(id);\n\n if (neighborSet.size > M) {\n const toKeep = this.selectBestNeighbors(neighborNode.vector, neighborSet, M);\n neighborNode.neighbors.set(l, new Set(toKeep.map((n) => n.id)));\n }\n }\n }\n\n if (neighbors.length > 0) {\n currentNode = neighbors[0].id;\n }\n }\n\n this.nodes.set(id, newNode);\n\n if (level > this.maxLevel) {\n this.maxLevel = level;\n this.entryPoint = id;\n }\n }\n\n private searchLayer(\n query: number[],\n entryId: string,\n ef: number,\n level: number\n ): Array<{ id: string; distance: number }> {\n const visited = new Set<string>([entryId]);\n const entryNode = this.nodes.get(entryId);\n if (!entryNode) return [];\n\n const entryDist = cosineDistance(query, entryNode.vector);\n\n const candidates: Array<{ id: string; distance: number }> = [\n { id: entryId, distance: entryDist },\n ];\n\n const results: Array<{ id: string; distance: number }> = [{ id: entryId, distance: entryDist }];\n\n while (candidates.length > 0) {\n candidates.sort((a, b) => a.distance - b.distance);\n const current = candidates.shift();\n if (!current) break;\n\n results.sort((a, b) => b.distance - a.distance);\n const furthestResult = results[0];\n\n if (current.distance > furthestResult.distance) {\n break;\n }\n\n const currentNode = this.nodes.get(current.id);\n if (!currentNode) continue;\n\n const neighbors = currentNode.neighbors.get(level);\n if (!neighbors) continue;\n\n for (const neighborId of neighbors) {\n if (visited.has(neighborId)) continue;\n visited.add(neighborId);\n\n const neighborNode = this.nodes.get(neighborId);\n if (!neighborNode) continue;\n\n const dist = cosineDistance(query, neighborNode.vector);\n\n if (results.length < ef || dist < furthestResult.distance) {\n candidates.push({ id: neighborId, distance: dist });\n results.push({ id: neighborId, distance: dist });\n\n if (results.length > ef) {\n results.sort((a, b) => b.distance - a.distance);\n results.pop();\n }\n }\n }\n }\n\n results.sort((a, b) => a.distance - b.distance);\n return results;\n }\n\n private selectBestNeighbors(\n nodeVector: number[],\n neighborIds: Set<string>,\n M: number\n ): Array<{ id: string; distance: number }> {\n const neighbors: Array<{ id: string; distance: number }> = [];\n\n for (const id of neighborIds) {\n const node = this.nodes.get(id);\n if (node) {\n neighbors.push({\n id,\n distance: cosineDistance(nodeVector, node.vector),\n });\n }\n }\n\n neighbors.sort((a, b) => a.distance - b.distance);\n return neighbors.slice(0, M);\n }\n\n async remove(id: string): Promise<void> {\n const node = this.nodes.get(id);\n if (!node) return;\n\n for (const [level, neighbors] of node.neighbors) {\n for (const neighborId of neighbors) {\n const neighborNode = this.nodes.get(neighborId);\n if (neighborNode) {\n neighborNode.neighbors.get(level)?.delete(id);\n }\n }\n }\n\n this.nodes.delete(id);\n\n if (this.entryPoint === id) {\n if (this.nodes.size === 0) {\n this.entryPoint = null;\n this.maxLevel = 0;\n } else {\n let maxLevel = 0;\n let newEntry: string | null = null;\n for (const [nodeId, n] of this.nodes) {\n if (n.level >= maxLevel) {\n maxLevel = n.level;\n newEntry = nodeId;\n }\n }\n this.entryPoint = newEntry;\n this.maxLevel = maxLevel;\n }\n }\n }\n\n async search(query: number[], k: number, threshold = 0.5): Promise<VectorSearchResult[]> {\n if (this.entryPoint === null || this.nodes.size === 0) {\n return [];\n }\n\n if (query.length !== this.dimension) {\n throw new Error(`Query dimension mismatch: expected ${this.dimension}, got ${query.length}`);\n }\n\n let currentNode = this.entryPoint;\n\n for (let l = this.maxLevel; l > 0; l--) {\n const closest = this.searchLayer(query, currentNode, 1, l);\n if (closest.length > 0) {\n currentNode = closest[0].id;\n }\n }\n\n const results = this.searchLayer(query, currentNode, Math.max(k, this.config.efSearch), 0);\n\n return results\n .slice(0, k)\n .filter((r) => 1 - r.distance >= threshold)\n .map((r) => ({\n id: r.id,\n distance: r.distance,\n similarity: 1 - r.distance,\n }));\n }\n\n async clear(): Promise<void> {\n this.nodes.clear();\n this.entryPoint = null;\n this.maxLevel = 0;\n }\n\n size(): number {\n return this.nodes.size;\n }\n}\n",
|
|
8
|
-
"export interface IStorage {\n init(): Promise<void>;\n close(): Promise<void>;\n isReady(): Promise<boolean>;\n get<T>(collection: string, id: string): Promise<T | null>;\n getAll<T>(collection: string): Promise<T[]>;\n getWhere<T>(collection: string, predicate: (item: T) => boolean): Promise<T[]>;\n set<T>(collection: string, id: string, data: T): Promise<void>;\n delete(collection: string, id: string): Promise<boolean>;\n deleteMany(collection: string, ids: string[]): Promise<void>;\n deleteWhere<T = Record<string, unknown>>(\n collection: string,\n predicate: (item: T) => boolean\n ): Promise<void>;\n count<T = Record<string, unknown>>(\n collection: string,\n predicate?: (item: T) => boolean\n ): Promise<number>;\n clear(): Promise<void>;\n}\n\nexport interface IVectorStorage {\n init(dimension: number): Promise<void>;\n add(id: string, vector: number[]): Promise<void>;\n remove(id: string): Promise<void>;\n search(query: number[], k: number, threshold?: number): Promise<VectorSearchResult[]>;\n clear(): Promise<void>;\n}\n\nexport interface VectorSearchResult {\n id: string;\n distance: number;\n similarity: number;\n}\n\nexport const COLLECTIONS = {\n AGENTS: \"agents\",\n ENTITIES: \"entities\",\n MEMORIES: \"memories\",\n ROOMS: \"rooms\",\n WORLDS: \"worlds\",\n COMPONENTS: \"components\",\n RELATIONSHIPS: \"relationships\",\n PARTICIPANTS: \"participants\",\n TASKS: \"tasks\",\n CACHE: \"cache\",\n LOGS: \"logs\",\n EMBEDDINGS: \"embeddings\",\n} as const;\n\nexport type CollectionName = (typeof COLLECTIONS)[keyof typeof COLLECTIONS];\n",
|
|
8
|
+
"export interface IStorage {\n init(): Promise<void>;\n close(): Promise<void>;\n isReady(): Promise<boolean>;\n get<T>(collection: string, id: string): Promise<T | null>;\n getAll<T>(collection: string): Promise<T[]>;\n getWhere<T>(collection: string, predicate: (item: T) => boolean): Promise<T[]>;\n set<T>(collection: string, id: string, data: T): Promise<void>;\n delete(collection: string, id: string): Promise<boolean>;\n deleteMany(collection: string, ids: string[]): Promise<void>;\n deleteWhere<T = Record<string, unknown>>(\n collection: string,\n predicate: (item: T) => boolean\n ): Promise<void>;\n count<T = Record<string, unknown>>(\n collection: string,\n predicate?: (item: T) => boolean\n ): Promise<number>;\n clear(): Promise<void>;\n}\n\nexport interface IVectorStorage {\n init(dimension: number): Promise<void>;\n add(id: string, vector: number[]): Promise<void>;\n remove(id: string): Promise<void>;\n search(query: number[], k: number, threshold?: number): Promise<VectorSearchResult[]>;\n clear(): Promise<void>;\n}\n\nexport interface VectorSearchResult {\n id: string;\n distance: number;\n similarity: number;\n}\n\nexport const COLLECTIONS = {\n AGENTS: \"agents\",\n ENTITIES: \"entities\",\n MEMORIES: \"memories\",\n ROOMS: \"rooms\",\n WORLDS: \"worlds\",\n COMPONENTS: \"components\",\n RELATIONSHIPS: \"relationships\",\n PARTICIPANTS: \"participants\",\n TASKS: \"tasks\",\n CACHE: \"cache\",\n LOGS: \"logs\",\n EMBEDDINGS: \"embeddings\",\n PAIRING_REQUESTS: \"pairing_requests\",\n PAIRING_ALLOWLIST: \"pairing_allowlist\",\n} as const;\n\nexport type CollectionName = (typeof COLLECTIONS)[keyof typeof COLLECTIONS];\n",
|
|
9
9
|
"import type { IStorage } from \"./types\";\n\nexport class MemoryStorage implements IStorage {\n private collections: Map<string, Map<string, unknown>> = new Map();\n private ready = false;\n\n async init(): Promise<void> {\n this.ready = true;\n }\n\n async close(): Promise<void> {\n this.collections.clear();\n this.ready = false;\n }\n\n async isReady(): Promise<boolean> {\n return this.ready;\n }\n\n private getCollection(collection: string): Map<string, unknown> {\n let col = this.collections.get(collection);\n if (!col) {\n col = new Map();\n this.collections.set(collection, col);\n }\n return col;\n }\n\n async get<T>(collection: string, id: string): Promise<T | null> {\n const col = this.getCollection(collection);\n const item = col.get(id);\n return item !== undefined ? (item as T) : null;\n }\n\n async getAll<T>(collection: string): Promise<T[]> {\n const col = this.getCollection(collection);\n return Array.from(col.values()) as T[];\n }\n\n async getWhere<T>(collection: string, predicate: (item: T) => boolean): Promise<T[]> {\n const all = await this.getAll<T>(collection);\n return all.filter(predicate);\n }\n\n async set<T>(collection: string, id: string, data: T): Promise<void> {\n const col = this.getCollection(collection);\n col.set(id, data);\n }\n\n async delete(collection: string, id: string): Promise<boolean> {\n const col = this.getCollection(collection);\n return col.delete(id);\n }\n\n async deleteMany(collection: string, ids: string[]): Promise<void> {\n const col = this.getCollection(collection);\n for (const id of ids) {\n col.delete(id);\n }\n }\n\n async deleteWhere<T = Record<string, unknown>>(\n collection: string,\n predicate: (item: T) => boolean\n ): Promise<void> {\n const col = this.getCollection(collection);\n const toDelete: string[] = [];\n\n for (const [id, item] of col) {\n if (predicate(item as T)) {\n toDelete.push(id);\n }\n }\n\n for (const id of toDelete) {\n col.delete(id);\n }\n }\n\n async count<T = Record<string, unknown>>(\n collection: string,\n predicate?: (item: T) => boolean\n ): Promise<number> {\n const col = this.getCollection(collection);\n\n if (!predicate) {\n return col.size;\n }\n\n let count = 0;\n for (const item of col.values()) {\n if (predicate(item as T)) {\n count++;\n }\n }\n return count;\n }\n\n async clear(): Promise<void> {\n this.collections.clear();\n }\n}\n"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "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",
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "A96220E613784BE464756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/plugin-inmemorydb",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/node/index.js",
|
|
6
6
|
"module": "dist/node/index.js",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"dist"
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@elizaos/core": "2.0.0-alpha.
|
|
43
|
+
"@elizaos/core": "2.0.0-alpha.3"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@biomejs/biome": "^2.3.11",
|
|
@@ -60,5 +60,16 @@
|
|
|
60
60
|
"build": "bun run build.ts",
|
|
61
61
|
"build:ts": "bun run build.ts"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "255e37c0e4a76da0b776219db5ebb9dadf20e89f",
|
|
64
|
+
"milaidy": {
|
|
65
|
+
"platforms": [
|
|
66
|
+
"browser",
|
|
67
|
+
"node"
|
|
68
|
+
],
|
|
69
|
+
"runtime": "both",
|
|
70
|
+
"platformDetails": {
|
|
71
|
+
"browser": "Browser-compatible build available via exports.browser",
|
|
72
|
+
"node": "Node.js build available via exports.node"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
64
75
|
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Shaw Walters and elizaOS Contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|