diff --git a/src/agents/auth-profiles/oauth.ts b/src/agents/auth-profiles/oauth.ts index bb5944a2f..8cf05f587 100644 --- a/src/agents/auth-profiles/oauth.ts +++ b/src/agents/auth-profiles/oauth.ts @@ -1,4 +1,9 @@ -import { getOAuthApiKey, type OAuthCredentials } from "@mariozechner/pi-ai"; +import { + getOAuthApiKey, + getOAuthProviders, + type OAuthCredentials, + type OAuthProvider, +} from "@mariozechner/pi-ai"; import lockfile from "proper-lockfile"; import type { OpenClawConfig } from "../../config/config.js"; import type { AuthProfileStore } from "./types.js"; @@ -10,6 +15,11 @@ import { ensureAuthStoreFile, resolveAuthStorePath } from "./paths.js"; import { suggestOAuthProfileIdForLegacyDefault } from "./repair.js"; import { ensureAuthProfileStore, saveAuthProfileStore } from "./store.js"; +const OAUTH_PROVIDER_IDS = new Set(getOAuthProviders().map((provider) => provider.id)); + +const resolveOAuthProvider = (provider: string): OAuthProvider | null => + OAUTH_PROVIDER_IDS.has(provider as OAuthProvider) ? (provider as OAuthProvider) : null; + function buildOAuthApiKey(provider: string, credentials: OAuthCredentials): string { const needsProjectId = provider === "google-gemini-cli" || provider === "google-antigravity"; return needsProjectId @@ -63,7 +73,13 @@ async function refreshOAuthTokenWithLock(params: { const newCredentials = await refreshQwenPortalCredentials(cred); return { apiKey: newCredentials.access, newCredentials }; })() - : await getOAuthApiKey(cred.provider, oauthCreds); + : await (async () => { + const oauthProvider = resolveOAuthProvider(cred.provider); + if (!oauthProvider) { + return null; + } + return await getOAuthApiKey(oauthProvider, oauthCreds); + })(); if (!result) { return null; } diff --git a/src/agents/pi-embedded-runner/compact.ts b/src/agents/pi-embedded-runner/compact.ts index ea50e2165..0e010e0ee 100644 --- a/src/agents/pi-embedded-runner/compact.ts +++ b/src/agents/pi-embedded-runner/compact.ts @@ -1,6 +1,5 @@ import { createAgentSession, - DefaultResourceLoader, estimateTokens, SessionManager, SettingsManager, @@ -384,17 +383,6 @@ export async function compactEmbeddedPiSessionDirect( sandboxEnabled: !!sandbox?.enabled, }); - const resourceLoader = new DefaultResourceLoader({ - cwd: resolvedWorkspace, - agentDir, - settingsManager, - additionalExtensionPaths, - noSkills: true, - systemPromptOverride: systemPrompt, - agentsFilesOverride: () => ({ agentsFiles: [] }), - }); - await resourceLoader.reload(); - const { session } = await createAgentSession({ cwd: resolvedWorkspace, agentDir, @@ -406,7 +394,10 @@ export async function compactEmbeddedPiSessionDirect( customTools, sessionManager, settingsManager, - resourceLoader, + systemPrompt, + additionalExtensionPaths, + skills: [], + contextFiles: [], }); try { diff --git a/src/agents/pi-embedded-runner/run/attempt.ts b/src/agents/pi-embedded-runner/run/attempt.ts index a839c10a0..913847955 100644 --- a/src/agents/pi-embedded-runner/run/attempt.ts +++ b/src/agents/pi-embedded-runner/run/attempt.ts @@ -1,12 +1,7 @@ import type { AgentMessage } from "@mariozechner/pi-agent-core"; import type { ImageContent } from "@mariozechner/pi-ai"; import { streamSimple } from "@mariozechner/pi-ai"; -import { - createAgentSession, - DefaultResourceLoader, - SessionManager, - SettingsManager, -} from "@mariozechner/pi-coding-agent"; +import { createAgentSession, SessionManager, SettingsManager } from "@mariozechner/pi-coding-agent"; import fs from "node:fs/promises"; import os from "node:os"; import type { EmbeddedRunAttemptParams, EmbeddedRunAttemptResult } from "./types.js"; @@ -455,17 +450,6 @@ export async function runEmbeddedAttempt( const allCustomTools = [...customTools, ...clientToolDefs]; - const resourceLoader = new DefaultResourceLoader({ - cwd: resolvedWorkspace, - agentDir, - settingsManager, - additionalExtensionPaths, - noSkills: true, - systemPromptOverride: systemPrompt, - agentsFilesOverride: () => ({ agentsFiles: [] }), - }); - await resourceLoader.reload(); - ({ session } = await createAgentSession({ cwd: resolvedWorkspace, agentDir, @@ -477,7 +461,10 @@ export async function runEmbeddedAttempt( customTools: allCustomTools, sessionManager, settingsManager, - resourceLoader, + systemPrompt, + additionalExtensionPaths, + skills: [], + contextFiles: [], })); if (!session) { throw new Error("Embedded agent session missing");