@elizaos/cli 1.3.2 → 1.4.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 (122) hide show
  1. package/README.md +46 -0
  2. package/dist/{bun-exec-6CQHTS4F.js → bun-exec-ULMPAIQC.js} +1 -1
  3. package/dist/{chunk-E6XYTE3A.js → chunk-D3QSET5H.js} +69 -72
  4. package/dist/{chunk-FDEDLANP.js → chunk-FQYWRHLX.js} +1 -1
  5. package/dist/{chunk-T2QDIXGU.js → chunk-FSSUAWXQ.js} +3 -3
  6. package/dist/{chunk-D3Q2UZLZ.js → chunk-I4L4T7QX.js} +1 -1
  7. package/dist/{chunk-5GUS4CFO.js → chunk-SMZBJQJR.js} +1 -1
  8. package/dist/commands/agent/actions/index.js +3 -3
  9. package/dist/commands/agent/index.js +3 -3
  10. package/dist/commands/create/actions/index.js +4 -4
  11. package/dist/commands/create/index.js +5 -5
  12. package/dist/index.js +134 -109
  13. package/dist/{plugin-creator-H26ZLR6H.js → plugin-creator-TCUFII32.js} +2 -2
  14. package/dist/{registry-433S5F3Y.js → registry-RF6PW3EN.js} +3 -3
  15. package/dist/templates/plugin-quick-starter/README.md +52 -10
  16. package/dist/templates/plugin-quick-starter/package.json +2 -2
  17. package/dist/templates/plugin-quick-starter/src/__tests__/e2e/README.md +140 -0
  18. package/dist/templates/plugin-quick-starter/src/__tests__/e2e/plugin-quick-starter.e2e.ts +339 -0
  19. package/dist/templates/plugin-quick-starter/src/__tests__/plugin.test.ts +55 -17
  20. package/dist/templates/plugin-quick-starter/src/plugin.ts +14 -14
  21. package/dist/templates/plugin-starter/README.md +124 -49
  22. package/dist/templates/plugin-starter/package.json +2 -2
  23. package/dist/templates/plugin-starter/src/__tests__/e2e/README.md +44 -9
  24. package/{templates/plugin-starter/src/__tests__/e2e/starter-plugin.ts → dist/templates/plugin-starter/src/__tests__/e2e/plugin-starter.e2e.ts} +13 -20
  25. package/dist/templates/plugin-starter/src/plugin.ts +5 -7
  26. package/dist/templates/project-starter/README.md +24 -11
  27. package/dist/templates/project-starter/package.json +4 -4
  28. package/dist/templates/project-starter/src/__tests__/actions.test.ts +2 -2
  29. package/dist/templates/project-starter/src/__tests__/e2e/README.md +103 -0
  30. package/dist/templates/project-starter/src/__tests__/e2e/project-starter.e2e.ts +575 -0
  31. package/dist/templates/project-starter/src/__tests__/integration.test.ts +1 -1
  32. package/dist/templates/project-starter/src/__tests__/models.test.ts +3 -3
  33. package/dist/templates/project-starter/src/__tests__/plugin.test.ts +3 -3
  34. package/dist/templates/project-starter/src/__tests__/provider.test.ts +2 -2
  35. package/dist/templates/project-starter/src/index.ts +4 -3
  36. package/dist/templates/project-starter/src/plugin.ts +5 -5
  37. package/dist/templates/project-tee-starter/README.md +44 -5
  38. package/dist/templates/project-tee-starter/package.json +4 -4
  39. package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/build-order.test.ts +1 -1
  40. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/character.test.ts +1 -1
  41. package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/config.test.ts +1 -1
  42. package/dist/templates/project-tee-starter/src/__tests__/e2e/README.md +128 -0
  43. package/dist/templates/project-tee-starter/src/__tests__/e2e/project-tee-starter.e2e.ts +280 -0
  44. package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/env.test.ts +1 -1
  45. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/error-handling.test.ts +2 -2
  46. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/events.test.ts +1 -1
  47. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/file-structure.test.ts +2 -2
  48. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/integration.test.ts +2 -2
  49. package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/models.test.ts +1 -1
  50. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/plugin.test.ts +1 -1
  51. package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/provider.test.ts +2 -2
  52. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/routes.test.ts +1 -1
  53. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/tee-validation.test.ts +1 -1
  54. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/test-utils.ts +2 -2
  55. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/vite-config-utils.ts +14 -2
  56. package/dist/templates/project-tee-starter/src/index.ts +2 -0
  57. package/dist/templates/project-tee-starter/src/plugin.ts +19 -7
  58. package/dist/{utils-DBLSDYBF.js → utils-5HPZSIF6.js} +3 -3
  59. package/package.json +6 -6
  60. package/templates/plugin-quick-starter/README.md +52 -10
  61. package/templates/plugin-quick-starter/package.json +2 -2
  62. package/templates/plugin-quick-starter/src/__tests__/e2e/README.md +140 -0
  63. package/templates/plugin-quick-starter/src/__tests__/e2e/plugin-quick-starter.e2e.ts +339 -0
  64. package/templates/plugin-quick-starter/src/__tests__/plugin.test.ts +55 -17
  65. package/templates/plugin-quick-starter/src/plugin.ts +14 -14
  66. package/templates/plugin-starter/README.md +124 -49
  67. package/templates/plugin-starter/package.json +2 -2
  68. package/templates/plugin-starter/src/__tests__/e2e/README.md +44 -9
  69. package/{dist/templates/plugin-starter/src/__tests__/e2e/starter-plugin.ts → templates/plugin-starter/src/__tests__/e2e/plugin-starter.e2e.ts} +13 -20
  70. package/templates/plugin-starter/src/plugin.ts +5 -7
  71. package/templates/project-starter/README.md +24 -11
  72. package/templates/project-starter/package.json +4 -4
  73. package/templates/project-starter/src/__tests__/actions.test.ts +2 -2
  74. package/templates/project-starter/src/__tests__/e2e/README.md +103 -0
  75. package/templates/project-starter/src/__tests__/e2e/project-starter.e2e.ts +575 -0
  76. package/templates/project-starter/src/__tests__/integration.test.ts +1 -1
  77. package/templates/project-starter/src/__tests__/models.test.ts +3 -3
  78. package/templates/project-starter/src/__tests__/plugin.test.ts +3 -3
  79. package/templates/project-starter/src/__tests__/provider.test.ts +2 -2
  80. package/templates/project-starter/src/index.ts +4 -3
  81. package/templates/project-starter/src/plugin.ts +5 -5
  82. package/templates/project-tee-starter/README.md +44 -5
  83. package/templates/project-tee-starter/package.json +4 -4
  84. package/templates/project-tee-starter/{__tests__ → src/__tests__}/build-order.test.ts +1 -1
  85. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/character.test.ts +1 -1
  86. package/templates/project-tee-starter/{__tests__ → src/__tests__}/config.test.ts +1 -1
  87. package/templates/project-tee-starter/src/__tests__/e2e/README.md +128 -0
  88. package/templates/project-tee-starter/src/__tests__/e2e/project-tee-starter.e2e.ts +280 -0
  89. package/templates/project-tee-starter/{__tests__ → src/__tests__}/env.test.ts +1 -1
  90. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/error-handling.test.ts +2 -2
  91. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/events.test.ts +1 -1
  92. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/file-structure.test.ts +2 -2
  93. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/integration.test.ts +2 -2
  94. package/templates/project-tee-starter/{__tests__ → src/__tests__}/models.test.ts +1 -1
  95. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/plugin.test.ts +1 -1
  96. package/templates/project-tee-starter/{__tests__ → src/__tests__}/provider.test.ts +2 -2
  97. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/routes.test.ts +1 -1
  98. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/tee-validation.test.ts +1 -1
  99. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/test-utils.ts +2 -2
  100. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/vite-config-utils.ts +14 -2
  101. package/templates/project-tee-starter/src/index.ts +2 -0
  102. package/templates/project-tee-starter/src/plugin.ts +19 -7
  103. package/dist/templates/plugin-starter/src/tests.ts +0 -6
  104. package/dist/templates/project-starter/src/__tests__/e2e/index.ts +0 -14
  105. package/dist/templates/project-starter/src/__tests__/e2e/natural-language.test.ts +0 -246
  106. package/dist/templates/project-starter/src/__tests__/e2e/project.test.ts +0 -155
  107. package/dist/templates/project-starter/src/__tests__/e2e/starter-plugin.test.ts +0 -421
  108. package/dist/templates/project-tee-starter/e2e/project.test.ts +0 -38
  109. package/dist/templates/project-tee-starter/e2e/starter-plugin.test.ts +0 -92
  110. package/templates/plugin-starter/src/tests.ts +0 -6
  111. package/templates/project-starter/src/__tests__/e2e/index.ts +0 -14
  112. package/templates/project-starter/src/__tests__/e2e/natural-language.test.ts +0 -246
  113. package/templates/project-starter/src/__tests__/e2e/project.test.ts +0 -155
  114. package/templates/project-starter/src/__tests__/e2e/starter-plugin.test.ts +0 -421
  115. package/templates/project-tee-starter/e2e/project.test.ts +0 -38
  116. package/templates/project-tee-starter/e2e/starter-plugin.test.ts +0 -92
  117. /package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/actions.test.ts +0 -0
  118. /package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/frontend.test.ts +0 -0
  119. /package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/utils/core-test-utils.ts +0 -0
  120. /package/templates/project-tee-starter/{__tests__ → src/__tests__}/actions.test.ts +0 -0
  121. /package/templates/project-tee-starter/{__tests__ → src/__tests__}/frontend.test.ts +0 -0
  122. /package/templates/project-tee-starter/{__tests__ → src/__tests__}/utils/core-test-utils.ts +0 -0
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env bun
2
2
  import {
3
3
  create
4
- } from "./chunk-T2QDIXGU.js";
4
+ } from "./chunk-FSSUAWXQ.js";
5
5
  import {
6
6
  getElizaCharacter
7
- } from "./chunk-5GUS4CFO.js";
7
+ } from "./chunk-SMZBJQJR.js";
8
8
  import {
9
9
  TestRunner,
10
10
  UserEnvironment,
@@ -44,18 +44,18 @@ import {
44
44
  testPublishToNpm,
45
45
  tryDelegateToLocalCli,
46
46
  validateDataDir
47
- } from "./chunk-E6XYTE3A.js";
47
+ } from "./chunk-D3QSET5H.js";
48
48
  import {
49
49
  configureEmojis,
50
50
  emoji,
51
51
  runBunCommand
52
- } from "./chunk-FDEDLANP.js";
52
+ } from "./chunk-FQYWRHLX.js";
53
53
  import "./chunk-GXWWPFBO.js";
