@humanlayer/agentlayer-provider-auth 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -199,13 +199,14 @@ function decodeAuthInfo(value) {
199
199
  return;
200
200
  }
201
201
  function decodeOAuthAuthInfo(value) {
202
- if (typeof value.accessToken !== "string")
202
+ const accessToken = typeof value.accessToken === "string" ? value.accessToken : value.access;
203
+ if (typeof accessToken !== "string")
203
204
  return;
204
205
  return {
205
206
  kind: "oauth",
206
- accessToken: value.accessToken,
207
- ...optionalString("refreshToken", value.refreshToken),
208
- ...optionalNumber("expiresAt", value.expiresAt),
207
+ accessToken,
208
+ ...optionalString("refreshToken", value.refreshToken ?? value.refresh),
209
+ ...optionalNumber("expiresAt", value.expiresAt ?? value.expires),
209
210
  ...optionalString("idToken", value.idToken),
210
211
  ...optionalString("scope", value.scope),
211
212
  ...optionalString("tokenType", value.tokenType),
@@ -284,4 +285,4 @@ export {
284
285
  AUTH_PROVIDER_ALIASES
285
286
  };
286
287
 
287
- //# debugId=D9DD89FCBCE34B6B64756E2164756E21
288
+ //# debugId=D81A34E60DC3C1DB64756E2164756E21
package/dist/index.js.map CHANGED
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/auth.ts"],
4
4
  "sourcesContent": [
5
- "import * as fs from 'node:fs/promises'\nimport os from 'node:os'\nimport path from 'node:path'\n\nexport interface OAuthAuthInfo {\n\tkind: 'oauth'\n\taccessToken: string\n\trefreshToken?: string\n\texpiresAt?: number\n\tidToken?: string\n\tscope?: string\n\ttokenType?: string\n\taccountId?: string\n\tenterpriseUrl?: string\n}\n\nexport interface ApiAuthInfo {\n\tkind: 'api'\n\tapiKey: string\n\tmetadata?: Record<string, string>\n}\n\nexport type AuthInfo = OAuthAuthInfo | ApiAuthInfo\nexport type AuthKind = AuthInfo['kind']\nexport type CanonicalAuthProviderId = 'codex' | 'copilot' | 'copilot-enterprise'\n\nexport const AUTH_PROVIDER_IDS = {\n\tcodex: 'codex',\n\tcopilot: 'copilot',\n\tcopilotEnterprise: 'copilot-enterprise',\n} as const satisfies Record<string, CanonicalAuthProviderId>\n\nexport const AUTH_PROVIDER_ALIASES: Record<string, CanonicalAuthProviderId> = {\n\topenai: AUTH_PROVIDER_IDS.codex,\n\t'openai.codex': AUTH_PROVIDER_IDS.codex,\n\tcodex: AUTH_PROVIDER_IDS.codex,\n\t'github-copilot': AUTH_PROVIDER_IDS.copilot,\n\tcopilot: AUTH_PROVIDER_IDS.copilot,\n\t'github-copilot-enterprise': AUTH_PROVIDER_IDS.copilotEnterprise,\n\t'copilot-enterprise': AUTH_PROVIDER_IDS.copilotEnterprise,\n}\n\nexport interface AuthStore {\n\tget(providerId: string): Promise<AuthInfo | undefined>\n\tset(providerId: string, auth: AuthInfo): Promise<void>\n\tdelete(providerId: string): Promise<void>\n\tgetAll(): Promise<Record<string, AuthInfo>>\n}\n\nexport interface FileAuthStoreOptions {\n\tfilePath?: string\n\tagentSdkAuthFilePath?: string\n\topenCodeAuthFilePath?: string\n\tenableOpenCodeFallback?: boolean\n}\n\ninterface ResolvedFileAuthStoreOptions {\n\tfilePath: string\n\tagentSdkAuthFilePath: string\n\topenCodeAuthFilePath: string\n\tenableOpenCodeFallback: boolean\n}\n\nexport function createMemoryAuthStore(initialAuth: Record<string, AuthInfo> = {}): AuthStore {\n\tconst store = new Map<string, AuthInfo>()\n\n\tfor (const [providerId, auth] of Object.entries(initialAuth)) {\n\t\tstore.set(normalizeProviderId(providerId), cloneAuth(auth))\n\t}\n\n\treturn {\n\t\tasync get(providerId) {\n\t\t\tconst auth = store.get(normalizeProviderId(providerId))\n\t\t\treturn auth ? cloneAuth(auth) : undefined\n\t\t},\n\t\tasync set(providerId, auth) {\n\t\t\tstore.set(normalizeProviderId(providerId), cloneAuth(auth))\n\t\t},\n\t\tasync delete(providerId) {\n\t\t\tstore.delete(normalizeProviderId(providerId))\n\t\t},\n\t\tasync getAll() {\n\t\t\treturn cloneAuthRecord(Object.fromEntries(store.entries()))\n\t\t},\n\t}\n}\n\nexport function createFileAuthStore(options: FileAuthStoreOptions = {}): AuthStore {\n\tconst resolved = resolveFileAuthStoreOptions(options)\n\n\treturn {\n\t\tasync get(providerId) {\n\t\t\tconst key = normalizeProviderId(providerId)\n\t\t\tconst auth = (await readAuthFile(resolved.filePath))[key]\n\t\t\tif (auth) return cloneAuth(auth)\n\n\t\t\tif (!resolved.enableOpenCodeFallback) return undefined\n\n\t\t\tconst fallbackAuth = (await readAuthFile(resolved.openCodeAuthFilePath))[key]\n\t\t\tif (!fallbackAuth) return undefined\n\n\t\t\tconst allAuth = await readAuthFile(resolved.filePath)\n\t\t\tawait writeAuthFile(resolved.filePath, { ...allAuth, [key]: fallbackAuth })\n\t\t\treturn cloneAuth(fallbackAuth)\n\t\t},\n\t\tasync set(providerId, auth) {\n\t\t\tconst key = normalizeProviderId(providerId)\n\t\t\tconst allAuth = await readAuthFile(resolved.filePath)\n\t\t\tawait writeAuthFile(resolved.filePath, { ...allAuth, [key]: auth })\n\t\t},\n\t\tasync delete(providerId) {\n\t\t\tconst key = normalizeProviderId(providerId)\n\t\t\tconst allAuth = await readAuthFile(resolved.filePath)\n\t\t\tdelete allAuth[key]\n\t\t\tawait writeAuthFile(resolved.filePath, allAuth)\n\t\t},\n\t\tasync getAll() {\n\t\t\tconst allAuth = await readAuthFile(resolved.filePath)\n\t\t\tif (!resolved.enableOpenCodeFallback) return cloneAuthRecord(allAuth)\n\n\t\t\tconst fallbackAuth = await readAuthFile(resolved.openCodeAuthFilePath)\n\t\t\tlet imported = false\n\t\t\tconst merged = { ...allAuth }\n\t\t\tfor (const [providerId, auth] of Object.entries(fallbackAuth)) {\n\t\t\t\tif (merged[providerId]) continue\n\t\t\t\tmerged[providerId] = auth\n\t\t\t\timported = true\n\t\t\t}\n\n\t\t\tif (imported) {\n\t\t\t\tawait writeAuthFile(resolved.filePath, merged)\n\t\t\t}\n\n\t\t\treturn cloneAuthRecord(merged)\n\t\t},\n\t}\n}\n\nexport async function ensureFileAuthStore(options: FileAuthStoreOptions = {}): Promise<AuthStore> {\n\tconst resolved = resolveFileAuthStoreOptions(options)\n\tif (!(await fileExists(resolved.filePath))) {\n\t\tconst agentSdkAuth = await readAuthFile(resolved.agentSdkAuthFilePath)\n\t\tif (Object.keys(agentSdkAuth).length > 0) {\n\t\t\tawait writeAuthFile(resolved.filePath, agentSdkAuth)\n\t\t}\n\t}\n\treturn createFileAuthStore(options)\n}\n\nexport function getDefaultAgentLayerAuthPath(): string {\n\tif (process.env.AGENTLAYER_AUTH_PATH) return process.env.AGENTLAYER_AUTH_PATH\n\treturn path.join(getXdgDataHome(), 'agentlayer', 'auth.json')\n}\n\nexport function getDefaultAgentSdkAuthPath(): string {\n\tif (process.env.AGENT_SDK_AUTH_PATH) return process.env.AGENT_SDK_AUTH_PATH\n\treturn path.join(os.homedir(), '.humanlayer', 'agent-sdk', 'auth.json')\n}\n\nexport function getDefaultOpenCodeAuthPath(): string {\n\tif (process.env.OPENCODE_AUTH_PATH) return process.env.OPENCODE_AUTH_PATH\n\treturn path.join(getXdgDataHome(), 'opencode', 'auth.json')\n}\n\nexport async function readAuth(providerId: string, options?: FileAuthStoreOptions): Promise<AuthInfo | undefined> {\n\treturn createFileAuthStore(options).get(providerId)\n}\n\nexport async function writeAuth(providerId: string, auth: AuthInfo, options?: FileAuthStoreOptions): Promise<void> {\n\treturn createFileAuthStore(options).set(providerId, auth)\n}\n\nexport async function removeAuth(providerId: string, options?: FileAuthStoreOptions): Promise<void> {\n\treturn createFileAuthStore(options).delete(providerId)\n}\n\nexport async function readAllAuth(options?: FileAuthStoreOptions): Promise<Record<string, AuthInfo>> {\n\treturn createFileAuthStore(options).getAll()\n}\n\nexport async function requireAuth(store: AuthStore, providerId: string): Promise<AuthInfo>\nexport async function requireAuth<TKind extends AuthKind>(\n\tstore: AuthStore,\n\tproviderId: string,\n\texpectedKind: TKind,\n): Promise<Extract<AuthInfo, { kind: TKind }>>\nexport async function requireAuth(store: AuthStore, providerId: string, expectedKind?: AuthKind): Promise<AuthInfo> {\n\tconst auth = await store.get(providerId)\n\tif (!auth) {\n\t\tthrow new Error(`Missing auth for provider: ${providerId}`)\n\t}\n\tif (expectedKind && auth.kind !== expectedKind) {\n\t\tthrow new Error(`Expected ${expectedKind} auth for provider: ${providerId}, got ${auth.kind}`)\n\t}\n\treturn auth\n}\n\nexport function normalizeProviderId(providerId: string): string {\n\tconst normalized = providerId.trim().replace(/\\/+$/, '')\n\treturn AUTH_PROVIDER_ALIASES[normalized] ?? normalized\n}\n\nfunction resolveFileAuthStoreOptions(options: FileAuthStoreOptions): ResolvedFileAuthStoreOptions {\n\treturn {\n\t\tfilePath: options.filePath ?? getDefaultAgentLayerAuthPath(),\n\t\tagentSdkAuthFilePath: options.agentSdkAuthFilePath ?? getDefaultAgentSdkAuthPath(),\n\t\topenCodeAuthFilePath: options.openCodeAuthFilePath ?? getDefaultOpenCodeAuthPath(),\n\t\tenableOpenCodeFallback: options.enableOpenCodeFallback ?? options.openCodeAuthFilePath != null,\n\t}\n}\n\nasync function fileExists(filePath: string): Promise<boolean> {\n\ttry {\n\t\tawait fs.access(filePath)\n\t\treturn true\n\t} catch (error) {\n\t\tif (isNotFoundError(error)) return false\n\t\tthrow error\n\t}\n}\n\nfunction getXdgDataHome(): string {\n\treturn process.env.XDG_DATA_HOME ?? path.join(os.homedir(), '.local', 'share')\n}\n\nasync function readAuthFile(filePath: string): Promise<Record<string, AuthInfo>> {\n\tlet text: string\n\ttry {\n\t\ttext = await fs.readFile(filePath, 'utf8')\n\t} catch (error) {\n\t\tif (isNotFoundError(error)) return {}\n\t\tthrow error\n\t}\n\n\tconst parsed = JSON.parse(text) as unknown\n\tif (!isRecord(parsed)) return {}\n\n\tconst allAuth: Record<string, AuthInfo> = {}\n\tfor (const [providerId, value] of Object.entries(parsed)) {\n\t\tconst auth = decodeAuthInfo(value)\n\t\tif (!auth) continue\n\t\tallAuth[normalizeProviderId(providerId)] = auth\n\t}\n\treturn allAuth\n}\n\nasync function writeAuthFile(filePath: string, auth: Record<string, AuthInfo>): Promise<void> {\n\tconst normalizedAuth = Object.fromEntries(\n\t\tObject.entries(auth).map(([providerId, value]) => [normalizeProviderId(providerId), cloneAuth(value)]),\n\t)\n\tawait fs.mkdir(path.dirname(filePath), { recursive: true })\n\tawait fs.writeFile(filePath, `${JSON.stringify(normalizedAuth, null, '\\t')}\\n`, { mode: 0o600 })\n\tawait fs.chmod(filePath, 0o600)\n}\n\nfunction decodeAuthInfo(value: unknown): AuthInfo | undefined {\n\tif (!isRecord(value)) return undefined\n\n\tif (value.kind === 'oauth') return decodeOAuthAuthInfo(value)\n\tif (value.kind === 'api') return decodeApiAuthInfo(value)\n\tif (value.type === 'oauth') return decodeOpenCodeOAuthAuthInfo(value)\n\tif (value.type === 'api') return decodeOpenCodeApiAuthInfo(value)\n\n\treturn undefined\n}\n\nfunction decodeOAuthAuthInfo(value: Record<string, unknown>): OAuthAuthInfo | undefined {\n\tif (typeof value.accessToken !== 'string') return undefined\n\treturn {\n\t\tkind: 'oauth',\n\t\taccessToken: value.accessToken,\n\t\t...optionalString('refreshToken', value.refreshToken),\n\t\t...optionalNumber('expiresAt', value.expiresAt),\n\t\t...optionalString('idToken', value.idToken),\n\t\t...optionalString('scope', value.scope),\n\t\t...optionalString('tokenType', value.tokenType),\n\t\t...optionalString('accountId', value.accountId),\n\t\t...optionalString('enterpriseUrl', value.enterpriseUrl),\n\t}\n}\n\nfunction decodeApiAuthInfo(value: Record<string, unknown>): ApiAuthInfo | undefined {\n\tif (typeof value.apiKey !== 'string') return undefined\n\treturn {\n\t\tkind: 'api',\n\t\tapiKey: value.apiKey,\n\t\t...optionalStringRecord('metadata', value.metadata),\n\t}\n}\n\nfunction decodeOpenCodeOAuthAuthInfo(value: Record<string, unknown>): OAuthAuthInfo | undefined {\n\tif (typeof value.access !== 'string') return undefined\n\treturn {\n\t\tkind: 'oauth',\n\t\taccessToken: value.access,\n\t\t...optionalString('refreshToken', value.refresh),\n\t\t...optionalNumber('expiresAt', value.expires),\n\t\t...optionalString('accountId', value.accountId),\n\t\t...optionalString('enterpriseUrl', value.enterpriseUrl),\n\t}\n}\n\nfunction decodeOpenCodeApiAuthInfo(value: Record<string, unknown>): ApiAuthInfo | undefined {\n\tif (typeof value.key !== 'string') return undefined\n\treturn {\n\t\tkind: 'api',\n\t\tapiKey: value.key,\n\t\t...optionalStringRecord('metadata', value.metadata),\n\t}\n}\n\nfunction optionalString(key: string, value: unknown): Record<string, string> {\n\treturn typeof value === 'string' ? { [key]: value } : {}\n}\n\nfunction optionalNumber(key: string, value: unknown): Record<string, number> {\n\treturn typeof value === 'number' ? { [key]: value } : {}\n}\n\nfunction optionalStringRecord(key: string, value: unknown): Record<string, Record<string, string>> {\n\tif (!isRecord(value)) return {}\n\tconst entries = Object.entries(value).filter((entry): entry is [string, string] => typeof entry[1] === 'string')\n\treturn entries.length > 0 ? { [key]: Object.fromEntries(entries) } : {}\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isNotFoundError(error: unknown): boolean {\n\treturn isRecord(error) && error.code === 'ENOENT'\n}\n\nfunction cloneAuth<T extends AuthInfo>(auth: T): T {\n\treturn structuredClone(auth)\n}\n\nfunction cloneAuthRecord(auth: Record<string, AuthInfo>): Record<string, AuthInfo> {\n\treturn Object.fromEntries(Object.entries(auth).map(([providerId, value]) => [providerId, cloneAuth(value)]))\n}\n"
5
+ "import * as fs from 'node:fs/promises'\nimport os from 'node:os'\nimport path from 'node:path'\n\nexport interface OAuthAuthInfo {\n\tkind: 'oauth'\n\taccessToken: string\n\trefreshToken?: string\n\texpiresAt?: number\n\tidToken?: string\n\tscope?: string\n\ttokenType?: string\n\taccountId?: string\n\tenterpriseUrl?: string\n}\n\nexport interface ApiAuthInfo {\n\tkind: 'api'\n\tapiKey: string\n\tmetadata?: Record<string, string>\n}\n\nexport type AuthInfo = OAuthAuthInfo | ApiAuthInfo\nexport type AuthKind = AuthInfo['kind']\nexport type CanonicalAuthProviderId = 'codex' | 'copilot' | 'copilot-enterprise'\n\nexport const AUTH_PROVIDER_IDS = {\n\tcodex: 'codex',\n\tcopilot: 'copilot',\n\tcopilotEnterprise: 'copilot-enterprise',\n} as const satisfies Record<string, CanonicalAuthProviderId>\n\nexport const AUTH_PROVIDER_ALIASES: Record<string, CanonicalAuthProviderId> = {\n\topenai: AUTH_PROVIDER_IDS.codex,\n\t'openai.codex': AUTH_PROVIDER_IDS.codex,\n\tcodex: AUTH_PROVIDER_IDS.codex,\n\t'github-copilot': AUTH_PROVIDER_IDS.copilot,\n\tcopilot: AUTH_PROVIDER_IDS.copilot,\n\t'github-copilot-enterprise': AUTH_PROVIDER_IDS.copilotEnterprise,\n\t'copilot-enterprise': AUTH_PROVIDER_IDS.copilotEnterprise,\n}\n\nexport interface AuthStore {\n\tget(providerId: string): Promise<AuthInfo | undefined>\n\tset(providerId: string, auth: AuthInfo): Promise<void>\n\tdelete(providerId: string): Promise<void>\n\tgetAll(): Promise<Record<string, AuthInfo>>\n}\n\nexport interface FileAuthStoreOptions {\n\tfilePath?: string\n\tagentSdkAuthFilePath?: string\n\topenCodeAuthFilePath?: string\n\tenableOpenCodeFallback?: boolean\n}\n\ninterface ResolvedFileAuthStoreOptions {\n\tfilePath: string\n\tagentSdkAuthFilePath: string\n\topenCodeAuthFilePath: string\n\tenableOpenCodeFallback: boolean\n}\n\nexport function createMemoryAuthStore(initialAuth: Record<string, AuthInfo> = {}): AuthStore {\n\tconst store = new Map<string, AuthInfo>()\n\n\tfor (const [providerId, auth] of Object.entries(initialAuth)) {\n\t\tstore.set(normalizeProviderId(providerId), cloneAuth(auth))\n\t}\n\n\treturn {\n\t\tasync get(providerId) {\n\t\t\tconst auth = store.get(normalizeProviderId(providerId))\n\t\t\treturn auth ? cloneAuth(auth) : undefined\n\t\t},\n\t\tasync set(providerId, auth) {\n\t\t\tstore.set(normalizeProviderId(providerId), cloneAuth(auth))\n\t\t},\n\t\tasync delete(providerId) {\n\t\t\tstore.delete(normalizeProviderId(providerId))\n\t\t},\n\t\tasync getAll() {\n\t\t\treturn cloneAuthRecord(Object.fromEntries(store.entries()))\n\t\t},\n\t}\n}\n\nexport function createFileAuthStore(options: FileAuthStoreOptions = {}): AuthStore {\n\tconst resolved = resolveFileAuthStoreOptions(options)\n\n\treturn {\n\t\tasync get(providerId) {\n\t\t\tconst key = normalizeProviderId(providerId)\n\t\t\tconst auth = (await readAuthFile(resolved.filePath))[key]\n\t\t\tif (auth) return cloneAuth(auth)\n\n\t\t\tif (!resolved.enableOpenCodeFallback) return undefined\n\n\t\t\tconst fallbackAuth = (await readAuthFile(resolved.openCodeAuthFilePath))[key]\n\t\t\tif (!fallbackAuth) return undefined\n\n\t\t\tconst allAuth = await readAuthFile(resolved.filePath)\n\t\t\tawait writeAuthFile(resolved.filePath, { ...allAuth, [key]: fallbackAuth })\n\t\t\treturn cloneAuth(fallbackAuth)\n\t\t},\n\t\tasync set(providerId, auth) {\n\t\t\tconst key = normalizeProviderId(providerId)\n\t\t\tconst allAuth = await readAuthFile(resolved.filePath)\n\t\t\tawait writeAuthFile(resolved.filePath, { ...allAuth, [key]: auth })\n\t\t},\n\t\tasync delete(providerId) {\n\t\t\tconst key = normalizeProviderId(providerId)\n\t\t\tconst allAuth = await readAuthFile(resolved.filePath)\n\t\t\tdelete allAuth[key]\n\t\t\tawait writeAuthFile(resolved.filePath, allAuth)\n\t\t},\n\t\tasync getAll() {\n\t\t\tconst allAuth = await readAuthFile(resolved.filePath)\n\t\t\tif (!resolved.enableOpenCodeFallback) return cloneAuthRecord(allAuth)\n\n\t\t\tconst fallbackAuth = await readAuthFile(resolved.openCodeAuthFilePath)\n\t\t\tlet imported = false\n\t\t\tconst merged = { ...allAuth }\n\t\t\tfor (const [providerId, auth] of Object.entries(fallbackAuth)) {\n\t\t\t\tif (merged[providerId]) continue\n\t\t\t\tmerged[providerId] = auth\n\t\t\t\timported = true\n\t\t\t}\n\n\t\t\tif (imported) {\n\t\t\t\tawait writeAuthFile(resolved.filePath, merged)\n\t\t\t}\n\n\t\t\treturn cloneAuthRecord(merged)\n\t\t},\n\t}\n}\n\nexport async function ensureFileAuthStore(options: FileAuthStoreOptions = {}): Promise<AuthStore> {\n\tconst resolved = resolveFileAuthStoreOptions(options)\n\tif (!(await fileExists(resolved.filePath))) {\n\t\tconst agentSdkAuth = await readAuthFile(resolved.agentSdkAuthFilePath)\n\t\tif (Object.keys(agentSdkAuth).length > 0) {\n\t\t\tawait writeAuthFile(resolved.filePath, agentSdkAuth)\n\t\t}\n\t}\n\treturn createFileAuthStore(options)\n}\n\nexport function getDefaultAgentLayerAuthPath(): string {\n\tif (process.env.AGENTLAYER_AUTH_PATH) return process.env.AGENTLAYER_AUTH_PATH\n\treturn path.join(getXdgDataHome(), 'agentlayer', 'auth.json')\n}\n\nexport function getDefaultAgentSdkAuthPath(): string {\n\tif (process.env.AGENT_SDK_AUTH_PATH) return process.env.AGENT_SDK_AUTH_PATH\n\treturn path.join(os.homedir(), '.humanlayer', 'agent-sdk', 'auth.json')\n}\n\nexport function getDefaultOpenCodeAuthPath(): string {\n\tif (process.env.OPENCODE_AUTH_PATH) return process.env.OPENCODE_AUTH_PATH\n\treturn path.join(getXdgDataHome(), 'opencode', 'auth.json')\n}\n\nexport async function readAuth(providerId: string, options?: FileAuthStoreOptions): Promise<AuthInfo | undefined> {\n\treturn createFileAuthStore(options).get(providerId)\n}\n\nexport async function writeAuth(providerId: string, auth: AuthInfo, options?: FileAuthStoreOptions): Promise<void> {\n\treturn createFileAuthStore(options).set(providerId, auth)\n}\n\nexport async function removeAuth(providerId: string, options?: FileAuthStoreOptions): Promise<void> {\n\treturn createFileAuthStore(options).delete(providerId)\n}\n\nexport async function readAllAuth(options?: FileAuthStoreOptions): Promise<Record<string, AuthInfo>> {\n\treturn createFileAuthStore(options).getAll()\n}\n\nexport async function requireAuth(store: AuthStore, providerId: string): Promise<AuthInfo>\nexport async function requireAuth<TKind extends AuthKind>(\n\tstore: AuthStore,\n\tproviderId: string,\n\texpectedKind: TKind,\n): Promise<Extract<AuthInfo, { kind: TKind }>>\nexport async function requireAuth(store: AuthStore, providerId: string, expectedKind?: AuthKind): Promise<AuthInfo> {\n\tconst auth = await store.get(providerId)\n\tif (!auth) {\n\t\tthrow new Error(`Missing auth for provider: ${providerId}`)\n\t}\n\tif (expectedKind && auth.kind !== expectedKind) {\n\t\tthrow new Error(`Expected ${expectedKind} auth for provider: ${providerId}, got ${auth.kind}`)\n\t}\n\treturn auth\n}\n\nexport function normalizeProviderId(providerId: string): string {\n\tconst normalized = providerId.trim().replace(/\\/+$/, '')\n\treturn AUTH_PROVIDER_ALIASES[normalized] ?? normalized\n}\n\nfunction resolveFileAuthStoreOptions(options: FileAuthStoreOptions): ResolvedFileAuthStoreOptions {\n\treturn {\n\t\tfilePath: options.filePath ?? getDefaultAgentLayerAuthPath(),\n\t\tagentSdkAuthFilePath: options.agentSdkAuthFilePath ?? getDefaultAgentSdkAuthPath(),\n\t\topenCodeAuthFilePath: options.openCodeAuthFilePath ?? getDefaultOpenCodeAuthPath(),\n\t\tenableOpenCodeFallback: options.enableOpenCodeFallback ?? options.openCodeAuthFilePath != null,\n\t}\n}\n\nasync function fileExists(filePath: string): Promise<boolean> {\n\ttry {\n\t\tawait fs.access(filePath)\n\t\treturn true\n\t} catch (error) {\n\t\tif (isNotFoundError(error)) return false\n\t\tthrow error\n\t}\n}\n\nfunction getXdgDataHome(): string {\n\treturn process.env.XDG_DATA_HOME ?? path.join(os.homedir(), '.local', 'share')\n}\n\nasync function readAuthFile(filePath: string): Promise<Record<string, AuthInfo>> {\n\tlet text: string\n\ttry {\n\t\ttext = await fs.readFile(filePath, 'utf8')\n\t} catch (error) {\n\t\tif (isNotFoundError(error)) return {}\n\t\tthrow error\n\t}\n\n\tconst parsed = JSON.parse(text) as unknown\n\tif (!isRecord(parsed)) return {}\n\n\tconst allAuth: Record<string, AuthInfo> = {}\n\tfor (const [providerId, value] of Object.entries(parsed)) {\n\t\tconst auth = decodeAuthInfo(value)\n\t\tif (!auth) continue\n\t\tallAuth[normalizeProviderId(providerId)] = auth\n\t}\n\treturn allAuth\n}\n\nasync function writeAuthFile(filePath: string, auth: Record<string, AuthInfo>): Promise<void> {\n\tconst normalizedAuth = Object.fromEntries(\n\t\tObject.entries(auth).map(([providerId, value]) => [normalizeProviderId(providerId), cloneAuth(value)]),\n\t)\n\tawait fs.mkdir(path.dirname(filePath), { recursive: true })\n\tawait fs.writeFile(filePath, `${JSON.stringify(normalizedAuth, null, '\\t')}\\n`, { mode: 0o600 })\n\tawait fs.chmod(filePath, 0o600)\n}\n\nfunction decodeAuthInfo(value: unknown): AuthInfo | undefined {\n\tif (!isRecord(value)) return undefined\n\n\tif (value.kind === 'oauth') return decodeOAuthAuthInfo(value)\n\tif (value.kind === 'api') return decodeApiAuthInfo(value)\n\tif (value.type === 'oauth') return decodeOpenCodeOAuthAuthInfo(value)\n\tif (value.type === 'api') return decodeOpenCodeApiAuthInfo(value)\n\n\treturn undefined\n}\n\nfunction decodeOAuthAuthInfo(value: Record<string, unknown>): OAuthAuthInfo | undefined {\n\tconst accessToken = typeof value.accessToken === 'string' ? value.accessToken : value.access\n\tif (typeof accessToken !== 'string') return undefined\n\treturn {\n\t\tkind: 'oauth',\n\t\taccessToken,\n\t\t...optionalString('refreshToken', value.refreshToken ?? value.refresh),\n\t\t...optionalNumber('expiresAt', value.expiresAt ?? value.expires),\n\t\t...optionalString('idToken', value.idToken),\n\t\t...optionalString('scope', value.scope),\n\t\t...optionalString('tokenType', value.tokenType),\n\t\t...optionalString('accountId', value.accountId),\n\t\t...optionalString('enterpriseUrl', value.enterpriseUrl),\n\t}\n}\n\nfunction decodeApiAuthInfo(value: Record<string, unknown>): ApiAuthInfo | undefined {\n\tif (typeof value.apiKey !== 'string') return undefined\n\treturn {\n\t\tkind: 'api',\n\t\tapiKey: value.apiKey,\n\t\t...optionalStringRecord('metadata', value.metadata),\n\t}\n}\n\nfunction decodeOpenCodeOAuthAuthInfo(value: Record<string, unknown>): OAuthAuthInfo | undefined {\n\tif (typeof value.access !== 'string') return undefined\n\treturn {\n\t\tkind: 'oauth',\n\t\taccessToken: value.access,\n\t\t...optionalString('refreshToken', value.refresh),\n\t\t...optionalNumber('expiresAt', value.expires),\n\t\t...optionalString('accountId', value.accountId),\n\t\t...optionalString('enterpriseUrl', value.enterpriseUrl),\n\t}\n}\n\nfunction decodeOpenCodeApiAuthInfo(value: Record<string, unknown>): ApiAuthInfo | undefined {\n\tif (typeof value.key !== 'string') return undefined\n\treturn {\n\t\tkind: 'api',\n\t\tapiKey: value.key,\n\t\t...optionalStringRecord('metadata', value.metadata),\n\t}\n}\n\nfunction optionalString(key: string, value: unknown): Record<string, string> {\n\treturn typeof value === 'string' ? { [key]: value } : {}\n}\n\nfunction optionalNumber(key: string, value: unknown): Record<string, number> {\n\treturn typeof value === 'number' ? { [key]: value } : {}\n}\n\nfunction optionalStringRecord(key: string, value: unknown): Record<string, Record<string, string>> {\n\tif (!isRecord(value)) return {}\n\tconst entries = Object.entries(value).filter((entry): entry is [string, string] => typeof entry[1] === 'string')\n\treturn entries.length > 0 ? { [key]: Object.fromEntries(entries) } : {}\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isNotFoundError(error: unknown): boolean {\n\treturn isRecord(error) && error.code === 'ENOENT'\n}\n\nfunction cloneAuth<T extends AuthInfo>(auth: T): T {\n\treturn structuredClone(auth)\n}\n\nfunction cloneAuthRecord(auth: Record<string, AuthInfo>): Record<string, AuthInfo> {\n\treturn Object.fromEntries(Object.entries(auth).map(([providerId, value]) => [providerId, cloneAuth(value)]))\n}\n"
6
6
  ],
7
- "mappings": ";AAAA;AACA;AACA;AAwBO,IAAM,oBAAoB;AAAA,EAChC,OAAO;AAAA,EACP,SAAS;AAAA,EACT,mBAAmB;AACpB;AAEO,IAAM,wBAAiE;AAAA,EAC7E,QAAQ,kBAAkB;AAAA,EAC1B,gBAAgB,kBAAkB;AAAA,EAClC,OAAO,kBAAkB;AAAA,EACzB,kBAAkB,kBAAkB;AAAA,EACpC,SAAS,kBAAkB;AAAA,EAC3B,6BAA6B,kBAAkB;AAAA,EAC/C,sBAAsB,kBAAkB;AACzC;AAuBO,SAAS,qBAAqB,CAAC,cAAwC,CAAC,GAAc;AAAA,EAC5F,MAAM,QAAQ,IAAI;AAAA,EAElB,YAAY,YAAY,SAAS,OAAO,QAAQ,WAAW,GAAG;AAAA,IAC7D,MAAM,IAAI,oBAAoB,UAAU,GAAG,UAAU,IAAI,CAAC;AAAA,EAC3D;AAAA,EAEA,OAAO;AAAA,SACA,IAAG,CAAC,YAAY;AAAA,MACrB,MAAM,OAAO,MAAM,IAAI,oBAAoB,UAAU,CAAC;AAAA,MACtD,OAAO,OAAO,UAAU,IAAI,IAAI;AAAA;AAAA,SAE3B,IAAG,CAAC,YAAY,MAAM;AAAA,MAC3B,MAAM,IAAI,oBAAoB,UAAU,GAAG,UAAU,IAAI,CAAC;AAAA;AAAA,SAErD,OAAM,CAAC,YAAY;AAAA,MACxB,MAAM,OAAO,oBAAoB,UAAU,CAAC;AAAA;AAAA,SAEvC,OAAM,GAAG;AAAA,MACd,OAAO,gBAAgB,OAAO,YAAY,MAAM,QAAQ,CAAC,CAAC;AAAA;AAAA,EAE5D;AAAA;AAGM,SAAS,mBAAmB,CAAC,UAAgC,CAAC,GAAc;AAAA,EAClF,MAAM,WAAW,4BAA4B,OAAO;AAAA,EAEpD,OAAO;AAAA,SACA,IAAG,CAAC,YAAY;AAAA,MACrB,MAAM,MAAM,oBAAoB,UAAU;AAAA,MAC1C,MAAM,QAAQ,MAAM,aAAa,SAAS,QAAQ,GAAG;AAAA,MACrD,IAAI;AAAA,QAAM,OAAO,UAAU,IAAI;AAAA,MAE/B,IAAI,CAAC,SAAS;AAAA,QAAwB;AAAA,MAEtC,MAAM,gBAAgB,MAAM,aAAa,SAAS,oBAAoB,GAAG;AAAA,MACzE,IAAI,CAAC;AAAA,QAAc;AAAA,MAEnB,MAAM,UAAU,MAAM,aAAa,SAAS,QAAQ;AAAA,MACpD,MAAM,cAAc,SAAS,UAAU,KAAK,UAAU,MAAM,aAAa,CAAC;AAAA,MAC1E,OAAO,UAAU,YAAY;AAAA;AAAA,SAExB,IAAG,CAAC,YAAY,MAAM;AAAA,MAC3B,MAAM,MAAM,oBAAoB,UAAU;AAAA,MAC1C,MAAM,UAAU,MAAM,aAAa,SAAS,QAAQ;AAAA,MACpD,MAAM,cAAc,SAAS,UAAU,KAAK,UAAU,MAAM,KAAK,CAAC;AAAA;AAAA,SAE7D,OAAM,CAAC,YAAY;AAAA,MACxB,MAAM,MAAM,oBAAoB,UAAU;AAAA,MAC1C,MAAM,UAAU,MAAM,aAAa,SAAS,QAAQ;AAAA,MACpD,OAAO,QAAQ;AAAA,MACf,MAAM,cAAc,SAAS,UAAU,OAAO;AAAA;AAAA,SAEzC,OAAM,GAAG;AAAA,MACd,MAAM,UAAU,MAAM,aAAa,SAAS,QAAQ;AAAA,MACpD,IAAI,CAAC,SAAS;AAAA,QAAwB,OAAO,gBAAgB,OAAO;AAAA,MAEpE,MAAM,eAAe,MAAM,aAAa,SAAS,oBAAoB;AAAA,MACrE,IAAI,WAAW;AAAA,MACf,MAAM,SAAS,KAAK,QAAQ;AAAA,MAC5B,YAAY,YAAY,SAAS,OAAO,QAAQ,YAAY,GAAG;AAAA,QAC9D,IAAI,OAAO;AAAA,UAAa;AAAA,QACxB,OAAO,cAAc;AAAA,QACrB,WAAW;AAAA,MACZ;AAAA,MAEA,IAAI,UAAU;AAAA,QACb,MAAM,cAAc,SAAS,UAAU,MAAM;AAAA,MAC9C;AAAA,MAEA,OAAO,gBAAgB,MAAM;AAAA;AAAA,EAE/B;AAAA;AAGD,eAAsB,mBAAmB,CAAC,UAAgC,CAAC,GAAuB;AAAA,EACjG,MAAM,WAAW,4BAA4B,OAAO;AAAA,EACpD,IAAI,CAAE,MAAM,WAAW,SAAS,QAAQ,GAAI;AAAA,IAC3C,MAAM,eAAe,MAAM,aAAa,SAAS,oBAAoB;AAAA,IACrE,IAAI,OAAO,KAAK,YAAY,EAAE,SAAS,GAAG;AAAA,MACzC,MAAM,cAAc,SAAS,UAAU,YAAY;AAAA,IACpD;AAAA,EACD;AAAA,EACA,OAAO,oBAAoB,OAAO;AAAA;AAG5B,SAAS,4BAA4B,GAAW;AAAA,EACtD,IAAI,QAAQ,IAAI;AAAA,IAAsB,OAAO,QAAQ,IAAI;AAAA,EACzD,OAAO,KAAK,KAAK,eAAe,GAAG,cAAc,WAAW;AAAA;AAGtD,SAAS,0BAA0B,GAAW;AAAA,EACpD,IAAI,QAAQ,IAAI;AAAA,IAAqB,OAAO,QAAQ,IAAI;AAAA,EACxD,OAAO,KAAK,KAAK,GAAG,QAAQ,GAAG,eAAe,aAAa,WAAW;AAAA;AAGhE,SAAS,0BAA0B,GAAW;AAAA,EACpD,IAAI,QAAQ,IAAI;AAAA,IAAoB,OAAO,QAAQ,IAAI;AAAA,EACvD,OAAO,KAAK,KAAK,eAAe,GAAG,YAAY,WAAW;AAAA;AAG3D,eAAsB,QAAQ,CAAC,YAAoB,SAA+D;AAAA,EACjH,OAAO,oBAAoB,OAAO,EAAE,IAAI,UAAU;AAAA;AAGnD,eAAsB,SAAS,CAAC,YAAoB,MAAgB,SAA+C;AAAA,EAClH,OAAO,oBAAoB,OAAO,EAAE,IAAI,YAAY,IAAI;AAAA;AAGzD,eAAsB,UAAU,CAAC,YAAoB,SAA+C;AAAA,EACnG,OAAO,oBAAoB,OAAO,EAAE,OAAO,UAAU;AAAA;AAGtD,eAAsB,WAAW,CAAC,SAAmE;AAAA,EACpG,OAAO,oBAAoB,OAAO,EAAE,OAAO;AAAA;AAS5C,eAAsB,WAAW,CAAC,OAAkB,YAAoB,cAA4C;AAAA,EACnH,MAAM,OAAO,MAAM,MAAM,IAAI,UAAU;AAAA,EACvC,IAAI,CAAC,MAAM;AAAA,IACV,MAAM,IAAI,MAAM,8BAA8B,YAAY;AAAA,EAC3D;AAAA,EACA,IAAI,gBAAgB,KAAK,SAAS,cAAc;AAAA,IAC/C,MAAM,IAAI,MAAM,YAAY,mCAAmC,mBAAmB,KAAK,MAAM;AAAA,EAC9F;AAAA,EACA,OAAO;AAAA;AAGD,SAAS,mBAAmB,CAAC,YAA4B;AAAA,EAC/D,MAAM,aAAa,WAAW,KAAK,EAAE,QAAQ,QAAQ,EAAE;AAAA,EACvD,OAAO,sBAAsB,eAAe;AAAA;AAG7C,SAAS,2BAA2B,CAAC,SAA6D;AAAA,EACjG,OAAO;AAAA,IACN,UAAU,QAAQ,YAAY,6BAA6B;AAAA,IAC3D,sBAAsB,QAAQ,wBAAwB,2BAA2B;AAAA,IACjF,sBAAsB,QAAQ,wBAAwB,2BAA2B;AAAA,IACjF,wBAAwB,QAAQ,0BAA0B,QAAQ,wBAAwB;AAAA,EAC3F;AAAA;AAGD,eAAe,UAAU,CAAC,UAAoC;AAAA,EAC7D,IAAI;AAAA,IACH,MAAS,UAAO,QAAQ;AAAA,IACxB,OAAO;AAAA,IACN,OAAO,OAAO;AAAA,IACf,IAAI,gBAAgB,KAAK;AAAA,MAAG,OAAO;AAAA,IACnC,MAAM;AAAA;AAAA;AAIR,SAAS,cAAc,GAAW;AAAA,EACjC,OAAO,QAAQ,IAAI,iBAAiB,KAAK,KAAK,GAAG,QAAQ,GAAG,UAAU,OAAO;AAAA;AAG9E,eAAe,YAAY,CAAC,UAAqD;AAAA,EAChF,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,OAAO,MAAS,YAAS,UAAU,MAAM;AAAA,IACxC,OAAO,OAAO;AAAA,IACf,IAAI,gBAAgB,KAAK;AAAA,MAAG,OAAO,CAAC;AAAA,IACpC,MAAM;AAAA;AAAA,EAGP,MAAM,SAAS,KAAK,MAAM,IAAI;AAAA,EAC9B,IAAI,CAAC,SAAS,MAAM;AAAA,IAAG,OAAO,CAAC;AAAA,EAE/B,MAAM,UAAoC,CAAC;AAAA,EAC3C,YAAY,YAAY,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,IACzD,MAAM,OAAO,eAAe,KAAK;AAAA,IACjC,IAAI,CAAC;AAAA,MAAM;AAAA,IACX,QAAQ,oBAAoB,UAAU,KAAK;AAAA,EAC5C;AAAA,EACA,OAAO;AAAA;AAGR,eAAe,aAAa,CAAC,UAAkB,MAA+C;AAAA,EAC7F,MAAM,iBAAiB,OAAO,YAC7B,OAAO,QAAQ,IAAI,EAAE,IAAI,EAAE,YAAY,WAAW,CAAC,oBAAoB,UAAU,GAAG,UAAU,KAAK,CAAC,CAAC,CACtG;AAAA,EACA,MAAS,SAAM,KAAK,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1D,MAAS,aAAU,UAAU,GAAG,KAAK,UAAU,gBAAgB,MAAM,IAAI;AAAA,GAAO,EAAE,MAAM,IAAM,CAAC;AAAA,EAC/F,MAAS,SAAM,UAAU,GAAK;AAAA;AAG/B,SAAS,cAAc,CAAC,OAAsC;AAAA,EAC7D,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG;AAAA,EAEtB,IAAI,MAAM,SAAS;AAAA,IAAS,OAAO,oBAAoB,KAAK;AAAA,EAC5D,IAAI,MAAM,SAAS;AAAA,IAAO,OAAO,kBAAkB,KAAK;AAAA,EACxD,IAAI,MAAM,SAAS;AAAA,IAAS,OAAO,4BAA4B,KAAK;AAAA,EACpE,IAAI,MAAM,SAAS;AAAA,IAAO,OAAO,0BAA0B,KAAK;AAAA,EAEhE;AAAA;AAGD,SAAS,mBAAmB,CAAC,OAA2D;AAAA,EACvF,IAAI,OAAO,MAAM,gBAAgB;AAAA,IAAU;AAAA,EAC3C,OAAO;AAAA,IACN,MAAM;AAAA,IACN,aAAa,MAAM;AAAA,OAChB,eAAe,gBAAgB,MAAM,YAAY;AAAA,OACjD,eAAe,aAAa,MAAM,SAAS;AAAA,OAC3C,eAAe,WAAW,MAAM,OAAO;AAAA,OACvC,eAAe,SAAS,MAAM,KAAK;AAAA,OACnC,eAAe,aAAa,MAAM,SAAS;AAAA,OAC3C,eAAe,aAAa,MAAM,SAAS;AAAA,OAC3C,eAAe,iBAAiB,MAAM,aAAa;AAAA,EACvD;AAAA;AAGD,SAAS,iBAAiB,CAAC,OAAyD;AAAA,EACnF,IAAI,OAAO,MAAM,WAAW;AAAA,IAAU;AAAA,EACtC,OAAO;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,MAAM;AAAA,OACX,qBAAqB,YAAY,MAAM,QAAQ;AAAA,EACnD;AAAA;AAGD,SAAS,2BAA2B,CAAC,OAA2D;AAAA,EAC/F,IAAI,OAAO,MAAM,WAAW;AAAA,IAAU;AAAA,EACtC,OAAO;AAAA,IACN,MAAM;AAAA,IACN,aAAa,MAAM;AAAA,OAChB,eAAe,gBAAgB,MAAM,OAAO;AAAA,OAC5C,eAAe,aAAa,MAAM,OAAO;AAAA,OACzC,eAAe,aAAa,MAAM,SAAS;AAAA,OAC3C,eAAe,iBAAiB,MAAM,aAAa;AAAA,EACvD;AAAA;AAGD,SAAS,yBAAyB,CAAC,OAAyD;AAAA,EAC3F,IAAI,OAAO,MAAM,QAAQ;AAAA,IAAU;AAAA,EACnC,OAAO;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,MAAM;AAAA,OACX,qBAAqB,YAAY,MAAM,QAAQ;AAAA,EACnD;AAAA;AAGD,SAAS,cAAc,CAAC,KAAa,OAAwC;AAAA,EAC5E,OAAO,OAAO,UAAU,WAAW,GAAG,MAAM,MAAM,IAAI,CAAC;AAAA;AAGxD,SAAS,cAAc,CAAC,KAAa,OAAwC;AAAA,EAC5E,OAAO,OAAO,UAAU,WAAW,GAAG,MAAM,MAAM,IAAI,CAAC;AAAA;AAGxD,SAAS,oBAAoB,CAAC,KAAa,OAAwD;AAAA,EAClG,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO,CAAC;AAAA,EAC9B,MAAM,UAAU,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,UAAqC,OAAO,MAAM,OAAO,QAAQ;AAAA,EAC/G,OAAO,QAAQ,SAAS,IAAI,GAAG,MAAM,OAAO,YAAY,OAAO,EAAE,IAAI,CAAC;AAAA;AAGvE,SAAS,QAAQ,CAAC,OAAkD;AAAA,EACnE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAAA;AAG3E,SAAS,eAAe,CAAC,OAAyB;AAAA,EACjD,OAAO,SAAS,KAAK,KAAK,MAAM,SAAS;AAAA;AAG1C,SAAS,SAA6B,CAAC,MAAY;AAAA,EAClD,OAAO,gBAAgB,IAAI;AAAA;AAG5B,SAAS,eAAe,CAAC,MAA0D;AAAA,EAClF,OAAO,OAAO,YAAY,OAAO,QAAQ,IAAI,EAAE,IAAI,EAAE,YAAY,WAAW,CAAC,YAAY,UAAU,KAAK,CAAC,CAAC,CAAC;AAAA;",
8
- "debugId": "D9DD89FCBCE34B6B64756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "D81A34E60DC3C1DB64756E2164756E21",
9
9
  "names": []
10
10
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@humanlayer/agentlayer-provider-auth",
3
3
  "source": "./src/index.ts",
4
4
  "type": "module",
5
- "version": "0.0.7",
5
+ "version": "0.0.8",
6
6
  "private": false,
7
7
  "main": "./dist/index.js",
8
8
  "module": "./dist/index.js",
@@ -28,6 +28,7 @@
28
28
  },
29
29
  "exports": {
30
30
  ".": {
31
+ "bun": "./src/index.ts",
31
32
  "source": "./src/index.ts",
32
33
  "types": "./dist/index.d.ts",
33
34
  "import": "./dist/index.js",
package/src/auth.ts CHANGED
@@ -265,12 +265,13 @@ function decodeAuthInfo(value: unknown): AuthInfo | undefined {
265
265
  }
266
266
 
267
267
  function decodeOAuthAuthInfo(value: Record<string, unknown>): OAuthAuthInfo | undefined {
268
- if (typeof value.accessToken !== 'string') return undefined
268
+ const accessToken = typeof value.accessToken === 'string' ? value.accessToken : value.access
269
+ if (typeof accessToken !== 'string') return undefined
269
270
  return {
270
271
  kind: 'oauth',
271
- accessToken: value.accessToken,
272
- ...optionalString('refreshToken', value.refreshToken),
273
- ...optionalNumber('expiresAt', value.expiresAt),
272
+ accessToken,
273
+ ...optionalString('refreshToken', value.refreshToken ?? value.refresh),
274
+ ...optionalNumber('expiresAt', value.expiresAt ?? value.expires),
274
275
  ...optionalString('idToken', value.idToken),
275
276
  ...optionalString('scope', value.scope),
276
277
  ...optionalString('tokenType', value.tokenType),