eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.23 kB
JavaScript
import{isObject}from"#shared/guards.js";import{decodeJwt}from"#compiled/jose/index.js";function readCodexJwtExpirationMs(e){let t=parseCodexJwtClaims(e);if(t!==void 0&&typeof t.exp==`number`)return t.exp*1e3}function extractCodexAccountIdFromToken(e){let t=parseCodexJwtClaims(e);if(t===void 0)return;let n=t[`https://api.openai.com/auth`],r=t.organizations;return readNonEmptyString$1(t.chatgpt_account_id)??readNonEmptyString$1(isObject(n)?n.chatgpt_account_id:void 0)??readNonEmptyString$1(Array.isArray(r)&&isObject(r[0])?r[0].id:void 0)}function extractCodexAccountLabelFromToken(e){let t=parseCodexJwtClaims(e);if(t===void 0)return;let n=t[`https://api.openai.com/auth`],r=readEmail(t.email)??readEmail(isObject(n)?n.email:void 0);if(r!==void 0)return r;let i=readNonEmptyString$1(t.sub);return i===void 0?void 0:readEmail(i.split(`|`).at(-1))}function readEmail(e){let t=readNonEmptyString$1(e);return t!==void 0&&/^[^@\s]+@[^@\s]+\.[^@\s]+$/u.test(t)?t:void 0}function readNonEmptyString$1(e){return typeof e==`string`&&e.trim()!==``?e:void 0}function parseCodexJwtClaims(e){if(e!==void 0)try{return decodeJwt(e)}catch{return}}export{extractCodexAccountIdFromToken,extractCodexAccountLabelFromToken,readCodexJwtExpirationMs};