@elizaos/cli 1.3.2 → 1.4.3

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 (128) 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-FDEDLANP.js → chunk-FQYWRHLX.js} +1 -1
  4. package/dist/{chunk-5GUS4CFO.js → chunk-HOC6B3QV.js} +1 -1
  5. package/dist/{chunk-D3Q2UZLZ.js → chunk-I4L4T7QX.js} +1 -1
  6. package/dist/{chunk-E6XYTE3A.js → chunk-N5G5XSGP.js} +97 -76
  7. package/dist/{chunk-T2QDIXGU.js → chunk-NSNXXD3I.js} +3 -3
  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 +146 -112
  13. package/dist/{plugin-creator-H26ZLR6H.js → plugin-creator-TCUFII32.js} +2 -2
  14. package/dist/{registry-433S5F3Y.js → registry-ELONUC44.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__/config.test.ts +6 -15
  30. package/dist/templates/project-starter/src/__tests__/e2e/README.md +103 -0
  31. package/dist/templates/project-starter/src/__tests__/e2e/project-starter.e2e.ts +575 -0
  32. package/dist/templates/project-starter/src/__tests__/error-handling.test.ts +4 -18
  33. package/dist/templates/project-starter/src/__tests__/events.test.ts +27 -23
  34. package/dist/templates/project-starter/src/__tests__/integration.test.ts +1 -1
  35. package/dist/templates/project-starter/src/__tests__/models.test.ts +3 -3
  36. package/dist/templates/project-starter/src/__tests__/plugin.test.ts +3 -3
  37. package/dist/templates/project-starter/src/__tests__/provider.test.ts +2 -2
  38. package/dist/templates/project-starter/src/index.ts +4 -3
  39. package/dist/templates/project-starter/src/plugin.ts +5 -5
  40. package/dist/templates/project-tee-starter/README.md +44 -5
  41. package/dist/templates/project-tee-starter/package.json +4 -4
  42. package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/build-order.test.ts +1 -1
  43. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/character.test.ts +1 -1
  44. package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/config.test.ts +41 -1
  45. package/dist/templates/project-tee-starter/src/__tests__/e2e/README.md +128 -0
  46. package/dist/templates/project-tee-starter/src/__tests__/e2e/project-tee-starter.e2e.ts +280 -0
  47. package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/env.test.ts +1 -1
  48. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/error-handling.test.ts +2 -2
  49. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/events.test.ts +1 -1
  50. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/file-structure.test.ts +2 -2
  51. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/integration.test.ts +2 -2
  52. package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/models.test.ts +1 -1
  53. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/plugin.test.ts +1 -1
  54. package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/provider.test.ts +2 -2
  55. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/routes.test.ts +1 -1
  56. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/tee-validation.test.ts +1 -1
  57. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/test-utils.ts +2 -2
  58. package/{templates/project-tee-starter → dist/templates/project-tee-starter/src}/__tests__/vite-config-utils.ts +14 -2
  59. package/dist/templates/project-tee-starter/src/index.ts +2 -0
  60. package/dist/templates/project-tee-starter/src/plugin.ts +40 -26
  61. package/dist/{utils-DBLSDYBF.js → utils-X6UXPLKD.js} +3 -3
  62. package/package.json +6 -7
  63. package/templates/plugin-quick-starter/README.md +52 -10
  64. package/templates/plugin-quick-starter/package.json +2 -2
  65. package/templates/plugin-quick-starter/src/__tests__/e2e/README.md +140 -0
  66. package/templates/plugin-quick-starter/src/__tests__/e2e/plugin-quick-starter.e2e.ts +339 -0
  67. package/templates/plugin-quick-starter/src/__tests__/plugin.test.ts +55 -17
  68. package/templates/plugin-quick-starter/src/plugin.ts +14 -14
  69. package/templates/plugin-starter/README.md +124 -49
  70. package/templates/plugin-starter/package.json +2 -2
  71. package/templates/plugin-starter/src/__tests__/e2e/README.md +44 -9
  72. package/{dist/templates/plugin-starter/src/__tests__/e2e/starter-plugin.ts → templates/plugin-starter/src/__tests__/e2e/plugin-starter.e2e.ts} +13 -20
  73. package/templates/plugin-starter/src/plugin.ts +5 -7
  74. package/templates/project-starter/README.md +24 -11
  75. package/templates/project-starter/package.json +4 -4
  76. package/templates/project-starter/src/__tests__/actions.test.ts +2 -2
  77. package/templates/project-starter/src/__tests__/config.test.ts +6 -15
  78. package/templates/project-starter/src/__tests__/e2e/README.md +103 -0
  79. package/templates/project-starter/src/__tests__/e2e/project-starter.e2e.ts +575 -0
  80. package/templates/project-starter/src/__tests__/error-handling.test.ts +4 -18
  81. package/templates/project-starter/src/__tests__/events.test.ts +27 -23
  82. package/templates/project-starter/src/__tests__/integration.test.ts +1 -1
  83. package/templates/project-starter/src/__tests__/models.test.ts +3 -3
  84. package/templates/project-starter/src/__tests__/plugin.test.ts +3 -3
  85. package/templates/project-starter/src/__tests__/provider.test.ts +2 -2
  86. package/templates/project-starter/src/index.ts +4 -3
  87. package/templates/project-starter/src/plugin.ts +5 -5
  88. package/templates/project-tee-starter/README.md +44 -5
  89. package/templates/project-tee-starter/package.json +4 -4
  90. package/templates/project-tee-starter/{__tests__ → src/__tests__}/build-order.test.ts +1 -1
  91. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/character.test.ts +1 -1
  92. package/templates/project-tee-starter/{__tests__ → src/__tests__}/config.test.ts +41 -1
  93. package/templates/project-tee-starter/src/__tests__/e2e/README.md +128 -0
  94. package/templates/project-tee-starter/src/__tests__/e2e/project-tee-starter.e2e.ts +280 -0
  95. package/templates/project-tee-starter/{__tests__ → src/__tests__}/env.test.ts +1 -1
  96. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/error-handling.test.ts +2 -2
  97. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/events.test.ts +1 -1
  98. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/file-structure.test.ts +2 -2
  99. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/integration.test.ts +2 -2
  100. package/templates/project-tee-starter/{__tests__ → src/__tests__}/models.test.ts +1 -1
  101. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/plugin.test.ts +1 -1
  102. package/templates/project-tee-starter/{__tests__ → src/__tests__}/provider.test.ts +2 -2
  103. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/routes.test.ts +1 -1
  104. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/tee-validation.test.ts +1 -1
  105. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/test-utils.ts +2 -2
  106. package/{dist/templates/project-tee-starter → templates/project-tee-starter/src}/__tests__/vite-config-utils.ts +14 -2
  107. package/templates/project-tee-starter/src/index.ts +2 -0
  108. package/templates/project-tee-starter/src/plugin.ts +40 -26
  109. package/dist/templates/plugin-starter/src/tests.ts +0 -6
  110. package/dist/templates/project-starter/src/__tests__/e2e/index.ts +0 -14
  111. package/dist/templates/project-starter/src/__tests__/e2e/natural-language.test.ts +0 -246
  112. package/dist/templates/project-starter/src/__tests__/e2e/project.test.ts +0 -155
  113. package/dist/templates/project-starter/src/__tests__/e2e/starter-plugin.test.ts +0 -421
  114. package/dist/templates/project-tee-starter/e2e/project.test.ts +0 -38
  115. package/dist/templates/project-tee-starter/e2e/starter-plugin.test.ts +0 -92
  116. package/templates/plugin-starter/src/tests.ts +0 -6
  117. package/templates/project-starter/src/__tests__/e2e/index.ts +0 -14
  118. package/templates/project-starter/src/__tests__/e2e/natural-language.test.ts +0 -246
  119. package/templates/project-starter/src/__tests__/e2e/project.test.ts +0 -155
  120. package/templates/project-starter/src/__tests__/e2e/starter-plugin.test.ts +0 -421
  121. package/templates/project-tee-starter/e2e/project.test.ts +0 -38
  122. package/templates/project-tee-starter/e2e/starter-plugin.test.ts +0 -92
  123. /package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/actions.test.ts +0 -0
  124. /package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/frontend.test.ts +0 -0
  125. /package/dist/templates/project-tee-starter/{__tests__ → src/__tests__}/utils/core-test-utils.ts +0 -0
  126. /package/templates/project-tee-starter/{__tests__ → src/__tests__}/actions.test.ts +0 -0
  127. /package/templates/project-tee-starter/{__tests__ → src/__tests__}/frontend.test.ts +0 -0
  128. /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-NSNXXD3I.js";
5
5
  import {
6
6
  getElizaCharacter
7
- } from "./chunk-5GUS4CFO.js";
7
+ } from "./chunk-HOC6B3QV.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-N5G5XSGP.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
  }
