create-eliza
Version:
Initialize an Eliza project
108 lines (104 loc) • 3.45 kB
JavaScript
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
import {
AgentRuntime,
logger,
v4_default
} from "./chunk-RYUT2GQB.js";
// src/project.ts
import { resolve } from "node:path";
import * as fs from "node:fs";
async function loadProject(path) {
try {
const projectPath = resolve(path);
logger.info(`Loading project from ${projectPath}`);
let projectConfig;
let projectModule = null;
const packageJsonPath = resolve(projectPath, "package.json");
if (fs.existsSync(packageJsonPath)) {
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
const isProject = packageJson.eliza?.type === "project" || packageJson.description?.toLowerCase().includes("project");
if (isProject) {
const mainEntry = packageJson.main;
if (mainEntry) {
const mainPath = resolve(projectPath, mainEntry);
if (fs.existsSync(mainPath)) {
try {
const importedModule = await import(mainPath);
if (importedModule.default && typeof importedModule.default === "object" && importedModule.default.agents) {
projectModule = importedModule;
projectConfig = projectModule.default;
}
} catch (importError) {
logger.error(`Error importing module: ${importError}`);
}
}
}
}
}
if (!projectConfig) {
const projectFiles = ["project.json", "eliza.json", "agents.json"];
for (const file of projectFiles) {
const filePath = resolve(projectPath, file);
if (fs.existsSync(filePath)) {
try {
const fileContent = fs.readFileSync(filePath, "utf-8");
const projectData = JSON.parse(fileContent);
if (projectData.agents) {
projectConfig = projectData;
break;
}
} catch (error) {
logger.warn(`Error reading possible project file ${file}: ${error}`);
}
}
}
}
if (!projectConfig) {
logger.warn("No project configuration found, using default test configuration");
projectConfig = {
agents: [{
character: {
name: "Test Agent",
bio: ["A test agent for running automated tests"],
templates: {},
settings: {},
system: "You are a test agent for running automated tests.",
messageExamples: []
}
}]
};
}
const agents = projectConfig.agents;
if (!agents || agents.length === 0) {
logger.error("No agents defined in project configuration");
throw new Error("No agents defined in project configuration");
}
logger.info(`Found ${agents.length} agents in project`);
const runtimes = [];
for (const agent of agents) {
logger.info(`Creating runtime for agent: ${agent.character.name}`);
const runtime = new AgentRuntime({
agentId: v4_default(),
character: agent.character,
plugins: agent.plugins || []
});
if (agent.init) {
await agent.init(runtime);
}
runtimes.push(runtime);
}
return {
runtimes,
path: projectPath,
agents
};
} catch (error) {
logger.error("Failed to load project:", error);
throw error;
}
}
export {
loadProject
};
//# sourceMappingURL=chunk-67VECOGH.js.map