54
54
  import {
55
55
  bunExec,
56
56
  bunExecInherit,
57
57
  bunExecSimple
58
- } from "./chunk-D3Q2UZLZ.js";
58
+ } from "./chunk-I4L4T7QX.js";
59
59
  import "./chunk-3RG5ZIWI.js";
60
60
 
61
61
  // src/commands/dev/index.ts
@@ -424,14 +424,14 @@ function hasElizaOSCli(packageJsonPath) {
424
424
  try {
425
425
  packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
426
426
  } catch (parseError) {
427
- logger.debug(`Error parsing JSON in package.json at ${packageJsonPath}:`, parseError);
427
+ logger.debug({ error: parseError, packageJsonPath }, `Error parsing JSON in package.json`);
428
428
  return false;
429
429
  }
430
430
  const dependencies = packageJson.dependencies || {};
431
431
  const devDependencies = packageJson.devDependencies || {};
432
432
  return "@elizaos/cli" in dependencies || "@elizaos/cli" in devDependencies;
433
433
  } catch (error) {
434
- logger.debug(`Error reading package.json at ${packageJsonPath}:`, error);
434
+ logger.debug({ error, packageJsonPath }, `Error reading package.json`);
435
435
  return false;
436
436
  }
437
437
  }
@@ -475,12 +475,12 @@ async function installElizaOSCli(cwd = process.cwd()) {
475
475
  return true;
476
476
  } else {
477
477
  logger.warn("\u26A0 Failed to install @elizaos/cli as dev dependency (optional)");
478
- logger.debug("Installation error:", result.error);
478
+ logger.debug({ error: result.error }, "Installation error:");
479
479
  return false;
480
480
  }
