eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.03 kB
JavaScript
import{createHash,randomUUID}from"node:crypto";import{existsSync}from"node:fs";import{execFile}from"node:child_process";import{promisify}from"node:util";const runFile=promisify(execFile);function createEveTelemetryIdentity(){return{installationId:randomUUID(),projectSalt:randomUUID()}}function isEphemeralEveTelemetryEnvironment(){return!!process.env.CI||existsSync(`/.dockerenv`)}function hashEveTelemetryProject(e,t){return createHash(`sha256`).update(e.projectSalt).update(t).digest(`hex`)}async function resolveEveTelemetryProjectId(e){let t=e.cwd??process.cwd(),n=await(e.getGitRemote??getGitRemote)(t);return hashEveTelemetryProject(e.identity,n??e.repositoryUrl??process.env.REPOSITORY_URL??t)}async function getGitRemote(e){try{let{stdout:t}=await runFile(`git`,[`config`,`--local`,`--get`,`remote.origin.url`],{cwd:e,timeout:1e3,windowsHide:!0}),n=t.trim();return n===``?void 0:n}catch{return}}export{createEveTelemetryIdentity,hashEveTelemetryProject,isEphemeralEveTelemetryEnvironment,resolveEveTelemetryProjectId};