eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 827 B
JavaScript
import{chmod,mkdir,open}from"node:fs/promises";import{join,relative,sep}from"node:path";async function createDevDiagnosticSink(e,t={}){let n=join(e,`.eve`,`logs`);await mkdir(n,{recursive:!0,mode:448}),await chmod(n,448);let r=t.now?.()??new Date,i=t.pid??process.pid,a=r.toISOString().replaceAll(`:`,`-`),o=join(n,`dev-${a}-${i}.log`);return createOpenSink(e,o,await open(o,`wx`,384),()=>t.now?.()??new Date)}function createOpenSink(e,t,n,r){let i=Promise.resolve(),a=!1,o=!1;return{path:t,displayPath:relative(e,t).split(sep).join(`/`),append(e){if(o||a)return;let t=formatDiagnosticEntry(e,r());i=i.then(()=>n.appendFile(t,`utf8`)).catch(()=>{a=!0})},async close(){o||(o=!0,await i,await n.close())}}}function formatDiagnosticEntry(e,t){return`${JSON.stringify({at:t.toISOString(),...e})}\n`}export{createDevDiagnosticSink};