481
481
  } catch (error) {
482
482
  logger.warn("\u26A0 Failed to install @elizaos/cli as dev dependency (optional)");
483
- logger.debug("Installation error:", error);
483
+ logger.debug({ error }, "Installation error:");
484
484
  return false;
485
485
  }
486
486
  }
@@ -1215,7 +1215,7 @@ var extractPluginEnvRequirements = async (packageName, cwd) => {
1215
1215
  for (const possiblePath of possiblePaths) {
1216
1216
  if (existsSync9(possiblePath)) {
1217
1217
  packageJsonPath = possiblePath;
1218
- logger3.debug(`Found plugin package.json at: ${packageJsonPath}`);
1218
+ logger3.debug({ packageJsonPath }, `Found plugin package.json at:`);
1219
1219
  break;
1220
1220
  }
1221
1221
  }
@@ -1228,7 +1228,7 @@ var extractPluginEnvRequirements = async (packageName, cwd) => {
1228
1228
  const pkgJsonPath = path9.join(nodeModulesPath, pkg, "package.json");
1229
1229
  if (existsSync9(pkgJsonPath)) {
1230
1230
  packageJsonPath = pkgJsonPath;
1231
- logger3.debug(`Found matching plugin package.json at: ${packageJsonPath}`);
1231
+ logger3.debug({ packageJsonPath }, `Found matching plugin package.json at:`);
1232
1232
  break;
1233
1233
  }
1234
1234
  }
@@ -1236,8 +1236,8 @@ var extractPluginEnvRequirements = async (packageName, cwd) => {
1236
1236
  }
1237
1237
  }
1238
1238
  if (!packageJsonPath) {
1239
- logger3.debug(`Plugin package.json not found for: ${packageName}`);
1240
- logger3.debug(`Searched paths: ${possiblePaths.join(", ")}`);
1239
+ logger3.debug({ packageName }, `Plugin package.json not found`);
1240
+ logger3.debug({ paths: possiblePaths }, `Searched paths:`);
1241
1241
  return {};
1242
1242
  }
1243
1243
  const packageJsonContent = readFileSync2(packageJsonPath, "utf-8");
@@ -1248,13 +1248,12 @@ var extractPluginEnvRequirements = async (packageName, cwd) => {
1248
1248
  return {};
1249
1249
  }
1250
1250
  logger3.debug(
1251
- `Found environment variables for ${packageName}: ${Object.keys(agentConfig.pluginParameters).join(", ")}`
1251
+ { packageName, vars: Object.keys(agentConfig.pluginParameters) },
1252
+ "Found environment variables"
1252
1253
  );
1253
1254
  return agentConfig.pluginParameters;
1254
1255
  } catch (error) {
1255
- logger3.debug(
1256
- `Error reading plugin package.json for ${packageName}: ${error instanceof Error ? error.message : String(error)}`
1257
- );
1256
+ logger3.debug({ error, packageName }, "Error reading plugin package.json");
1258
1257
  return {};
1259
1258
  }
1260
1259
  };
@@ -2123,13 +2122,16 @@ var MigrationGuideLoader = class {
2123
2122
  keywords: config2.keywords
2124
2123
  });
