fix: align embedded agent session setup
This commit is contained in:
parent
9b6fffd00a
commit
bcde2fca5a
3 changed files with 27 additions and 33 deletions
|
|
@ -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 lockfile from "proper-lockfile";
|
||||||
import type { OpenClawConfig } from "../../config/config.js";
|
import type { OpenClawConfig } from "../../config/config.js";
|
||||||
import type { AuthProfileStore } from "./types.js";
|
import type { AuthProfileStore } from "./types.js";
|
||||||
|
|
@ -10,6 +15,11 @@ import { ensureAuthStoreFile, resolveAuthStorePath } from "./paths.js";
|
||||||
import { suggestOAuthProfileIdForLegacyDefault } from "./repair.js";
|
import { suggestOAuthProfileIdForLegacyDefault } from "./repair.js";
|
||||||
import { ensureAuthProfileStore, saveAuthProfileStore } from "./store.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 {
|
function buildOAuthApiKey(provider: string, credentials: OAuthCredentials): string {
|
||||||
const needsProjectId = provider === "google-gemini-cli" || provider === "google-antigravity";
|
const needsProjectId = provider === "google-gemini-cli" || provider === "google-antigravity";
|
||||||
return needsProjectId
|
return needsProjectId
|
||||||
|
|
@ -63,7 +73,13 @@ async function refreshOAuthTokenWithLock(params: {
|
||||||
const newCredentials = await refreshQwenPortalCredentials(cred);
|
const newCredentials = await refreshQwenPortalCredentials(cred);
|
||||||
return { apiKey: newCredentials.access, newCredentials };
|
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) {
|
if (!result) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
import {
|
import {
|
||||||
createAgentSession,
|
createAgentSession,
|
||||||
DefaultResourceLoader,
|
|
||||||
estimateTokens,
|
estimateTokens,
|
||||||
SessionManager,
|
SessionManager,
|
||||||
SettingsManager,
|
SettingsManager,
|
||||||
|
|
@ -384,17 +383,6 @@ export async function compactEmbeddedPiSessionDirect(
|
||||||
sandboxEnabled: !!sandbox?.enabled,
|
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({
|
const { session } = await createAgentSession({
|
||||||
cwd: resolvedWorkspace,
|
cwd: resolvedWorkspace,
|
||||||
agentDir,
|
agentDir,
|
||||||
|
|
@ -406,7 +394,10 @@ export async function compactEmbeddedPiSessionDirect(
|
||||||
customTools,
|
customTools,
|
||||||
sessionManager,
|
sessionManager,
|
||||||
settingsManager,
|
settingsManager,
|
||||||
resourceLoader,
|
systemPrompt,
|
||||||
|
additionalExtensionPaths,
|
||||||
|
skills: [],
|
||||||
|
contextFiles: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,7 @@
|
||||||
import type { AgentMessage } from "@mariozechner/pi-agent-core";
|
import type { AgentMessage } from "@mariozechner/pi-agent-core";
|
||||||
import type { ImageContent } from "@mariozechner/pi-ai";
|
import type { ImageContent } from "@mariozechner/pi-ai";
|
||||||
import { streamSimple } from "@mariozechner/pi-ai";
|
import { streamSimple } from "@mariozechner/pi-ai";
|
||||||
import {
|
import { createAgentSession, SessionManager, SettingsManager } from "@mariozechner/pi-coding-agent";
|
||||||
createAgentSession,
|
|
||||||
DefaultResourceLoader,
|
|
||||||
SessionManager,
|
|
||||||
SettingsManager,
|
|
||||||
} from "@mariozechner/pi-coding-agent";
|
|
||||||
import fs from "node:fs/promises";
|
import fs from "node:fs/promises";
|
||||||
import os from "node:os";
|
import os from "node:os";
|
||||||
import type { EmbeddedRunAttemptParams, EmbeddedRunAttemptResult } from "./types.js";
|
import type { EmbeddedRunAttemptParams, EmbeddedRunAttemptResult } from "./types.js";
|
||||||
|
|
@ -455,17 +450,6 @@ export async function runEmbeddedAttempt(
|
||||||
|
|
||||||
const allCustomTools = [...customTools, ...clientToolDefs];
|
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({
|
({ session } = await createAgentSession({
|
||||||
cwd: resolvedWorkspace,
|
cwd: resolvedWorkspace,
|
||||||
agentDir,
|
agentDir,
|
||||||
|
|
@ -477,7 +461,10 @@ export async function runEmbeddedAttempt(
|
||||||
customTools: allCustomTools,
|
customTools: allCustomTools,
|
||||||
sessionManager,
|
sessionManager,
|
||||||
settingsManager,
|
settingsManager,
|
||||||
resourceLoader,
|
systemPrompt,
|
||||||
|
additionalExtensionPaths,
|
||||||
|
skills: [],
|
||||||
|
contextFiles: [],
|
||||||
}));
|
}));
|
||||||
if (!session) {
|
if (!session) {
|
||||||
throw new Error("Embedded agent session missing");
|
throw new Error("Embedded agent session missing");
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue