@elizaos/cli 1.5.12-alpha.1 → 1.5.12

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 (57) hide show
  1. package/dist/characters/eliza.d.ts.map +1 -1
  2. package/dist/commands/agent/utils/validation.d.ts +31 -3
  3. package/dist/commands/agent/utils/validation.d.ts.map +1 -1
  4. package/dist/commands/create/actions/setup.d.ts.map +1 -1
  5. package/dist/commands/create/types.d.ts +8 -7
  6. package/dist/commands/create/types.d.ts.map +1 -1
  7. package/dist/commands/create/utils/validation.d.ts +2 -2
  8. package/dist/commands/create/utils/validation.d.ts.map +1 -1
  9. package/dist/commands/dev/actions/dev-server.d.ts.map +1 -1
  10. package/dist/commands/report/src/report-schema.d.ts +167 -11
  11. package/dist/commands/report/src/report-schema.d.ts.map +1 -1
  12. package/dist/commands/scenario/src/MockEngine.d.ts +11 -11
  13. package/dist/commands/scenario/src/matrix-schema.d.ts +70 -5
  14. package/dist/commands/scenario/src/matrix-schema.d.ts.map +1 -1
  15. package/dist/commands/scenario/src/plugin-parser.d.ts +31 -6
  16. package/dist/commands/scenario/src/plugin-parser.d.ts.map +1 -1
  17. package/dist/commands/scenario/src/runtime-factory.d.ts.map +1 -1
  18. package/dist/commands/scenario/src/schema.d.ts +2007 -175
  19. package/dist/commands/scenario/src/schema.d.ts.map +1 -1
  20. package/dist/commands/start/actions/agent-start.d.ts +14 -0
  21. package/dist/commands/start/actions/agent-start.d.ts.map +1 -0
  22. package/dist/commands/start/actions/server-start.d.ts +17 -0
  23. package/dist/commands/start/actions/server-start.d.ts.map +1 -0
  24. package/dist/commands/start/index.d.ts +5 -0
  25. package/dist/commands/start/index.d.ts.map +1 -1
  26. package/dist/commands/start/utils/config-utils.d.ts +30 -0
  27. package/dist/commands/start/utils/config-utils.d.ts.map +1 -0
  28. package/dist/commands/start/utils/dependency-resolver.d.ts +8 -0
  29. package/dist/commands/start/utils/dependency-resolver.d.ts.map +1 -0
  30. package/dist/commands/start/utils/loader.d.ts +68 -0
  31. package/dist/commands/start/utils/loader.d.ts.map +1 -0
  32. package/dist/commands/start/utils/plugin-utils.d.ts +17 -0
  33. package/dist/commands/start/utils/plugin-utils.d.ts.map +1 -0
  34. package/dist/commands/test/actions/e2e-tests.d.ts.map +1 -1
  35. package/dist/index.js +16784 -25156
  36. package/dist/index.js.map +29 -91
  37. package/dist/templates/plugin-quick-starter/package.json +4 -4
  38. package/dist/templates/plugin-starter/package.json +4 -4
  39. package/dist/templates/project-starter/package.json +7 -7
  40. package/dist/templates/project-tee-starter/package.json +5 -5
  41. package/dist/templates/project-tee-starter/src/__tests__/config.test.ts +1 -1
  42. package/dist/templates/project-tee-starter/src/__tests__/tee-validation.test.ts +4 -60
  43. package/dist/templates/project-tee-starter/src/plugin.ts +25 -66
  44. package/dist/utils/get-config.d.ts +194 -27
  45. package/dist/utils/get-config.d.ts.map +1 -1
  46. package/dist/utils/local-cli-delegation.d.ts.map +1 -1
  47. package/dist/version.d.ts +2 -2
  48. package/dist/version.d.ts.map +1 -1
  49. package/dist/version.js +2 -2
  50. package/package.json +8 -9
  51. package/templates/plugin-quick-starter/package.json +4 -4
  52. package/templates/plugin-starter/package.json +4 -4
  53. package/templates/project-starter/package.json +7 -7
  54. package/templates/project-tee-starter/package.json +5 -5
  55. package/templates/project-tee-starter/src/__tests__/config.test.ts +1 -1
  56. package/templates/project-tee-starter/src/__tests__/tee-validation.test.ts +4 -60
  57. package/templates/project-tee-starter/src/plugin.ts +25 -66
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/cli",
3
- "version": "1.5.12-alpha.1",
3
+ "version": "1.5.12",
4
4
  "description": "elizaOS CLI - Manage your AI agents and plugins",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -74,17 +74,16 @@
