UNPKG

eve

Version:

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

1 lines 1.55 kB
import{join,posix}from"node:path";import{readFile,readdir}from"node:fs/promises";import{MODEL_SKILL_ROOT}from"#shared/skill-paths.js";import{WORKSPACE_ROOT}from"#runtime/workspace/types.js";const RESOURCE_WORKSPACE_DIRECTORY=`workspace`,RESOURCE_SKILLS_DIRECTORY=`skills`;async function materializeWorkspaceDirectory(t){let n=[],s=await readdir(t,{withFileTypes:!0}),c=s.find(e=>e.name===RESOURCE_WORKSPACE_DIRECTORY&&e.isDirectory()),l=s.find(e=>e.name===RESOURCE_SKILLS_DIRECTORY&&e.isDirectory());return c!==void 0||l!==void 0?(c!==void 0&&await addMaterializedDirectoryFiles({files:n,logicalDirectoryPath:`.`,sourceDirectoryPath:join(t,RESOURCE_WORKSPACE_DIRECTORY),targetRoot:WORKSPACE_ROOT}),l!==void 0&&await addMaterializedDirectoryFiles({files:n,logicalDirectoryPath:`.`,sourceDirectoryPath:join(t,RESOURCE_SKILLS_DIRECTORY),targetRoot:MODEL_SKILL_ROOT})):await addMaterializedDirectoryFiles({files:n,logicalDirectoryPath:`.`,sourceDirectoryPath:t,targetRoot:WORKSPACE_ROOT}),n.sort((e,t)=>e.path.localeCompare(t.path)),n}async function addMaterializedDirectoryFiles(i){let a=await readdir(i.sourceDirectoryPath,{withFileTypes:!0});for(let r of a){if(!r.isDirectory()&&!r.isFile())continue;let a=join(i.sourceDirectoryPath,r.name),o=posix.join(i.logicalDirectoryPath,r.name);if(r.isDirectory()){await addMaterializedDirectoryFiles({files:i.files,logicalDirectoryPath:o,sourceDirectoryPath:a,targetRoot:i.targetRoot});continue}i.files.push({content:await readFile(a),path:posix.join(i.targetRoot,o)})}}export{materializeWorkspaceDirectory};