eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.93 kB
JavaScript
import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";import{normalizeMcpClientConnectionDefinition,normalizeOpenApiConnectionDefinition}from"#internal/authored-definition/connection.js";import{readConnectionProtocol}from"#public/definitions/connections/protocol.js";import{ALLOWED_DYNAMIC_CONNECTION_EVENTS,assertResolverOnlyDynamicSentinel,isDynamicSentinel}from"#dynamic/definition.js";async function compileConnectionDefinition(e,t,n){let r=await loadModuleBackedDefinition({binding:n.binding,kind:`connection`,loadNamespace:n.loadNamespace,source:t}),i=`Expected the connection export "${t.exportName??`default`}" from "${t.logicalPath}" to match the public eve shape.`;if(isDynamicSentinel(r)){assertResolverOnlyDynamicSentinel(r,i);let e=Object.keys(r.events),n=e.find(e=>!ALLOWED_DYNAMIC_CONNECTION_EVENTS.has(e));if(n!==void 0)throw Error(`${i} Dynamic connections support only "session.started" and "turn.started" handlers. Unsupported event: "${n}".`);return{kind:`dynamic-connection`,definition:{eventNames:e,exportName:t.exportName,logicalPath:t.logicalPath,slug:t.connectionName,sourceId:t.sourceId,sourceKind:`module`}}}let a=readConnectionProtocol(r),o={connectionName:t.connectionName,exportName:t.exportName,logicalPath:t.logicalPath,sourceId:t.sourceId,sourceKind:`module`},s,c;if(a===`openapi`){let e=normalizeOpenApiConnectionDefinition(r,i);s={...o,description:e.description,protocol:`openapi`,url:e.baseUrl??``},c=e.auth}else{let e=normalizeMcpClientConnectionDefinition(r,i);s={...o,description:e.description,protocol:`mcp`,url:e.url},c=e.auth}let l=extractVercelConnectMarker(c);return l!==void 0&&(s.vercelConnect=l),{definition:s,kind:`connection`}}function extractVercelConnectMarker(e){if(typeof e!=`object`||!e)return;let t=e.vercelConnect;if(typeof t!=`object`||!t)return;let n=t.connector;if(typeof n==`string`&&n.length!==0)return{connector:n}}export{compileConnectionDefinition};