UNPKG

create-eliza

Version:

Initialize an Eliza project

125 lines (121 loc) 4.27 kB
import { createRequire } from 'module'; const require = createRequire(import.meta.url); import { AgentRuntime, logger, v4_default } from "./chunk-4OHLWYX4.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; 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 srcIndexPaths = [ resolve(projectPath, "src", "index.ts"), resolve(projectPath, "src", "index.js"), resolve(projectPath, "dist", "index.js") ]; for (const indexPath of srcIndexPaths) { if (fs.existsSync(indexPath)) { try { logger.info(`Trying to load project from ${indexPath}`); const importedModule = await import(`file://${indexPath}`); if (importedModule.default?.agents || importedModule.project?.agents) { projectConfig = importedModule.default || importedModule.project; logger.info(`Successfully loaded project with ${projectConfig.agents.length} agents`); break; } } catch (importError) { logger.warn(`Error importing ${indexPath}: ${importError}`); } } } if (!projectConfig && packageJson.main) { const mainPath = resolve(projectPath, packageJson.main); if (fs.existsSync(mainPath)) { try { const importedModule = await import(`file://${mainPath}`); if (importedModule.default?.agents || importedModule.project?.agents) { projectConfig = importedModule.default || importedModule.project; } } catch (importError) { logger.warn(`Error importing main entry: ${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-BRTSLL5H.js.map