UNPKG

create-eliza

Version:

Initialize an Eliza project

104 lines (100 loc) 3.32 kB
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 || importedModule.default.agent)) { 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 || projectData.agent) { 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 || []; const agent = agents[0]; if (!agent) { logger.error("No agents defined in project configuration"); throw new Error("No agents defined in project configuration"); } logger.info("Creating runtime with agent:", agent); const runtime = new AgentRuntime({ agentId: v4_default(), character: agent.character, plugins: agent.plugins || [] }); if (agent.init) { await agent.init(runtime); } return { runtime, path: projectPath, agent }; } catch (error) { logger.error("Failed to load project:", error); throw error; } } export { loadProject }; //# sourceMappingURL=chunk-ESYFK3BS.js.map