74
74
  "typescript": "5.8.3",
75
75
  "vite": "^6.3.5"
76
76
  },
77
- "gitHead": "a96b97191357dab8155f0ad048a925e17f839a22",
77
+ "gitHead": "e1372a010e0bd6c9456c6826e7f9996ddad806db",
78
78
  "dependencies": {
79
79
  "@anthropic-ai/claude-code": "^1.0.35",
80
80
  "@anthropic-ai/sdk": "^0.54.0",
81
81
  "@clack/prompts": "^0.11.0",
82
- "@elizaos/api-client": "1.5.12-alpha.1",
83
- "@elizaos/core": "1.5.12-alpha.1",
84
- "@elizaos/plugin-bootstrap": "1.5.12-alpha.1",
85
- "@elizaos/plugin-openai": "1.0.11",
86
- "@elizaos/plugin-sql": "1.5.12-alpha.1",
87
- "@elizaos/server": "1.5.12-alpha.1",
82
+ "@elizaos/api-client": "1.5.12",
83
+ "@elizaos/core": "1.5.12",
84
+ "@elizaos/plugin-bootstrap": "1.5.12",
85
+ "@elizaos/plugin-sql": "1.5.12",
86
+ "@elizaos/server": "1.5.12",
88
87
  "bun": "^1.2.21",
89
88
  "chalk": "^5.4.1",
90
89
  "chokidar": "^4.0.3",
@@ -102,6 +101,6 @@
102
101
  "tsconfig-paths": "^4.2.0",
103
102
  "type-fest": "^4.41.0",
104
103
  "yoctocolors": "^2.1.1",
105
- "zod": "4.1.11"
104
+ "zod": "3.24.2"
106
105
  }
107
106
  }
@@ -39,11 +39,11 @@
39
39
  "package.json"
40
40
  ],
41
41
  "dependencies": {
42
- "@elizaos/core": "1.5.12-alpha.1",
43
- "zod": "4.1.11"
42
+ "@elizaos/core": "1.5.12",
43
+ "zod": "^3.24.4"
44
44
  },
45
45
  "devDependencies": {
46
- "@elizaos/cli": "1.5.12-alpha.1",
46
+ "@elizaos/cli": "1.5.12",
47
47
  "dotenv": "16.4.5",
48
48
  "prettier": "3.5.3",
49
49
  "typescript": "5.8.2"
@@ -62,7 +62,7 @@
62
62
  },
63
63
  "resolutions": {
64
64
  "// Note": "langchain 0.3.30 fixes @langchain/core zod/v3 import issues",
65
- "zod": "4.1.11",
65
+ "zod": "^3.24.4",
66
66
  "langchain": "0.3.30",
67
67
  "@langchain/core": "0.3.30"
68
68
  },
@@ -39,16 +39,16 @@
39
39
  "package.json"
40
40
  ],
41
41
  "dependencies": {
42
- "@elizaos/core": "1.5.12-alpha.1",
42
+ "@elizaos/core": "1.5.12",
43
43
  "@tanstack/react-query": "^5.80.7",
44
44
  "clsx": "^2.1.1",
45
45
  "tailwind-merge": "^3.3.1",
46
46
  "tailwindcss": "^4.1.10",
47
47
  "vite": "^6.3.5",
48
- "zod": "4.1.11"
48
+ "zod": "3.24.2"
49
49
  },
50
50
  "devDependencies": {
51
- "@elizaos/cli": "1.5.12-alpha.1",
51
+ "@elizaos/cli": "1.5.12",
52
52
  "@tailwindcss/vite": "^4.1.10",
53
53
  "@vitejs/plugin-react-swc": "^3.10.2",
54
54
  "dotenv": "16.4.5",
@@ -77,7 +77,7 @@
77
77
  },
78
78
  "resolutions": {
79
79
  "// Note": "langchain 0.3.30 fixes @langchain/core zod/v3 import issues",
80
- "zod": "4.1.11",
80
+ "zod": "3.24.2",
81
81
  "langchain": "0.3.30",
82
82
  "@langchain/core": "0.3.30"
83
83
  },
@@ -27,19 +27,19 @@
27
27
  "dist"