@@ -2420,13 +2422,13 @@ var SimpleMigrationAgent = class extends EventTarget {
2420
2422
  if (eventHandlers.has(handler)) {
2421
2423
  return this;
2422
2424
  }
2423
- const wrappedHandler = (e) => {
2425
+ const wrappedHandler = ((e) => {
2424
2426
  if (e instanceof CustomEvent) {
2425
2427
  handler(e.detail);
2426
2428
  } else {
2427
2429
  handler(void 0);
2428
2430
  }
2429
- };
2431
+ });
2430
2432
  eventHandlers.set(handler, wrappedHandler);
2431
2433
  this.addEventListener(event, wrappedHandler);
2432
2434
  return this;
@@ -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
  }
@@ -3533,7 +3535,8 @@ async function generatePackageMetadata(packageJson, cliVersion, username) {
3533
3535
  // node, browser, or universal
3534
3536
  runtimeVersion: cliVersion,
3535
3537
  // Compatible CLI/runtime version
3536
- repository: packageJson.repository?.url || "",
3538
+ ...packageJson.repository?.url && { repository: packageJson.repository.url },
3539
+ // Only include if present
3537
3540
  maintainers: packageJson.maintainers || [username],
3538
3541
  publishedAt: (/* @__PURE__ */ new Date()).toISOString(),
3539
3542
  publishedBy: username,
@@ -3619,10 +3622,19 @@ var ELIZAOS_ORG = "@elizaos";
3619
3622
  var FALLBACK_VERSION = "0.0.0";
3620
3623
  async function getVersion2() {
3621
3624
  try {
3625
+ const directoryInfo = detectDirectoryType(process.cwd());
3626
+ const isMonorepo = directoryInfo.type === "elizaos-monorepo";
3627
+ if (isMonorepo) {
3628
+ return "monorepo";
3629
+ }
3622
3630
  const envInfo = await UserEnvironment.getInstance().getInfo();
3623
- return envInfo.cli.version;
3631
+ const version = envInfo.cli.version;
3632
+ if (isWorkspaceVersion(version)) {
3633
+ return "monorepo";
3634
+ }
3635
+ return version;
3624
3636
  } catch (error) {
3625
- logger12.error("Error getting CLI version:", error);
3637
+ logger12.error({ error }, "Error getting CLI version:");
3626
3638
  return FALLBACK_VERSION;
3627
3639
  }
3628
3640
  }
@@ -3728,7 +3740,10 @@ async function performCliUpdate(options = {}) {
3728
3740
  console.error(" curl -fsSL https://bun.sh/install | bash");
3729
3741
  console.error(" # or");
3730
3742
  console.error(" npm install -g bun");
3731
- logger13.debug("Bun error:", bunError instanceof Error ? bunError.message : String(bunError));
3743
+ logger13.debug(
3744
+ { error: bunError instanceof Error ? bunError.message : String(bunError) },
3745
+ "Bun error:"
3746
+ );
3732
3747
  return false;
3733
3748
  }
3734
3749
  } catch (error) {
@@ -4172,6 +4187,14 @@ var publish = new Command5().name("publish").description("Publish a plugin to np
4172
4187
  replacement.replace();
4173
4188
  }
4174
4189
  });
