@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,149 @@
1
+ import { z } from 'zod';
2
+ import type { Character } from '../types/agent';
3
+
4
+ // UUID validation schema
5
+ const uuidSchema = z
6
+ .string()
7
+ .regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, 'Invalid UUID format');
8
+
9
+ // Message content schema matching the Content interface
10
+ const contentSchema = z
11
+ .object({
12
+ text: z.string().optional(),
13
+ thought: z.string().optional(),
14
+ actions: z.array(z.string()).optional(),
15
+ providers: z.array(z.string()).optional(),
16
+ source: z.string().optional(),
17
+ target: z.string().optional(),
18
+ url: z.string().optional(),
19
+ inReplyTo: uuidSchema.optional(),
20
+ attachments: z.array(z.any()).optional(),
21
+ channelType: z.string().optional(),
22
+ })
23
+ .passthrough(); // Allow additional properties
24
+
25
+ // MessageExample schema
26
+ const messageExampleSchema = z.object({
27
+ name: z.string(),
28
+ content: contentSchema,
29
+ });
30
+
31
+ // DirectoryItem schema
32
+ const directoryItemSchema = z.object({
33
+ directory: z.string(),
34
+ shared: z.boolean().optional(),
35
+ });
36
+
37
+ // Knowledge item can be a string, object with path, or DirectoryItem
38
+ const knowledgeItemSchema = z.union([
39
+ z.string(),
40
+ z.object({
41
+ path: z.string(),
42
+ shared: z.boolean().optional(),
43
+ }),
44
+ directoryItemSchema,
45
+ ]);
46
+
47
+ // TemplateType schema - can be string or function (we'll validate as string for JSON)
48
+ const templateTypeSchema = z.union([
49
+ z.string(),
50
+ z.function().optional(), // Functions won't be in JSON but allowed in runtime
51
+ ]);
52
+
53
+ // Style configuration schema
54
+ const styleSchema = z
55
+ .object({
56
+ all: z.array(z.string()).optional(),
57
+ chat: z.array(z.string()).optional(),
58
+ post: z.array(z.string()).optional(),
59
+ })
60
+ .optional();
61
+
62
+ // Settings schema - flexible object
63
+ const settingsSchema = z.record(z.union([z.string(), z.boolean(), z.number(), z.any()])).optional();
64
+
65
+ // Secrets schema
66
+ const secretsSchema = z.record(z.union([z.string(), z.boolean(), z.number()])).optional();
67
+
68
+ // Main Character schema
69
+ export const characterSchema = z
70
+ .object({
71
+ id: uuidSchema.optional(),
72
+ name: z.string().min(1, 'Character name is required'),
73
+ username: z.string().optional(),
74
+ system: z.string().optional(),
75
+ templates: z.record(templateTypeSchema).optional(),
76
+ bio: z.union([z.string(), z.array(z.string())]),
77
+ messageExamples: z.array(z.array(messageExampleSchema)).optional(),
78
+ postExamples: z.array(z.string()).optional(),
79
+ topics: z.array(z.string()).optional(),
80
+ adjectives: z.array(z.string()).optional(),
81
+ knowledge: z.array(knowledgeItemSchema).optional(),
82
+ plugins: z.array(z.string()).optional(),
83
+ settings: settingsSchema,
84
+ secrets: secretsSchema,
85
+ style: styleSchema,
86
+ })
87
+ .strict(); // Only allow known properties
88
+
89
+ // Validation result type
90
+ export interface CharacterValidationResult {
91
+ success: boolean;
92
+ data?: Character;
93
+ error?: {
94
+ message: string;
95
+ issues?: z.ZodIssue[];
96
+ };
97
+ }
98
+
99
+ /**
100
+ * Safely validates character data using Zod schema
101
+ * @param data - Raw character data to validate
102
+ * @returns Validation result with success flag and either data or error
103
+ */
104
+ export function validateCharacter(data: unknown): CharacterValidationResult {
105
+ const result = characterSchema.safeParse(data);
106
+
107
+ if (result.success) {
108
+ return {
109
+ success: true,
110
+ data: result.data as Character,
111
+ };
112
+ }
113
+
114
+ return {
115
+ success: false,
116
+ error: {
117
+ message: `Character validation failed: ${result.error.message}`,
118
+ issues: result.error.issues,
119
+ },
120
+ };
121
+ }
122
+
123
+ /**
124
+ * Safely parses JSON string and validates as character
125
+ * @param jsonString - JSON string to parse and validate
126
+ * @returns Validation result with success flag and either data or error
127
+ */
128
+ export function parseAndValidateCharacter(jsonString: string): CharacterValidationResult {
129
+ try {
130
+ const parsed = JSON.parse(jsonString);
131
+ return validateCharacter(parsed);
132
+ } catch (error) {
133
+ return {
134
+ success: false,
135
+ error: {
136
+ message: `Invalid JSON: ${error instanceof Error ? error.message : 'Unknown JSON parsing error'}`,
137
+ },
138
+ };
139
+ }
140
+ }
141
+
142
+ /**
143
+ * Type guard to check if data is a valid Character
144
+ * @param data - Data to check
145
+ * @returns True if data is a valid Character
146
+ */
147
+ export function isValidCharacter(data: unknown): data is Character {
148
+ return validateCharacter(data).success;
149
+ }