2125
2124
  } catch (error) {
2126
- logger8.warn(`Failed to load migration guide: ${config2.name}`, error);
2125
+ logger8.warn({ error, guideName: config2.name }, `Failed to load migration guide`);
2127
2126
  }
2128
2127
  } else {
2129
- logger8.warn(`Migration guide not found: ${guidePath}`);
2128
+ logger8.warn({ guidePath }, `Migration guide not found`);
2130
2129
  }
2131
2130
  }
2132
- logger8.info(`Loaded ${this.guides.length} migration guides from ${this.guidesDir}`);
2131
+ logger8.info(
2132
+ { count: this.guides.length, guidesDir: this.guidesDir },
2133
+ `Loaded migration guides`
2134
+ );
2133
2135
  }
2134
2136
  createEmbeddedGuides(guideConfigs) {
2135
2137
  const embeddedGuides = {
@@ -2404,7 +2406,7 @@ var SimpleMigrationAgent = class extends EventTarget {
2404
2406
  logger9.info("Migration guide loader initialized successfully");
2405
2407
  }
2406
2408
  } catch (error) {
2407
- logger9.warn("Failed to initialize migration guide loader", error);
2409
+ logger9.warn({ error }, "Failed to initialize migration guide loader");
2408
2410
  throw new Error("Cannot initialize migration system without guide access");
2409
2411
  }
2410
2412
  }
@@ -3194,7 +3196,7 @@ import { readFileSync as readFileSync5 } from "fs";
3194
3196
  import path14 from "path";
3195
3197
  async function generatePlugin(opts) {
3196
3198
  try {
3197
- const { PluginCreator } = await import("./plugin-creator-H26ZLR6H.js");
3199
+ const { PluginCreator } = await import("./plugin-creator-TCUFII32.js");
3198
3200
  if (opts.apiKey) {
3199
3201
  process.env.ANTHROPIC_API_KEY = opts.apiKey;
3200
3202
  }
@@ -3619,10 +3621,19 @@ var ELIZAOS_ORG = "@elizaos";
3619
3621
  var FALLBACK_VERSION = "0.0.0";
3620
3622
  async function getVersion2() {
3621
3623
  try {
3624
+ const directoryInfo = detectDirectoryType(process.cwd());
3625
+ const isMonorepo = directoryInfo.type === "elizaos-monorepo";
3626
+ if (isMonorepo) {
3627
+ return "monorepo";
3628
+ }
3622
3629
  const envInfo = await UserEnvironment.getInstance().getInfo();
3623
- return envInfo.cli.version;
3630
+ const version = envInfo.cli.version;
3631
+ if (isWorkspaceVersion(version)) {
3632
+ return "monorepo";
3633
+ }
3634
+ return version;
3624
3635
  } catch (error) {
3625
- logger12.error("Error getting CLI version:", error);
3636
+ logger12.error({ error }, "Error getting CLI version:");
3626
3637
  return FALLBACK_VERSION;
3627
3638
  }
3628
3639
  }
@@ -3728,7 +3739,10 @@ async function performCliUpdate(options = {}) {
3728
3739
  console.error(" curl -fsSL https://bun.sh/install | bash");
3729
3740
  console.error(" # or");
3730
3741
  console.error(" npm install -g bun");
3731
- logger13.debug("Bun error:", bunError instanceof Error ? bunError.message : String(bunError));
3742
+ logger13.debug(
3743
+ { error: bunError instanceof Error ? bunError.message : String(bunError) },
3744
+ "Bun error:"
3745
+ );
3732
3746
  return false;
3733
3747
  }
3734
3748
  } catch (error) {
@@ -4500,16 +4514,16 @@ async function loadProject(dir) {
4500
4514
  projectModule = await import(importUrl);
4501
4515
  logger16.info(`Loaded project from ${entryPoint}`);
4502
4516
  const exportKeys = Object.keys(projectModule);
4503
- logger16.debug(`Module exports: ${exportKeys.join(", ")}`);
4517
+ logger16.debug({ exportKeys }, `Module exports:`);
4504
4518
  if (exportKeys.includes("default")) {
4505
- logger16.debug(`Default export type: ${typeof projectModule.default}`);
4519
+ logger16.debug({ type: typeof projectModule.default }, `Default export type:`);
4506
4520
  if (typeof projectModule.default === "object" && projectModule.default !== null) {
4507
- logger16.debug(`Default export keys: ${Object.keys(projectModule.default).join(", ")}`);
4521
+ logger16.debug({ keys: Object.keys(projectModule.default) }, `Default export keys:`);
4508
4522
  }
4509
4523
  }
4510
4524
  break;
4511
4525
  } catch (error) {
4512
- logger16.warn(`Failed to import project from ${entryPoint}:`, error);
4526
+ logger16.warn({ error, entryPoint }, `Failed to import project`);
4513
4527
  }
4514
4528
  }
4515
4529
  }
@@ -4517,13 +4531,13 @@ async function loadProject(dir) {
4517
4531
  throw new Error("Could not find project entry point");
4518
4532
  }
4519
4533
  const moduleIsPlugin = isPlugin(projectModule);
4520
- logger16.debug(`Is this a plugin? ${moduleIsPlugin}`);
4534
+ logger16.debug({ moduleIsPlugin }, `Is this a plugin?`);
4521
4535
  if (moduleIsPlugin) {
4522
4536
  logger16.info("Detected plugin module instead of project");
4523
4537
  try {
4524
4538
  const plugin = extractPlugin(projectModule);
4525
- logger16.debug(`Found plugin: ${plugin.name} - ${plugin.description}`);
4526
- logger16.debug(`Plugin has the following properties: ${Object.keys(plugin).join(", ")}`);
4539
+ logger16.debug({ name: plugin.name, description: plugin.description }, `Found plugin:`);
4540
+ logger16.debug({ keys: Object.keys(plugin) }, `Plugin has the following properties:`);
4527
4541
  const completePlugin = {
4528
4542
  // Copy all other properties from the original plugin first
4529
4543
  ...plugin,
@@ -4565,7 +4579,7 @@ async function loadProject(dir) {
4565
4579
  const agents = [];
4566
4580
  if (projectModule.default && typeof projectModule.default === "object" && Array.isArray(projectModule.default.agents)) {
4567
4581
  agents.push(...projectModule.default.agents);
4568
- logger16.debug(`Found ${agents.length} agents in default export's agents array`);
4582
+ logger16.debug({ count: agents.length }, `Found agents in default export's agents array`);
4569
4583
  } else {
4570
4584
  for (const [key, value] of Object.entries(projectModule)) {
4571
4585
  if (key === "default" && value && typeof value === "object") {
@@ -4575,7 +4589,7 @@ async function loadProject(dir) {
4575
4589
  }
4576
4590
  } else if (value && typeof value === "object" && value.character && value.init) {
4577
4591
  agents.push(value);
4578
- logger16.debug(`Found agent in named export: ${key}`);
4592
+ logger16.debug({ key }, `Found agent in named export`);
4579
4593
  }
4580
4594
  }
4581
4595
  }
@@ -4588,7 +4602,7 @@ async function loadProject(dir) {
4588
4602
  };
4589
4603
  return project;
4590
4604
  } catch (error) {
4591
- logger16.error("Error loading project:", error);
4605
+ logger16.error({ error }, "Error loading project:");
4592
4606
  throw error;
4593
4607
  }
4594
4608
  }
@@ -4694,7 +4708,7 @@ function resolvePluginDependencies(availablePlugins, isTestMode = false) {
4694
4708
  }
4695
4709
  }
4696
4710
  const finalPlugins = resolutionOrder.map((name) => availablePlugins.get(name)).filter((p) => p);
4697
- logger17.info(`Final plugins being loaded: ${finalPlugins.map((p) => p.name).join(", ")}`);
4711
+ logger17.info({ plugins: finalPlugins.map((p) => p.name) }, `Final plugins being loaded:`);
4698
4712
  return finalPlugins;
4699
4713
  }
4700
4714
 
@@ -4762,7 +4776,6 @@ async function startAgent(character, server, init, plugins2 = [], options = {})
4762
4776
  await setDefaultSecretsFromEnv(character);
4763
4777
  }
4764
4778
  const loadedPlugins = /* @__PURE__ */ new Map();
4765
- loadedPlugins.set(sqlPlugin.name, sqlPlugin);
4766
4779
  const pluginsToLoad = new Set(character.plugins || []);
4767
4780
  for (const p of plugins2) {
4768
4781
  if (typeof p === "string") {
@@ -4787,6 +4800,16 @@ async function startAgent(character, server, init, plugins2 = [], options = {})
4787
4800
  }
4788
4801
  }
4789
4802
  }
4803
+ let haveSql = false;
4804
+ for (const n of allAvailablePlugins.keys()) {
4805
+ if (n === sqlPlugin.name || n === "mysql") {
4806
+ haveSql = true;
4807
+ break;
4808
+ }
4809
+ }
4810
+ if (!haveSql) {
4811
+ allAvailablePlugins.set(sqlPlugin.name, sqlPlugin);
4812
+ }
4790
4813
  const finalPlugins = resolvePluginDependencies(allAvailablePlugins, options.isTestMode);
4791
4814
  const runtime = new AgentRuntime2({
4792
4815
  character: encryptedCharacter(character),
@@ -4812,7 +4835,7 @@ async function startAgent(character, server, init, plugins2 = [], options = {})
4812
4835
  logger19.warn("DatabaseMigrationService not found - plugin schema migrations skipped");
4813
4836
  }
4814
4837
  } catch (error) {
4815
- logger19.error("Failed to run plugin migrations:", error);
4838
+ logger19.error({ error }, "Failed to run plugin migrations:");
4816
4839
  throw error;
4817
4840
  }
4818
4841
  server.registerAgent(runtime);
@@ -4872,13 +4895,13 @@ async function startAgents(options) {
4872
4895
  const desiredPort = options.port || Number.parseInt(process.env.SERVER_PORT || "3000");
4873
4896
  const serverPort = await findNextAvailablePort(desiredPort);
4874
4897
  if (serverPort !== desiredPort) {
4875
- logger20.warn(`Port ${desiredPort} is in use, using port ${serverPort} instead`);
4898
+ logger20.warn({ desiredPort, serverPort }, "Port is in use, using alternate port");
4876
4899
  }
4877
4900
  process.env.SERVER_PORT = serverPort.toString();
4878
4901
  try {
4879
4902
  await server.start(serverPort);
4880
4903
  } catch (error) {
4881
- logger20.error(`Failed to start server on port ${serverPort}:`, error);
4904
+ logger20.error({ error, serverPort }, `Failed to start server on port:`);
4882
4905
  throw error;
4883
4906
  }
4884
4907
  if (options.projectAgents && options.projectAgents.length > 0) {
@@ -4956,7 +4979,7 @@ var start = new Command7().name("start").description("Build and start the Eliza
4956
4979
  throw new Error(`Invalid character file: ${resolvedPath}`);
4957
4980
  }
4958
4981
  } catch (e) {
4959
- logger21.error(`Failed to load character from ${resolvedPath}:`, e);
4982
+ logger21.error({ error: e, resolvedPath }, `Failed to load character from path:`);
4960
4983
  throw new Error(`Invalid character file: ${resolvedPath}`);
4961
4984
  }
4962
4985
  }
@@ -4978,7 +5001,7 @@ var start = new Command7().name("start").description("Build and start the Eliza
4978
5001
  }
4979
5002
  }
4980
5003
  } catch (e) {
4981
- logger21.debug("Failed to load project agents, will use default character:", e);
5004
+ logger21.debug({ error: e }, "Failed to load project agents, will use default character:");
4982
5005
  }
4983
5006
  }
4984
5007
  await startAgents({ ...options, characters, projectAgents });
@@ -5101,7 +5124,7 @@ async function installPluginDependencies(projectInfo) {
5101
5124
  };
5102
5125
  await fs12.promises.writeFile(packageJsonPath, JSON.stringify(packageJsonContent, null, 2));
5103
5126
  }
5104
- const { installPlugin: installPlugin2 } = await import("./utils-DBLSDYBF.js");
5127
+ const { installPlugin: installPlugin2 } = await import("./utils-5HPZSIF6.js");
5105
5128
  for (const dependency of project.pluginModule.dependencies) {
5106
5129
  await installPlugin2(dependency, pluginsDir);
5107
5130
  const dependencyPath = path26.join(pluginsDir, "node_modules", dependency);
@@ -5120,7 +5143,6 @@ async function installPluginDependencies(projectInfo) {
5120
5143
 
5121
5144
  // src/commands/test/actions/component-tests.ts
5122
5145
  import { logger as logger24 } from "@elizaos/core";
5123
- import { spawn as spawn2 } from "child_process";
5124
5146
  import path28 from "path";
5125
5147
 
5126
5148
  // src/utils/testing/tsc-validator.ts
@@ -5152,7 +5174,7 @@ async function runTypeCheck(projectPath, strict = true) {
5152
5174
  warnings: stderr.includes("warning") ? [stderr] : []
5153
5175
  };
5154
5176
  } catch (error) {
5155
- logger23.error("TypeScript validation failed:", error);
5177
+ logger23.error({ error }, "TypeScript validation failed:");
5156
5178
  return {
5157
5179
  success: false,
5158
5180
  errors: [`TypeScript validation error: ${error.message}`],
@@ -5186,40 +5208,34 @@ async function runComponentTests(testPath, options, projectInfo) {
5186
5208
  }
5187
5209
  }
5188
5210
  logger24.info("Running component tests...");
5189
- return new Promise((resolve2) => {
5190
- const args = ["test", "--passWithNoTests"];
5191
- if (options.name) {
5192
- const baseName = processFilterName(options.name);
5193
- if (baseName) {
5194
- logger24.info(`Using test filter: ${baseName}`);
5195
- args.push("-t", baseName);
5196
- }
5197
- }
5198
- const monorepoRoot = UserEnvironment.getInstance().findMonorepoRoot(process.cwd());
5199
- const baseDir = monorepoRoot ?? process.cwd();
5200
- const targetPath = testPath ? path28.resolve(baseDir, testPath) : process.cwd();
5201
- logger24.info(`Executing: bun ${args.join(" ")} in ${targetPath}`);
5202
- const child = spawn2("bun", args, {
5203
- stdio: "inherit",
5204
- shell: false,
5211
+ const args = ["test", "--passWithNoTests"];
5212
+ if (options.name) {
5213
+ const baseName = processFilterName(options.name);
5214
+ if (baseName) {
5215
+ logger24.info(`Using test filter: ${baseName}`);
5216
+ args.push("-t", baseName);
5217
+ }
5218
+ }
5219
+ const monorepoRoot = UserEnvironment.getInstance().findMonorepoRoot(process.cwd());
5220
+ const baseDir = monorepoRoot ?? process.cwd();
5221
+ const targetPath = testPath ? path28.resolve(baseDir, testPath) : process.cwd();
5222
+ logger24.info(`Executing: bun ${args.join(" ")} in ${targetPath}`);
5223
+ try {
5224
+ const result = await bunExecInherit("bun", args, {
5205
5225
  cwd: targetPath,
5206
5226
  env: {
5207
- ...process.env,
5208
5227
  FORCE_COLOR: "1",
5209
5228
  // Force color output
5210
5229
  CI: ""
5211
5230
  // Override CI to empty string (some tools check existence, but most check truthiness)
5212
5231
  }
5213
5232
  });
5214
- child.on("close", (code) => {
5215
- logger24.info("Component tests completed");
5216
- resolve2({ failed: code !== 0 });
5217
- });
5218
- child.on("error", (error) => {
5219
- logger24.error("Error running component tests:", error);
5220
- resolve2({ failed: true });
5221
- });
5222
- });
5233
+ logger24.info("Component tests completed");
5234
+ return { failed: !result.success };
5235
+ } catch (error) {
5236
+ logger24.error({ error }, "Error running component tests:");
5237
+ return { failed: true };
5238
+ }
5223
5239
  }
5224
5240
 
5225
5241
  // src/commands/test/actions/e2e-tests.ts
@@ -5295,7 +5311,7 @@ async function runE2eTests(testPath, options, projectInfo) {
5295
5311
  });
5296
5312
  logger25.info("Server initialized successfully");
5297
5313
  } catch (initError) {
5298
- logger25.error("Server initialization failed:", initError);
5314
+ logger25.error({ error: initError }, "Server initialization failed:");
5299
5315
  throw initError;
5300
5316
  }
5301
5317
  let project;
@@ -5325,12 +5341,12 @@ async function runE2eTests(testPath, options, projectInfo) {
5325
5341
  logger25.info("Starting server...");
5326
5342
  try {
5327
5343
  await server.start(serverPort);
5328
- logger25.info("Server started successfully on port", serverPort);
5344
+ logger25.info({ serverPort }, "Server started successfully on port");
5329
5345
  } catch (error) {
5330
- logger25.error("Error starting server:", error);
5346
+ logger25.error({ error }, "Error starting server:");
5331
5347
  if (error instanceof Error) {
5332
- logger25.error("Error details:", error.message);
5333
- logger25.error("Stack trace:", error.stack);
5348
+ logger25.error({ message: error.message }, "Error details:");
5349
+ logger25.error({ stack: error.stack }, "Stack trace:");
5334
5350
  }
5335
5351
  throw error;
5336
5352
  }
@@ -5365,7 +5381,7 @@ async function runE2eTests(testPath, options, projectInfo) {
5365
5381
  });
5366
5382
  logger25.info("Default test agent started successfully");
5367
5383
  } catch (pluginError) {
5368
- logger25.error(`Error starting plugin test agent: ${pluginError}`);
5384
+ logger25.error({ error: pluginError }, `Error starting plugin test agent:`);
5369
5385
  throw pluginError;
5370
5386
  }
5371
5387
  } else {
@@ -5385,10 +5401,13 @@ async function runE2eTests(testPath, options, projectInfo) {
5385
5401
  projectAgents.push(agent2);
5386
5402
  await new Promise((resolve2) => setTimeout(resolve2, 1e3));
5387
5403
  } catch (agentError) {
5388
- logger25.error(`Error starting agent ${agent2.character.name}:`, agentError);
5404
+ logger25.error(
5405
+ { error: agentError, agentName: agent2.character.name },
5406
+ "Error starting agent"
5407
+ );
5389
5408
  if (agentError instanceof Error) {
5390
- logger25.error("Error details:", agentError.message);
5391
- logger25.error("Stack trace:", agentError.stack);
5409
+ logger25.error({ message: agentError.message }, "Error details:");
5410
+ logger25.error({ stack: agentError.stack }, "Stack trace:");
5392
5411
  }
5393
5412
  logger25.warn(`Skipping agent ${agent2.character.name} due to startup error`);
5394
5413
  }
@@ -5427,17 +5446,17 @@ async function runE2eTests(testPath, options, projectInfo) {
5427
5446
  }
5428
5447
  return { failed: anyTestsFound ? totalFailed > 0 : false };
5429
5448
  } catch (error) {
5430
- logger25.error("Error in runE2eTests:", error);
5449
+ logger25.error({ error }, "Error in runE2eTests:");
5431
5450
  if (error instanceof Error) {
5432
- logger25.error("Error details:", error.message);
5433
- logger25.error("Stack trace:", error.stack);
5451
+ logger25.error({ message: error.message }, "Error details:");
5452
+ logger25.error({ stack: error.stack }, "Stack trace:");
5434
5453
  } else {
5435
- logger25.error("Unknown error type:", typeof error);
5436
- logger25.error("Error value:", error);
5454
+ logger25.error({ type: typeof error }, "Unknown error type:");
5455
+ logger25.error({ error }, "Error value:");
5437
5456
  try {
5438
- logger25.error("Stringified error:", JSON.stringify(error, null, 2));
5457
+ logger25.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5439
5458
  } catch (e) {
5440
- logger25.error("Could not stringify error:", e);
5459
+ logger25.error({ error: e }, "Could not stringify error:");
5441
5460
  }
5442
5461
  }
5443
5462
  return { failed: true };
@@ -5460,33 +5479,33 @@ async function runE2eTests(testPath, options, projectInfo) {
5460
5479
  }
5461
5480
  }
