@elizaos/cli 1.4.3 → 1.4.4

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.
package/dist/index.js CHANGED
@@ -5026,45 +5026,46 @@ import { Command as Command9 } from "commander";
5026
5026
  // src/commands/tee/phala-wrapper.ts
5027
5027
  import { Command as Command8 } from "commander";
5028
5028
  import { spawn } from "child_process";
5029
- import { elizaLogger } from "@elizaos/core";
5030
- var phalaCliCommand = new Command8("phala").description("Official Phala Cloud CLI - Manage TEE deployments on Phala Cloud").allowUnknownOption().helpOption(false).action(async (_, command) => {
5031
- const args = command.args;
5029
+ import { logger as logger22 } from "@elizaos/core";
5030
+ var phalaCliCommand = new Command8("phala").description("Official Phala Cloud CLI - Manage TEE deployments on Phala Cloud").allowUnknownOption().helpOption(false).allowExcessArguments(true).passThroughOptions().argument("[args...]", "All arguments to pass to Phala CLI").action(async (...commandArgs) => {
5031
+ const cmd = commandArgs[commandArgs.length - 1];
5032
+ const raw = cmd?.parent?.rawArgs ?? cmd?.rawArgs ?? process.argv;
5033
+ const idx = raw.findIndex((arg) => arg === "phala");
5034
+ const args = idx >= 0 ? raw.slice(idx + 1) : Array.isArray(commandArgs[0]) ? commandArgs[0] : [];
5032
5035
  try {
5033
- elizaLogger.info("Running Phala CLI command:", ["phala", ...args].join(" "));
5036
+ logger22.info({ args }, "Running Phala CLI command");
5034
5037
  const phalaProcess = spawn("npx", ["--yes", "phala", ...args], {
5035
- stdio: "inherit",
5036
- shell: true
5038
+ stdio: "inherit"
5037
5039
  });
5038
- phalaProcess.on("error", (error) => {
5039
- elizaLogger.error("Failed to execute Phala CLI:", error);
5040
- if (error.message.includes("ENOENT")) {
5041
- elizaLogger.error(
5042
- `
5043
- ${emoji.error("Error: npx not found. Please install Node.js and npm:")}`
5044
- );
5045
- elizaLogger.error(" Visit https://nodejs.org or use a version manager like nvm");
5046
- elizaLogger.error(
5040
+ phalaProcess.on("error", (err) => {
5041
+ const error = err;
5042
+ logger22.error({ error, args }, "Failed to execute Phala CLI");
5043
+ if (error.code === "ENOENT") {
5044
+ logger22.error(`
5045
+ ${emoji.error("Error: npx not found. Please install Node.js and npm:")}`);
5046
+ logger22.error(" Visit https://nodejs.org or use a version manager like nvm");
5047
+ logger22.error(
5047
5048
  " curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash"
5048
5049
  );
5049
5050
  } else {
5050
- elizaLogger.error(`
5051
+ logger22.error(`
5051
5052
  ${emoji.error("Error: Failed to execute Phala CLI")}`);
5052
- elizaLogger.error(" Try running directly: npx phala", args.join(" "));
5053
+ logger22.error({ args }, " Try running directly: npx phala [args]");
5053
5054
  }
5054
5055
  process.exit(1);
5055
5056
  });
5056
5057
  phalaProcess.on("exit", (code) => {
5057
5058
  if (code !== 0) {
5058
- elizaLogger.warn(`Phala CLI exited with code: ${code}`);
5059
+ logger22.warn({ code }, "Phala CLI exited with non-zero code");
5059
5060
  }
5060
5061
  process.exit(code || 0);
5061
5062
  });
5062
5063
  } catch (error) {
5063
- elizaLogger.error("Error running Phala CLI:", error);
5064
- elizaLogger.error(`
5064
+ logger22.error({ error, args }, "Error running Phala CLI");
5065
+ logger22.error(`
5065
5066
  ${emoji.error("Error: Failed to run Phala CLI")}`);
5066
- elizaLogger.error(" Try running Phala CLI directly with: npx phala", args.join(" "));
5067
- elizaLogger.error(" Or visit https://www.npmjs.com/package/phala for more information");
5067
+ logger22.error({ args }, " Try running Phala CLI directly with: npx phala [args]");
5068
+ logger22.error(" Or visit https://www.npmjs.com/package/phala for more information");
5068
5069
  process.exit(1);
5069
5070
  }
5070
5071
  }).configureHelp({
@@ -5086,17 +5087,17 @@ ${emoji.error("Error: Failed to run Phala CLI")}`);
5086
5087
  });
5087
5088
 
5088
5089
  // src/commands/tee/index.ts
5089
- var teeCommand = new Command9("tee").description("Manage TEE deployments").addCommand(phalaCliCommand);
5090
+ var teeCommand = new Command9("tee").description("Manage TEE deployments").enablePositionalOptions().addCommand(phalaCliCommand);
5090
5091
 
5091
5092
  // src/commands/test/index.ts
5092
- import { logger as logger28 } from "@elizaos/core";
5093
+ import { logger as logger29 } from "@elizaos/core";
5093
5094
  import { Command as Command10, Option as Option2 } from "commander";
5094
5095
 
5095
5096
  // src/commands/test/actions/run-all-tests.ts
5096
- import { logger as logger26 } from "@elizaos/core";
5097
+ import { logger as logger27 } from "@elizaos/core";
5097
5098
 
5098
5099
  // src/commands/test/utils/project-utils.ts
5099
- import { logger as logger22 } from "@elizaos/core";
5100
+ import { logger as logger23 } from "@elizaos/core";
5100
5101
  import * as fs12 from "fs";
5101
5102
  import path26 from "path";
5102
5103
  function getProjectType(testPath) {
@@ -5141,7 +5142,7 @@ async function installPluginDependencies(projectInfo) {
5141
5142
  try {
5142
5143
  await runBunCommand(["install"], dependencyPath);
5143
5144
  } catch (error) {
5144
- logger22.warn(
5145
+ logger23.warn(
5145
5146
  `[Test Command] Failed to install devDependencies for ${dependency}: ${error}`
5146
5147
  );
5147
5148
  }
@@ -5151,11 +5152,11 @@ async function installPluginDependencies(projectInfo) {
5151
5152
  }
5152
5153
 
5153
5154
  // src/commands/test/actions/component-tests.ts
5154
- import { logger as logger24 } from "@elizaos/core";
5155
+ import { logger as logger25 } from "@elizaos/core";
5155
5156
  import path28 from "path";
5156
5157
 
5157
5158
  // src/utils/testing/tsc-validator.ts
5158
- import { logger as logger23 } from "@elizaos/core";
5159
+ import { logger as logger24 } from "@elizaos/core";
5159
5160
  import path27 from "path";
5160
5161
  import { existsSync as existsSync18 } from "fs";
5161
5162
  async function runTypeCheck(projectPath, strict = true) {
@@ -5183,7 +5184,7 @@ async function runTypeCheck(projectPath, strict = true) {
5183
5184
  warnings: stderr.includes("warning") ? [stderr] : []
5184
5185
  };
5185
5186
  } catch (error) {
5186
- logger23.error({ error }, "TypeScript validation failed:");
5187
+ logger24.error({ error }, "TypeScript validation failed:");
5187
5188
  return {
5188
5189
  success: false,
5189
5190
  errors: [`TypeScript validation error: ${error.message}`],
@@ -5197,38 +5198,38 @@ async function runComponentTests(testPath, options, projectInfo) {
5197
5198
  const cwd = process.cwd();
5198
5199
  const isPlugin2 = projectInfo.type === "elizaos-plugin";
5199
5200
  if (!options.skipTypeCheck) {
5200
- logger24.info("Running TypeScript validation...");
5201
+ logger25.info("Running TypeScript validation...");
5201
5202
  const typeCheckResult = await runTypeCheck(cwd, true);
5202
5203
  if (!typeCheckResult.success) {
5203
- logger24.error("TypeScript validation failed:");
5204
- typeCheckResult.errors.forEach((error) => logger24.error(error));
5204
+ logger25.error("TypeScript validation failed:");
5205
+ typeCheckResult.errors.forEach((error) => logger25.error(error));
5205
5206
  return { failed: true };
5206
5207
  }
5207
- logger24.success("TypeScript validation passed");
5208
+ logger25.success("TypeScript validation passed");
5208
5209
  }
5209
5210
  if (!options.skipBuild) {
5210
5211
  try {
5211
- logger24.info(`Building ${isPlugin2 ? "plugin" : "project"}...`);
5212
+ logger25.info(`Building ${isPlugin2 ? "plugin" : "project"}...`);
5212
5213
  await buildProject(cwd, isPlugin2);
5213
- logger24.success(`Build completed successfully`);
5214
+ logger25.success(`Build completed successfully`);
5214
5215
  } catch (buildError) {
5215
- logger24.error(`Build failed: ${buildError}`);
5216
+ logger25.error(`Build failed: ${buildError}`);
5216
5217
  return { failed: true };
5217
5218
  }
5218
5219
  }
5219
- logger24.info("Running component tests...");
5220
+ logger25.info("Running component tests...");
5220
5221
  const args = ["test", "--passWithNoTests"];
5221
5222
  if (options.name) {
5222
5223
  const baseName = processFilterName(options.name);
5223
5224
  if (baseName) {
5224
- logger24.info(`Using test filter: ${baseName}`);
5225
+ logger25.info(`Using test filter: ${baseName}`);
5225
5226
  args.push("-t", baseName);
5226
5227
  }
5227
5228
  }
5228
5229
  const monorepoRoot = UserEnvironment.getInstance().findMonorepoRoot(process.cwd());
5229
5230
  const baseDir = monorepoRoot ?? process.cwd();
5230
5231
  const targetPath = testPath ? path28.resolve(baseDir, testPath) : process.cwd();
5231
- logger24.info(`Executing: bun ${args.join(" ")} in ${targetPath}`);
5232
+ logger25.info(`Executing: bun ${args.join(" ")} in ${targetPath}`);
5232
5233
  try {
5233
5234
  const result = await bunExecInherit("bun", args, {
5234
5235
  cwd: targetPath,
@@ -5239,16 +5240,16 @@ async function runComponentTests(testPath, options, projectInfo) {
5239
5240
  // Override CI to empty string (some tools check existence, but most check truthiness)
5240
5241
  }
5241
5242
  });
5242
- logger24.info("Component tests completed");
5243
+ logger25.info("Component tests completed");
5243
5244
  return { failed: !result.success };
5244
5245
  } catch (error) {
5245
- logger24.error({ error }, "Error running component tests:");
5246
+ logger25.error({ error }, "Error running component tests:");
5246
5247
  return { failed: true };
5247
5248
  }
5248
5249
  }
5249
5250
 
5250
5251
  // src/commands/test/actions/e2e-tests.ts
5251
- import { logger as logger25 } from "@elizaos/core";
5252
+ import { logger as logger26 } from "@elizaos/core";
5252
5253
  import * as dotenv2 from "dotenv";
5253
5254
  import * as fs13 from "fs";
5254
5255
  import path29 from "path";
@@ -5257,12 +5258,12 @@ async function runE2eTests(testPath, options, projectInfo) {
5257
5258
  try {
5258
5259
  const cwd = process.cwd();
5259
5260
  const isPlugin2 = projectInfo.type === "elizaos-plugin";
5260
- logger25.info(`Building ${isPlugin2 ? "plugin" : "project"}...`);
5261
+ logger26.info(`Building ${isPlugin2 ? "plugin" : "project"}...`);
5261
5262
  await buildProject(cwd, isPlugin2);
5262
- logger25.info(`Build completed successfully`);
5263
+ logger26.info(`Build completed successfully`);
5263
5264
  } catch (buildError) {
5264
- logger25.error(`Build error: ${buildError}`);
5265
- logger25.warn(`Attempting to continue with tests despite build error`);
5265
+ logger26.error(`Build error: ${buildError}`);
5266
+ logger26.warn(`Attempting to continue with tests despite build error`);
5266
5267
  }
5267
5268
  }
5268
5269
  let server;
@@ -5299,33 +5300,33 @@ async function runE2eTests(testPath, options, projectInfo) {
5299
5300
  process.env.PGLITE_DATA_DIR = elizaDbDir;
5300
5301
  console.info(`Set PGLITE_DATA_DIR to: ${elizaDbDir}`);
5301
5302
  if (fs13.existsSync(envFilePath)) {
5302
- logger25.info(`Loading environment variables from: ${envFilePath}`);
5303
+ logger26.info(`Loading environment variables from: ${envFilePath}`);
5303
5304
  dotenv2.config({ path: envFilePath });
5304
- logger25.info("Environment variables loaded");
5305
+ logger26.info("Environment variables loaded");
5305
5306
  } else {
5306
- logger25.warn(`Environment file not found: ${envFilePath}`);
5307
+ logger26.warn(`Environment file not found: ${envFilePath}`);
5307
5308
  }
5308
5309
  const postgresUrl = process.env.POSTGRES_URL;
5309
- logger25.info(
5310
+ logger26.info(
5310
5311
  `PostgreSQL URL for e2e tests: ${postgresUrl ? "found" : "not found (will use PGlite)"}`
5311
5312
  );
5312
- logger25.info("Creating server instance...");
5313
+ logger26.info("Creating server instance...");
5313
5314
  server = new AgentServer();
5314
- logger25.info("Server instance created");
5315
- logger25.info("Initializing server...");
5315
+ logger26.info("Server instance created");
5316
+ logger26.info("Initializing server...");
5316
5317
  try {
5317
5318
  await server.initialize({
5318
5319
  dataDir: elizaDbDir,
5319
5320
  postgresUrl
5320
5321
  });
5321
- logger25.info("Server initialized successfully");
5322
+ logger26.info("Server initialized successfully");
5322
5323
  } catch (initError) {
5323
- logger25.error({ error: initError }, "Server initialization failed:");
5324
+ logger26.error({ error: initError }, "Server initialization failed:");
5324
5325
  throw initError;
5325
5326
  }
5326
5327
  let project;
5327
5328
  try {
5328
- logger25.info("Attempting to load project or plugin...");
5329
+ logger26.info("Attempting to load project or plugin...");
5329
5330
  const monorepoRoot = UserEnvironment.getInstance().findMonorepoRoot(process.cwd());
5330
5331
  const baseDir = monorepoRoot ?? process.cwd();
5331
5332
  const targetPath = testPath ? path29.resolve(baseDir, testPath) : process.cwd();
@@ -5333,39 +5334,39 @@ async function runE2eTests(testPath, options, projectInfo) {
5333
5334
  if (!project || !project.agents || project.agents.length === 0) {
5334
5335
  throw new Error("No agents found in project configuration");
5335
5336
  }
5336
- logger25.info(`Found ${project.agents.length} agents`);
5337
- logger25.info("Setting up server properties...");
5337
+ logger26.info(`Found ${project.agents.length} agents`);
5338
+ logger26.info("Setting up server properties...");
5338
5339
  server.startAgent = async (character) => {
5339
- logger25.info(`Starting agent for character ${character.name}`);
5340
+ logger26.info(`Starting agent for character ${character.name}`);
5340
5341
  return startAgent(character, server, void 0, [], { isTestMode: true });
5341
5342
  };
5342
5343
  server.loadCharacterTryPath = loadCharacterTryPath;
5343
5344
  server.jsonToCharacter = jsonToCharacter;
5344
- logger25.info("Server properties set up");
5345
+ logger26.info("Server properties set up");
5345
5346
  const desiredPort = options.port || Number.parseInt(process.env.SERVER_PORT || "3000");
5346
5347
  const serverPort = await findNextAvailablePort(desiredPort);
5347
5348
  if (serverPort !== desiredPort) {
5348
- logger25.warn(`Port ${desiredPort} is in use for testing, using port ${serverPort} instead.`);
5349
+ logger26.warn(`Port ${desiredPort} is in use for testing, using port ${serverPort} instead.`);
5349
5350
  }
5350
- logger25.info("Starting server...");
5351
+ logger26.info("Starting server...");
5351
5352
  try {
5352
5353
  await server.start(serverPort);
5353
- logger25.info({ serverPort }, "Server started successfully on port");
5354
+ logger26.info({ serverPort }, "Server started successfully on port");
5354
5355
  } catch (error) {
5355
- logger25.error({ error }, "Error starting server:");
5356
+ logger26.error({ error }, "Error starting server:");
5356
5357
  if (error instanceof Error) {
5357
- logger25.error({ message: error.message }, "Error details:");
5358
- logger25.error({ stack: error.stack }, "Stack trace:");
5358
+ logger26.error({ message: error.message }, "Error details:");
5359
+ logger26.error({ stack: error.stack }, "Stack trace:");
5359
5360
  }
5360
5361
  throw error;
5361
5362
  }
5362
5363
  try {
5363
- logger25.info(
5364
+ logger26.info(
5364
5365
  `Found ${project.agents.length} agents in ${project.isPlugin ? "plugin" : "project"}`
5365
5366
  );
5366
5367
  if (project.isPlugin || project.agents.length === 0) {
5367
5368
  process.env.ELIZA_TESTING_PLUGIN = "true";
5368
- logger25.info("Using default Eliza character as test agent");
5369
+ logger26.info("Using default Eliza character as test agent");
5369
5370
  try {
5370
5371
  const pluginUnderTest = project.pluginModule;
5371
5372
  if (!pluginUnderTest) {
@@ -5388,16 +5389,16 @@ async function runE2eTests(testPath, options, projectInfo) {
5388
5389
  plugins: runtime.plugins
5389
5390
  // Pass all plugins, not just the one under test
5390
5391
  });
5391
- logger25.info("Default test agent started successfully");
5392
+ logger26.info("Default test agent started successfully");
5392
5393
  } catch (pluginError) {
5393
- logger25.error({ error: pluginError }, `Error starting plugin test agent:`);
5394
+ logger26.error({ error: pluginError }, `Error starting plugin test agent:`);
5394
5395
  throw pluginError;
5395
5396
  }
5396
5397
  } else {
5397
5398
  for (const agent2 of project.agents) {
5398
5399
  try {
5399
5400
  const originalCharacter = { ...agent2.character };
5400
- logger25.debug(`Starting agent: ${originalCharacter.name}`);
5401
+ logger26.debug(`Starting agent: ${originalCharacter.name}`);
5401
5402
  const runtime = await startAgent(
5402
5403
  originalCharacter,
5403
5404
  server,
@@ -5410,31 +5411,31 @@ async function runE2eTests(testPath, options, projectInfo) {
5410
5411
  projectAgents.push(agent2);
5411
5412
  await new Promise((resolve2) => setTimeout(resolve2, 1e3));
5412
5413
  } catch (agentError) {
5413
- logger25.error(
5414
+ logger26.error(
5414
5415
  { error: agentError, agentName: agent2.character.name },
5415
5416
  "Error starting agent"
5416
5417
  );
5417
5418
  if (agentError instanceof Error) {
5418
- logger25.error({ message: agentError.message }, "Error details:");
5419
- logger25.error({ stack: agentError.stack }, "Stack trace:");
5419
+ logger26.error({ message: agentError.message }, "Error details:");
5420
+ logger26.error({ stack: agentError.stack }, "Stack trace:");
5420
5421
  }
5421
- logger25.warn(`Skipping agent ${agent2.character.name} due to startup error`);
5422
+ logger26.warn(`Skipping agent ${agent2.character.name} due to startup error`);
5422
5423
  }
5423
5424
  }
5424
5425
  }
5425
5426
  if (runtimes.length === 0) {
5426
5427
  throw new Error("Failed to start any agents from project");
5427
5428
  }
5428
- logger25.debug(`Successfully started ${runtimes.length} agents for testing`);
5429
+ logger26.debug(`Successfully started ${runtimes.length} agents for testing`);
5429
5430
  let totalFailed = 0;
5430
5431
  let anyTestsFound = false;
5431
5432
  for (let i = 0; i < runtimes.length; i++) {
5432
5433
  const runtime = runtimes[i];
5433
5434
  const projectAgent = projectAgents[i];
5434
5435
  if (project.isPlugin) {
5435
- logger25.debug(`Running tests for plugin: ${project.pluginModule?.name}`);
5436
+ logger26.debug(`Running tests for plugin: ${project.pluginModule?.name}`);
5436
5437
  } else {
5437
- logger25.debug(`Running tests for agent: ${runtime.character.name}`);
5438
+ logger26.debug(`Running tests for agent: ${runtime.character.name}`);
5438
5439
  }
5439
5440
  const testRunner = new TestRunner(runtime, projectAgent);
5440
5441
  const currentDirInfo = projectInfo;
@@ -5455,17 +5456,17 @@ async function runE2eTests(testPath, options, projectInfo) {
5455
5456
  }
5456
5457
  return { failed: anyTestsFound ? totalFailed > 0 : false };
5457
5458
  } catch (error) {
5458
- logger25.error({ error }, "Error in runE2eTests:");
5459
+ logger26.error({ error }, "Error in runE2eTests:");
5459
5460
  if (error instanceof Error) {
5460
- logger25.error({ message: error.message }, "Error details:");
5461
- logger25.error({ stack: error.stack }, "Stack trace:");
5461
+ logger26.error({ message: error.message }, "Error details:");
5462
+ logger26.error({ stack: error.stack }, "Stack trace:");
5462
5463
  } else {
5463
- logger25.error({ type: typeof error }, "Unknown error type:");
5464
- logger25.error({ error }, "Error value:");
5464
+ logger26.error({ type: typeof error }, "Unknown error type:");
5465
+ logger26.error({ error }, "Error value:");
5465
5466
  try {
5466
- logger25.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5467
+ logger26.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5467
5468
  } catch (e) {
5468
- logger25.error({ error: e }, "Could not stringify error:");
5469
+ logger26.error({ error: e }, "Could not stringify error:");
5469
5470
  }
5470
5471
  }
5471
5472
  return { failed: true };
@@ -5488,33 +5489,33 @@ async function runE2eTests(testPath, options, projectInfo) {
5488
5489
  }
5489
5490
  }
5490
5491
  } catch (error) {
5491
- logger25.error({ error }, "Error in runE2eTests:");
5492
+ logger26.error({ error }, "Error in runE2eTests:");
5492
5493
  if (error instanceof Error) {
5493
- logger25.error({ message: error.message }, "Error details:");
5494
- logger25.error({ stack: error.stack }, "Stack trace:");
5494
+ logger26.error({ message: error.message }, "Error details:");
5495
+ logger26.error({ stack: error.stack }, "Stack trace:");
5495
5496
  } else {
5496
- logger25.error({ type: typeof error }, "Unknown error type:");
5497
- logger25.error({ error }, "Error value:");
5497
+ logger26.error({ type: typeof error }, "Unknown error type:");
5498
+ logger26.error({ error }, "Error value:");
5498
5499
  try {
5499
- logger25.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5500
+ logger26.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5500
5501
  } catch (e) {
5501
- logger25.error({ error: e }, "Could not stringify error:");
5502
+ logger26.error({ error: e }, "Could not stringify error:");
5502
5503
  }
5503
5504
  }
5504
5505
  return { failed: true };
5505
5506
  }
5506
5507
  } catch (error) {
5507
- logger25.error({ error }, "Error in runE2eTests:");
5508
+ logger26.error({ error }, "Error in runE2eTests:");
5508
5509
  if (error instanceof Error) {
5509
- logger25.error({ message: error.message }, "Error details:");
5510
- logger25.error({ stack: error.stack }, "Stack trace:");
5510
+ logger26.error({ message: error.message }, "Error details:");
5511
+ logger26.error({ stack: error.stack }, "Stack trace:");
5511
5512
  } else {
5512
- logger25.error({ type: typeof error }, "Unknown error type:");
5513
- logger25.error({ error }, "Error value:");
5513
+ logger26.error({ type: typeof error }, "Unknown error type:");
5514
+ logger26.error({ error }, "Error value:");
5514
5515
  try {
5515
- logger25.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5516
+ logger26.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
5516
5517
  } catch (e) {
5517
- logger25.error({ error: e }, "Could not stringify error:");
5518
+ logger26.error({ error: e }, "Could not stringify error:");
5518
5519
  }
5519
5520
  }
5520
5521
  return { failed: true };
@@ -5528,20 +5529,20 @@ async function runAllTests(testPath, options) {
5528
5529
  if (!options.skipBuild) {
5529
5530
  componentResult = await runComponentTests(testPath, options, projectInfo);
5530
5531
  } else {
5531
- logger26.info("Skipping component tests due to --skip-build option");
5532
+ logger27.info("Skipping component tests due to --skip-build option");
5532
5533
  }
5533
5534
  const e2eResult = await runE2eTests(testPath, options, projectInfo);
5534
5535
  if (componentResult.failed || e2eResult.failed) {
5535
5536
  if (componentResult.failed) {
5536
- logger26.error("Component tests failed.");
5537
+ logger27.error("Component tests failed.");
5537
5538
  }
5538
5539
  if (e2eResult.failed) {
5539
- logger26.error("E2E tests failed.");
5540
+ logger27.error("E2E tests failed.");
5540
5541
  }
5541
- logger26.error("Test suite failed.");
5542
+ logger27.error("Test suite failed.");
5542
5543
  process.exit(1);
5543
5544
  }
5544
- logger26.success("All tests passed successfully!");
5545
+ logger27.success("All tests passed successfully!");
5545
5546
  process.exit(0);
5546
5547
  }
5547
5548
 
@@ -5549,7 +5550,7 @@ async function runAllTests(testPath, options) {
5549
5550
  import * as net from "net";
5550
5551
 
5551
5552
  // src/commands/test/utils/plugin-utils.ts
5552
- import { logger as logger27 } from "@elizaos/core";
5553
+ import { logger as logger28 } from "@elizaos/core";
5553
5554
  import * as fs14 from "fs";
5554
5555
  import path30 from "path";
5555
5556
 
@@ -5565,31 +5566,31 @@ var test = new Command10().name("test").description("Run tests for the current p
5565
5566
  const projectInfo = getProjectType(testPath);
5566
5567
  await installPluginDependencies(projectInfo);
5567
5568
  }).action(async (testPath, options) => {
5568
- logger28.info("Starting tests...");
5569
+ logger29.info("Starting tests...");
5569
5570
  try {
5570
5571
  const projectInfo = getProjectType(testPath);
5571
5572
  switch (options.type) {
5572
5573
  case "component":
5573
- logger28.info("Running component tests only...");
5574
+ logger29.info("Running component tests only...");
5574
5575
  const componentResult = await runComponentTests(testPath, options, projectInfo);
5575
5576
  if (componentResult.failed) {
5576
- logger28.error("Component tests failed.");
5577
+ logger29.error("Component tests failed.");
5577
5578
  process.exit(1);
5578
5579
  }
5579
- logger28.success("Component tests passed successfully!");
5580
+ logger29.success("Component tests passed successfully!");
5580
5581
  break;
5581
5582
  case "e2e":
5582
- logger28.info("Running e2e tests only...");
5583
+ logger29.info("Running e2e tests only...");
5583
5584
  const e2eResult = await runE2eTests(testPath, options, projectInfo);
5584
5585
  if (e2eResult.failed) {
5585
- logger28.error("E2E tests failed.");
5586
+ logger29.error("E2E tests failed.");
5586
5587
  process.exit(1);
5587
5588
  }
5588
- logger28.success("E2E tests passed successfully!");
5589
+ logger29.success("E2E tests passed successfully!");
5589
5590
  break;
5590
5591
  case "all":
5591
5592
  default:
5592
- logger28.info("Running all tests...");
5593
+ logger29.info("Running all tests...");
5593
5594
  await runAllTests(testPath, options);
5594
5595
  break;
5595
5596
  }
@@ -5600,7 +5601,7 @@ var test = new Command10().name("test").description("Run tests for the current p
5600
5601
  });
5601
5602
 
5602
5603
  // src/index.ts
5603
- import { logger as logger29 } from "@elizaos/core";
5604
+ import { logger as logger30 } from "@elizaos/core";
5604
5605
  import { Command as Command11 } from "commander";
5605
5606
  process.env.NODE_OPTIONS = "--no-deprecation";
5606
5607
  process.env.NODE_NO_WARNINGS = "1";
@@ -5621,19 +5622,19 @@ var shutdownState = {
5621
5622
  };
5622
5623
  async function gracefulShutdown(signal) {
5623
5624
  if (!shutdownState.tryInitiateShutdown()) {
5624
- logger29.debug(`Ignoring ${signal} - shutdown already in progress`);
5625
+ logger30.debug(`Ignoring ${signal} - shutdown already in progress`);
5625
5626
  return;
5626
5627
  }
5627
- logger29.info(`Received ${signal}, shutting down gracefully...`);
5628
+ logger30.info(`Received ${signal}, shutting down gracefully...`);
5628
5629
  try {
5629
5630
  const serverWasStopped = await stopServer();
5630
5631
  if (serverWasStopped) {
5631
- logger29.info("Server stopped successfully");
5632
+ logger30.info("Server stopped successfully");
5632
5633
  }
5633
5634
  } catch (error) {
5634
5635
  const errorMessage = error instanceof Error ? error.message : String(error);
5635
- logger29.error(`Error stopping server: ${errorMessage}`);
5636
- logger29.debug({ error }, "Full error details:");
5636
+ logger30.error(`Error stopping server: ${errorMessage}`);
5637
+ logger30.debug({ error }, "Full error details:");
5637
5638
  }
5638
5639
  const exitCode = signal === "SIGINT" ? 130 : signal === "SIGTERM" ? 143 : 0;
5639
5640
  process.exit(exitCode);
@@ -5667,6 +5668,6 @@ async function main() {
5667
5668
  await program.parseAsync();
5668
5669
  }
5669
5670
  main().catch((error) => {
5670
- logger29.error({ error }, "An error occurred:");
5671
+ logger30.error({ error }, "An error occurred:");
5671
5672
  process.exit(1);
5672
5673
  });
@@ -41,11 +41,11 @@
41
41
  "tsup.config.ts"
42
42
  ],
43
43
  "dependencies": {
44
- "@elizaos/core": "1.4.3",
44
+ "@elizaos/core": "1.4.4",
45
45
  "zod": "^3.24.4"
46
46
  },
47
47
  "devDependencies": {
48
- "@elizaos/cli": "1.4.3",
48
+ "@elizaos/cli": "1.4.4",
49
49
  "dotenv": "16.4.5",
50
50
  "prettier": "3.5.3",
51
51
  "tsup": "8.5.0",
@@ -139,6 +139,7 @@ export function createMockRuntime(overrides: Partial<IAgentRuntime> = {}): IAgen
139
139
  getMemoriesByRoomIds: mock().mockResolvedValue([]),
140
140
  searchMemories: mock().mockResolvedValue([]),
141
141
  addEmbeddingToMemory: mock().mockImplementation(async (memory: Memory) => memory),
142
+ queueEmbeddingGeneration: mock().mockResolvedValue(undefined),
142
143
  getAllMemories: mock().mockResolvedValue([]),
143
144
  clearAllAgentMemories: mock().mockResolvedValue(undefined),
144
145
  updateMemory: mock().mockResolvedValue(true),
@@ -41,7 +41,7 @@
41
41
  "tsup.config.ts"
42
42
  ],
43
43
  "dependencies": {
44
- "@elizaos/core": "1.4.3",
44
+ "@elizaos/core": "1.4.4",
45
45
  "@tanstack/react-query": "^5.80.7",
46
46
  "clsx": "^2.1.1",
47
47
  "tailwind-merge": "^3.3.1",
@@ -50,7 +50,7 @@
50
50
  "zod": "3.24.2"
51
51
  },
52
52
  "devDependencies": {
53
- "@elizaos/cli": "1.4.3",
53
+ "@elizaos/cli": "1.4.4",
54
54
  "@tailwindcss/vite": "^4.1.10",
55
55
  "@vitejs/plugin-react-swc": "^3.10.2",
56
56
  "dotenv": "16.4.5",
@@ -164,6 +164,7 @@ export function createMockRuntime(overrides: Partial<IAgentRuntime> = {}): IAgen
164
164
  searchMemories: mock().mockResolvedValue([]),
165
165
 
166
166
  addEmbeddingToMemory: mock().mockImplementation(async (memory: Memory) => memory),
167
+ queueEmbeddingGeneration: mock().mockResolvedValue(undefined),
167
168
  getAllMemories: mock().mockResolvedValue([]),
168
169
  clearAllAgentMemories: mock().mockResolvedValue(undefined),
169
170
  updateMemory: mock().mockResolvedValue(true),
@@ -28,10 +28,10 @@
28
28
  "dist"
29
29
  ],
30
30
  "dependencies": {
31
- "@elizaos/cli": "1.4.3",
32
- "@elizaos/core": "1.4.3",
33
- "@elizaos/plugin-bootstrap": "1.4.3",
34
- "@elizaos/plugin-sql": "1.4.3",
31
+ "@elizaos/cli": "1.4.4",
32
+ "@elizaos/core": "1.4.4",
33
+ "@elizaos/plugin-bootstrap": "1.4.4",
34
+ "@elizaos/plugin-sql": "1.4.4",
35
35
  "@tanstack/react-query": "^5.29.0",
36
36
  "clsx": "^2.1.1",
37
37
  "react": "^18.3.1",
@@ -33,11 +33,11 @@
33
33
  "GUIDE.md"
34
34
  ],
35
35
  "dependencies": {
36
- "@elizaos/cli": "1.4.3",
37
- "@elizaos/core": "1.4.3",
38
- "@elizaos/plugin-bootstrap": "1.4.3",
36
+ "@elizaos/cli": "1.4.4",
37
+ "@elizaos/core": "1.4.4",
38
+ "@elizaos/plugin-bootstrap": "1.4.4",
39
39
  "@elizaos/plugin-redpill": "1.2.1",
40
- "@elizaos/plugin-sql": "1.4.3",
40
+ "@elizaos/plugin-sql": "1.4.4",
41
41
  "@phala/dstack-sdk": "0.1.11",
42
42
  "@solana/web3.js": "1.98.2",
43
43
  "@tanstack/react-query": "^5.29.0",
@@ -1,7 +1,6 @@
1
1
  import { logger, type IAgentRuntime, type Project, type ProjectAgent } from '@elizaos/core';
2
2
  import teeStarterPlugin, { StarterService } from './plugin.ts';
3
3
  import { mrTeeCharacter as character } from './character.ts';
4
- import ProjectTeeStarterTestSuite from './__tests__/e2e/project-tee-starter.e2e';
5
4
 
6
5
  const initCharacter = ({ runtime }: { runtime: IAgentRuntime }) => {
7
6
  logger.info(`Initializing character: ${character.name}`);
@@ -11,7 +10,7 @@ const initCharacter = ({ runtime }: { runtime: IAgentRuntime }) => {
11
10
  export const projectAgent: ProjectAgent = {
12
11
  character,
13
12
  init: async (runtime: IAgentRuntime) => await initCharacter({ runtime }),
14
- tests: [ProjectTeeStarterTestSuite], // Export tests from ProjectAgent
13
+ plugins: [teeStarterPlugin], // Add any additional plugins here
15
14
  };
16
15
 
17
16
  const project: Project = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/cli",
3
- "version": "1.4.3",
3
+ "version": "1.4.4",
4
4
  "description": "elizaOS CLI - Manage your AI agents and plugins",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -72,15 +72,15 @@
72
72
  "typescript": "5.8.3",
73
73
  "vite": "^6.3.5"
74
74
  },
75
- "gitHead": "966e28250672a7a0c5f934defd995c51b94c4622",
75
+ "gitHead": "670462dd40d05b9b364e9db6eadfff8403f18fdc",
76
76
  "dependencies": {
77
77
  "@anthropic-ai/claude-code": "^1.0.35",
78
78
  "@anthropic-ai/sdk": "^0.54.0",
79
79
  "@clack/prompts": "^0.11.0",
80
- "@elizaos/api-client": "1.4.3",
81
- "@elizaos/core": "1.4.3",
82
- "@elizaos/plugin-sql": "1.4.3",
83
- "@elizaos/server": "1.4.3",
80
+ "@elizaos/api-client": "1.4.4",
81
+ "@elizaos/core": "1.4.4",
82
+ "@elizaos/plugin-sql": "1.4.4",
83
+ "@elizaos/server": "1.4.4",
84
84
  "bun": "^1.2.17",
85
85
  "chalk": "^5.3.0",
86
86
  "chokidar": "^4.0.3",
@@ -41,11 +41,11 @@
41
41
  "tsup.config.ts"
42
42
  ],
43
43
  "dependencies": {
44
- "@elizaos/core": "1.4.3",
44
+ "@elizaos/core": "1.4.4",
45
45
  "zod": "^3.24.4"
46
46
  },
47
47
  "devDependencies": {
48
- "@elizaos/cli": "1.4.3",
48
+ "@elizaos/cli": "1.4.4",
49
49
  "dotenv": "16.4.5",
50
50
  "prettier": "3.5.3",
51
51
  "tsup": "8.5.0",
@@ -139,6 +139,7 @@ export function createMockRuntime(overrides: Partial<IAgentRuntime> = {}): IAgen
139
139
  getMemoriesByRoomIds: mock().mockResolvedValue([]),
140
140
  searchMemories: mock().mockResolvedValue([]),
141
141
  addEmbeddingToMemory: mock().mockImplementation(async (memory: Memory) => memory),
142
+ queueEmbeddingGeneration: mock().mockResolvedValue(undefined),
142
143
  getAllMemories: mock().mockResolvedValue([]),
143
144
  clearAllAgentMemories: mock().mockResolvedValue(undefined),
144
145
  updateMemory: mock().mockResolvedValue(true),
@@ -41,7 +41,7 @@
41
41
  "tsup.config.ts"
42
42
  ],
43
43
  "dependencies": {
44
- "@elizaos/core": "1.4.3",
44
+ "@elizaos/core": "1.4.4",
45
45
  "@tanstack/react-query": "^5.80.7",
46
46
  "clsx": "^2.1.1",
47
47
  "tailwind-merge": "^3.3.1",
@@ -50,7 +50,7 @@
50
50
  "zod": "3.24.2"
51
51
  },
52
52
  "devDependencies": {
53
- "@elizaos/cli": "1.4.3",
53
+ "@elizaos/cli": "1.4.4",
54
54
  "@tailwindcss/vite": "^4.1.10",
55
55
  "@vitejs/plugin-react-swc": "^3.10.2",
56
56
  "dotenv": "16.4.5",
@@ -164,6 +164,7 @@ export function createMockRuntime(overrides: Partial<IAgentRuntime> = {}): IAgen
164
164
  searchMemories: mock().mockResolvedValue([]),
165
165
 
166
166
  addEmbeddingToMemory: mock().mockImplementation(async (memory: Memory) => memory),
167
+ queueEmbeddingGeneration: mock().mockResolvedValue(undefined),
167
168
  getAllMemories: mock().mockResolvedValue([]),
168
169
  clearAllAgentMemories: mock().mockResolvedValue(undefined),
169
170
  updateMemory: mock().mockResolvedValue(true),
@@ -28,10 +28,10 @@
28
28
  "dist"
29
29
  ],
30
30
  "dependencies": {
31
- "@elizaos/cli": "1.4.3",
32
- "@elizaos/core": "1.4.3",
33
- "@elizaos/plugin-bootstrap": "1.4.3",
34
- "@elizaos/plugin-sql": "1.4.3",
31
+ "@elizaos/cli": "1.4.4",
32
+ "@elizaos/core": "1.4.4",
33
+ "@elizaos/plugin-bootstrap": "1.4.4",
34
+ "@elizaos/plugin-sql": "1.4.4",
35
35
  "@tanstack/react-query": "^5.29.0",
36
36
  "clsx": "^2.1.1",
37
37
  "react": "^18.3.1",
@@ -33,11 +33,11 @@
33
33
  "GUIDE.md"
34
34
  ],
35
35
  "dependencies": {
36
- "@elizaos/cli": "1.4.3",
37
- "@elizaos/core": "1.4.3",
38
- "@elizaos/plugin-bootstrap": "1.4.3",
36
+ "@elizaos/cli": "1.4.4",
37
+ "@elizaos/core": "1.4.4",
38
+ "@elizaos/plugin-bootstrap": "1.4.4",
39
39
  "@elizaos/plugin-redpill": "1.2.1",
40
- "@elizaos/plugin-sql": "1.4.3",
40
+ "@elizaos/plugin-sql": "1.4.4",
41
41
  "@phala/dstack-sdk": "0.1.11",
42
42
  "@solana/web3.js": "1.98.2",
43
43
  "@tanstack/react-query": "^5.29.0",
@@ -1,7 +1,6 @@
1
1
  import { logger, type IAgentRuntime, type Project, type ProjectAgent } from '@elizaos/core';
2
2
  import teeStarterPlugin, { StarterService } from './plugin.ts';
3
3
  import { mrTeeCharacter as character } from './character.ts';
4
- import ProjectTeeStarterTestSuite from './__tests__/e2e/project-tee-starter.e2e';
5
4
 
6
5
  const initCharacter = ({ runtime }: { runtime: IAgentRuntime }) => {
7
6
  logger.info(`Initializing character: ${character.name}`);
@@ -11,7 +10,7 @@ const initCharacter = ({ runtime }: { runtime: IAgentRuntime }) => {
11
10
  export const projectAgent: ProjectAgent = {
12
11
  character,
13
12
  init: async (runtime: IAgentRuntime) => await initCharacter({ runtime }),
14
- tests: [ProjectTeeStarterTestSuite], // Export tests from ProjectAgent
13
+ plugins: [teeStarterPlugin], // Add any additional plugins here
15
14
  };
16
15
 
17
16
  const project: Project = {