

























@@ -1,3 +1,4 @@
1+import type { OpenClawConfig } from "../../config/types.openclaw.js";
12import { formatErrorMessage } from "../../infra/errors.js";
23import { withFileLock } from "../../infra/file-lock.js";
34import {
@@ -34,7 +35,11 @@ import {
3435import type { AuthProfileStore, OAuthCredential, OAuthCredentials } from "./types.js";
35363637export type OAuthManagerAdapter = {
37-buildApiKey: (provider: string, credentials: OAuthCredential) => Promise<string>;
38+buildApiKey: (
39+provider: string,
40+credentials: OAuthCredential,
41+context: { cfg?: OpenClawConfig; agentDir?: string },
42+) => Promise<string>;
3843refreshCredential: (credential: OAuthCredential) => Promise<OAuthCredentials | null>;
3944readBootstrapCredential: (params: {
4045profileId: string;
@@ -318,6 +323,7 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
318323profileId: string;
319324provider: string;
320325agentDir?: string;
326+cfg?: OpenClawConfig;
321327}): Promise<ResolvedOAuthAccess | null> {
322328const ownerAgentDir = resolvePersistedAuthProfileOwnerAgentDir(params);
323329const authPath = resolveAuthStorePath(ownerAgentDir);
@@ -336,7 +342,10 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
336342337343if (hasUsableOAuthCredential(cred)) {
338344return {
339-apiKey: await adapter.buildApiKey(cred.provider, cred),
345+apiKey: await adapter.buildApiKey(cred.provider, cred, {
346+cfg: params.cfg,
347+agentDir: params.agentDir,
348+}),
340349credential: cred,
341350};
342351}
@@ -358,7 +367,10 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
358367expires: new Date(mainCred.expires).toISOString(),
359368});
360369return {
361-apiKey: await adapter.buildApiKey(mainCred.provider, mainCred),
370+apiKey: await adapter.buildApiKey(mainCred.provider, mainCred, {
371+cfg: params.cfg,
372+agentDir: params.agentDir,
373+}),
362374credential: mainCred,
363375};
364376} else if (
@@ -409,7 +421,10 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
409421credentialToRefresh = externallyManaged;
410422if (hasUsableOAuthCredential(externallyManaged)) {
411423return {
412-apiKey: await adapter.buildApiKey(externallyManaged.provider, externallyManaged),
424+apiKey: await adapter.buildApiKey(externallyManaged.provider, externallyManaged, {
425+cfg: params.cfg,
426+agentDir: params.agentDir,
427+}),
413428credential: externallyManaged,
414429};
415430}
@@ -445,7 +460,10 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
445460}
446461}
447462return {
448-apiKey: await adapter.buildApiKey(cred.provider, refreshedCredentials),
463+apiKey: await adapter.buildApiKey(cred.provider, refreshedCredentials, {
464+cfg: params.cfg,
465+agentDir: params.agentDir,
466+}),
449467credential: refreshedCredentials,
450468};
451469}),
@@ -466,6 +484,7 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
466484profileId: string;
467485provider: string;
468486agentDir?: string;
487+cfg?: OpenClawConfig;
469488}): Promise<ResolvedOAuthAccess | null> {
470489const key = refreshQueueKey(params.provider, params.profileId);
471490const prev = refreshQueues.get(key) ?? Promise.resolve();
@@ -490,6 +509,7 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
490509profileId: string;
491510credential: OAuthCredential;
492511agentDir?: string;
512+cfg?: OpenClawConfig;
493513}): Promise<ResolvedOAuthAccess | null> {
494514const adoptedCredential =
495515adoptNewerMainOAuthCredential({
@@ -506,7 +526,10 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
506526507527if (hasUsableOAuthCredential(effectiveCredential)) {
508528return {
509-apiKey: await adapter.buildApiKey(effectiveCredential.provider, effectiveCredential),
529+apiKey: await adapter.buildApiKey(effectiveCredential.provider, effectiveCredential, {
530+cfg: params.cfg,
531+agentDir: params.agentDir,
532+}),
510533credential: effectiveCredential,
511534};
512535}
@@ -516,14 +539,18 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
516539profileId: params.profileId,
517540provider: params.credential.provider,
518541agentDir: params.agentDir,
542+cfg: params.cfg,
519543});
520544return refreshed;
521545} catch (error) {
522546const refreshedStore = loadAuthProfileStoreWithoutExternalProfiles(params.agentDir);
523547const refreshed = refreshedStore.profiles[params.profileId];
524548if (refreshed?.type === "oauth" && hasUsableOAuthCredential(refreshed)) {
525549return {
526-apiKey: await adapter.buildApiKey(refreshed.provider, refreshed),
550+apiKey: await adapter.buildApiKey(refreshed.provider, refreshed, {
551+cfg: params.cfg,
552+agentDir: params.agentDir,
553+}),
527554credential: refreshed,
528555};
529556}
@@ -542,7 +569,10 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
542569});
543570if (recovered) {
544571return {
545-apiKey: await adapter.buildApiKey(recovered.provider, recovered),
572+apiKey: await adapter.buildApiKey(recovered.provider, recovered, {
573+cfg: params.cfg,
574+agentDir: params.agentDir,
575+}),
546576credential: recovered,
547577};
548578}
@@ -551,6 +581,7 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
551581profileId: params.profileId,
552582provider: params.credential.provider,
553583agentDir: params.agentDir,
584+cfg: params.cfg,
554585});
555586if (retried) {
556587return retried;
@@ -579,7 +610,10 @@ export function createOAuthManager(adapter: OAuthManagerAdapter) {
579610expires: new Date(mainCred.expires).toISOString(),
580611});
581612return {
582-apiKey: await adapter.buildApiKey(mainCred.provider, mainCred),
613+apiKey: await adapter.buildApiKey(mainCred.provider, mainCred, {
614+cfg: params.cfg,
615+agentDir: params.agentDir,
616+}),
583617credential: mainCred,
584618};
585619}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。