mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 09:10:45 +00:00
refactor: cache lazy runtime imports
This commit is contained in:
@@ -46,14 +46,35 @@ import {
|
||||
} from "./shared.js";
|
||||
|
||||
type ProviderUsageRuntime = typeof import("../../infra/provider-usage.js");
|
||||
type ProgressRuntime = typeof import("../../cli/progress.js");
|
||||
type TerminalTableRuntime = typeof import("../../terminal/table.js");
|
||||
type ListProbeRuntime = typeof import("./list.probe.js");
|
||||
|
||||
let providerUsageRuntimePromise: Promise<ProviderUsageRuntime> | undefined;
|
||||
let progressRuntimePromise: Promise<ProgressRuntime> | undefined;
|
||||
let terminalTableRuntimePromise: Promise<TerminalTableRuntime> | undefined;
|
||||
let listProbeRuntimePromise: Promise<ListProbeRuntime> | undefined;
|
||||
|
||||
function loadProviderUsageRuntime(): Promise<ProviderUsageRuntime> {
|
||||
providerUsageRuntimePromise ??= import("../../infra/provider-usage.js");
|
||||
return providerUsageRuntimePromise;
|
||||
}
|
||||
|
||||
function loadProgressRuntime(): Promise<ProgressRuntime> {
|
||||
progressRuntimePromise ??= import("../../cli/progress.js");
|
||||
return progressRuntimePromise;
|
||||
}
|
||||
|
||||
function loadTerminalTableRuntime(): Promise<TerminalTableRuntime> {
|
||||
terminalTableRuntimePromise ??= import("../../terminal/table.js");
|
||||
return terminalTableRuntimePromise;
|
||||
}
|
||||
|
||||
function loadListProbeRuntime(): Promise<ListProbeRuntime> {
|
||||
listProbeRuntimePromise ??= import("./list.probe.js");
|
||||
return listProbeRuntimePromise;
|
||||
}
|
||||
|
||||
export async function modelsStatusCommand(
|
||||
opts: {
|
||||
json?: boolean;
|
||||
@@ -220,8 +241,8 @@ export async function modelsStatusCommand(
|
||||
let probeSummary: AuthProbeSummary | undefined;
|
||||
if (opts.probe) {
|
||||
const [{ withProgressTotals }, { runAuthProbes }] = await Promise.all([
|
||||
import("../../cli/progress.js"),
|
||||
import("./list.probe.js"),
|
||||
loadProgressRuntime(),
|
||||
loadListProbeRuntime(),
|
||||
]);
|
||||
probeSummary = await withProgressTotals(
|
||||
{ label: "Probing auth profiles…", total: 1 },
|
||||
@@ -613,7 +634,7 @@ export async function modelsStatusCommand(
|
||||
const [
|
||||
{ getTerminalTableWidth, renderTable },
|
||||
{ describeProbeSummary, formatProbeLatency, sortProbeResults },
|
||||
] = await Promise.all([import("../../terminal/table.js"), import("./list.probe.js")]);
|
||||
] = await Promise.all([loadTerminalTableRuntime(), loadListProbeRuntime()]);
|
||||
runtime.log("");
|
||||
runtime.log(colorize(rich, theme.heading, "Auth probes"));
|
||||
if (probeSummary.results.length === 0) {
|
||||
|
||||
@@ -12,8 +12,12 @@ type CloseTrackedBrowserTabsParams = {
|
||||
type BrowserMaintenanceSurface = {
|
||||
closeTrackedBrowserTabsForSessions: (params: CloseTrackedBrowserTabsParams) => Promise<number>;
|
||||
};
|
||||
type SecureRandomRuntime = typeof import("../infra/secure-random.js");
|
||||
type ExecRuntime = typeof import("../process/exec.js");
|
||||
|
||||
let cachedBrowserMaintenanceSurface: BrowserMaintenanceSurface | undefined;
|
||||
let secureRandomRuntimePromise: Promise<SecureRandomRuntime> | undefined;
|
||||
let execRuntimePromise: Promise<ExecRuntime> | undefined;
|
||||
|
||||
function hasRequestedSessionKeys(sessionKeys: Array<string | undefined>): boolean {
|
||||
return sessionKeys.some((key) => Boolean(key?.trim()));
|
||||
@@ -28,6 +32,16 @@ function loadBrowserMaintenanceSurface(): BrowserMaintenanceSurface {
|
||||
return cachedBrowserMaintenanceSurface;
|
||||
}
|
||||
|
||||
function loadSecureRandomRuntime(): Promise<SecureRandomRuntime> {
|
||||
secureRandomRuntimePromise ??= import("../infra/secure-random.js");
|
||||
return secureRandomRuntimePromise;
|
||||
}
|
||||
|
||||
function loadExecRuntime(): Promise<ExecRuntime> {
|
||||
execRuntimePromise ??= import("../process/exec.js");
|
||||
return execRuntimePromise;
|
||||
}
|
||||
|
||||
export async function closeTrackedBrowserTabsForSessions(
|
||||
params: CloseTrackedBrowserTabsParams,
|
||||
): Promise<number> {
|
||||
@@ -47,8 +61,8 @@ export async function closeTrackedBrowserTabsForSessions(
|
||||
|
||||
export async function movePathToTrash(targetPath: string): Promise<string> {
|
||||
const [{ generateSecureToken }, { runExec }] = await Promise.all([
|
||||
import("../infra/secure-random.js"),
|
||||
import("../process/exec.js"),
|
||||
loadSecureRandomRuntime(),
|
||||
loadExecRuntime(),
|
||||
]);
|
||||
try {
|
||||
await runExec("trash", [targetPath], { timeoutMs: 10_000 });
|
||||
|
||||
@@ -13,11 +13,20 @@ import type {
|
||||
TerminationReason,
|
||||
} from "./types.js";
|
||||
|
||||
type SupervisorLogRuntime = typeof import("./supervisor-log.runtime.js");
|
||||
|
||||
type ActiveRun = {
|
||||
run: ManagedRun;
|
||||
scopeKey?: string;
|
||||
};
|
||||
|
||||
let supervisorLogRuntimePromise: Promise<SupervisorLogRuntime> | undefined;
|
||||
|
||||
function loadSupervisorLogRuntime(): Promise<SupervisorLogRuntime> {
|
||||
supervisorLogRuntimePromise ??= import("./supervisor-log.runtime.js");
|
||||
return supervisorLogRuntimePromise;
|
||||
}
|
||||
|
||||
function clampTimeout(value?: number): number | undefined {
|
||||
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
|
||||
return undefined;
|
||||
@@ -263,7 +272,7 @@ export function createProcessSupervisor(): ProcessSupervisor {
|
||||
exitCode: null,
|
||||
exitSignal: null,
|
||||
});
|
||||
const { warnProcessSupervisorSpawnFailure } = await import("./supervisor-log.runtime.js");
|
||||
const { warnProcessSupervisorSpawnFailure } = await loadSupervisorLogRuntime();
|
||||
warnProcessSupervisorSpawnFailure(`spawn failed: runId=${runId} reason=${String(err)}`);
|
||||
throw err;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user