@elizaos/core 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/browser/index.browser.js +102 -102
  2. package/dist/browser/index.browser.js.map +5 -5
  3. package/dist/browser/index.d.ts +3 -1
  4. package/dist/index.d.ts +2 -3
  5. package/dist/index.js +1 -5
  6. package/dist/node/index.d.ts +3 -1
  7. package/dist/node/index.node.js +91 -12
  8. package/dist/node/index.node.js.map +10 -10
  9. package/package.json +10 -4
  10. package/src/__tests__/action-chaining-simple.test.ts +203 -0
  11. package/src/__tests__/actions.test.ts +218 -0
  12. package/src/__tests__/buffer.test.ts +337 -0
  13. package/src/__tests__/character-validation.test.ts +309 -0
  14. package/src/__tests__/database.test.ts +750 -0
  15. package/src/__tests__/entities.test.ts +727 -0
  16. package/src/__tests__/env.test.ts +23 -0
  17. package/src/__tests__/environment.test.ts +285 -0
  18. package/src/__tests__/logger-browser-node.test.ts +716 -0
  19. package/src/__tests__/logger.test.ts +403 -0
  20. package/src/__tests__/messages.test.ts +196 -0
  21. package/src/__tests__/mockCharacter.ts +544 -0
  22. package/src/__tests__/parsing.test.ts +58 -0
  23. package/src/__tests__/prompts.test.ts +159 -0
  24. package/src/__tests__/roles.test.ts +331 -0
  25. package/src/__tests__/runtime-embedding.test.ts +343 -0
  26. package/src/__tests__/runtime.test.ts +978 -0
  27. package/src/__tests__/search.test.ts +15 -0
  28. package/src/__tests__/services-by-type.test.ts +204 -0
  29. package/src/__tests__/services.test.ts +136 -0
  30. package/src/__tests__/settings.test.ts +810 -0
  31. package/src/__tests__/utils.test.ts +1105 -0
  32. package/src/__tests__/uuid.test.ts +94 -0
  33. package/src/actions.ts +122 -0
  34. package/src/database.ts +579 -0
  35. package/src/entities.ts +406 -0
  36. package/src/index.browser.ts +48 -0
  37. package/src/index.node.ts +39 -0
  38. package/src/index.ts +50 -0
  39. package/src/logger.ts +527 -0
  40. package/src/prompts.ts +243 -0
  41. package/src/roles.ts +85 -0
  42. package/src/runtime.ts +2514 -0
  43. package/src/schemas/character.ts +149 -0
  44. package/src/search.ts +1543 -0
  45. package/src/sentry/instrument.browser.ts +65 -0
  46. package/src/sentry/instrument.node.ts +57 -0
  47. package/src/sentry/instrument.ts +82 -0
  48. package/src/services.ts +105 -0
  49. package/src/settings.ts +409 -0
  50. package/src/test_resources/constants.ts +12 -0
  51. package/src/test_resources/testSetup.ts +21 -0
  52. package/src/test_resources/types.ts +22 -0
  53. package/src/types/agent.ts +112 -0
  54. package/src/types/browser.ts +145 -0
  55. package/src/types/components.ts +184 -0
  56. package/src/types/database.ts +348 -0
  57. package/src/types/email.ts +162 -0
  58. package/src/types/environment.ts +129 -0
  59. package/src/types/events.ts +249 -0
  60. package/src/types/index.ts +29 -0
  61. package/src/types/knowledge.ts +65 -0
  62. package/src/types/lp.ts +124 -0
  63. package/src/types/memory.ts +228 -0
  64. package/src/types/message.ts +233 -0
  65. package/src/types/messaging.ts +57 -0
  66. package/src/types/model.ts +359 -0
  67. package/src/types/pdf.ts +77 -0
  68. package/src/types/plugin.ts +78 -0
  69. package/src/types/post.ts +271 -0
  70. package/src/types/primitives.ts +97 -0
  71. package/src/types/runtime.ts +190 -0
  72. package/src/types/service.ts +198 -0
  73. package/src/types/settings.ts +30 -0
  74. package/src/types/state.ts +60 -0
  75. package/src/types/task.ts +72 -0
  76. package/src/types/tee.ts +107 -0
  77. package/src/types/testing.ts +30 -0
  78. package/src/types/token.ts +96 -0
  79. package/src/types/transcription.ts +133 -0
  80. package/src/types/video.ts +108 -0
  81. package/src/types/wallet.ts +56 -0
  82. package/src/types/web-search.ts +146 -0
  83. package/src/utils/__tests__/buffer.test.ts +80 -0
  84. package/src/utils/__tests__/environment.test.ts +58 -0
  85. package/src/utils/__tests__/stringToUuid.test.ts +88 -0
  86. package/src/utils/buffer.ts +312 -0
  87. package/src/utils/environment.ts +316 -0
  88. package/src/utils/server-health.ts +117 -0
  89. package/src/utils.ts +1076 -0
  90. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,23 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { describe, expect, it } from 'bun:test';
