eliza icon indicating copy to clipboard operation
eliza copied to clipboard

Add getAccountsByIds postgres example

Open CalvinLeGassick opened this issue 1 year ago • 3 comments

Relates to:

https://discord.com/channels/1253563208833433701/1253563209462448241/1312119096514580550

Risks

Adapters aren't implemented for anything other than postgres

Haven't even installed anything or run locally to verify it works

Background

What does this PR do?

Adds getAccountsByIds to avoid sending many getAccountById requests in parallel in cases where there are many participantIds

What kind of change is this?

Bug fixes (non-breaking change which fixes an issue) Improvements (misc. changes to existing features) Features (non-breaking change which adds functionality)

Why are we doing this? Any context or related work?

When there are a large number of participants, getActorDetails will hammer the DB in parallel.

Documentation changes needed?

Testing

PR has not been tested

Where should a reviewer start?

Detailed testing steps

Database changes

Discord username

CalvinLeGassick, tito

CalvinLeGassick avatar Nov 29 '24 19:11 CalvinLeGassick

someone should pull and verify it works locally before a merge, if we do want to merge without testing then it needs to PR to develop branch

twilwa avatar Nov 30 '24 01:11 twilwa

@twilwa @monilpat we have a failing test https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680

jkbrooks avatar Nov 30 '24 03:11 jkbrooks

Run cd packages/core && pnpm test:coverage

> @ai1[6](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:7)z/[email protected] test:coverage /home/runner/work/eliza/eliza/packages/core
> vitest run --coverage


 RUN  v2.1.5 /home/runner/work/eliza/eliza/packages/core
      Coverage enabled with v8

stdout | src/tests/database.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

stdout | src/tests/relationships.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

stdout | src/tests/goals.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

 ✓ src/tests/relationships.test.ts (6 tests) 1[7](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:8)ms
 ✓ src/tests/database.test.ts (8 tests) 10ms
 ✓ src/tests/goals.test.ts (8 tests) 12ms
stdout | src/tests/videoGeneration.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

stdout | src/tests/providers.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

stdout | src/tests/messages.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

 ✓ src/tests/videoGeneration.test.ts (3 tests) 13ms
 ✓ src/tests/providers.test.ts (5 tests) 7ms
 ❯ src/tests/messages.test.ts (6 tests | 1 failed) 13ms
   × Messages Library > getActorDetails should return actors based on roomId 7ms
     → runtime.databaseAdapter.getAccountsByIds is not a function
stdout | src/tests/actions.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

stdout | src/tests/generation.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

stdout | src/tests/evaluators.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

stdout | src/tests/generation.test.ts
[ElizaLogger] Initializing with:
            isNode: true
            verbose: false
            VERBOSE env: undefined
            NODE_ENV: test
        
 ℹ INFORMATIONS
   Loading embedding settings: 
   {"OLLAMA_EMBEDDING_MODEL":"mxbai-embed-large"} 

 ℹ INFORMATIONS
   Loading character settings: 
   {"ARGV":["/opt/hostedtoolcache/node/23.3.0/x64/bin/node","/home/runner/work/eliza/eliza/node_modules/tinypool/dist/entry/process.js"],"CWD":"/home/runner/work/eliza/eliza/packages/core"} 

 ℹ INFORMATIONS
   Parsed settings: 
   {"USE_OPENAI_EMBEDDING_TYPE":"undefined","USE_OLLAMA_EMBEDDING_TYPE":"undefined","OLLAMA_EMBEDDING_MODEL":"mxbai-embed-large"} 


 ✓ src/tests/actions.test.ts (6 tests) 14ms
 ✓ src/tests/evaluators.test.ts (4 tests) 9ms
stdout | src/tests/posts.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

 ✓ src/tests/posts.test.ts (3 tests) 5ms
stdout | src/tests/models.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

 ✓ src/tests/models.test.ts (7 tests) [8](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:9)ms
(node:9831) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
 ✓ src/tests/generation.test.ts (7 tests) [9](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:10)ms
stdout | src/tests/defaultCharacters.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

 ✓ src/tests/defaultCharacters.test.ts ([11](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:12) tests | 1 skipped) 7ms
stdout | src/tests/cache.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

 ✓ src/tests/cache.test.ts (2 tests) 8ms
stdout | src/tests/env.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test

stdout | src/tests/env.test.ts > Environment Setup > should verify .env.test file exists
Current working directory: /home/runner/work/eliza/eliza/packages/core
__dirname: /home/runner/work/eliza/eliza/packages/core/src/tests
Path /home/runner/work/eliza/eliza/packages/core/.env.test exists: true
Path /home/runner/work/eliza/eliza/packages/core/packages/core/.env.test exists: false
Path /home/runner/work/eliza/eliza/packages/core/.env.test exists: true
Path /home/runner/work/eliza/eliza/packages/core/src/.env.test exists: false
Path /home/runner/work/eliza/eliza/packages/core/src/tests/.env.test exists: false

 ✓ src/tests/env.test.ts (1 test) 3ms

⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯

 FAIL  src/tests/messages.test.ts > Messages Library > getActorDetails should return actors based on roomId
TypeError: runtime.databaseAdapter.getAccountsByIds is not a function
 ❯ Module.getActorDetails src/messages.ts:22:39
     20|         await runtime.databaseAdapter.getParticipantsForRoom(roomId);
     21|     const actors =
     22|         await runtime.databaseAdapter.getAccountsByIds(participantIds);
       |                                       ^
     23|     return actors.filter((actor): actor is Actor => actor !== null);
     24| }
 ❯ src/tests/messages.test.ts:58:24

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯

 Test Files  1 failed | [13](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:14) passed ([14](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:15))
      Tests  1 failed | 75 passed | 1 skipped (77)
   Start at  02:40:01
   Duration  2.35s (transform 441ms, setup 259ms, collect 1.20s, tests 137ms, environment 4ms, prepare 1.47s)


Error: TypeError: runtime.databaseAdapter.getAccountsByIds is not a function
 ❯ Module.getActorDetails src/messages.ts:22:39
 ❯ src/tests/messages.test.ts:58:24


 ELIFECYCLE  Command failed with exit code 1.
Error: Process completed with exit code 1.

jkbrooks avatar Nov 30 '24 03:11 jkbrooks