28
28
  ],
29
29
  "dependencies": {
30
- "@elizaos/cli": "1.5.12-alpha.1",
31
- "@elizaos/client": "1.5.12-alpha.1",
32
- "@elizaos/core": "1.5.12-alpha.1",
33
- "@elizaos/plugin-bootstrap": "1.5.12-alpha.1",
34
- "@elizaos/plugin-sql": "1.5.12-alpha.1",
35
- "@elizaos/server": "1.5.12-alpha.1",
30
+ "@elizaos/cli": "1.5.12",
31
+ "@elizaos/client": "1.5.12",
32
+ "@elizaos/core": "1.5.12",
33
+ "@elizaos/plugin-bootstrap": "1.5.12",
34
+ "@elizaos/plugin-sql": "1.5.12",
35
+ "@elizaos/server": "1.5.12",
36
36
  "@tanstack/react-query": "^5.29.0",
37
37
  "clsx": "^2.1.1",
38
38
  "react": "^18.3.1",
39
39
  "react-dom": "^18.3.1",
40
40
  "tailwind-merge": "^2.6.0",
41
41
  "tailwindcss": "^4.1.10",
42
- "zod": "4.1.11"
42
+ "zod": "3.24.2"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/react": "^18.3.3",
@@ -32,11 +32,11 @@
32
32
  "GUIDE.md"
33
33
  ],
34
34
  "dependencies": {
35
- "@elizaos/cli": "1.5.12-alpha.1",
36
- "@elizaos/core": "1.5.12-alpha.1",
37
- "@elizaos/plugin-bootstrap": "1.5.12-alpha.1",
35
+ "@elizaos/cli": "1.5.12",
36
+ "@elizaos/core": "1.5.12",
37
+ "@elizaos/plugin-bootstrap": "1.5.12",
38
38
  "@elizaos/plugin-redpill": "1.2.1",
39
- "@elizaos/plugin-sql": "1.5.12-alpha.1",
39
+ "@elizaos/plugin-sql": "1.5.12",
40
40
  "@phala/dstack-sdk": "0.1.11",
41
41
  "@solana/web3.js": "1.98.2",
42
42
  "@tanstack/react-query": "^5.29.0",
@@ -46,7 +46,7 @@
46
46
  "tailwind-merge": "^2.6.0",
47
47
  "tailwindcss": "^4.1.10",
48
48
  "viem": "2.30.1",
49
- "zod": "4.1.11"
49
+ "zod": "3.24.2"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/jsdom": "^21.1.7",
@@ -48,7 +48,7 @@ describe('Plugin Configuration', () => {
48
48
  // Test with invalid config should fail validation during init
49
49
  const invalidConfig = { TEE_MODE: 'INVALID_MODE' };
50
50
  await expect(teeStarterPlugin.init(invalidConfig, mockRuntime)).rejects.toThrow(
51
- 'TEE_MODE must be one of: OFF, LOCAL, DOCKER, PRODUCTION'
51
+ 'Invalid plugin configuration'
52
52
  );
53
53
  } finally {
54
54
  // Restore original environment
@@ -154,9 +154,7 @@ describe('TEE Environment Validation', () => {
154
154
  try {
155
155
  await expect(async () => {
156
156
  await teeStarterPlugin.init?.({}, mockRuntime);
157
- }).toThrow(
158
- 'Wallet secret salt must be at least 8 characters long for security (excluding whitespace)'
159
- );
157
+ }).toThrow('Wallet secret salt must be at least 8 characters long for security');
160
158
  } finally {
161
159
  // Restore original argv
162
160
  process.argv = originalArgv;
@@ -191,60 +189,7 @@ describe('TEE Environment Validation', () => {
191
189
 
192
190
  await expect(async () => {
193
191
  await teeStarterPlugin.init?.({}, mockRuntime);
194
- }).toThrow('Wallet secret salt must not exceed 128 characters (excluding whitespace)');
195
- });
196
-
197
- test('should reject whitespace-only salt', async () => {
198
- // Test various whitespace-only values
199
- const whitespaceSalts = [' ', '\t\t\t\t', ' \t ', '\n\n\n\n\n\n\n\n'];
200
-
201
- for (const salt of whitespaceSalts) {
202
- // Remove argv test detection temporarily to test validation
203
- const originalArgv = process.argv;
204
- process.argv = ['node', 'script.js']; // Remove test from argv
205
-
206
- process.env.NODE_ENV = 'production';
207
- process.env.TEE_MODE = 'OFF';
208
- process.env.TEE_VENDOR = 'phala';
209
- process.env.WALLET_SECRET_SALT = salt;
210
-
211
- try {
212
- await expect(async () => {
213
- await teeStarterPlugin.init?.({}, mockRuntime);
214
- }).toThrow(
215
- 'Wallet secret salt must be at least 8 characters long for security (excluding whitespace)'
216
- );
217
- } finally {
218
- // Restore original argv
219
- process.argv = originalArgv;
220
- }
221
- }
222
- });
223
-
224
- test('should trim salt and accept if valid after trimming', async () => {
225
- // Test values with leading/trailing whitespace that are valid after trimming
226
- const paddedSalts = [
227
- ' valid_salt_123 ',
228
- '\tvalid_salt_123\t',
229
- '\n\nvalid_salt_123\n\n',
230
- ' valid_salt_123 ',
231
- ];
232
-
233
- for (const salt of paddedSalts) {
234
- process.env.NODE_ENV = 'production';
235
- process.env.TEE_MODE = 'OFF';
236
- process.env.TEE_VENDOR = 'phala';
237
- process.env.WALLET_SECRET_SALT = salt;
238
-
239
- let error = null;
240
- try {
241
- await teeStarterPlugin.init?.({}, mockRuntime);
242
- } catch (e) {
243
- error = e;
244
- }
245
- // Should not throw error since trimmed value is valid
246
- expect(error).toBeNull();
247
- }
192
+ }).toThrow('Wallet secret salt must not exceed 128 characters');
248
193
  });
249
194
  });
