@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 +6 -5
- package/dist/index.js.map +3 -3
- package/package.json +2 -1
- package/src/auth.ts +5 -4
package/dist/index.js
CHANGED
|
@@ -199,13 +199,14 @@ function decodeAuthInfo(value) {
|
|
|
199
199
|
return;
|
|
200
200
|
}
|
|
201
201
|
function decodeOAuthAuthInfo(value) {
|
|
202
|
-
|
|
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
|
|
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=
|
|
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": "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
|
|
8
|
-
"debugId": "
|
|
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.
|
|
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
|
-
|
|
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
|
|
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),
|