eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 2.57 kB
JavaScript
import{boolean,looseObject,number,string}from"../../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/schemas.js";import"../../node_modules/.pnpm/zod@4.5.4/node_modules/zod/index.js";import{mkdir,readFile,rename,rm,writeFile}from"node:fs/promises";import{dirname,isAbsolute,join}from"node:path";import{homedir}from"node:os";import{createEveTelemetryIdentity}from"#cli/telemetry/identity.js";function configuredDirectory(e,t){return e&&isAbsolute(e)?e:t}function eveConfigPath(){let e=homedir();return process.platform===`win32`?join(configuredDirectory(process.env.APPDATA,join(e,`AppData`,`Roaming`)),`eve`,`config.json`):process.platform===`darwin`?join(e,`Library`,`Preferences`,`eve`,`config.json`):join(configuredDirectory(process.env.XDG_CONFIG_HOME,join(e,`.config`)),`eve`,`config.json`)}const EveConfigSchema=looseObject({telemetry:looseObject({enabled:boolean().default(!0),installationId:string().optional(),noticeVersion:number().int().positive().optional(),notifiedAt:string().optional(),projectSalt:string().optional()}).optional()});function parsePreference(e){let t=EveConfigSchema.safeParse(e).data?.telemetry;return{enabled:t?.enabled??!0,notified:t?.noticeVersion===1}}async function readEveTelemetryPreference(){try{return parsePreference(JSON.parse(await readFile(eveConfigPath(),`utf8`)))}catch{return{enabled:!0,notified:!1}}}async function readOrCreateEveTelemetryIdentity(){let e;try{e=EveConfigSchema.safeParse(JSON.parse(await readFile(eveConfigPath(),`utf8`))).data?.telemetry}catch{}let t=e?.installationId&&e.projectSalt?{installationId:e.installationId,projectSalt:e.projectSalt}:createEveTelemetryIdentity();return(e?.installationId!==t.installationId||e?.projectSalt!==t.projectSalt)&&await updateEveTelemetryPreference(t),t}async function updateEveTelemetryPreference(e){let t=eveConfigPath(),n={};try{let e=JSON.parse(await readFile(t,`utf8`));typeof e==`object`&&e&&(n=e)}catch{}let r=typeof n.telemetry==`object`&&n.telemetry!==null?n.telemetry:{},i={...n,telemetry:{...r,...e}},a=`${t}.${process.pid}.${Date.now()}.tmp`;await mkdir(dirname(t),{recursive:!0});try{await writeFile(a,`${JSON.stringify(i,null,2)}\n`,{mode:384}),await rename(a,t)}catch(e){throw await rm(a,{force:!0}),e}}async function setEveTelemetryEnabled(e){await updateEveTelemetryPreference({enabled:e})}async function markEveTelemetryNotified(){await updateEveTelemetryPreference({noticeVersion:1,notifiedAt:new Date().toISOString()})}export{markEveTelemetryNotified,readEveTelemetryPreference,readOrCreateEveTelemetryIdentity,setEveTelemetryEnabled};