250
195
 
@@ -336,11 +281,10 @@ describe('TEE Environment Validation', () => {
336
281
  process.env.TEE_VENDOR = ' phala '; // Whitespace around valid value
337
282
  process.env.WALLET_SECRET_SALT = ' test_salt_123 '; // Whitespace around valid value
338
283
 
339
- // TEE_MODE and TEE_VENDOR whitespace should cause validation failure
340
- // But WALLET_SECRET_SALT is now trimmed and should pass if length is valid after trimming
284
+ // Whitespace should cause validation failure (no auto-trim)
341
285
  await expect(async () => {
342
286
  await teeStarterPlugin.init?.({}, mockRuntime);
343
- }).toThrow(); // Will throw due to TEE_MODE/TEE_VENDOR whitespace
287
+ }).toThrow();
344
288
  } finally {
345
289
  // Restore original values
346
290
  process.argv = originalArgv;
@@ -28,13 +28,10 @@ const configSchema = z.object({
28
28
  }
29
29
  return val;
30
30
  })
31
- .refine(
32
- (val) => {
33
- if (!val) return true; // Allow undefined in non-test environments
34
- return ['OFF', 'LOCAL', 'DOCKER', 'PRODUCTION'].includes(val);
35
- },
36
- { message: 'TEE_MODE must be one of: OFF, LOCAL, DOCKER, PRODUCTION' }
37
- ),
31
+ .refine((val) => {
32
+ if (!val) return true; // Allow undefined in non-test environments
33
+ return ['OFF', 'LOCAL', 'DOCKER', 'PRODUCTION'].includes(val);
34
+ }, 'TEE_MODE must be one of: OFF, LOCAL, DOCKER, PRODUCTION'),
38
35
 
39
36
  TEE_VENDOR: z
40
37
  .string()
@@ -46,13 +43,10 @@ const configSchema = z.object({
46
43
  }
47
44
  return val;
48
45
  })
49
- .refine(
50
- (val) => {
51
- if (!val) return true; // Allow undefined in non-test environments
52
- return val === 'phala';
53
- },
54
- { message: 'TEE_VENDOR must be: phala' }
55
- ),
46
+ .refine((val) => {
47
+ if (!val) return true; // Allow undefined in non-test environments
48
+ return val === 'phala';
49
+ }, 'TEE_VENDOR must be: phala'),
56
50
 
57
51
  WALLET_SECRET_SALT: z
58
52
  .string()
@@ -66,33 +60,26 @@ const configSchema = z.object({
66
60
  }
67
61
  if (!val) {
68
62
  logger.warn('Warning: Wallet secret salt is not provided');
69
- return val;
70
63
  }
71
- // Trim whitespace to prevent security bypass
72
- return val.trim();
64
+ return val;
73
65
  })
