UNPKG

eve

Version:

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

1 lines 954 B
import{dirname,join,resolve}from"node:path";import{createDiskProjectSource}from"#discover/project-source.js";function isJsonObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function packageDeclaresEve(e,t){let n;try{n=JSON.parse(await t.readTextFile(e))}catch(t){throw Error(`The package.json at ${e} is not valid JSON.`,{cause:t})}if(!isJsonObject(n))return!1;let r=n.dependencies;return isJsonObject(r)&&typeof r.eve==`string`}async function isEveProjectRoot(e,t={}){let n=t.source??createDiskProjectSource(),r=join(resolve(e),`package.json`);return await n.stat(r)===`file`&&packageDeclaresEve(r,n)}async function findEveProjectRoot(e,t={}){let n=t.source??createDiskProjectSource(),r=resolve(e),i=await n.stat(r)===`directory`?r:dirname(r);for(;;){let e=join(i,`package.json`);if(await n.stat(e)===`file`)return await packageDeclaresEve(e,n)?i:void 0;let t=dirname(i);if(t===i)return;i=t}}export{findEveProjectRoot,isEveProjectRoot};