refactor: cache lazy runtime imports

This commit is contained in:
Peter Steinberger
2026-04-18 16:18:20 +01:00
parent 68502c90d1
commit c035c5c0d2
3 changed files with 50 additions and 6 deletions

View File

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

View File

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

View File

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