4190
+ if (opts.npm && packageJson.repository) {
4191
+ delete packageJson.repository;
4192
+ console.info("Removed repository field for npm-only publishing");
4193
+ }
4194
+ if (opts.npm && packageJson.bugs) {
4195
+ delete packageJson.bugs;
4196
+ console.info("Removed bugs field for npm-only publishing");
4197
+ }
4175
4198
  const finalPluginName = packageJson.name.startsWith("@") ? packageJson.name.split("/")[1] : packageJson.name;
4176
4199
  await fs9.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), "utf-8");
4177
4200
  await validatePluginRequirements(cwd, packageJson);
@@ -4500,16 +4523,16 @@ async function loadProject(dir) {
4500
4523
  projectModule = await import(importUrl);
4501
4524
  logger16.info(`Loaded project from ${entryPoint}`);
4502
4525
  const exportKeys = Object.keys(projectModule);
4503
- logger16.debug(`Module exports: ${exportKeys.join(", ")}`);
4526
+ logger16.debug({ exportKeys }, `Module exports:`);
4504
4527
  if (exportKeys.includes("default")) {
4505
- logger16.debug(`Default export type: ${typeof projectModule.default}`);
4528
+ logger16.debug({ type: typeof projectModule.default }, `Default export type:`);
4506
4529
  if (typeof projectModule.default === "object" && projectModule.default !== null) {
4507
- logger16.debug(`Default export keys: ${Object.keys(projectModule.default).join(", ")}`);
4530
+ logger16.debug({ keys: Object.keys(projectModule.default) }, `Default export keys:`);
4508
4531
  }
4509
4532
  }
4510
4533
  break;
4511
4534
  } catch (error) {
4512
- logger16.warn(`Failed to import project from ${entryPoint}:`, error);
4535
+ logger16.warn({ error, entryPoint }, `Failed to import project`);
4513
4536
  }
