eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 4.39 kB
JavaScript
import{createHash}from"node:crypto";import{mkdir,writeFile}from"node:fs/promises";import{z}from"#compiled/zod/index.js";import{join,relative,resolve}from"node:path";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{normalizeLogicalPath}from"#discover/filesystem.js";import{discoverDiagnosticsSummarySchema}from"#discover/diagnostics.js";import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{compilerDiagnosticSchema,projectDiscoverDiagnostic,summarizeCompilerDiagnostics}from"#compiler/diagnostics.js";import{createCompiledModuleMapSource}from"#compiler/module-map.js";import{compileAgentManifest}from"#compiler/normalize-manifest.js";import{materializeWorkspaceResources}from"#compiler/workspace-resources.js";const COMPILER_DIAGNOSTICS_ARTIFACT_KIND=`eve-compiler-diagnostics`,COMPILER_DIAGNOSTICS_ARTIFACT_VERSION=2,COMPILE_METADATA_KIND=`eve-compile-metadata`,COMPILE_METADATA_VERSION=6,compilerDiagnosticsArtifactSchema=z.object({diagnostics:z.array(compilerDiagnosticSchema),kind:z.literal(COMPILER_DIAGNOSTICS_ARTIFACT_KIND),summary:discoverDiagnosticsSummarySchema,version:z.literal(2)}).strict();function resolveCompilerArtifactPaths(e){return resolveCompilerArtifactPathsAt(e,join(resolve(e),`.eve`))}function resolveCompilerArtifactPathsAt(e,t){let n=resolve(e),r=resolve(t),i=join(r,`discovery`),a=join(r,`compile`);return{appRoot:n,compiledManifestPath:join(a,`compiled-agent-manifest.json`),compileDirectoryPath:a,compileMetadataPath:join(a,`compile-metadata.json`),diagnosticsPath:join(i,`diagnostics.json`),discoveryManifestPath:join(i,`agent-discovery-manifest.json`),discoveryDirectoryPath:i,moduleMapPath:join(a,`module-map.mjs`)}}function createCompilerDiagnosticsArtifact(e){return{diagnostics:[...e],kind:COMPILER_DIAGNOSTICS_ARTIFACT_KIND,summary:summarizeCompilerDiagnostics(e),version:2}}function createCompileMetadata(e){let t=resolveInstalledPackageInfo(),n=createContentHash(e.compiledManifestJson),r=createContentHash(e.discoveryManifestJson),i=createContentHash(e.diagnosticsArtifactJson),a=createContentHash(e.moduleMapSource);return{compile:{manifest:{path:toArtifactRelativePath(e.appRoot,e.paths.compiledManifestPath),sha256:n},moduleMap:{path:toArtifactRelativePath(e.appRoot,e.paths.moduleMapPath),sha256:a}},discovery:{diagnostics:{path:toArtifactRelativePath(e.appRoot,e.paths.diagnosticsPath),sha256:i},manifest:{path:toArtifactRelativePath(e.appRoot,e.paths.discoveryManifestPath),sha256:r},sourceGraphHash:createContentHash(`${n}:${r}:${i}:${a}`),summary:e.diagnosticsSummary},generator:{name:t.name,version:t.version},kind:COMPILE_METADATA_KIND,status:e.diagnosticsSummary.errors>0?`failed`:`ready`,version:6}}async function writeCompilerArtifacts(e){let t=resolveCompilerArtifactPathsAt(e.appRoot,e.artifactLocations.writeRoot),n=resolveCompilerArtifactPathsAt(e.appRoot,e.artifactLocations.publishedRoot),r=e.diagnostics.map(e=>projectDiscoverDiagnostic(e,ROOT_COMPILED_AGENT_NODE_ID)),i=await materializeWorkspaceResources({compileDirectoryPath:t.compileDirectoryPath,manifest:await compileAgentManifest(e.manifest,{diagnostics:r})}),a=createCompilerDiagnosticsArtifact(r),o=serializeArtifactJson(i),s=serializeArtifactJson(e.manifest),c=serializeArtifactJson(a),l=createCompiledModuleMapSource({manifest:i,moduleMapPath:n.moduleMapPath}),u=createCompileMetadata({appRoot:e.appRoot,compiledManifestJson:o,diagnosticsArtifactJson:c,diagnosticsSummary:a.summary,discoveryManifestJson:s,moduleMapSource:l,paths:n}),d=serializeArtifactJson(u);return await mkdir(t.discoveryDirectoryPath,{recursive:!0}),await mkdir(t.compileDirectoryPath,{recursive:!0}),await Promise.all([writeFile(t.compiledManifestPath,o),writeFile(t.diagnosticsPath,c),writeFile(t.discoveryManifestPath,s),writeFile(t.moduleMapPath,l),writeFile(t.compileMetadataPath,d)]),{compiledManifest:i,diagnosticsArtifact:a,metadata:u,moduleMapSource:l,paths:t}}function createContentHash(e){return createHash(`sha256`).update(e).digest(`hex`)}function serializeArtifactJson(e){return`${JSON.stringify(e,null,2)}\n`}function toArtifactRelativePath(e,t){return normalizeLogicalPath(relative(resolve(e),t))}export{COMPILER_DIAGNOSTICS_ARTIFACT_KIND,COMPILER_DIAGNOSTICS_ARTIFACT_VERSION,COMPILE_METADATA_KIND,COMPILE_METADATA_VERSION,compilerDiagnosticsArtifactSchema,createCompileMetadata,resolveCompilerArtifactPaths,writeCompilerArtifacts};