fix: align embedded agent session setup

This commit is contained in:
Peter Steinberger
2026-02-01 22:21:19 +00:00
parent 9b6fffd00a
commit bcde2fca5a
3 changed files with 27 additions and 33 deletions

View File

@@ -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;
}

View File

@@ -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 {

View File

@@ -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");