UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

3 lines • 2.89 kB
import{join}from"node:path";import{resolveDiscoveryProject}from"#discover/project.js";import{discoverAgent}from"#discover/discover-agent.js";import{summarizeCompilerDiagnostics}from"#compiler/diagnostics.js";import{createDiskProjectSource}from"#discover/project-source.js";import{writeCompilerArtifacts}from"#compiler/artifacts.js";var CompileAgentError=class CompileAgentError extends Error{result;constructor(e,t){super(t),this.name=`CompileAgentError`,this.result=e}static fromDurableArtifacts(e){let[t,...n]=formatCompileAgentErrorLines(e.diagnostics);return new CompileAgentError(e,[t,`Diagnostics artifact: ${e.paths.diagnosticsPath}`,...n].join(` `))}static fromTransientArtifacts(e){return new CompileAgentError(e,formatCompileAgentErrorLines(e.diagnostics).join(` `))}};async function compileAgent(e={}){let t=await discoverAgentForCompilation(e),n=join(t.project.appRoot,`.eve`);return finishAgentCompilation(await writeAgentCompilation(t,{publishedRoot:n,writeRoot:n}),CompileAgentError.fromDurableArtifacts)}async function compileAgentInWorkspace(e){return finishAgentCompilation(await writeAgentCompilation(await discoverAgentForCompilation({developmentExtensions:e.developmentExtensions,startPath:e.startPath}),e.artifactLocations),CompileAgentError.fromTransientArtifacts)}async function discoverAgentForCompilation(e){let t=e.source??createDiskProjectSource(),n=await resolveDiscoveryProject(e.startPath,{source:t}),r=await discoverAgent({...n,source:t});return{developmentExtensions:e.developmentExtensions,diagnostics:r.diagnostics,manifest:r.manifest,project:n}}async function writeAgentCompilation(e,t){let n=await writeCompilerArtifacts({appRoot:e.project.appRoot,artifactLocations:t,diagnostics:e.diagnostics,developmentExtensions:e.developmentExtensions,manifest:e.manifest});return{diagnostics:n.diagnosticsArtifact.diagnostics,manifest:n.compiledManifest,metadata:n.metadata,paths:n.paths,project:e.project}}function finishAgentCompilation(e,t){if(e.diagnostics.some(e=>e.severity===`error`))throw t(e);return reportDiscoverWarnings(e.diagnostics),e}function reportDiscoverWarnings(e){let t=e.filter(e=>e.severity===`warning`);if(t.length!==0)for(let e of t)console.warn(`Warning [${e.code}]: ${e.message}\n source: ${formatDiagnosticSources(e)}`)}function formatCompileAgentErrorLines(e){let t=summarizeCompilerDiagnostics(e),n=[`Discovery failed with ${t.errors} error(s) and ${t.warnings} warning(s).`];if(e.length===0)return n;n.push(`Discovery diagnostics:`);for(let t of e)n.push(`- ${formatDiagnosticSeverity(t.severity)}: ${t.message}`),n.push(` source: ${formatDiagnosticSources(t)}`);return n}function formatDiagnosticSources(e){return e.sources.map(e=>e.sourcePath??e.logicalPath??e.sourceId??e.nodeId).join(`, `)}function formatDiagnosticSeverity(e){return e===`error`?`Error`:`Warning`}export{CompileAgentError,compileAgent,compileAgentInWorkspace};