4514
4537
  }
4515
4538
  }
@@ -4517,13 +4540,13 @@ async function loadProject(dir) {
4517
4540
  throw new Error("Could not find project entry point");
4518
4541
  }
4519
4542
  const moduleIsPlugin = isPlugin(projectModule);
4520
- logger16.debug(`Is this a plugin? ${moduleIsPlugin}`);
4543
+ logger16.debug({ moduleIsPlugin }, `Is this a plugin?`);
4521
4544
  if (moduleIsPlugin) {
4522
4545
  logger16.info("Detected plugin module instead of project");
4523
4546
  try {
4524
4547
  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(", ")}`);
4548
+ logger16.debug({ name: plugin.name, description: plugin.description }, `Found plugin:`);
4549
+ logger16.debug({ keys: Object.keys(plugin) }, `Plugin has the following properties:`);
4527
4550
  const completePlugin = {
4528
4551
  // Copy all other properties from the original plugin first
4529
4552
  ...plugin,
@@ -4565,7 +4588,7 @@ async function loadProject(dir) {
4565
4588
  const agents = [];
4566
4589
  if (projectModule.default && typeof projectModule.default === "object" && Array.isArray(projectModule.default.agents)) {
4567
4590
  agents.push(...projectModule.default.agents);
4568
- logger16.debug(`Found ${agents.length} agents in default export's agents array`);
4591
+ logger16.debug({ count: agents.length }, `Found agents in default export's agents array`);
4569
4592
  } else {
4570
4593
  for (const [key, value] of Object.entries(projectModule)) {
4571
4594
  if (key === "default" && value && typeof value === "object") {
@@ -4575,7 +4598,7 @@ async function loadProject(dir) {
4575
4598
  }
4576
4599
  } else if (value && typeof value === "object" && value.character && value.init) {
4577
4600
  agents.push(value);
4578
- logger16.debug(`Found agent in named export: ${key}`);
4601
+ logger16.debug({ key }, `Found agent in named export`);
4579
4602
  }
4580
4603
  }
4581
4604
  }
@@ -4588,7 +4611,7 @@ async function loadProject(dir) {
4588
4611
  };
4589
4612
  return project;
4590
4613
  } catch (error) {
4591
- logger16.error("Error loading project:", error);
4614
+ logger16.error({ error }, "Error loading project:");
4592
4615
  throw error;
4593
4616
  }
4594
4617
  }
