From fd77e3502435b50a79e07ba2cd51f291a6959365 Mon Sep 17 00:00:00 2001 From: Saundr21 Date: Sun, 5 Jan 2025 00:47:34 +0000 Subject: [PATCH 1/5] Adds initial anyone plugin --- packages/plugin-anyone/.npmignore | 6 ++ packages/plugin-anyone/eslint.config.mjs | 3 + packages/plugin-anyone/package.json | 21 +++++ packages/plugin-anyone/src/actions/index.ts | 2 + .../plugin-anyone/src/actions/startAnyone.ts | 92 +++++++++++++++++++ .../plugin-anyone/src/actions/stopAnyone.ts | 91 ++++++++++++++++++ packages/plugin-anyone/src/index.ts | 10 ++ .../src/services/AnyoneClientService.ts | 27 ++++++ .../src/services/AnyoneProxyService.ts | 73 +++++++++++++++ packages/plugin-anyone/tsconfig.json | 13 +++ packages/plugin-anyone/tsup.config.ts | 20 ++++ 11 files changed, 358 insertions(+) create mode 100644 packages/plugin-anyone/.npmignore create mode 100644 packages/plugin-anyone/eslint.config.mjs create mode 100644 packages/plugin-anyone/package.json create mode 100644 packages/plugin-anyone/src/actions/index.ts create mode 100644 packages/plugin-anyone/src/actions/startAnyone.ts create mode 100644 packages/plugin-anyone/src/actions/stopAnyone.ts create mode 100644 packages/plugin-anyone/src/index.ts create mode 100644 packages/plugin-anyone/src/services/AnyoneClientService.ts create mode 100644 packages/plugin-anyone/src/services/AnyoneProxyService.ts create mode 100644 packages/plugin-anyone/tsconfig.json create mode 100644 packages/plugin-anyone/tsup.config.ts diff --git a/packages/plugin-anyone/.npmignore b/packages/plugin-anyone/.npmignore new file mode 100644 index 0000000000..078562ecea --- /dev/null +++ b/packages/plugin-anyone/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-anyone/eslint.config.mjs b/packages/plugin-anyone/eslint.config.mjs new file mode 100644 index 0000000000..92fe5bbebe --- /dev/null +++ b/packages/plugin-anyone/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-anyone/package.json b/packages/plugin-anyone/package.json new file mode 100644 index 0000000000..371c1c99cc --- /dev/null +++ b/packages/plugin-anyone/package.json @@ -0,0 +1,21 @@ +{ + "name": "@elizaos/plugin-anyone", + "version": "0.1.7-alpha.2", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@anyone-protocol/anyone-client": "^0.4.3", + "@elizaos/core": "workspace:*", + "axios": "^1.7.9", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } +} \ No newline at end of file diff --git a/packages/plugin-anyone/src/actions/index.ts b/packages/plugin-anyone/src/actions/index.ts new file mode 100644 index 0000000000..64f64801d8 --- /dev/null +++ b/packages/plugin-anyone/src/actions/index.ts @@ -0,0 +1,2 @@ +export * from "./startAnyone.ts"; +export * from "./stopAnyone.ts"; diff --git a/packages/plugin-anyone/src/actions/startAnyone.ts b/packages/plugin-anyone/src/actions/startAnyone.ts new file mode 100644 index 0000000000..89a69f55fa --- /dev/null +++ b/packages/plugin-anyone/src/actions/startAnyone.ts @@ -0,0 +1,92 @@ +import { + ActionExample, + HandlerCallback, + IAgentRuntime, + Memory, + State, + type Action, +} from "@elizaos/core"; +import axios from "axios"; +import { AnyoneClientService } from "../services/AnyoneClientService"; +import { AnyoneProxyService } from "../services/AnyoneProxyService"; + +export const startAnyone: Action = { + name: "START_ANYONE", + similes: ["ANYONE"], + validate: async (_runtime: IAgentRuntime, _message: Memory) => { + return true; + }, + description: "Start the Anyone client and proxy service", + handler: async ( + _runtime: IAgentRuntime, + _message: Memory, + _state: State, + _options: { [key: string]: unknown }, + _callback: HandlerCallback + ): Promise => { + await AnyoneClientService.initialize(); + const anon = AnyoneClientService.getInstance(); + const proxyService = AnyoneProxyService.getInstance(); + await proxyService.initialize(); + + _callback({ + text: `Started Anyone`, + }); + + return true; + }, + examples: [ + [ + { + user: "{{user1}}", + content: { text: "Can you start Anyone for me?" }, + }, + { + user: "{{user2}}", + content: { + text: "I'll start Anyone right away", + action: "START_ANYONE", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "Initialize the Anyone client please" }, + }, + { + user: "{{user2}}", + content: { + text: "Starting Anyone now", + action: "START_ANYONE", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "I need to start using Anyone" }, + }, + { + user: "{{user2}}", + content: { + text: "I'll help you start Anyone", + action: "START_ANYONE", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "Launch Anyone for me" }, + }, + { + user: "{{user2}}", + content: { + text: "I'll launch Anyone for you now", + action: "START_ANYONE", + }, + }, + ], + ] as ActionExample[][], +} as Action; diff --git a/packages/plugin-anyone/src/actions/stopAnyone.ts b/packages/plugin-anyone/src/actions/stopAnyone.ts new file mode 100644 index 0000000000..41aa339608 --- /dev/null +++ b/packages/plugin-anyone/src/actions/stopAnyone.ts @@ -0,0 +1,91 @@ +import { + ActionExample, + HandlerCallback, + IAgentRuntime, + Memory, + State, + type Action, +} from "@elizaos/core"; +import { AnyoneClientService } from "../services/AnyoneClientService"; +import { AnyoneProxyService } from "../services/AnyoneProxyService"; + +export const stopAnyone: Action = { + name: "STOP_ANYONE", + similes: ["STOP_PROXY"], + validate: async (_runtime: IAgentRuntime, _message: Memory) => { + return true; + }, + description: "Stop the Anyone client and proxy service", + handler: async ( + _runtime: IAgentRuntime, + _message: Memory, + _state: State, + _options: { [key: string]: unknown }, + _callback: HandlerCallback + ): Promise => { + const proxyService = AnyoneProxyService.getInstance(); + proxyService.cleanup(); + + await AnyoneClientService.stop(); + + _callback({ + text: `Stopped Anyone and cleaned up proxy`, + }); + + return true; + }, + examples: [ + [ + { + user: "{{user1}}", + content: { text: "Can you stop Anyone for me?" }, + }, + { + user: "{{user2}}", + content: { + text: "I'll stop Anyone right away", + action: "STOP_ANYONE", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "Please shut down Anyone" }, + }, + { + user: "{{user2}}", + content: { + text: "Stopping Anyone now", + action: "STOP_ANYONE", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "I need to stop using Anyone" }, + }, + { + user: "{{user2}}", + content: { + text: "I'll help you stop Anyone", + action: "STOP_ANYONE", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "Close Anyone for me" }, + }, + { + user: "{{user2}}", + content: { + text: "I'll close Anyone for you now", + action: "STOP_ANYONE", + }, + }, + ], + ] as ActionExample[][], +} as Action; diff --git a/packages/plugin-anyone/src/index.ts b/packages/plugin-anyone/src/index.ts new file mode 100644 index 0000000000..1c2e500c57 --- /dev/null +++ b/packages/plugin-anyone/src/index.ts @@ -0,0 +1,10 @@ +import { Plugin } from "@elizaos/core"; +import { startAnyone } from "./actions/startAnyone.ts"; +import { stopAnyone } from "./actions/stopAnyone.ts"; +export * as actions from "./actions"; + +export const anyonePlugin: Plugin = { + name: "anyone", + description: "Proxy requests through Anyone", + actions: [startAnyone, stopAnyone], +}; diff --git a/packages/plugin-anyone/src/services/AnyoneClientService.ts b/packages/plugin-anyone/src/services/AnyoneClientService.ts new file mode 100644 index 0000000000..4db6330026 --- /dev/null +++ b/packages/plugin-anyone/src/services/AnyoneClientService.ts @@ -0,0 +1,27 @@ +import { Anon } from "@anyone-protocol/anyone-client"; + +export class AnyoneClientService { + private static instance: Anon | null = null; + + static getInstance(): Anon | null { + return this.instance; + } + + static async initialize(): Promise { + if (!this.instance) { + this.instance = new Anon({ + displayLog: true, + socksPort: 9050, + autoTermsAgreement: true, + }); + await this.instance.start(); + } + } + + static async stop(): Promise { + if (this.instance) { + await this.instance.stop(); + this.instance = null; + } + } +} diff --git a/packages/plugin-anyone/src/services/AnyoneProxyService.ts b/packages/plugin-anyone/src/services/AnyoneProxyService.ts new file mode 100644 index 0000000000..30356e64fa --- /dev/null +++ b/packages/plugin-anyone/src/services/AnyoneProxyService.ts @@ -0,0 +1,73 @@ +import { AnonSocksClient } from "@anyone-protocol/anyone-client"; +import axios from "axios"; +import { AnyoneClientService } from "./AnyoneClientService"; + +export class AnyoneProxyService { + private static instance: AnyoneProxyService | null = null; + private sockClient: AnonSocksClient | null = null; + private originalAxios: any = null; + private originalDefaults: any = null; + + static getInstance(): AnyoneProxyService { + if (!AnyoneProxyService.instance) { + AnyoneProxyService.instance = new AnyoneProxyService(); + } + return AnyoneProxyService.instance; + } + + async initialize(): Promise { + await AnyoneClientService.initialize(); + const anon = AnyoneClientService.getInstance(); + if (!anon) { + throw new Error("Anyone client not initialized"); + } + + this.sockClient = new AnonSocksClient(anon); + + // Store original axios configuration + this.originalDefaults = { ...axios.defaults }; + this.originalAxios = { + request: axios.request, + get: axios.get, + post: axios.post, + put: axios.put, + delete: axios.delete, + patch: axios.patch, + }; + + // Create new defaults object instead of modifying existing one + axios.defaults = { + ...axios.defaults, + ...this.sockClient.axios.defaults, + }; + + // Apply proxy methods + axios.request = this.sockClient.axios.request.bind( + this.sockClient.axios + ); + axios.get = this.sockClient.axios.get.bind(this.sockClient.axios); + axios.post = this.sockClient.axios.post.bind(this.sockClient.axios); + axios.put = this.sockClient.axios.put.bind(this.sockClient.axios); + axios.delete = this.sockClient.axios.delete.bind(this.sockClient.axios); + axios.patch = this.sockClient.axios.patch.bind(this.sockClient.axios); + } + + cleanup(): void { + if (this.originalAxios && this.originalDefaults) { + // Create fresh axios defaults + axios.defaults = { ...this.originalDefaults }; + + // Create fresh bindings + axios.request = this.originalAxios.request.bind(axios); + axios.get = this.originalAxios.get.bind(axios); + axios.post = this.originalAxios.post.bind(axios); + axios.put = this.originalAxios.put.bind(axios); + axios.delete = this.originalAxios.delete.bind(axios); + axios.patch = this.originalAxios.patch.bind(axios); + + this.originalAxios = null; + this.originalDefaults = null; + } + AnyoneProxyService.instance = null; + } +} diff --git a/packages/plugin-anyone/tsconfig.json b/packages/plugin-anyone/tsconfig.json new file mode 100644 index 0000000000..834c4dce26 --- /dev/null +++ b/packages/plugin-anyone/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "types": [ + "node" + ] + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file diff --git a/packages/plugin-anyone/tsup.config.ts b/packages/plugin-anyone/tsup.config.ts new file mode 100644 index 0000000000..e42bf4efea --- /dev/null +++ b/packages/plugin-anyone/tsup.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + // Add other modules you want to externalize + ], +}); From fc21d01b203d5fca9600b7f7c6a0e665e51d54ba Mon Sep 17 00:00:00 2001 From: Radek Sienkiewicz Date: Tue, 7 Jan 2025 18:38:02 +0100 Subject: [PATCH 2/5] Cleaner logs on agent startup --- agent/src/index.ts | 6 +----- packages/core/src/runtime.ts | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/agent/src/index.ts b/agent/src/index.ts index 53058cf4ec..2385875285 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -489,11 +489,7 @@ export async function createAgent( cache: ICacheManager, token: string ): Promise { - elizaLogger.success( - elizaLogger.successesTitle, - "Creating runtime for character", - character.name - ); + elizaLogger.log(`Creating runtime for character ${character.name}`); nodePlugin ??= createNodePlugin(); diff --git a/packages/core/src/runtime.ts b/packages/core/src/runtime.ts index 37bab24adf..5e6e1c5a82 100644 --- a/packages/core/src/runtime.ts +++ b/packages/core/src/runtime.ts @@ -264,7 +264,7 @@ export class AgentRuntime implements IAgentRuntime { this.ensureParticipantExists(this.agentId, this.agentId); }); - elizaLogger.success("Agent ID", this.agentId); + elizaLogger.success(`Agent ID: ${this.agentId}`); this.fetch = (opts.fetch as typeof fetch) ?? this.fetch; From 183fb14a608c3c1d7f9b803d6054680f208460ef Mon Sep 17 00:00:00 2001 From: ai16z-demirix Date: Tue, 7 Jan 2025 19:16:36 +0100 Subject: [PATCH 3/5] test: adding tests for twitter plugin --- .../plugin-twitter/__tests__/post.test.ts | 205 ++++++++++++++++++ packages/plugin-twitter/package.json | 6 +- packages/plugin-twitter/vitest.config.ts | 14 ++ 3 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 packages/plugin-twitter/__tests__/post.test.ts create mode 100644 packages/plugin-twitter/vitest.config.ts diff --git a/packages/plugin-twitter/__tests__/post.test.ts b/packages/plugin-twitter/__tests__/post.test.ts new file mode 100644 index 0000000000..fe6a6be3e6 --- /dev/null +++ b/packages/plugin-twitter/__tests__/post.test.ts @@ -0,0 +1,205 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { postAction } from '../src/actions/post'; +import { ModelClass, IAgentRuntime, Memory, State, generateObject } from '@elizaos/core'; +import { TweetContent, TweetSchema } from '../src/types'; +import { tweetTemplate } from '../src/templates'; +import { UUID } from '../../core/src/types'; + +// Mock @elizaos/core +vi.mock('@elizaos/core', async () => { + const actual = await vi.importActual('@elizaos/core'); + return { + ...actual, + generateObject: vi.fn().mockImplementation(async ({ schema }) => { + if (schema === TweetSchema) { + return { + object: { + text: 'Test tweet content' + }, + raw: 'Test tweet content' + }; + } + return null; + }), + composeContext: vi.fn().mockImplementation(({ state, template }) => { + // Return a properly formatted context that matches the template format + return { + state: { + ...state, + recentMessages: state?.recentMessages || [], + topics: state?.topics || [], + postDirections: state?.postDirections || '', + agentName: state?.agentName || 'TestAgent', + }, + template, + result: template.replace(/{{(\w+)}}/g, (_, key) => state?.[key] || key) + }; + }), + formatMessages: vi.fn().mockImplementation((messages) => messages), + elizaLogger: { + log: vi.fn(), + error: vi.fn(), + warn: vi.fn(), + info: vi.fn(), + }, + ModelClass: actual.ModelClass + }; +}); + +// Create mock Scraper class +const mockScraper = { + login: vi.fn().mockResolvedValue(true), + isLoggedIn: vi.fn().mockResolvedValue(true), + sendTweet: vi.fn().mockResolvedValue({ + json: () => Promise.resolve({ + data: { + create_tweet: { + tweet_results: { + result: { + id: '123', + text: 'Test tweet content' + } + } + } + } + }) + }), +}; + +// Mock the agent-twitter-client +vi.mock('agent-twitter-client', () => ({ + Scraper: vi.fn().mockImplementation(() => mockScraper) +})); + +// Mock environment variables +const originalEnv = process.env; +beforeEach(() => { + vi.resetModules(); + process.env = { + ...originalEnv, + TWITTER_USERNAME: 'test_user', + TWITTER_PASSWORD: 'test_pass', + TWITTER_EMAIL: 'test@example.com', + TWITTER_DRY_RUN: 'true' + }; + + // Reset mock implementations + mockScraper.login.mockResolvedValue(true); + mockScraper.isLoggedIn.mockResolvedValue(true); + mockScraper.sendTweet.mockResolvedValue({ + json: () => Promise.resolve({ + data: { + create_tweet: { + tweet_results: { + result: { + id: '123', + text: 'Test tweet content' + } + } + } + } + }) + }); +}); + +afterEach(() => { + process.env = originalEnv; + vi.clearAllMocks(); +}); + +describe('Twitter Post Action', () => { + const mockRuntime: IAgentRuntime = { + generateObject: vi.fn().mockImplementation(async ({ schema }) => { + if (schema === TweetSchema) { + return { + object: { + text: 'Test tweet content' + }, + raw: 'Test tweet content' + }; + } + return null; + }), + getMemory: vi.fn(), + getState: vi.fn(), + setState: vi.fn(), + getPlugin: vi.fn(), + getPlugins: vi.fn(), + getAction: vi.fn(), + getActions: vi.fn(), + getModel: vi.fn(), + getModels: vi.fn(), + getEmbedding: vi.fn(), + getEmbeddings: vi.fn(), + getTemplate: vi.fn(), + getTemplates: vi.fn(), + getCharacter: vi.fn(), + getCharacters: vi.fn(), + getPrompt: vi.fn(), + getPrompts: vi.fn(), + getPromptTemplate: vi.fn(), + getPromptTemplates: vi.fn(), + getPromptModel: vi.fn(), + getPromptModels: vi.fn(), + }; + + const mockMessage: Memory = { + id: '123' as UUID, + content: { text: 'Please tweet something' }, + userId: '123' as UUID, + agentId: '123' as UUID, + roomId: '123' as UUID + }; + + const mockState: State = { + topics: ['test topic'], + recentMessages: "test", + recentPostInteractions: [], + postDirections: 'Be friendly', + agentName: 'TestAgent', + bio: '', + lore: '', + messageDirections: '', + roomId: 'ads' as UUID, + actors: '', + recentMessagesData: [] + }; + + describe('validate', () => { + it('should validate valid message content', async () => { + const result = await postAction.validate( + mockRuntime, + mockMessage, + mockState + ); + expect(result).toBe(true); + }); + + it('should fail validation without credentials', async () => { + delete process.env.TWITTER_USERNAME; + delete process.env.TWITTER_PASSWORD; + + const result = await postAction.validate( + mockRuntime, + mockMessage, + mockState + ); + expect(result).toBe(false); + }); + }); + + describe('handler', () => { + it('should handle API errors', async () => { + process.env.TWITTER_DRY_RUN = 'false'; + mockScraper.login.mockRejectedValueOnce(new Error('API Error')); + mockScraper.isLoggedIn.mockResolvedValueOnce(false); + + const result = await postAction.handler( + mockRuntime, + mockMessage, + mockState + ); + expect(result).toBe(false); + }); + }); +}); diff --git a/packages/plugin-twitter/package.json b/packages/plugin-twitter/package.json index 693efbd4e0..99e54237f8 100644 --- a/packages/plugin-twitter/package.json +++ b/packages/plugin-twitter/package.json @@ -23,9 +23,13 @@ "agent-twitter-client": "0.0.18", "tsup": "8.3.5" }, + "devDependencies": { + "vitest": "^1.0.0" + }, "scripts": { "build": "tsup --format esm --dts", "dev": "tsup --format esm --dts --watch", - "test": "vitest run" + "test": "vitest run", + "test:watch": "vitest" } } diff --git a/packages/plugin-twitter/vitest.config.ts b/packages/plugin-twitter/vitest.config.ts new file mode 100644 index 0000000000..a11fbbd0d9 --- /dev/null +++ b/packages/plugin-twitter/vitest.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from 'vitest/config'; +import { resolve } from 'path'; + +export default defineConfig({ + test: { + globals: true, + environment: 'node', + }, + resolve: { + alias: { + '@elizaos/core': resolve(__dirname, '../core/src'), + }, + }, +}); From 7453a9940f836775d396e25fed853be5cddd0b40 Mon Sep 17 00:00:00 2001 From: Joey Date: Tue, 7 Jan 2025 20:21:09 +0100 Subject: [PATCH 4/5] upd: prevent empty embedding from corrupting the database --- packages/adapter-sqlite/src/index.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/adapter-sqlite/src/index.ts b/packages/adapter-sqlite/src/index.ts index b6627a8c62..8caa67c3fe 100644 --- a/packages/adapter-sqlite/src/index.ts +++ b/packages/adapter-sqlite/src/index.ts @@ -1,7 +1,7 @@ export * from "./sqliteTables.ts"; export * from "./sqlite_vec.ts"; -import { DatabaseAdapter, IDatabaseCacheAdapter } from "@elizaos/core"; +import { DatabaseAdapter, elizaLogger, IDatabaseCacheAdapter } from "@elizaos/core"; import { Account, Actor, @@ -215,13 +215,19 @@ export class SqliteDatabaseAdapter const content = JSON.stringify(memory.content); const createdAt = memory.createdAt ?? Date.now(); + let embeddingValue: Float32Array = new Float32Array(384); + // If embedding is not available, we just load an array with a length of 384 + if (memory?.embedding && memory?.embedding?.length > 0) { + embeddingValue = new Float32Array(memory.embedding); + } + // Insert the memory with the appropriate 'unique' value const sql = `INSERT OR REPLACE INTO memories (id, type, content, embedding, userId, roomId, agentId, \`unique\`, createdAt) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`; this.db.prepare(sql).run( memory.id ?? v4(), tableName, content, - new Float32Array(memory.embedding!), // Store as Float32Array + embeddingValue, memory.userId, memory.roomId, memory.agentId, @@ -707,4 +713,4 @@ export class SqliteDatabaseAdapter return false; } } -} +} \ No newline at end of file From 0d5d8ba80880d44d89210f17007f0534436536fb Mon Sep 17 00:00:00 2001 From: Joey Date: Tue, 7 Jan 2025 20:23:30 +0100 Subject: [PATCH 5/5] upd: removed unused import --- packages/adapter-sqlite/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-sqlite/src/index.ts b/packages/adapter-sqlite/src/index.ts index 8caa67c3fe..0e7574d6fb 100644 --- a/packages/adapter-sqlite/src/index.ts +++ b/packages/adapter-sqlite/src/index.ts @@ -1,7 +1,7 @@ export * from "./sqliteTables.ts"; export * from "./sqlite_vec.ts"; -import { DatabaseAdapter, elizaLogger, IDatabaseCacheAdapter } from "@elizaos/core"; +import { DatabaseAdapter, IDatabaseCacheAdapter } from "@elizaos/core"; import { Account, Actor,