eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 833 B
JavaScript
import{createHash}from"node:crypto";function createSandboxProviderIdentity(e){return createHash(`sha256`).update(serialize(e,new WeakSet)).digest(`hex`)}function serialize(e,t){if(e===null||typeof e==`boolean`||typeof e==`number`||typeof e==`string`)return JSON.stringify(e);if(e===void 0)return`undefined`;if(typeof e==`function`)return`function:${e.toString()}`;if(Array.isArray(e))return`[${e.map(e=>serialize(e,t)).join(`,`)}]`;if(typeof e!=`object`)throw Error(`Unsupported sandbox provider identity value: ${typeof e}`);if(t.has(e))throw Error(`Sandbox provider identity values cannot be circular.`);t.add(e);let n=`{${Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>e.localeCompare(t)).map(([e,n])=>`${JSON.stringify(e)}:${serialize(n,t)}`).join(`,`)}}`;return t.delete(e),n}export{createSandboxProviderIdentity};