@elizaos/core 1.5.1 → 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 (88) hide show
  1. package/dist/browser/index.browser.js +120 -120
  2. package/dist/browser/index.browser.js.map +5 -21
  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/package.json +10 -4
  8. package/src/__tests__/action-chaining-simple.test.ts +203 -0
  9. package/src/__tests__/actions.test.ts +218 -0
  10. package/src/__tests__/buffer.test.ts +337 -0
  11. package/src/__tests__/character-validation.test.ts +309 -0
  12. package/src/__tests__/database.test.ts +750 -0
  13. package/src/__tests__/entities.test.ts +727 -0
  14. package/src/__tests__/env.test.ts +23 -0
  15. package/src/__tests__/environment.test.ts +285 -0
  16. package/src/__tests__/logger-browser-node.test.ts +716 -0
  17. package/src/__tests__/logger.test.ts +403 -0
  18. package/src/__tests__/messages.test.ts +196 -0
  19. package/src/__tests__/mockCharacter.ts +544 -0
  20. package/src/__tests__/parsing.test.ts +58 -0
  21. package/src/__tests__/prompts.test.ts +159 -0
  22. package/src/__tests__/roles.test.ts +331 -0
  23. package/src/__tests__/runtime-embedding.test.ts +343 -0
  24. package/src/__tests__/runtime.test.ts +978 -0
  25. package/src/__tests__/search.test.ts +15 -0
  26. package/src/__tests__/services-by-type.test.ts +204 -0
  27. package/src/__tests__/services.test.ts +136 -0
  28. package/src/__tests__/settings.test.ts +810 -0
  29. package/src/__tests__/utils.test.ts +1105 -0
  30. package/src/__tests__/uuid.test.ts +94 -0
  31. package/src/actions.ts +122 -0
  32. package/src/database.ts +579 -0
  33. package/src/entities.ts +406 -0
  34. package/src/index.browser.ts +48 -0
  35. package/src/index.node.ts +39 -0
  36. package/src/index.ts +50 -0
  37. package/src/logger.ts +527 -0
  38. package/src/prompts.ts +243 -0
  39. package/src/roles.ts +85 -0
  40. package/src/runtime.ts +2514 -0
  41. package/src/schemas/character.ts +149 -0
  42. package/src/search.ts +1543 -0
  43. package/src/sentry/instrument.browser.ts +65 -0
  44. package/src/sentry/instrument.node.ts +57 -0
  45. package/src/sentry/instrument.ts +82 -0
  46. package/src/services.ts +105 -0
  47. package/src/settings.ts +409 -0
  48. package/src/test_resources/constants.ts +12 -0
  49. package/src/test_resources/testSetup.ts +21 -0
  50. package/src/test_resources/types.ts +22 -0
  51. package/src/types/agent.ts +112 -0
  52. package/src/types/browser.ts +145 -0
  53. package/src/types/components.ts +184 -0
  54. package/src/types/database.ts +348 -0
  55. package/src/types/email.ts +162 -0
  56. package/src/types/environment.ts +129 -0
  57. package/src/types/events.ts +249 -0
  58. package/src/types/index.ts +29 -0
  59. package/src/types/knowledge.ts +65 -0
  60. package/src/types/lp.ts +124 -0
  61. package/src/types/memory.ts +228 -0
  62. package/src/types/message.ts +233 -0
  63. package/src/types/messaging.ts +57 -0
  64. package/src/types/model.ts +359 -0
  65. package/src/types/pdf.ts +77 -0
  66. package/src/types/plugin.ts +78 -0
  67. package/src/types/post.ts +271 -0
  68. package/src/types/primitives.ts +97 -0
  69. package/src/types/runtime.ts +190 -0
  70. package/src/types/service.ts +198 -0
  71. package/src/types/settings.ts +30 -0
  72. package/src/types/state.ts +60 -0
  73. package/src/types/task.ts +72 -0
  74. package/src/types/tee.ts +107 -0
  75. package/src/types/testing.ts +30 -0
  76. package/src/types/token.ts +96 -0
  77. package/src/types/transcription.ts +133 -0
  78. package/src/types/video.ts +108 -0
  79. package/src/types/wallet.ts +56 -0
  80. package/src/types/web-search.ts +146 -0
  81. package/src/utils/__tests__/buffer.test.ts +80 -0
  82. package/src/utils/__tests__/environment.test.ts +58 -0
  83. package/src/utils/__tests__/stringToUuid.test.ts +88 -0
  84. package/src/utils/buffer.ts +312 -0
  85. package/src/utils/environment.ts +316 -0
  86. package/src/utils/server-health.ts +117 -0
  87. package/src/utils.ts +1076 -0
  88. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,65 @@