@@ -4694,7 +4717,7 @@ function resolvePluginDependencies(availablePlugins, isTestMode = false) {
4694
4717
  }
4695
4718
  }
4696
4719
  const finalPlugins = resolutionOrder.map((name) => availablePlugins.get(name)).filter((p) => p);
4697
- logger17.info(`Final plugins being loaded: ${finalPlugins.map((p) => p.name).join(", ")}`);
4720
+ logger17.info({ plugins: finalPlugins.map((p) => p.name) }, `Final plugins being loaded:`);
4698
4721
  return finalPlugins;
4699
4722
  }
4700
4723
 
@@ -4762,7 +4785,6 @@ async function startAgent(character, server, init, plugins2 = [], options = {})
4762
4785
  await setDefaultSecretsFromEnv(character);
4763
4786
  }
4764
4787
  const loadedPlugins = /* @__PURE__ */ new Map();
4765
- loadedPlugins.set(sqlPlugin.name, sqlPlugin);
4766
4788
  const pluginsToLoad = new Set(character.plugins || []);
4767
4789
  for (const p of plugins2) {
4768
4790
  if (typeof p === "string") {
@@ -4787,6 +4809,16 @@ async function startAgent(character, server, init, plugins2 = [], options = {})
4787
4809
  }
4788
4810
  }
4789
4811
  }
4812
+ let haveSql = false;
4813
+ for (const n of allAvailablePlugins.keys()) {
4814
+ if (n === sqlPlugin.name || n === "mysql") {
4815
+ haveSql = true;
4816
+ break;
4817
+ }
4818
+ }
4819
+ if (!haveSql) {
4820
+ allAvailablePlugins.set(sqlPlugin.name, sqlPlugin);
4821
+ }
4790
4822
  const finalPlugins = resolvePluginDependencies(allAvailablePlugins, options.isTestMode);
4791
4823
  const runtime = new AgentRuntime2({
4792
4824
  character: encryptedCharacter(character),
@@ -4812,7 +4844,7 @@ async function startAgent(character, server, init, plugins2 = [], options = {})
4812
4844
  logger19.warn("DatabaseMigrationService not found - plugin schema migrations skipped");
4813
4845
  }
4814
4846
  } catch (error) {
4815
- logger19.error("Failed to run plugin migrations:", error);
4847
+ logger19.error({ error }, "Failed to run plugin migrations:");
4816
4848
  throw error;
4817
4849
  }
4818
4850
  server.registerAgent(runtime);
@@ -4872,13 +4904,13 @@ async function startAgents(options) {
4872
4904
  const desiredPort = options.port || Number.parseInt(process.env.SERVER_PORT || "3000");
4873
4905
  const serverPort = await findNextAvailablePort(desiredPort);
4874
4906
  if (serverPort !== desiredPort) {
4875
- logger20.warn(`Port ${desiredPort} is in use, using port ${serverPort} instead`);
4907
+ logger20.warn({ desiredPort, serverPort }, "Port is in use, using alternate port");
4876
4908
  }
4877
4909
  process.env.SERVER_PORT = serverPort.toString();
4878
4910
  try {
4879
4911
  await server.start(serverPort);
4880
4912
  } catch (error) {
4881
- logger20.error(`Failed to start server on port ${serverPort}:`, error);
4913
+ logger20.error({ error, serverPort }, `Failed to start server on port:`);
4882
4914
  throw error;
4883
4915
  }
4884
4916
  if (options.projectAgents && options.projectAgents.length > 0) {
@@ -4956,7 +4988,7 @@ var start = new Command7().name("start").description("Build and start the Eliza
4956
4988
  throw new Error(`Invalid character file: ${resolvedPath}`);
4957
4989
  }
4958
4990
  } catch (e) {
4959
- logger21.error(`Failed to load character from ${resolvedPath}:`, e);
4991
+ logger21.error({ error: e, resolvedPath }, `Failed to load character from path:`);
4960
4992
  throw new Error(`Invalid character file: ${resolvedPath}`);
4961
4993
  }
4962
4994
  }
@@ -4978,7 +5010,7 @@ var start = new Command7().name("start").description("Build and start the Eliza
4978
5010
  }
