Skip to content

Commit a08fbfb

Browse files
committed
perf(cron): lazy-load isolated cli runner runtime
1 parent 6d38bd4 commit a08fbfb

6 files changed

Lines changed: 30 additions & 5 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { getCliSessionId, runCliAgent } from "../../agents/cli-runner.runtime.js";

src/cron/isolated-agent/run-execution.runtime.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
export { resolveEffectiveModelFallbacks } from "../../agents/agent-scope.js";
22
export { resolveBootstrapWarningSignaturesSeen } from "../../agents/bootstrap-budget.js";
3-
export { getCliSessionId, runCliAgent } from "../../agents/cli-runner.runtime.js";
43
export { resolveFastModeState } from "../../agents/fast-mode.js";
54
export { resolveNestedAgentLane } from "../../agents/lanes.js";
65
export { LiveSessionModelSwitchError } from "../../agents/live-model-switch.js";
@@ -15,3 +14,26 @@ export { normalizeVerboseLevel } from "../../auto-reply/thinking.js";
1514
export { resolveSessionTranscriptPath } from "../../config/sessions.js";
1615
export { registerAgentRunContext } from "../../infra/agent-events.js";
1716
export { logWarn } from "../../logger.js";
17+
18+
let cronExecutionCliRuntimePromise:
19+
| Promise<typeof import("./run-execution-cli.runtime.js")>
20+
| undefined;
21+
22+
async function loadCronExecutionCliRuntime() {
23+
cronExecutionCliRuntimePromise ??= import("./run-execution-cli.runtime.js");
24+
return await cronExecutionCliRuntimePromise;
25+
}
26+
27+
export async function getCliSessionId(
28+
...args: Parameters<typeof import("../../agents/cli-session.js").getCliSessionId>
29+
): Promise<ReturnType<typeof import("../../agents/cli-session.js").getCliSessionId>> {
30+
const runtime = await loadCronExecutionCliRuntime();
31+
return runtime.getCliSessionId(...args);
32+
}
33+
34+
export async function runCliAgent(
35+
...args: Parameters<typeof import("../../agents/cli-runner.js").runCliAgent>
36+
): ReturnType<typeof import("../../agents/cli-runner.js").runCliAgent> {
37+
const runtime = await loadCronExecutionCliRuntime();
38+
return runtime.runCliAgent(...args);
39+
}

src/cron/isolated-agent/run-executor.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import type { CronJob } from "../types.js";
66
import { resolveCronPayloadOutcome } from "./helpers.js";
77
import {
88
countActiveDescendantRuns,
9-
listDescendantRunsForRequester,
10-
LiveSessionModelSwitchError,
119
getCliSessionId,
1210
isCliProvider,
11+
listDescendantRunsForRequester,
12+
LiveSessionModelSwitchError,
1313
logWarn,
1414
normalizeVerboseLevel,
1515
registerAgentRunContext,
@@ -104,7 +104,7 @@ export function createCronPromptExecutor(params: {
104104
if (isCliProvider(providerOverride, params.cfgWithAgentDefaults)) {
105105
const cliSessionId = params.cronSession.isNewSession
106106
? undefined
107-
: getCliSessionId(params.cronSession.sessionEntry, providerOverride);
107+
: await getCliSessionId(params.cronSession.sessionEntry, providerOverride);
108108
const result = await runCliAgent({
109109
sessionId: params.cronSession.sessionEntry.sessionId,
110110
sessionKey: params.agentSessionKey,

src/cron/isolated-agent/run.runtime.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export { normalizeThinkLevel, supportsXHighThinking } from "../../auto-reply/thi
3131
export { createOutboundSendDeps } from "../../cli/outbound-send-deps.js";
3232
export {
3333
resolveAgentMainSessionKey,
34+
resolveSessionTranscriptPath,
3435
setSessionRuntimeModel,
3536
updateSessionStore,
3637
} from "../../config/sessions.js";

src/cron/isolated-agent/run.test-harness.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ vi.mock("./run.runtime.js", () => ({
121121
ensureAgentWorkspace: ensureAgentWorkspaceMock,
122122
normalizeThinkLevel: normalizeThinkLevelMock,
123123
supportsXHighThinking: supportsXHighThinkingMock,
124+
resolveSessionTranscriptPath: resolveSessionTranscriptPathMock,
124125
setSessionRuntimeModel: setSessionRuntimeModelMock,
125126
setCliSessionId: vi.fn(),
126127
logWarn: (...args: unknown[]) => logWarnMock(...args),

src/cron/isolated-agent/run.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import {
1818
} from "./helpers.js";
1919
import { resolveCronModelSelection } from "./model-selection.js";
2020
import { buildCronAgentDefaultsConfig } from "./run-config.js";
21-
import { resolveSessionTranscriptPath } from "./run-execution.runtime.js";
2221
import { executeCronRun, type CronExecutionResult } from "./run-executor.js";
2322
import {
2423
createPersistCronSessionEntry,
@@ -50,6 +49,7 @@ import {
5049
resolveCronStyleNow,
5150
resolveDefaultAgentId,
5251
resolveHookExternalContentSource,
52+
resolveSessionTranscriptPath,
5353
resolveSessionAuthProfileOverride,
5454
resolveThinkingDefault,
5555
setSessionRuntimeModel,

0 commit comments

Comments
 (0)