UNPKG

eve

Version:

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

1 lines 1.21 kB
import{loadContext}from"#context/container.js";import{ReadFileStateKey,buildReadFileTargetKey,createReadFileStamp,normalizeModelPath,setReadFileStamp}from"#execution/tools/file-state.js";import{resolveAbsoluteFilePath}from"#execution/sandbox/require-sandbox.js";async function executeWriteFileOnSandbox(e,t){let{filePath:n,content:r}=t,i=await resolveAbsoluteFilePath(e,n),a=loadContext(),o=normalizeModelPath(i),s=buildReadFileTargetKey(o),c=await e.readTextFile({path:i});if(c===null){await e.writeTextFile({content:r,path:i});let t=createReadFileStamp({content:r,filePath:o});return setReadFileStamp(a,s,t),{existed:!1,path:o}}let l=a.ensure(ReadFileStateKey,()=>({byTarget:{}})).byTarget[s];if(l===void 0)throw Error(`You must read file ${n} before overwriting it. Use the read_file tool first.`);let u=createReadFileStamp({content:c,filePath:o});if(u.contentHash!==l.contentHash||u.byteLength!==l.byteLength)throw Error(`File ${n} has been modified since it was last read. Please read the file again before modifying it.`);await e.writeTextFile({content:r,path:i});let d=createReadFileStamp({content:r,filePath:o});return setReadFileStamp(a,s,d),{existed:!0,path:o}}export{executeWriteFileOnSandbox};