UNPKG

eve

Version:

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

1 lines 1.41 kB
import{vercelOidc}from"#public/agents/auth.js";import{defineRemoteAgent}from"#public/definitions/remote-agent.js";const WORKSPACE_AGENT_NAME=Symbol.for(`eve.workspace-agent.name`);function defineWorkspaceAgent(e){let t=e.transport??defaultWorkspaceAgentTransport(e.name),n=defineRemoteAgent({auth:t.auth,description:e.description??``,forwardPrincipal:e.forwardPrincipal,headers:t.headers,outputSchema:e.outputSchema,url:t.url});return Object.defineProperty(n,WORKSPACE_AGENT_NAME,{value:e.name}),n}function workspaceSubagentName(e){return isBrandedWorkspaceSubagent(e)?e[WORKSPACE_AGENT_NAME]:void 0}function isBrandedWorkspaceSubagent(e){return typeof e==`object`&&!!e&&Reflect.has(e,WORKSPACE_AGENT_NAME)}function defaultWorkspaceAgentTransport(e){let t=vercelOidc();return{auth:async()=>(requireVercelWorkspaceEnvironment(),t()),url:()=>{requireVercelWorkspaceEnvironment();let t=process.env.VERCEL_ENV===`production`?process.env.VERCEL_PROJECT_PRODUCTION_URL:process.env.VERCEL_URL;if(t===void 0||t.length===0)throw Error(`The default workspace-agent transport requires VERCEL_URL, or VERCEL_PROJECT_PRODUCTION_URL in production.`);return`https://${t}/${e}`}}}function requireVercelWorkspaceEnvironment(){if(!process.env.VERCEL)throw Error(`No default workspace-agent transport is available in this environment. Provide transport to defineWorkspaceAgent().`)}export{defineWorkspaceAgent,workspaceSubagentName};