UNPKG

eve

Version:

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

1 lines 1.46 kB
import{stripLogicalPathExtension}from"#discover/filesystem.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";import{normalizeChannelDefinition}from"#internal/authored-definition/channel.js";import{isDisabledRouteSentinel}from"#public/definitions/channel.js";import{readWorkflowFunctionId}from"#internal/workflow/reference.js";import{workflowCallbackErrorMessage}from"#shared/workflow-tool-context.js";async function compileChannelDefinition(e,t,n){let r=await loadModuleBackedDefinition({binding:n.binding,kind:`channel`,loadNamespace:n.loadNamespace,source:t}),i=stripLogicalPathExtension(t.logicalPath).replace(/^channels\//,``);if(isDisabledRouteSentinel(r))return{kind:`disabled`,name:i};let a=normalizeChannelDefinition(r,`Expected the channel export "${t.exportName??`default`}" from "${t.logicalPath}" to match the public eve shape.`);for(let e of a.routes)if(readWorkflowFunctionId(e.handler)!==void 0)throw Error(`${t.logicalPath} (${e.method} ${e.path}): ${workflowCallbackErrorMessage(`channel`)}`);return{definitions:a.routes.map(e=>({kind:`channel`,name:i,logicalPath:t.logicalPath,method:e.method.toUpperCase(),urlPath:e.path,sourceId:t.sourceId,sourceKind:`module`,exportName:t.exportName,adapterKind:extractAdapterKind(a.adapter),cors:a.cors})),kind:`channel`}}function extractAdapterKind(e){if(typeof e!=`object`||!e)return;let t=e.kind;return typeof t==`string`&&t.length>0?t:void 0}export{compileChannelDefinition};