Skip to content

Commit c035c5c

Browse files
committed
refactor: cache lazy runtime imports
1 parent 68502c9 commit c035c5c

3 files changed

Lines changed: 50 additions & 6 deletions

File tree

src/commands/models/list.status-command.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,35 @@ import {
4646
} from "./shared.js";
4747

4848
type ProviderUsageRuntime = typeof import("../../infra/provider-usage.js");
49+
type ProgressRuntime = typeof import("../../cli/progress.js");
50+
type TerminalTableRuntime = typeof import("../../terminal/table.js");
51+
type ListProbeRuntime = typeof import("./list.probe.js");
4952

5053
let providerUsageRuntimePromise: Promise<ProviderUsageRuntime> | undefined;
54+
let progressRuntimePromise: Promise<ProgressRuntime> | undefined;
55+
let terminalTableRuntimePromise: Promise<TerminalTableRuntime> | undefined;
56+
let listProbeRuntimePromise: Promise<ListProbeRuntime> | undefined;
5157

5258
function loadProviderUsageRuntime(): Promise<ProviderUsageRuntime> {
5359
providerUsageRuntimePromise ??= import("../../infra/provider-usage.js");
5460
return providerUsageRuntimePromise;
5561
}
5662

63+
function loadProgressRuntime(): Promise<ProgressRuntime> {
64+
progressRuntimePromise ??= import("../../cli/progress.js");
65+
return progressRuntimePromise;
66+
}
67+
68+
function loadTerminalTableRuntime(): Promise<TerminalTableRuntime> {
69+
terminalTableRuntimePromise ??= import("../../terminal/table.js");
70+
return terminalTableRuntimePromise;
71+
}
72+
73+
function loadListProbeRuntime(): Promise<ListProbeRuntime> {
74+
listProbeRuntimePromise ??= import("./list.probe.js");
75+
return listProbeRuntimePromise;
76+
}
77+
5778
export async function modelsStatusCommand(
5879
opts: {
5980
json?: boolean;
@@ -220,8 +241,8 @@ export async function modelsStatusCommand(
220241
let probeSummary: AuthProbeSummary | undefined;
221242
if (opts.probe) {
222243
const [{ withProgressTotals }, { runAuthProbes }] = await Promise.all([
223-
import("../../cli/progress.js"),
224-
import("./list.probe.js"),
244+
loadProgressRuntime(),
245+
loadListProbeRuntime(),
225246
]);
226247
probeSummary = await withProgressTotals(
227248
{ label: "Probing auth profiles…", total: 1 },
@@ -613,7 +634,7 @@ export async function modelsStatusCommand(
613634
const [
614635
{ getTerminalTableWidth, renderTable },
615636
{ describeProbeSummary, formatProbeLatency, sortProbeResults },
616-
] = await Promise.all([import("../../terminal/table.js"), import("./list.probe.js")]);
637+
] = await Promise.all([loadTerminalTableRuntime(), loadListProbeRuntime()]);
617638
runtime.log("");
618639
runtime.log(colorize(rich, theme.heading, "Auth probes"));
619640
if (probeSummary.results.length === 0) {

src/plugin-sdk/browser-maintenance.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,12 @@ type CloseTrackedBrowserTabsParams = {
1212
type BrowserMaintenanceSurface = {
1313
closeTrackedBrowserTabsForSessions: (params: CloseTrackedBrowserTabsParams) => Promise<number>;
1414
};
15+
type SecureRandomRuntime = typeof import("../infra/secure-random.js");
16+
type ExecRuntime = typeof import("../process/exec.js");
1517

1618
let cachedBrowserMaintenanceSurface: BrowserMaintenanceSurface | undefined;
19+
let secureRandomRuntimePromise: Promise<SecureRandomRuntime> | undefined;
20+
let execRuntimePromise: Promise<ExecRuntime> | undefined;
1721

1822
function hasRequestedSessionKeys(sessionKeys: Array<string | undefined>): boolean {
1923
return sessionKeys.some((key) => Boolean(key?.trim()));
@@ -28,6 +32,16 @@ function loadBrowserMaintenanceSurface(): BrowserMaintenanceSurface {
2832
return cachedBrowserMaintenanceSurface;
2933
}
3034

35+
function loadSecureRandomRuntime(): Promise<SecureRandomRuntime> {
36+
secureRandomRuntimePromise ??= import("../infra/secure-random.js");
37+
return secureRandomRuntimePromise;
38+
}
39+
40+
function loadExecRuntime(): Promise<ExecRuntime> {
41+
execRuntimePromise ??= import("../process/exec.js");
42+
return execRuntimePromise;
43+
}
44+
3145
export async function closeTrackedBrowserTabsForSessions(
3246
params: CloseTrackedBrowserTabsParams,
3347
): Promise<number> {
@@ -47,8 +61,8 @@ export async function closeTrackedBrowserTabsForSessions(
4761

4862
export async function movePathToTrash(targetPath: string): Promise<string> {
4963
const [{ generateSecureToken }, { runExec }] = await Promise.all([
50-
import("../infra/secure-random.js"),
51-
import("../process/exec.js"),
64+
loadSecureRandomRuntime(),
65+
loadExecRuntime(),
5266
]);
5367
try {
5468
await runExec("trash", [targetPath], { timeoutMs: 10_000 });

src/process/supervisor/supervisor.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,20 @@ import type {
1313
TerminationReason,
1414
} from "./types.js";
1515

16+
type SupervisorLogRuntime = typeof import("./supervisor-log.runtime.js");
17+
1618
type ActiveRun = {
1719
run: ManagedRun;
1820
scopeKey?: string;
1921
};
2022

23+
let supervisorLogRuntimePromise: Promise<SupervisorLogRuntime> | undefined;
24+
25+
function loadSupervisorLogRuntime(): Promise<SupervisorLogRuntime> {
26+
supervisorLogRuntimePromise ??= import("./supervisor-log.runtime.js");
27+
return supervisorLogRuntimePromise;
28+
}
29+
2130
function clampTimeout(value?: number): number | undefined {
2231
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
2332
return undefined;
@@ -263,7 +272,7 @@ export function createProcessSupervisor(): ProcessSupervisor {
263272
exitCode: null,
264273
exitSignal: null,
265274
});
266-
const { warnProcessSupervisorSpawnFailure } = await import("./supervisor-log.runtime.js");
275+
const { warnProcessSupervisorSpawnFailure } = await loadSupervisorLogRuntime();
267276
warnProcessSupervisorSpawnFailure(`spawn failed: runId=${runId} reason=${String(err)}`);
268277
throw err;
269278
}

0 commit comments

Comments
 (0)