4979
5011
  }
4980
5012
  } catch (e) {
4981
- logger21.debug("Failed to load project agents, will use default character:", e);
5013
+ logger21.debug({ error: e }, "Failed to load project agents, will use default character:");
4982
5014
  }
4983
5015
  }
4984
5016
  await startAgents({ ...options, characters, projectAgents });
@@ -5101,7 +5133,7 @@ async function installPluginDependencies(projectInfo) {
5101
5133
  };
5102
5134
  await fs12.promises.writeFile(packageJsonPath, JSON.stringify(packageJsonContent, null, 2));
5103
5135
  }
5104
- const { installPlugin: installPlugin2 } = await import("./utils-DBLSDYBF.js");
5136
+ const { installPlugin: installPlugin2 } = await import("./utils-X6UXPLKD.js");
5105
5137
  for (const dependency of project.pluginModule.dependencies) {
5106
5138
  await installPlugin2(dependency, pluginsDir);
5107
5139
  const dependencyPath = path26.join(pluginsDir, "node_modules", dependency);
@@ -5120,7 +5152,6 @@ async function installPluginDependencies(projectInfo) {
5120
5152
 
5121
5153
  // src/commands/test/actions/component-tests.ts
5122
5154
  import { logger as logger24 } from "@elizaos/core";
5123
- import { spawn as spawn2 } from "child_process";
5124
5155
  import path28 from "path";
5125
5156
 
5126
5157
  // src/utils/testing/tsc-validator.ts
@@ -5152,7 +5183,7 @@ async function runTypeCheck(projectPath, strict = true) {
5152
5183
  warnings: stderr.includes("warning") ? [stderr] : []
5153
5184
  };
5154
5185
  } catch (error) {
5155
- logger23.error("TypeScript validation failed:", error);
5186
+ logger23.error({ error }, "TypeScript validation failed:");
5156
5187
  return {
5157
5188
  success: false,
5158
5189
  errors: [`TypeScript validation error: ${error.message}`],
@@ -5186,40 +5217,34 @@ async function runComponentTests(testPath, options, projectInfo) {
5186
5217
  }
5187
5218
  }
5188
5219
  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,
5220
+ const args = ["test", "--passWithNoTests"];
5221
+ if (options.name) {
5222
+ const baseName = processFilterName(options.name);
5223
+ if (baseName) {
5224
+ logger24.info(`Using test filter: ${baseName}`);
5225
+ args.push("-t", baseName);
5226
+ }
5227
+ }
5228
+ const monorepoRoot = UserEnvironment.getInstance().findMonorepoRoot(process.cwd());
5229
+ const baseDir = monorepoRoot ?? process.cwd();
5230
+ const targetPath = testPath ? path28.resolve(baseDir, testPath) : process.cwd();
5231
+ logger24.info(`Executing: bun ${args.join(" ")} in ${targetPath}`);
5232
+ try {
5233
+ const result = await bunExecInherit("bun", args, {
5205
5234
  cwd: targetPath,
5206
5235
  env: {
5207
- ...process.env,
5208
5236
  FORCE_COLOR: "1",
5209
5237
  // Force color output
5210
5238
  CI: ""
5211
5239
  // Override CI to empty string (some tools check existence, but most check truthiness)
5212
5240
  }
5213
5241
  });
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
- });
5242
+ logger24.info("Component tests completed");
5243
+ return { failed: !result.success };
5244
+ } catch (error) {
5245
+ logger24.error({ error }, "Error running component tests:");
5246
+ return { failed: true };
5247
+ }
5223
5248
  }
5224
5249
 
5225
5250
  // src/commands/test/actions/e2e-tests.ts
@@ -5295,7 +5320,7 @@ async function runE2eTests(testPath, options, projectInfo) {
5295
5320
  });
5296
5321
  logger25.info("Server initialized successfully");
5297
5322
  } catch (initError) {
5298
- logger25.error("Server initialization failed:", initError);
5323
+ logger25.error({ error: initError }, "Server initialization failed:");
5299
5324
  throw initError;
5300
5325
  }
5301
5326
  let project;