74
66
  .refine(
75
67
  (val) => {
76
- if (val === undefined) return true; // Allow undefined in non-test environments
77
- // Empty string after trimming is not allowed (reject whitespace-only values)
78
- if (!val || val.length === 0) return false;
79
- // Check trimmed length for security (val is already trimmed from transform)
80
- return val.length >= 8;
68
+ if (!val) return true; // Allow undefined in non-test environments
69
+ const trimmedVal = val.trim();
70
+ return trimmedVal.length >= 8 && trimmedVal.length <= 128;
81
71
  },
82
- {
83
- message:
84
- 'Wallet secret salt must be at least 8 characters long for security (excluding whitespace)',
85
- }
86
- )
87
- .refine(
88
72
  (val) => {
89
- if (val === undefined) return true; // Allow undefined in non-test environments
90
- // Empty strings not allowed (already checked in previous refine, but be consistent)
91
- if (!val || val.length === 0) return false;
92
- // Check trimmed length (val is already trimmed from transform)
93
- return val.length <= 128;
94
- },
95
- { message: 'Wallet secret salt must not exceed 128 characters (excluding whitespace)' }
73
+ if (!val) return { message: 'Wallet secret salt is required' };
74
+ const trimmedVal = val.trim();
75
+ if (trimmedVal.length < 8) {
76
+ return { message: 'Wallet secret salt must be at least 8 characters long for security' };
77
+ }
78
+ if (trimmedVal.length > 128) {
79
+ return { message: 'Wallet secret salt must not exceed 128 characters' };
80
+ }
81
+ return { message: 'Invalid wallet secret salt' };
82
+ }
96
83
  ),
97
84
  });
98
85
 
@@ -108,8 +95,7 @@ type TeeServiceConfig = {
108
95
  */
109
96
  const createTeeServiceConfig = (runtime: IAgentRuntime): TeeServiceConfig => ({
110
97
  teeClient: new TappdClient(),
111
- // Ensure salt is trimmed to match validation behavior
112
- secretSalt: (process.env.WALLET_SECRET_SALT || 'secret_salt').trim(),
98
+ secretSalt: process.env.WALLET_SECRET_SALT || 'secret_salt',
113
99
  runtime,
114
100
  });
115
101
 
@@ -274,36 +260,9 @@ const teeStarterPlugin: Plugin = {
274
260
  }
275
261
  } catch (error) {
276
262
  if (error instanceof z.ZodError) {
277
- // Check if this is validation with an invalid TEE_MODE from the test
278
- const hasInvalidMode = error.issues.some(
279
- (e) => e.path[0] === 'TEE_MODE' && e.message.includes('TEE_MODE must be')
280
- );
281
- if (hasInvalidMode) {
282
- // Throw the specific validation error for TEE_MODE
283
- const teeError = error.issues.find((e) => e.path[0] === 'TEE_MODE');
284
- throw new Error(
285
- teeError?.message || 'TEE_MODE must be one of: OFF, LOCAL, DOCKER, PRODUCTION'
286
- );
287
- }
288
-
289
- // Check if this is validation with an invalid TEE_VENDOR from the test
290
- const hasInvalidVendor = error.issues.some(
291
- (e) => e.path[0] === 'TEE_VENDOR' && e.message.includes('TEE_VENDOR must be')
263
+ throw new Error(
264
+ `Invalid plugin configuration: ${error.errors.map((e) => e.message).join(', ')}`
292
265
  );
293
- if (hasInvalidVendor) {
294
- const vendorError = error.issues.find((e) => e.path[0] === 'TEE_VENDOR');
295
- throw new Error(vendorError?.message || 'TEE_VENDOR must be: phala');
296
- }
297
-
298
- // Check if this is validation with an invalid WALLET_SECRET_SALT from the test
299
- const hasSaltError = error.issues.some((e) => e.path[0] === 'WALLET_SECRET_SALT');
300
- if (hasSaltError) {
301
- const saltError = error.issues.find((e) => e.path[0] === 'WALLET_SECRET_SALT');
302
- throw new Error(saltError?.message || 'Invalid wallet secret salt');
303
- }
304
-
305
- // Generic invalid configuration error
306
- throw new Error('Invalid plugin configuration');
307
266
  }
308
267
  throw error;
309
268
  }