UNPKG

eve

Version:

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

3 lines 1.11 kB
const MAX_CACHED_CONTENT_CHARS=2e5;var FileContentCache=class{#e=new Map;observeWrite(e){let t=this.#e.get(e.path);if(t?.writerCallId===e.callId)return t.previous;if(e.content.length>MAX_CACHED_CONTENT_CHARS){this.#e.delete(e.path);return}let n=t?.content,r={content:e.content,writerCallId:e.callId};return n!==void 0&&(r.previous=n),this.#e.set(e.path,r),n}clear(){this.#e.clear()}observeRead(e){let t=readFileResultShape(e);if(t===void 0||t.truncated||t.content.length>MAX_CACHED_CONTENT_CHARS)return;let n=reconstructNumberedLines(t.content);n!==void 0&&n.length===t.totalLines&&this.#e.set(t.path,{content:n.join(` `)})}};function readFileResultShape(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let{content:t,path:n,totalLines:r,truncated:i}=e;if(typeof t==`string`&&typeof n==`string`&&typeof r==`number`&&typeof i==`boolean`)return{content:t,path:n,totalLines:r,truncated:i}}function reconstructNumberedLines(e){if(e===``)return[];let t=[];for(let[n,r]of e.split(` `).entries()){let e=/^(\d+): (.*)$/su.exec(r);if(e===null||Number(e[1])!==n+1)return;t.push(e[2])}return t}export{FileContentCache};