mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-03 20:34:06 +00:00
refactor: share codex app server start context
This commit is contained in:
@@ -96,7 +96,7 @@ function readLegacySharedCodexAppServerClientState(
|
||||
return value as LegacySharedCodexAppServerClientState;
|
||||
}
|
||||
|
||||
type SharedCodexAppServerClientOptions = {
|
||||
type CodexAppServerClientOptions = {
|
||||
startOptions?: CodexAppServerStartOptions;
|
||||
timeoutMs?: number;
|
||||
authProfileId?: string | null;
|
||||
@@ -104,14 +104,47 @@ type SharedCodexAppServerClientOptions = {
|
||||
config?: Parameters<typeof resolveCodexAppServerAuthProfileIdForAgent>[0]["config"];
|
||||
};
|
||||
|
||||
type ResolvedCodexAppServerClientStartContext = {
|
||||
agentDir: string;
|
||||
usesNativeAuth: boolean;
|
||||
authProfileId: string | undefined;
|
||||
startOptions: CodexAppServerStartOptions;
|
||||
};
|
||||
|
||||
async function resolveCodexAppServerClientStartContext(
|
||||
options?: CodexAppServerClientOptions,
|
||||
): Promise<ResolvedCodexAppServerClientStartContext> {
|
||||
const agentDir = options?.agentDir ?? resolveDefaultAgentDir(options?.config ?? {});
|
||||
const usesNativeAuth = options?.authProfileId === null;
|
||||
const requestedAuthProfileId =
|
||||
options?.authProfileId === null ? undefined : options?.authProfileId;
|
||||
const authProfileId = usesNativeAuth
|
||||
? undefined
|
||||
: resolveCodexAppServerAuthProfileIdForAgent({
|
||||
authProfileId: requestedAuthProfileId,
|
||||
agentDir,
|
||||
config: options?.config,
|
||||
});
|
||||
const requestedStartOptions =
|
||||
options?.startOptions ?? resolveCodexAppServerRuntimeOptions().start;
|
||||
const managedStartOptions = await resolveManagedCodexAppServerStartOptions(requestedStartOptions);
|
||||
const startOptions = await bridgeCodexAppServerStartOptions({
|
||||
startOptions: managedStartOptions,
|
||||
agentDir,
|
||||
authProfileId: usesNativeAuth ? null : authProfileId,
|
||||
config: options?.config,
|
||||
});
|
||||
return { agentDir, usesNativeAuth, authProfileId, startOptions };
|
||||
}
|
||||
|
||||
export async function getSharedCodexAppServerClient(
|
||||
options?: SharedCodexAppServerClientOptions,
|
||||
options?: CodexAppServerClientOptions,
|
||||
): Promise<CodexAppServerClient> {
|
||||
return (await acquireSharedCodexAppServerClient(options)).client;
|
||||
}
|
||||
|
||||
export async function getLeasedSharedCodexAppServerClient(
|
||||
options?: SharedCodexAppServerClientOptions,
|
||||
options?: CodexAppServerClientOptions,
|
||||
): Promise<CodexAppServerClient> {
|
||||
const acquired = await acquireSharedCodexAppServerClient(options, { leased: true });
|
||||
const state = getSharedCodexAppServerClientState();
|
||||
@@ -139,36 +172,18 @@ export function releaseLeasedSharedCodexAppServerClient(client: CodexAppServerCl
|
||||
}
|
||||
|
||||
async function acquireSharedCodexAppServerClient(
|
||||
options?: SharedCodexAppServerClientOptions,
|
||||
options?: CodexAppServerClientOptions,
|
||||
): Promise<{ client: CodexAppServerClient }>;
|
||||
async function acquireSharedCodexAppServerClient(
|
||||
options: SharedCodexAppServerClientOptions | undefined,
|
||||
options: CodexAppServerClientOptions | undefined,
|
||||
leaseOptions: { leased: true },
|
||||
): Promise<{ client: CodexAppServerClient; release: () => void }>;
|
||||
async function acquireSharedCodexAppServerClient(
|
||||
options?: SharedCodexAppServerClientOptions,
|
||||
options?: CodexAppServerClientOptions,
|
||||
leaseOptions?: { leased: true },
|
||||
): Promise<{ client: CodexAppServerClient; release?: () => void }> {
|
||||
const agentDir = options?.agentDir ?? resolveDefaultAgentDir(options?.config ?? {});
|
||||
const usesNativeAuth = options?.authProfileId === null;
|
||||
const requestedAuthProfileId =
|
||||
options?.authProfileId === null ? undefined : options?.authProfileId;
|
||||
const authProfileId = usesNativeAuth
|
||||
? undefined
|
||||
: resolveCodexAppServerAuthProfileIdForAgent({
|
||||
authProfileId: requestedAuthProfileId,
|
||||
agentDir,
|
||||
config: options?.config,
|
||||
});
|
||||
const requestedStartOptions =
|
||||
options?.startOptions ?? resolveCodexAppServerRuntimeOptions().start;
|
||||
const managedStartOptions = await resolveManagedCodexAppServerStartOptions(requestedStartOptions);
|
||||
const startOptions = await bridgeCodexAppServerStartOptions({
|
||||
startOptions: managedStartOptions,
|
||||
agentDir,
|
||||
authProfileId: usesNativeAuth ? null : authProfileId,
|
||||
config: options?.config,
|
||||
});
|
||||
const { agentDir, usesNativeAuth, authProfileId, startOptions } =
|
||||
await resolveCodexAppServerClientStartContext(options);
|
||||
const fallbackApiKeyCacheKey = authProfileId
|
||||
? undefined
|
||||
: resolveCodexAppServerFallbackApiKeyCacheKey({ startOptions });
|
||||
@@ -219,33 +234,11 @@ async function acquireSharedCodexAppServerClient(
|
||||
}
|
||||
}
|
||||
|
||||
export async function createIsolatedCodexAppServerClient(options?: {
|
||||
startOptions?: CodexAppServerStartOptions;
|
||||
timeoutMs?: number;
|
||||
authProfileId?: string | null;
|
||||
agentDir?: string;
|
||||
config?: Parameters<typeof resolveCodexAppServerAuthProfileIdForAgent>[0]["config"];
|
||||
}): Promise<CodexAppServerClient> {
|
||||
const agentDir = options?.agentDir ?? resolveDefaultAgentDir(options?.config ?? {});
|
||||
const usesNativeAuth = options?.authProfileId === null;
|
||||
const requestedAuthProfileId =
|
||||
options?.authProfileId === null ? undefined : options?.authProfileId;
|
||||
const authProfileId = usesNativeAuth
|
||||
? undefined
|
||||
: resolveCodexAppServerAuthProfileIdForAgent({
|
||||
authProfileId: requestedAuthProfileId,
|
||||
agentDir,
|
||||
config: options?.config,
|
||||
});
|
||||
const requestedStartOptions =
|
||||
options?.startOptions ?? resolveCodexAppServerRuntimeOptions().start;
|
||||
const managedStartOptions = await resolveManagedCodexAppServerStartOptions(requestedStartOptions);
|
||||
const startOptions = await bridgeCodexAppServerStartOptions({
|
||||
startOptions: managedStartOptions,
|
||||
agentDir,
|
||||
authProfileId: usesNativeAuth ? null : authProfileId,
|
||||
config: options?.config,
|
||||
});
|
||||
export async function createIsolatedCodexAppServerClient(
|
||||
options?: CodexAppServerClientOptions,
|
||||
): Promise<CodexAppServerClient> {
|
||||
const { agentDir, usesNativeAuth, authProfileId, startOptions } =
|
||||
await resolveCodexAppServerClientStartContext(options);
|
||||
const client = CodexAppServerClient.start(startOptions);
|
||||
const initialize = client.initialize();
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user