eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.09 kB
JavaScript
import{expectFunction,expectObjectRecord}from"../internal/authored-module.js";import{ResolveAgentError,loadResolvedModuleExport}from"./resolve-helpers.js";import{toErrorMessage}from"../shared/errors.js";async function resolveHookDefinition(a,o,s){try{let n=expectObjectRecord(await loadResolvedModuleExport({definition:a,kindLabel:`hook`,moduleMap:o,nodeId:s}),describe(a,`to return an object`)),i={},c=n.events;if(c!==void 0){let n=expectObjectRecord(c,describe(a,"to expose `events` as an object"));for(let[t,r]of Object.entries(n))r!==void 0&&(i[t]=expectFunction(r,describe(a,`to provide a function for "events.${t}"`)))}return{events:i,exportName:a.exportName,logicalPath:a.logicalPath,slug:a.slug,sourceId:a.sourceId,sourceKind:`module`}}catch(e){throw e instanceof ResolveAgentError?e:new ResolveAgentError(`Failed to attach hook handlers from "${a.logicalPath}": ${toErrorMessage(e)}`,{logicalPath:a.logicalPath,sourceId:a.sourceId})}}function describe(e,t){return`Expected the hook export "${e.exportName??`default`}" from "${e.logicalPath}" ${t}.`}export{resolveHookDefinition};