@@ -5325,12 +5350,12 @@ async function runE2eTests(testPath, options, projectInfo) {
5325
5350
  logger25.info("Starting server...");
5326
5351
  try {
5327
5352
  await server.start(serverPort);
5328
- logger25.info("Server started successfully on port", serverPort);
5353
+ logger25.info({ serverPort }, "Server started successfully on port");
5329
5354
  } catch (error) {
5330
- logger25.error("Error starting server:", error);
5355
+ logger25.error({ error }, "Error starting server:");
5331
5356
  if (error instanceof Error) {
5332
- logger25.error("Error details:", error.message);
5333
- logger25.error("Stack trace:", error.stack);
5357
+ logger25.error({ message: error.message }, "Error details:");
5358
+ logger25.error({ stack: error.stack }, "Stack trace:");
5334
5359
  }
5335
5360
  throw error;
5336
5361
  }
@@ -5365,7 +5390,7 @@ async function runE2eTests(testPath, options, projectInfo) {
5365
5390
  });
5366
5391
  logger25.info("Default test agent started successfully");
5367
5392
  } catch (pluginError) {
5368
- logger25.error(`Error starting plugin test agent: ${pluginError}`);
5393
+ logger25.error({ error: pluginError }, `Error starting plugin test agent:`);
5369
5394
  throw pluginError;
5370
5395
  }
5371
5396
  } else {
@@ -5385,10 +5410,13 @@ async function runE2eTests(testPath, options, projectInfo) {
5385
5410
  projectAgents.push(agent2);
5386
5411
  await new Promise((resolve2) => setTimeout(resolve2, 1e3));
5387
5412
  } catch (agentError) {
5388
- logger25.error(`Error starting agent ${agent2.character.name}:`, agentError);
5413
+ logger25.error(
5414
+ { error: agentError, agentName: agent2.character.name },
5415
+ "Error starting agent"
5416
+ );
5389
5417
  if (agentError instanceof Error) {
5390
- logger25.error("Error details:", agentError.message);
5391
- logger25.error("Stack trace:", agentError.stack);
5418
+ logger25.error({ message: agentError.message }, "Error details:");
5419
+ logger25.error({ stack: agentError.stack }, "Stack trace:");
5392
5420
  }
5393
5421
  logger25.warn(`Skipping agent ${agent2.character.name} due to startup error`);
5394
5422
  }
@@ -5427,17 +5455,17 @@ async function runE2eTests(testPath, options, projectInfo) {
5427
5455
  }
5428
5456
  return { failed: anyTestsFound ? totalFailed > 0 : false };
5429
5457
  } catch (error) {
5430
- logger25.error("Error in runE2eTests:", error);
5458
+ logger25.error({ error }, "Error in runE2eTests:");
5431
5459
  if (error instanceof Error) {
5432
- logger25.error("Error details:", error.message);
5433
- logger25.error("Stack trace:", error.stack);
5460
+ logger25.error({ message: error.message }, "Error details:");
5461
+ logger25.error({ stack: error.stack }, "Stack trace:");
5434
5462
  } else {
5435
- logger25.error("Unknown error type:", typeof error);
5436
- logger25.error("Error value:", error);
5463
+ logger25.error({ type: typeof error }, "Unknown error type:");
5464
+ logger25.error({ error }, "Error value:");
5437
5465
  try {
5438
- logger25.error("Stringified error:", JSON.stringify(error, null, 2));
5466
+ logger25.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5439
5467
  } catch (e) {
5440
- logger25.error("Could not stringify error:", e);
5468
+ logger25.error({ error: e }, "Could not stringify error:");
5441
5469
  }
5442
5470
  }
5443
5471
  return { failed: true };
@@ -5460,33 +5488,33 @@ async function runE2eTests(testPath, options, projectInfo) {
5460
5488
  }
5461
5489
  }