1
+ import { getEnv, getBooleanEnv, getNumberEnv } from '../utils/environment';
2
+
3
+ type SentryBrowserModule = {
4
+ init: (options: Record<string, any>) => void;
5
+ captureException: (error: unknown) => void;
6
+ flush?: (timeout?: number) => Promise<boolean>;
7
+ onLoad?: (cb: () => void) => void;
8
+ };
9
+
10
+ let initialized = false;
11
+ let sentryClient: SentryBrowserModule | null = null;
12
+
13
+ async function ensureSentryInitialized(): Promise<SentryBrowserModule | null> {
14
+ if (getEnv('SENTRY_LOGGING') === 'false') return null;
15
+
16
+ const dsn =
17
+ getEnv('SENTRY_DSN') ||
18
+ 'https://c20e2d51b66c14a783b0689d536f7e5c@o4509349865259008.ingest.us.sentry.io/4509352524120064';
19
+
20
+ if (initialized && sentryClient) return sentryClient;
21
+
22
+ try {
23
+ const mod = (await import('@sentry/browser')) as unknown as SentryBrowserModule;
24
+
25
+ const init = () =>
26
+ mod.init({
27
+ dsn,
28
+ environment: getEnv('SENTRY_ENVIRONMENT') || getEnv('NODE_ENV', 'development'),
29
+ tracesSampleRate: (getNumberEnv('SENTRY_TRACES_SAMPLE_RATE', 1.0) as number) ?? 1.0,
30
+ sendDefaultPii: getBooleanEnv('SENTRY_SEND_DEFAULT_PII', false),
31
+ });
32
+
33
+ if (typeof mod.onLoad === 'function') {
34
+ mod.onLoad(init);
35
+ } else {
36
+ init();
37
+ }
38
+
39
+ initialized = true;
40
+ sentryClient = mod;
41
+ return sentryClient;
42
+ } catch {
43
+ initialized = true;
44
+ sentryClient = null;
45
+ return null;
46
+ }
47
+ }
48
+
49
+ export const Sentry = {
50
+ async captureException(error: unknown) {
51
+ const client = await ensureSentryInitialized();
52
+ try {
53
+ client?.captureException?.(error);
54
+ } catch {}
55
+ },
56
+ async flush(timeout?: number): Promise<boolean> {
57
+ const client = await ensureSentryInitialized();
58
+ try {
59
+ if (client?.flush) return await client.flush(timeout);
60
+ } catch {}
61
+ return true;
62
+ },
63
+ };
64
+
65
+ export type { SentryBrowserModule };
@@ -0,0 +1,57 @@
1
+ import { getEnv, getBooleanEnv, getNumberEnv } from '../utils/environment';
2
+
3
+ type SentryNodeModule = {
4
+ init: (options: Record<string, any>) => void;
5
+ captureException: (error: unknown) => void;
6
+ flush?: (timeout?: number) => Promise<boolean>;
7
+ };
8
+
9
+ let initialized = false;
10
+ let sentryClient: SentryNodeModule | null = null;
11
+
12
+ async function ensureSentryInitialized(): Promise<SentryNodeModule | null> {
13
+ if (getEnv('SENTRY_LOGGING') === 'false') return null;
14
+
15
+ const dsn =
16
+ getEnv('SENTRY_DSN') ||
17
+ 'https://c20e2d51b66c14a783b0689d536f7e5c@o4509349865259008.ingest.us.sentry.io/4509352524120064';
18
+
19
+ if (initialized && sentryClient) return sentryClient;
20
+
21
+ try {
22
+ const mod = (await import('@sentry/node')) as unknown as SentryNodeModule;
23
+
24
+ mod.init({
25
+ dsn,
26
+ environment: getEnv('SENTRY_ENVIRONMENT') || getEnv('NODE_ENV', 'development'),
27
+ tracesSampleRate: (getNumberEnv('SENTRY_TRACES_SAMPLE_RATE', 1.0) as number) ?? 1.0,
28
+ sendDefaultPii: getBooleanEnv('SENTRY_SEND_DEFAULT_PII', false),
29
+ });
30
+
31
+ initialized = true;
32
+ sentryClient = mod;
33
+ return sentryClient;
34
+ } catch {
35
+ initialized = true;
36
+ sentryClient = null;
37
+ return null;
38
+ }
39
+ }
40
+
41
+ export const Sentry = {
42
+ async captureException(error: unknown) {
43
+ const client = await ensureSentryInitialized();
44
+ try {
45
+ client?.captureException?.(error);
46
+ } catch {}
47
+ },
48
+ async flush(timeout?: number): Promise<boolean> {
49
+ const client = await ensureSentryInitialized();
50
+ try {
51
+ if (client?.flush) return await client.flush(timeout);
52
+ } catch {}
53
+ return true;
54
+ },
55
+ };
56
+
57
+ export type { SentryNodeModule };
@@ -0,0 +1,82 @@
1
+ import { getEnv, getBooleanEnv, getNumberEnv, detectEnvironment } from '../utils/environment';
2
+
3
+ type SentryModule = {
4
+ init: (options: Record<string, any>) => void;
5
+ captureException: (error: unknown) => void;
6
+ flush?: (timeout?: number) => Promise<boolean>;
7
+ onLoad?: (cb: () => void) => void; // only present in browser sdk types
8
+ };
9
+
10
+ let initialized = false;
11
+ let sentryClient: SentryModule | null = null;
12
+
13
+ async function ensureSentryInitialized(): Promise<SentryModule | null> {
14
+ if (getEnv('SENTRY_LOGGING') === 'false') return null;
15
+
16
+ const dsn =
17
+ getEnv('SENTRY_DSN') ||
18
+ 'https://c20e2d51b66c14a783b0689d536f7e5c@o4509349865259008.ingest.us.sentry.io/4509352524120064';
19
+
20
+ if (initialized && sentryClient) return sentryClient;
21
+
22
+ const isBrowser = detectEnvironment() === 'browser';
23
+
24
+ try {
25
+ if (isBrowser) {
26
+ const mod = (await import('@sentry/browser')) as unknown as SentryModule;
27
+
28
+ const init = () =>
29
+ mod.init({
30
+ dsn,
31
+ environment: getEnv('SENTRY_ENVIRONMENT') || getEnv('NODE_ENV', 'development'),
32
+ tracesSampleRate: (getNumberEnv('SENTRY_TRACES_SAMPLE_RATE', 1.0) as number) ?? 1.0,
33
+ sendDefaultPii: getBooleanEnv('SENTRY_SEND_DEFAULT_PII', false),
34
+ });
35
+
36
+ if (typeof mod.onLoad === 'function') {
37
+ mod.onLoad(init);
38
+ } else {
39
+ init();
40
+ }
41
+
42
+ initialized = true;
43
+ sentryClient = mod;
44
+ return sentryClient;
45
+ } else {
46
+ const mod = (await import('@sentry/node')) as unknown as SentryModule;
47
+
48
+ mod.init({
49
+ dsn,
50
+ environment: getEnv('SENTRY_ENVIRONMENT') || getEnv('NODE_ENV', 'development'),
51
+ tracesSampleRate: (getNumberEnv('SENTRY_TRACES_SAMPLE_RATE', 1.0) as number) ?? 1.0,
52
+ sendDefaultPii: getBooleanEnv('SENTRY_SEND_DEFAULT_PII', false),
53
+ });
54
+
55
+ initialized = true;
56
+ sentryClient = mod;
57
+ return sentryClient;
58
+ }
59
+ } catch {
60
+ initialized = true;
61
+ sentryClient = null;
62
+ return null;
63
+ }
64
+ }
65
+
66
+ export const Sentry = {
67
+ async captureException(error: unknown) {
68
+ const client = await ensureSentryInitialized();
69
+ try {
70
+ client?.captureException?.(error);
71
+ } catch {}
72
+ },
73
+ async flush(timeout?: number): Promise<boolean> {
74
+ const client = await ensureSentryInitialized();
75
+ try {
76
+ if (client?.flush) return await client.flush(timeout);
77
+ } catch {}
78
+ return true;
79
+ },
80
+ };
81
+
82
+ export type { SentryModule };
@@ -0,0 +1,105 @@
1
+ import { Service } from './types';
2
+ import type { IAgentRuntime, ServiceTypeName } from './types';
3
+
4
+ /**
5
+ * Service builder class that provides type-safe service creation
6
+ * with automatic type inference
7
+ */
8
+ export class ServiceBuilder<TService extends Service = Service> {
9
+ protected serviceType: ServiceTypeName | string;
10
+ protected startFn!: (runtime: IAgentRuntime) => Promise<TService>;
11
+ protected stopFn?: () => Promise<void>;
12
+ protected description: string;
13
+
14
+ constructor(serviceType: ServiceTypeName | string) {
15
+ this.serviceType = serviceType;
16
+ this.description = '';
17
+ }
18
+
19
+ /**
20
+ * Set the service description
21
+ */
22
+ withDescription(description: string): this {
23
+ this.description = description;
24
+ return this;
25
+ }
26
+
27
+ /**
28
+ * Set the start function for the service
29
+ */
30
+ withStart(startFn: (runtime: IAgentRuntime) => Promise<TService>): this {
31
+ this.startFn = startFn;
32
+ return this;
33
+ }
34
+
35
+ /**
36
+ * Set the stop function for the service
37
+ */
38
+ withStop(stopFn: () => Promise<void>): this {
39
+ this.stopFn = stopFn;
40
+ return this;
41
+ }
42
+
43
+ /**
44
+ * Build the service class with all configured properties
45
+ */
46
+ build(): new (runtime?: IAgentRuntime) => TService {
47
+ const serviceType = this.serviceType;
48
+ const description = this.description;
49
+ const startFn = this.startFn;
50
+ const stopFn = this.stopFn;
51
+
52
+ // Create a dynamic class with the configured properties
53
+ return class extends (Service as any) {
54
+ static serviceType = serviceType;
55
+ capabilityDescription = description;
56
+
57
+ static async start(runtime: IAgentRuntime): Promise<Service> {
58
+ if (!startFn) {
59
+ throw new Error(`Start function not defined for service ${serviceType}`);
60
+ }
61
+ return startFn(runtime);
62
+ }
63
+
64
+ async stop(): Promise<void> {
65
+ if (stopFn) {
66
+ await stopFn();
67
+ }
68
+ }
69
+ } as any;
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Create a type-safe service builder
75
+ * @param serviceType - The service type name
76
+ * @returns A new ServiceBuilder instance
77
+ */
78
+ export function createService<TService extends Service = Service>(
79
+ serviceType: ServiceTypeName | string
80
+ ): ServiceBuilder<TService> {
81
+ return new ServiceBuilder<TService>(serviceType);
82
+ }
83
+
84
+ /**
85
+ * Type-safe service definition helper
86
+ */
87
+ export interface ServiceDefinition<T extends Service = Service> {
88
+ serviceType: ServiceTypeName;
89
+ description: string;
90
+ start: (runtime: IAgentRuntime) => Promise<T>;
91
+ stop?: () => Promise<void>;
92
+ }
93
+
94
+ /**
95
+ * Define a service with type safety
96
+ */
97
+ export function defineService<T extends Service = Service>(
98
+ definition: ServiceDefinition<T>
99
+ ): new (runtime?: IAgentRuntime) => T {
100
+ return createService<T>(definition.serviceType)
101
+ .withDescription(definition.description)
102
+ .withStart(definition.start)
103
+ .withStop(definition.stop || (() => Promise.resolve()))
104
+ .build();
105
+ }