UNPKG

eve

Version:

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

1 lines 1.84 kB
import{setChannelInstrumentationKind}from"#channel/compiled-channel.js";import{toErrorMessage}from"#shared/errors.js";import{normalizeChannelDefinition}from"#internal/authored-definition/channel.js";import{ResolveAgentError,createResolvedModuleSourceRef,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";import{HTTP_ADAPTER_KIND}from"#channel/http.js";import{isHttpRouteDefinition,isWebSocketRouteDefinition}from"#channel/routes.js";async function resolveChannelDefinition(e,t,n){try{let r=await loadResolvedModuleExport({definition:e,kindLabel:`channel`,moduleMap:t,nodeId:n}),i=normalizeChannelDefinition(r,`Expected the channel export "${e.exportName??`default`}" from "${e.logicalPath}" to match the public eve shape.`),a=createResolvedModuleSourceRef({exportName:e.exportName,logicalPath:e.logicalPath,sourceId:e.sourceId}),o=i.routes.find(t=>t.method.toUpperCase()===e.method.toUpperCase()&&t.path===e.urlPath),s=`channel:${e.name}`;setChannelInstrumentationKind(i,s);let c=i.adapter;c&&c.kind!==HTTP_ADAPTER_KIND&&(c.kind=s);let l=resolveHttpRoute(e,o),u=resolveWebSocketRoute(e,o);return{name:e.name,method:e.method,urlPath:e.urlPath,cors:e.cors,fetch:async(e,t)=>l?l.handler(e,t):Response.json({error:`No matching route handler.`,ok:!1},{status:404}),handler:l?.handler,websocket:u?.handler,receive:i.receive,definition:i,adapter:c,turnPolicy:i.turnPolicy,...a}}catch(t){throw t instanceof ResolveAgentError?t:new ResolveAgentError(`Failed to attach the channel definition from "${e.logicalPath}": ${toErrorMessage(t)}`,{logicalPath:e.logicalPath,sourceId:e.sourceId})}}function resolveHttpRoute(e,t){if(t!==void 0&&e.method!==`WEBSOCKET`&&isHttpRouteDefinition(t))return t}function resolveWebSocketRoute(e,t){if(t!==void 0&&e.method===`WEBSOCKET`&&isWebSocketRouteDefinition(t))return t}export{resolveChannelDefinition};