@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 +122 -121
- package/dist/templates/plugin-quick-starter/package.json +2 -2
- package/dist/templates/plugin-quick-starter/src/__tests__/test-utils.ts +1 -0
- package/dist/templates/plugin-starter/package.json +2 -2
- package/dist/templates/plugin-starter/src/__tests__/test-utils.ts +1 -0
- package/dist/templates/project-starter/package.json +4 -4
- package/dist/templates/project-tee-starter/package.json +4 -4
- package/dist/templates/project-tee-starter/src/index.ts +1 -2
- package/package.json +6 -6
- package/templates/plugin-quick-starter/package.json +2 -2
- package/templates/plugin-quick-starter/src/__tests__/test-utils.ts +1 -0
- package/templates/plugin-starter/package.json +2 -2
- package/templates/plugin-starter/src/__tests__/test-utils.ts +1 -0
- package/templates/project-starter/package.json +4 -4
- package/templates/project-tee-starter/package.json +4 -4
- package/templates/project-tee-starter/src/index.ts +1 -2
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 {
|
|
5030
|
-
var phalaCliCommand = new Command8("phala").description("Official Phala Cloud CLI - Manage TEE deployments on Phala Cloud").allowUnknownOption().helpOption(false).action(async (
|
|
5031
|
-
const
|
|
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
|
-
|
|
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", (
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
${emoji.error("Error: npx not found. Please install Node.js and npm:")}`
|
|
5044
|
-
);
|
|
5045
|
-
|
|
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
|
-
|
|
5051
|
+
logger22.error(`
|
|
5051
5052
|
${emoji.error("Error: Failed to execute Phala CLI")}`);
|
|
5052
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5064
|
-
|
|
5064
|
+
logger22.error({ error, args }, "Error running Phala CLI");
|
|
5065
|
+
logger22.error(`
|
|
5065
5066
|
${emoji.error("Error: Failed to run Phala CLI")}`);
|
|
5066
|
-
|
|
5067
|
-
|
|
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
|
|
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
|
|
5097
|
+
import { logger as logger27 } from "@elizaos/core";
|
|
5097
5098
|
|
|
5098
5099
|
// src/commands/test/utils/project-utils.ts
|
|
5099
|
-
import { logger as
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
5201
|
+
logger25.info("Running TypeScript validation...");
|
|
5201
5202
|
const typeCheckResult = await runTypeCheck(cwd, true);
|
|
5202
5203
|
if (!typeCheckResult.success) {
|
|
5203
|
-
|
|
5204
|
-
typeCheckResult.errors.forEach((error) =>
|
|
5204
|
+
logger25.error("TypeScript validation failed:");
|
|
5205
|
+
typeCheckResult.errors.forEach((error) => logger25.error(error));
|
|
5205
5206
|
return { failed: true };
|
|
5206
5207
|
}
|
|
5207
|
-
|
|
5208
|
+
logger25.success("TypeScript validation passed");
|
|
5208
5209
|
}
|
|
5209
5210
|
if (!options.skipBuild) {
|
|
5210
5211
|
try {
|
|
5211
|
-
|
|
5212
|
+
logger25.info(`Building ${isPlugin2 ? "plugin" : "project"}...`);
|
|
5212
5213
|
await buildProject(cwd, isPlugin2);
|
|
5213
|
-
|
|
5214
|
+
logger25.success(`Build completed successfully`);
|
|
5214
5215
|
} catch (buildError) {
|
|
5215
|
-
|
|
5216
|
+
logger25.error(`Build failed: ${buildError}`);
|
|
5216
5217
|
return { failed: true };
|
|
5217
5218
|
}
|
|
5218
5219
|
}
|
|
5219
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5243
|
+
logger25.info("Component tests completed");
|
|
5243
5244
|
return { failed: !result.success };
|
|
5244
5245
|
} catch (error) {
|
|
5245
|
-
|
|
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
|
|
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
|
-
|
|
5261
|
+
logger26.info(`Building ${isPlugin2 ? "plugin" : "project"}...`);
|
|
5261
5262
|
await buildProject(cwd, isPlugin2);
|
|
5262
|
-
|
|
5263
|
+
logger26.info(`Build completed successfully`);
|
|
5263
5264
|
} catch (buildError) {
|
|
5264
|
-
|
|
5265
|
-
|
|
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
|
-
|
|
5303
|
+
logger26.info(`Loading environment variables from: ${envFilePath}`);
|
|
5303
5304
|
dotenv2.config({ path: envFilePath });
|
|
5304
|
-
|
|
5305
|
+
logger26.info("Environment variables loaded");
|
|
5305
5306
|
} else {
|
|
5306
|
-
|
|
5307
|
+
logger26.warn(`Environment file not found: ${envFilePath}`);
|
|
5307
5308
|
}
|
|
5308
5309
|
const postgresUrl = process.env.POSTGRES_URL;
|
|
5309
|
-
|
|
5310
|
+
logger26.info(
|
|
5310
5311
|
`PostgreSQL URL for e2e tests: ${postgresUrl ? "found" : "not found (will use PGlite)"}`
|
|
5311
5312
|
);
|
|
5312
|
-
|
|
5313
|
+
logger26.info("Creating server instance...");
|
|
5313
5314
|
server = new AgentServer();
|
|
5314
|
-
|
|
5315
|
-
|
|
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
|
-
|
|
5322
|
+
logger26.info("Server initialized successfully");
|
|
5322
5323
|
} catch (initError) {
|
|
5323
|
-
|
|
5324
|
+
logger26.error({ error: initError }, "Server initialization failed:");
|
|
5324
5325
|
throw initError;
|
|
5325
5326
|
}
|
|
5326
5327
|
let project;
|
|
5327
5328
|
try {
|
|
5328
|
-
|
|
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
|
-
|
|
5337
|
-
|
|
5337
|
+
logger26.info(`Found ${project.agents.length} agents`);
|
|
5338
|
+
logger26.info("Setting up server properties...");
|
|
5338
5339
|
server.startAgent = async (character) => {
|
|
5339
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5349
|
+
logger26.warn(`Port ${desiredPort} is in use for testing, using port ${serverPort} instead.`);
|
|
5349
5350
|
}
|
|
5350
|
-
|
|
5351
|
+
logger26.info("Starting server...");
|
|
5351
5352
|
try {
|
|
5352
5353
|
await server.start(serverPort);
|
|
5353
|
-
|
|
5354
|
+
logger26.info({ serverPort }, "Server started successfully on port");
|
|
5354
5355
|
} catch (error) {
|
|
5355
|
-
|
|
5356
|
+
logger26.error({ error }, "Error starting server:");
|
|
5356
5357
|
if (error instanceof Error) {
|
|
5357
|
-
|
|
5358
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5392
|
+
logger26.info("Default test agent started successfully");
|
|
5392
5393
|
} catch (pluginError) {
|
|
5393
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5419
|
-
|
|
5419
|
+
logger26.error({ message: agentError.message }, "Error details:");
|
|
5420
|
+
logger26.error({ stack: agentError.stack }, "Stack trace:");
|
|
5420
5421
|
}
|
|
5421
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5436
|
+
logger26.debug(`Running tests for plugin: ${project.pluginModule?.name}`);
|
|
5436
5437
|
} else {
|
|
5437
|
-
|
|
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
|
-
|
|
5459
|
+
logger26.error({ error }, "Error in runE2eTests:");
|
|
5459
5460
|
if (error instanceof Error) {
|
|
5460
|
-
|
|
5461
|
-
|
|
5461
|
+
logger26.error({ message: error.message }, "Error details:");
|
|
5462
|
+
logger26.error({ stack: error.stack }, "Stack trace:");
|
|
5462
5463
|
} else {
|
|
5463
|
-
|
|
5464
|
-
|
|
5464
|
+
logger26.error({ type: typeof error }, "Unknown error type:");
|
|
5465
|
+
logger26.error({ error }, "Error value:");
|
|
5465
5466
|
try {
|
|
5466
|
-
|
|
5467
|
+
logger26.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
|
|
5467
5468
|
} catch (e) {
|
|
5468
|
-
|
|
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
|
-
|
|
5492
|
+
logger26.error({ error }, "Error in runE2eTests:");
|
|
5492
5493
|
if (error instanceof Error) {
|
|
5493
|
-
|
|
5494
|
-
|
|
5494
|
+
logger26.error({ message: error.message }, "Error details:");
|
|
5495
|
+
logger26.error({ stack: error.stack }, "Stack trace:");
|
|
5495
5496
|
} else {
|
|
5496
|
-
|
|
5497
|
-
|
|
5497
|
+
logger26.error({ type: typeof error }, "Unknown error type:");
|
|
5498
|
+
logger26.error({ error }, "Error value:");
|
|
5498
5499
|
try {
|
|
5499
|
-
|
|
5500
|
+
logger26.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
|
|
5500
5501
|
} catch (e) {
|
|
5501
|
-
|
|
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
|
-
|
|
5508
|
+
logger26.error({ error }, "Error in runE2eTests:");
|
|
5508
5509
|
if (error instanceof Error) {
|
|
5509
|
-
|
|
5510
|
-
|
|
5510
|
+
logger26.error({ message: error.message }, "Error details:");
|
|
5511
|
+
logger26.error({ stack: error.stack }, "Stack trace:");
|
|
5511
5512
|
} else {
|
|
5512
|
-
|
|
5513
|
-
|
|
5513
|
+
logger26.error({ type: typeof error }, "Unknown error type:");
|
|
5514
|
+
logger26.error({ error }, "Error value:");
|
|
5514
5515
|
try {
|
|
5515
|
-
|
|
5516
|
+
logger26.error({ stringified: JSON.stringify(error, null, 2) }, "Stringified error:");
|
|
5516
5517
|
} catch (e) {
|
|
5517
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5537
|
+
logger27.error("Component tests failed.");
|
|
5537
5538
|
}
|
|
5538
5539
|
if (e2eResult.failed) {
|
|
5539
|
-
|
|
5540
|
+
logger27.error("E2E tests failed.");
|
|
5540
5541
|
}
|
|
5541
|
-
|
|
5542
|
+
logger27.error("Test suite failed.");
|
|
5542
5543
|
process.exit(1);
|
|
5543
5544
|
}
|
|
5544
|
-
|
|
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
|
|
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
|
-
|
|
5569
|
+
logger29.info("Starting tests...");
|
|
5569
5570
|
try {
|
|
5570
5571
|
const projectInfo = getProjectType(testPath);
|
|
5571
5572
|
switch (options.type) {
|
|
5572
5573
|
case "component":
|
|
5573
|
-
|
|
5574
|
+
logger29.info("Running component tests only...");
|
|
5574
5575
|
const componentResult = await runComponentTests(testPath, options, projectInfo);
|
|
5575
5576
|
if (componentResult.failed) {
|
|
5576
|
-
|
|
5577
|
+
logger29.error("Component tests failed.");
|
|
5577
5578
|
process.exit(1);
|
|
5578
5579
|
}
|
|
5579
|
-
|
|
5580
|
+
logger29.success("Component tests passed successfully!");
|
|
5580
5581
|
break;
|
|
5581
5582
|
case "e2e":
|
|
5582
|
-
|
|
5583
|
+
logger29.info("Running e2e tests only...");
|
|
5583
5584
|
const e2eResult = await runE2eTests(testPath, options, projectInfo);
|
|
5584
5585
|
if (e2eResult.failed) {
|
|
5585
|
-
|
|
5586
|
+
logger29.error("E2E tests failed.");
|
|
5586
5587
|
process.exit(1);
|
|
5587
5588
|
}
|
|
5588
|
-
|
|
5589
|
+
logger29.success("E2E tests passed successfully!");
|
|
5589
5590
|
break;
|
|
5590
5591
|
case "all":
|
|
5591
5592
|
default:
|
|
5592
|
-
|
|
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
|
|
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
|
-
|
|
5625
|
+
logger30.debug(`Ignoring ${signal} - shutdown already in progress`);
|
|
5625
5626
|
return;
|
|
5626
5627
|
}
|
|
5627
|
-
|
|
5628
|
+
logger30.info(`Received ${signal}, shutting down gracefully...`);
|
|
5628
5629
|
try {
|
|
5629
5630
|
const serverWasStopped = await stopServer();
|
|
5630
5631
|
if (serverWasStopped) {
|
|
5631
|
-
|
|
5632
|
+
logger30.info("Server stopped successfully");
|
|
5632
5633
|
}
|
|
5633
5634
|
} catch (error) {
|
|
5634
5635
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
5635
|
-
|
|
5636
|
-
|
|
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
|
-
|
|
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.
|
|
44
|
+
"@elizaos/core": "1.4.4",
|
|
45
45
|
"zod": "^3.24.4"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@elizaos/cli": "1.4.
|
|
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.
|
|
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.
|
|
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.
|
|
32
|
-
"@elizaos/core": "1.4.
|
|
33
|
-
"@elizaos/plugin-bootstrap": "1.4.
|
|
34
|
-
"@elizaos/plugin-sql": "1.4.
|
|
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.
|
|
37
|
-
"@elizaos/core": "1.4.
|
|
38
|
-
"@elizaos/plugin-bootstrap": "1.4.
|
|
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.
|
|
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
|
-
|
|
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
|
+
"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": "
|
|
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.
|
|
81
|
-
"@elizaos/core": "1.4.
|
|
82
|
-
"@elizaos/plugin-sql": "1.4.
|
|
83
|
-
"@elizaos/server": "1.4.
|
|
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.
|
|
44
|
+
"@elizaos/core": "1.4.4",
|
|
45
45
|
"zod": "^3.24.4"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@elizaos/cli": "1.4.
|
|
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.
|
|
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.
|
|
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.
|
|
32
|
-
"@elizaos/core": "1.4.
|
|
33
|
-
"@elizaos/plugin-bootstrap": "1.4.
|
|
34
|
-
"@elizaos/plugin-sql": "1.4.
|
|
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.
|
|
37
|
-
"@elizaos/core": "1.4.
|
|
38
|
-
"@elizaos/plugin-bootstrap": "1.4.
|
|
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.
|
|
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
|
-
|
|
13
|
+
plugins: [teeStarterPlugin], // Add any additional plugins here
|
|
15
14
|
};
|
|
16
15
|
|
|
17
16
|
const project: Project = {
|