eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.62 kB
JavaScript
const SELF_MODIFICATION_GITHUB_TOKEN_ENV=`EVE_SELF_MODIFICATION_GITHUB_TOKEN`;function hasGitHubCredential(){return(process.env.EVE_SELF_MODIFICATION_GITHUB_TOKEN?.trim().length??0)>0}function createGitHubCredentialProvider(e){return e.kind===`pat`?defaultGitHubCredentialProvider:createVercelConnectCredentialProvider(e.connector)}async function resolveGitHubCredential(e){return defaultGitHubCredentialProvider.resolve(e)}const defaultGitHubCredentialProvider={async resolve(){let e=process.env[SELF_MODIFICATION_GITHUB_TOKEN_ENV];if(e===void 0||e.trim().length===0)throw Error(`Self-modification requires ${SELF_MODIFICATION_GITHUB_TOKEN_ENV} in the deployment environment.`);return e.trim()}};function createVercelConnectCredentialProvider(e){return{async resolve(t){try{let{getToken:n}=await import(`@vercel/connect`),r=await n(e,{authorizationDetails:[{type:`github_app_installation`,repositories:[`${t.repository.owner}/${t.repository.repo}`]}],scopes:t.capability===`checkout`?[`contents:read`,`metadata:read`]:[`contents:write`,`pull_requests:write`,`metadata:read`],subject:{type:`app`}});if(r.trim().length===0)throw Error(`empty token`);return r}catch(t){throw Error(`Self-modification could not obtain a GitHub credential from Vercel Connect for ${e}. Install and attach the configured GitHub connector to this Vercel project, install the managed GitHub App for the configured repository, then retry.`,{cause:t})}}}}export{SELF_MODIFICATION_GITHUB_TOKEN_ENV,createGitHubCredentialProvider,createVercelConnectCredentialProvider,defaultGitHubCredentialProvider,hasGitHubCredential,resolveGitHubCredential};