4
+
5
+ describe('Environment Setup', () => {
6
+ it('should verify .env.test file exists', () => {
7
+ const possiblePaths = [
8
+ path.join(process.cwd(), '.env.test'),
9
+ path.join(process.cwd(), 'packages/core/.env.test'),
10
+ path.join(__dirname, '../../.env.test'),
11
+ path.join(__dirname, '../.env.test'),
12
+ path.join(__dirname, '.env.test'),
13
+ ];
14
+
15
+ const existingPaths = possiblePaths.filter((p) => {
16
+ const exists = fs.existsSync(p);
17
+ console.log(`Path ${p} exists: ${exists}`);
18
+ return exists;
19
+ });
20
+
21
+ expect(existingPaths.length).toBeGreaterThan(0);
22
+ });
23
+ });
@@ -0,0 +1,285 @@
1
+ import { describe, expect, it, beforeEach, afterEach } from 'bun:test';
2
+ import {
3
+ detectEnvironment,
4
+ getEnvironment,
5
+ getEnv,
6
+ setEnv,
7
+ hasEnv,
8
+ getBooleanEnv,
9
+ getNumberEnv,
10
+ initBrowserEnvironment,
11
+ } from '../utils/environment';
12
+
13
+ describe('Environment Abstraction', () => {
14
+ let originalProcess: any;
15
+ let originalWindow: any;
16
+ let originalGlobalThis: any;
17
+
18
+ beforeEach(() => {
19
+ // Store original values
20
+ originalProcess = (global as any).process;
21
+ originalWindow = (global as any).window;
22
+ originalGlobalThis = (global as any).globalThis;
23
+
24
+ // Clear environment cache
25
+ getEnvironment().clearCache();
26
+ });
27
+
28
+ afterEach(() => {
29
+ // Restore original values
30
+ if (originalProcess !== undefined) {
31
+ (global as any).process = originalProcess;
32
+ } else {
33
+ delete (global as any).process;
34
+ }
35
+
36
+ if (originalWindow !== undefined) {
37
+ (global as any).window = originalWindow;
38
+ } else {
39
+ delete (global as any).window;
40
+ }
41
+
42
+ if (originalGlobalThis !== undefined) {
43
+ (global as any).globalThis = originalGlobalThis;
44
+ } else {
45
+ delete (global as any).globalThis;
46
+ }
47
+
48
+ // Clear cache after each test
49
+ getEnvironment().clearCache();
50
+ });
51
+
52
+ describe('detectEnvironment', () => {
53
+ it('should detect Node.js environment', () => {
54
+ // Current test environment is Node.js
55
+ const env = detectEnvironment();
56
+ expect(env).toBe('node');
57
+ });
58
+
59
+ it('should detect browser environment when window is present', () => {
60
+ // Save original values
61
+ const originalProcess = (global as any).process;
62
+ const originalWindow = (global as any).window;
63
+
64
+ // Mock browser environment
65
+ delete (global as any).process;
66
+ (global as any).window = {
67
+ document: {},
68
+ };
69
+ (global as any).globalThis = global;
70
+
71
+ // Test detection directly
72
+ const detectedEnv = detectEnvironment();
73
+ expect(detectedEnv).toBe('browser');
74
+
75
+ // Restore original values
76
+ (global as any).process = originalProcess;
77
+ (global as any).window = originalWindow;
78
+ });
79
+ });
80
+
81
+ describe('getEnv', () => {
82
+ it('should get environment variable in Node.js', () => {
83
+ process.env.TEST_VAR = 'test_value';
84
+ const value = getEnv('TEST_VAR');
85
+ expect(value).toBe('test_value');
86
+ delete process.env.TEST_VAR;
87
+ });
88
+
89
+ it('should return default value when variable is not set', () => {
90
+ const value = getEnv('NON_EXISTENT_VAR', 'default');
91
+ expect(value).toBe('default');
92
+ });
93
+
94
+ it('should cache environment variable values', () => {
95
+ process.env.CACHE_TEST = 'initial';
96
+ const value1 = getEnv('CACHE_TEST');
97
+ expect(value1).toBe('initial');
98
+
99
+ // Change the actual env var
100
+ process.env.CACHE_TEST = 'changed';
101
+
102
+ // Should still get cached value
103
+ const value2 = getEnv('CACHE_TEST');
104
+ expect(value2).toBe('initial');
105
+
106
+ // Clear cache and get new value
107
+ getEnvironment().clearCache();
108
+ const value3 = getEnv('CACHE_TEST');
109
+ expect(value3).toBe('changed');
110
+
111
+ delete process.env.CACHE_TEST;
112
+ });
113
+ });
114
+
115
+ describe('setEnv', () => {
116
+ it('should set environment variable', () => {
117
+ setEnv('SET_TEST_VAR', 'test_value');
118
+ const value = getEnv('SET_TEST_VAR');
119
+ expect(value).toBe('test_value');
120
+ delete process.env.SET_TEST_VAR;
121
+ });
122
+
123
+ it('should convert non-string values to strings', () => {
124
+ setEnv('NUMBER_VAR', 123);
125
+ const value = getEnv('NUMBER_VAR');
126
+ expect(value).toBe('123');
127
+ delete process.env.NUMBER_VAR;
128
+
129
+ setEnv('BOOL_VAR', true);
130
+ const value2 = getEnv('BOOL_VAR');
131
+ expect(value2).toBe('true');
132
+ delete process.env.BOOL_VAR;
133
+ });
134
+ });
135
+
136
+ describe('hasEnv', () => {
137
+ it('should return true for existing variables', () => {
138
+ process.env.EXISTS = 'yes';
139
+ expect(hasEnv('EXISTS')).toBe(true);
140
+ delete process.env.EXISTS;
141
+ });
142
+
143
+ it('should return false for non-existing variables', () => {
144
+ expect(hasEnv('DOES_NOT_EXIST')).toBe(false);
145
+ });
146
+ });
147
+
148
+ describe('getBooleanEnv', () => {
149
+ it('should parse true values correctly', () => {
150
+ const trueValues = ['true', '1', 'yes', 'on'];
151
+
152
+ trueValues.forEach((value) => {
153
+ process.env.BOOL_TEST = value;
154
+ expect(getBooleanEnv('BOOL_TEST')).toBe(true);
155
+ });
156
+
157
+ delete process.env.BOOL_TEST;
158
+ });
159
+
160
+ it('should parse false values correctly', () => {
161
+ const falseValues = ['false', '0', 'no', 'off', 'anything', ''];
162
+
163
+ falseValues.forEach((value) => {
164
+ process.env.BOOL_TEST = value;
165
+ expect(getBooleanEnv('BOOL_TEST')).toBe(false);
166
+ });
167
+
168
+ delete process.env.BOOL_TEST;
169
+ });
170
+
171
+ it('should return default value when not set', () => {
172
+ expect(getBooleanEnv('NOT_SET', true)).toBe(true);
173
+ expect(getBooleanEnv('NOT_SET', false)).toBe(false);
174
+ });
175
+ });
176
+
177
+ describe('getNumberEnv', () => {
178
+ it('should parse valid numbers', () => {
179
+ process.env.NUM_TEST = '42';
180
+ getEnvironment().clearCache(); // Clear cache after setting env var
181
+ expect(getNumberEnv('NUM_TEST')).toBe(42);
182
+
183
+ process.env.NUM_TEST = '3.14';
184
+ getEnvironment().clearCache(); // Clear cache after setting env var
185
+ expect(getNumberEnv('NUM_TEST')).toBe(3.14);
186
+
187
+ process.env.NUM_TEST = '-100';
188
+ getEnvironment().clearCache(); // Clear cache after setting env var
189
+ expect(getNumberEnv('NUM_TEST')).toBe(-100);
190
+
191
+ delete process.env.NUM_TEST;
192
+ });
193
+
194
+ it('should return undefined for invalid numbers', () => {
195
+ process.env.NUM_TEST = 'not a number';
196
+ expect(getNumberEnv('NUM_TEST')).toBeUndefined();
197
+ delete process.env.NUM_TEST;
198
+ });
199
+
200
+ it('should return default value when not set or invalid', () => {
201
+ expect(getNumberEnv('NOT_SET', 100)).toBe(100);
202
+
203
+ process.env.INVALID_NUM = 'abc';
204
+ expect(getNumberEnv('INVALID_NUM', 200)).toBe(200);
205
+ delete process.env.INVALID_NUM;
206
+ });
207
+ });
208
+
209
+ describe('Browser Environment', () => {
210
+ it.skip('should initialize browser environment with config', () => {
211
+ // Mock browser environment
212
+ delete (global as any).process;
213
+ (global as any).window = { document: {} };
214
+
215
+ const { Environment, initBrowserEnvironment: init } = require('../environment');
216
+ const env = new Environment();
217
+
218
+ // Initialize with config
219
+ init({
220
+ API_KEY: 'test-key',
221
+ DEBUG: true,
222
+ MAX_RETRIES: 3,
223
+ });
224
+
225
+ // Check values were set
226
+ expect(env.get('API_KEY')).toBe('test-key');
227
+ expect(env.get('DEBUG')).toBe('true');
228
+ expect(env.get('MAX_RETRIES')).toBe('3');
229
+ });
230
+
231
+ it.skip('should read from window.ENV in browser', () => {
232
+ // Mock browser with window.ENV
233
+ delete (global as any).process;
234
+ (global as any).window = {
235
+ document: {},
236
+ ENV: {
237
+ PRESET_VAR: 'preset_value',
238
+ },
239
+ };
240
+
241
+ const { Environment } = require('../environment');
242
+ const env = new Environment();
243
+
244
+ expect(env.get('PRESET_VAR')).toBe('preset_value');
245
+ });
246
+
247
+ it.skip('should read from globalThis.__ENV__ in browser', () => {
248
+ // Mock browser with globalThis.__ENV__
249
+ delete (global as any).process;
250
+ (global as any).window = { document: {} };
251
+ (global as any).globalThis = {
252
+ __ENV__: {
253
+ GLOBAL_VAR: 'global_value',
254
+ },
255
+ };
256
+
257
+ const { Environment } = require('../environment');
258
+ const env = new Environment();
259
+
260
+ expect(env.get('GLOBAL_VAR')).toBe('global_value');
261
+ });
262
+ });
263
+
264
+ describe('getEnvironment singleton', () => {
265
+ it('should return the same instance', () => {
266
+ const env1 = getEnvironment();
267
+ const env2 = getEnvironment();
268
+ expect(env1).toBe(env2);
269
+ });
270
+ });
271
+
272
+ describe('getAll', () => {
273
+ it('should return all environment variables', () => {
274
+ process.env.TEST1 = 'value1';
275
+ process.env.TEST2 = 'value2';
276
+
277
+ const allVars = getEnvironment().getAll();
278
+ expect(allVars.TEST1).toBe('value1');
279
+ expect(allVars.TEST2).toBe('value2');
280
+
281
+ delete process.env.TEST1;
282
+ delete process.env.TEST2;
283
+ });
284
+ });
285
+ });