eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 2.12 kB
JavaScript
import{expectObjectRecord,expectOnlyKnownKeys}from"#internal/authored-module.js";import{isMemoryDefinition}from"#shared/memory-definition.js";function normalizeMemoryDefinition(e,t){if(!isMemoryDefinition(e))throw Error(t);let n=expectObjectRecord(e,t);if(expectOnlyKnownKeys(n,[`description`,`namespace`,`provider`,`scope`,`visibility`],t),n.description!==void 0&&(typeof n.description!=`string`||n.description.trim().length===0))throw Error(`${t} "description" must be a non-empty string when provided.`);if(n.namespace!==void 0&&n.namespace!==null&&typeof n.namespace!=`string`&&typeof n.namespace!=`function`)throw Error(`${t} "namespace" must be a string, null, or resolver.`);if(n.scope!==null&&typeof n.scope!=`string`&&typeof n.scope!=`function`)throw Error(`${t} "scope" must be a string, null, or resolver.`);let r=expectObjectRecord(n.provider,`${t} "provider" must be an object.`);expectOnlyKnownKeys(r,[`recall`,`capture`,`tools`],`${t} "provider"`);let i=expectObjectRecord(r.recall,`${t} "provider.recall" must be an object.`);if(expectOnlyKnownKeys(i,[`turn.started`,`compaction.completed`],`${t} "provider.recall"`),typeof i[`turn.started`]!=`function`)throw Error(`${t} provider.recall["turn.started"] must be a function.`);if(i[`compaction.completed`]!==void 0&&typeof i[`compaction.completed`]!=`function`)throw Error(`${t} provider.recall["compaction.completed"] must be a function when provided.`);if(r.capture!==void 0){let e=expectObjectRecord(r.capture,`${t} "provider.capture" must be an object when provided.`);expectOnlyKnownKeys(e,[`compaction.requested`,`turn.completed`],`${t} "provider.capture"`);for(let n of[`compaction.requested`,`turn.completed`])if(e[n]!==void 0&&typeof e[n]!=`function`)throw Error(`${t} provider.capture[${JSON.stringify(n)}] must be a function when provided.`)}if(r.tools!==void 0&&typeof r.tools!=`function`)throw Error(`${t} "provider.tools" must be a function when provided.`);if(n.visibility!==void 0&&![`scope`,`session`].includes(String(n.visibility)))throw Error(`${t} "visibility" must be "scope" or "session".`);return e}export{normalizeMemoryDefinition};