UNPKG

eve

Version:

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

3 lines 2.4 kB
import{createHash}from"node:crypto";import{parseWithNitroRolldownAst}from"#internal/bundler/nitro-rolldown.js";import{findProperty,walkNode}from"#internal/workflow-bundle/dynamic-tool-ast-references.js";import{stableModuleId}from"#internal/workflow-bundle/stable-module-id.js";async function transformDynamicRemoteAgentCredentials(e,t){if(!t.includes(`defineDynamic`)||!t.includes(`defineRemoteAgent`)||!t.includes(`auth`)&&!t.includes(`headers`))return null;let n=findCredentialsFactories(e,t,await parseWithNitroRolldownAst(e,t));return n.length===0?null:applyTransform(t,n)}function findCredentialsFactories(e,t,n){let r=[],i=stableModuleId(e);return walkNode(n,e=>{if(e.type!==`CallExpression`||e.callee?.type!==`Identifier`||e.callee.name!==`defineRemoteAgent`||e.arguments?.length!==1||e.start===void 0||e.end===void 0)return!0;let n=e.arguments[0];if(n.type!==`ObjectExpression`)return!1;let a=findProperty(n,`auth`),o=findProperty(n,`headers`);if(a===void 0&&o===void 0)return!1;let s=t.slice(e.start,e.end),c=createHash(`sha256`).update(`${i}//${s}`).digest(`hex`).slice(0,16);return r.push({authPropertySource:sliceNode(t,a),callEnd:e.end,callSource:s,callStart:e.start,headersPropertySource:sliceNode(t,o),hoistedName:`__eve_dynamic_remote_credentials_${c}`}),!1}),r}function applyTransform(e,t){let n=[],r=[],i=[],a=new Set;for(let e of t){let t=[e.authPropertySource,e.headersPropertySource].filter(e=>e!==void 0),o=`eve:dynamic-remote-agent//${e.hoistedName}`;a.has(e.hoistedName)||(a.add(e.hoistedName),r.push(`function ${e.hoistedName}() {\n return { ${t.join(`, `)} };\n}`),i.push(`${e.hoistedName}.stepId = ${JSON.stringify(o)};`),i.push(`__eveStepRegistry.set(${JSON.stringify(o)}, ${e.hoistedName});`)),n.push({start:e.callStart,end:e.callEnd,text:`Object.defineProperty(${e.callSource}, "__eveResolveRemoteAgentCredentials", { value: ${e.hoistedName} })`})}let o=e;for(let e of n.sort((e,t)=>t.start-e.start))o=o.slice(0,e.start)+e.text+o.slice(e.end);return{code:`${[`var __eveStepRegistrySym = Symbol.for("@workflow/core//registeredSteps");`,`if (!globalThis[__eveStepRegistrySym]) globalThis[__eveStepRegistrySym] = new Map();`,`var __eveStepRegistry = globalThis[__eveStepRegistrySym];`].join(` `)}\n${o}\n\n${[...r,...i].join(` `)}\n`}}function sliceNode(e,t){return t?.start===void 0||t.end===void 0?void 0:e.slice(t.start,t.end)}export{transformDynamicRemoteAgentCredentials};