5462
5490
  } catch (error) {
5463
- logger25.error("Error in runE2eTests:", error);
5491
+ logger25.error({ error }, "Error in runE2eTests:");
5464
5492
  if (error instanceof Error) {
5465
- logger25.error("Error details:", error.message);
5466
- logger25.error("Stack trace:", error.stack);
5493
+ logger25.error({ message: error.message }, "Error details:");
5494
+ logger25.error({ stack: error.stack }, "Stack trace:");
5467
5495
  } else {
5468
- logger25.error("Unknown error type:", typeof error);
5469
- logger25.error("Error value:", error);
5496
+ logger25.error({ type: typeof error }, "Unknown error type:");
5497
+ logger25.error({ error }, "Error value:");
5470
5498
  try {
5471
- logger25.error("Stringified error:", JSON.stringify(error, null, 2));
5499
+ logger25.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5472
5500
  } catch (e) {
5473
- logger25.error("Could not stringify error:", e);
5501
+ logger25.error({ error: e }, "Could not stringify error:");
5474
5502
  }
5475
5503
  }
5476
5504
  return { failed: true };
5477
5505
  }
5478
5506
  } catch (error) {
5479
- logger25.error("Error in runE2eTests:", error);
5507
+ logger25.error({ error }, "Error in runE2eTests:");
5480
5508
  if (error instanceof Error) {
5481
- logger25.error("Error details:", error.message);
5482
- logger25.error("Stack trace:", error.stack);
5509
+ logger25.error({ message: error.message }, "Error details:");
5510
+ logger25.error({ stack: error.stack }, "Stack trace:");
5483
5511
  } else {
5484
- logger25.error("Unknown error type:", typeof error);
5485
- logger25.error("Error value:", error);
5512
+ logger25.error({ type: typeof error }, "Unknown error type:");
5513
+ logger25.error({ error }, "Error value:");
5486
5514
  try {
5487
- logger25.error("Stringified error:", JSON.stringify(error, null, 2));
5515
+ logger25.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5488
5516
  } catch (e) {
5489
- logger25.error("Could not stringify error:", e);
5517
+ logger25.error({ error: e }, "Could not stringify error:");
5490
5518
  }
5491
5519
  }
5492
5520
  return { failed: true };
@@ -5496,15 +5524,21 @@ async function runE2eTests(testPath, options, projectInfo) {
5496
5524
  // src/commands/test/actions/run-all-tests.ts
5497
5525
  async function runAllTests(testPath, options) {
5498
5526
  const projectInfo = getProjectType(testPath);
5527
+ let componentResult = { failed: false };
5499
5528
  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
- }
5529
+ componentResult = await runComponentTests(testPath, options, projectInfo);
5530
+ } else {
5531
+ logger26.info("Skipping component tests due to --skip-build option");
5504
5532
  }
5505
5533
  const e2eResult = await runE2eTests(testPath, options, projectInfo);
5506
- if (e2eResult.failed) {
5507
- logger26.error("E2E tests failed.");
5534
+ if (componentResult.failed || e2eResult.failed) {
5535
+ if (componentResult.failed) {
5536
+ logger26.error("Component tests failed.");
5537
+ }
5538
+ if (e2eResult.failed) {
5539
+ logger26.error("E2E tests failed.");
5540
+ }
5541
+ logger26.error("Test suite failed.");
5508
5542
  process.exit(1);
5509
5543
  }
5510
5544
  logger26.success("All tests passed successfully!");
@@ -5599,7 +5633,7 @@ async function gracefulShutdown(signal) {
5599
5633
  } catch (error) {
5600
5634
  const errorMessage = error instanceof Error ? error.message : String(error);
5601
5635
  logger29.error(`Error stopping server: ${errorMessage}`);
5602
- logger29.debug("Full error details:", error);
5636
+ logger29.debug({ error }, "Full error details:");
5603
5637
  }
5604
5638
  const exitCode = signal === "SIGINT" ? 130 : signal === "SIGTERM" ? 143 : 0;
5605
5639
  process.exit(exitCode);
@@ -5633,6 +5667,6 @@ async function main() {
5633
5667
  await program.parseAsync();
5634
5668
  }
5635
5669
  main().catch((error) => {
5636
- logger29.error("An error occurred:", error);
5670
+ logger29.error({ error }, "An error occurred:");
5637
5671
  process.exit(1);
5638
5672
  });
@@ -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-N5G5XSGP.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,