5462
5481
  } catch (error) {
5463
- logger25.error("Error in runE2eTests:", error);
5482
+ logger25.error({ error }, "Error in runE2eTests:");
5464
5483
  if (error instanceof Error) {
5465
- logger25.error("Error details:", error.message);
5466
- logger25.error("Stack trace:", error.stack);
5484
+ logger25.error({ message: error.message }, "Error details:");
5485
+ logger25.error({ stack: error.stack }, "Stack trace:");
5467
5486
  } else {
5468
- logger25.error("Unknown error type:", typeof error);
5469
- logger25.error("Error value:", error);
5487
+ logger25.error({ type: typeof error }, "Unknown error type:");
5488
+ logger25.error({ error }, "Error value:");
5470
5489
  try {
5471
- logger25.error("Stringified error:", JSON.stringify(error, null, 2));
5490
+ logger25.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5472
5491
  } catch (e) {
5473
- logger25.error("Could not stringify error:", e);
5492
+ logger25.error({ error: e }, "Could not stringify error:");
5474
5493
  }
5475
5494
  }
5476
5495
  return { failed: true };
5477
5496
  }
5478
5497
  } catch (error) {
5479
- logger25.error("Error in runE2eTests:", error);
5498
+ logger25.error({ error }, "Error in runE2eTests:");
5480
5499
  if (error instanceof Error) {
5481
- logger25.error("Error details:", error.message);
5482
- logger25.error("Stack trace:", error.stack);
5500
+ logger25.error({ message: error.message }, "Error details:");
5501
+ logger25.error({ stack: error.stack }, "Stack trace:");
5483
5502
  } else {
5484
- logger25.error("Unknown error type:", typeof error);
5485
- logger25.error("Error value:", error);
5503
+ logger25.error({ type: typeof error }, "Unknown error type:");
5504
+ logger25.error({ error }, "Error value:");
5486
5505
  try {
5487
- logger25.error("Stringified error:", JSON.stringify(error, null, 2));
5506
+ logger25.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5488
5507
  } catch (e) {
5489
- logger25.error("Could not stringify error:", e);
5508
+ logger25.error({ error: e }, "Could not stringify error:");
5490
5509
  }
5491
5510
  }
5492
5511
  return { failed: true };
@@ -5496,15 +5515,21 @@ async function runE2eTests(testPath, options, projectInfo) {
5496
5515
  // src/commands/test/actions/run-all-tests.ts
5497
5516
  async function runAllTests(testPath, options) {
5498
5517
  const projectInfo = getProjectType(testPath);
5518
+ let componentResult = { failed: false };
5499
5519
  if (!options.skipBuild) {
5500
- const componentResult = await runComponentTests(testPath, options, projectInfo);
5501
- if (componentResult.failed) {
5502
- logger26.error("Component tests failed. Continuing to e2e tests...");
5503
- }
5520
+ componentResult = await runComponentTests(testPath, options, projectInfo);
5521
+ } else {
5522
+ logger26.info("Skipping component tests due to --skip-build option");
5504
5523
  }
5505
5524
  const e2eResult = await runE2eTests(testPath, options, projectInfo);
5506
- if (e2eResult.failed) {
5507
- logger26.error("E2E tests failed.");
5525
+ if (componentResult.failed || e2eResult.failed) {
5526
+ if (componentResult.failed) {
5527
+ logger26.error("Component tests failed.");
5528
+ }
5529
+ if (e2eResult.failed) {
5530
+ logger26.error("E2E tests failed.");
5531
+ }
5532
+ logger26.error("Test suite failed.");
5508
5533
  process.exit(1);
5509
5534
  }
5510
5535
  logger26.success("All tests passed successfully!");
@@ -5599,7 +5624,7 @@ async function gracefulShutdown(signal) {
5599
5624
  } catch (error) {
5600
5625
  const errorMessage = error instanceof Error ? error.message : String(error);
5601
5626
  logger29.error(`Error stopping server: ${errorMessage}`);
5602
- logger29.debug("Full error details:", error);
5627
+ logger29.debug({ error }, "Full error details:");
5603
5628
  }
5604
5629
  const exitCode = signal === "SIGINT" ? 130 : signal === "SIGTERM" ? 143 : 0;
5605
5630
  process.exit(exitCode);
@@ -5633,6 +5658,6 @@ async function main() {
5633
5658
  await program.parseAsync();
5634
5659
  }
5635
5660
  main().catch((error) => {
5636
- logger29.error("An error occurred:", error);
5661
+ logger29.error({ error }, "An error occurred:");
5637
5662
  process.exit(1);
5638
5663
  });
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  runBunCommand
3
- } from "./chunk-FDEDLANP.js";
3
+ } from "./chunk-FQYWRHLX.js";
4
4
  import {
5
5
  bunExec,
6
6
  bunExecInherit,
7
7
  bunExecSimple
8
- } from "./chunk-D3Q2UZLZ.js";
8
+ } from "./chunk-I4L4T7QX.js";
9
9
  import "./chunk-3RG5ZIWI.js";
10
10
 
11
11
  // src/utils/plugin-creator.ts
@@ -24,10 +24,10 @@ import {
24
24
  setEnvVar,
25
25
  setGitHubToken,
26
26
  validateDataDir
27
- } from "./chunk-E6XYTE3A.js";
28
- import "./chunk-FDEDLANP.js";
27
+ } from "./chunk-D3QSET5H.js";
28
+ import "./chunk-FQYWRHLX.js";
29
29
  import "./chunk-GXWWPFBO.js";
30
- import "./chunk-D3Q2UZLZ.js";
30
+ import "./chunk-I4L4T7QX.js";
31
31
  import "./chunk-3RG5ZIWI.js";
32
32
  export {
33
33
  checkDataDir,