mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-01 04:11:03 +00:00
test(agents): restore cli runner test seams
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import { shouldLogVerbose } from "../../globals.js";
|
||||
import { isTruthyEnvValue } from "../../infra/env.js";
|
||||
import { requestHeartbeatNow } from "../../infra/heartbeat-wake.js";
|
||||
import { requestHeartbeatNow as requestHeartbeatNowImpl } from "../../infra/heartbeat-wake.js";
|
||||
import { sanitizeHostExecEnv } from "../../infra/host-env-security.js";
|
||||
import { enqueueSystemEvent } from "../../infra/system-events.js";
|
||||
import { getProcessSupervisor } from "../../process/supervisor/index.js";
|
||||
import { enqueueSystemEvent as enqueueSystemEventImpl } from "../../infra/system-events.js";
|
||||
import { getProcessSupervisor as getProcessSupervisorImpl } from "../../process/supervisor/index.js";
|
||||
import { scopedHeartbeatWakeOptions } from "../../routing/session-key.js";
|
||||
import { prependBootstrapPromptWarning } from "../bootstrap-budget.js";
|
||||
import { parseCliOutput, type CliOutput } from "../cli-output.js";
|
||||
@@ -28,6 +28,16 @@ import {
|
||||
} from "./log.js";
|
||||
import type { PreparedCliRunContext } from "./types.js";
|
||||
|
||||
const executeDeps = {
|
||||
getProcessSupervisor: getProcessSupervisorImpl,
|
||||
enqueueSystemEvent: enqueueSystemEventImpl,
|
||||
requestHeartbeatNow: requestHeartbeatNowImpl,
|
||||
};
|
||||
|
||||
export function setCliRunnerExecuteTestDeps(overrides: Partial<typeof executeDeps>): void {
|
||||
Object.assign(executeDeps, overrides);
|
||||
}
|
||||
|
||||
function buildCliLogArgs(params: {
|
||||
args: string[];
|
||||
systemPromptArg?: string;
|
||||
@@ -169,7 +179,7 @@ export async function executePreparedCliRun(
|
||||
timeoutMs: params.timeoutMs,
|
||||
useResume,
|
||||
});
|
||||
const supervisor = getProcessSupervisor();
|
||||
const supervisor = executeDeps.getProcessSupervisor();
|
||||
const scopeKey = buildCliSupervisorScopeKey({
|
||||
backend,
|
||||
backendId: context.backendResolved.id,
|
||||
@@ -222,8 +232,8 @@ export async function executePreparedCliRun(
|
||||
"It may have been waiting for interactive input or an approval prompt.",
|
||||
"For Claude Code, prefer --permission-mode bypassPermissions --print.",
|
||||
].join(" ");
|
||||
enqueueSystemEvent(stallNotice, { sessionKey: params.sessionKey });
|
||||
requestHeartbeatNow(
|
||||
executeDeps.enqueueSystemEvent(stallNotice, { sessionKey: params.sessionKey });
|
||||
executeDeps.requestHeartbeatNow(
|
||||
scopedHeartbeatWakeOptions(params.sessionKey, { reason: "cli:watchdog:stall" }),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,10 @@ import {
|
||||
buildBootstrapTruncationReportMeta,
|
||||
analyzeBootstrapBudget,
|
||||
} from "../bootstrap-budget.js";
|
||||
import { makeBootstrapWarn, resolveBootstrapContextForRun } from "../bootstrap-files.js";
|
||||
import {
|
||||
makeBootstrapWarn as makeBootstrapWarnImpl,
|
||||
resolveBootstrapContextForRun as resolveBootstrapContextForRunImpl,
|
||||
} from "../bootstrap-files.js";
|
||||
import { resolveCliBackendConfig } from "../cli-backends.js";
|
||||
import { hashCliSessionText, resolveCliSessionReuse } from "../cli-session.js";
|
||||
import { resolveOpenClawDocsPath } from "../docs-path.js";
|
||||
@@ -22,6 +25,15 @@ import { buildSystemPrompt, normalizeCliModel } from "./helpers.js";
|
||||
import { cliBackendLog } from "./log.js";
|
||||
import type { PreparedCliRunContext, RunCliAgentParams } from "./types.js";
|
||||
|
||||
const prepareDeps = {
|
||||
makeBootstrapWarn: makeBootstrapWarnImpl,
|
||||
resolveBootstrapContextForRun: resolveBootstrapContextForRunImpl,
|
||||
};
|
||||
|
||||
export function setCliRunnerPrepareTestDeps(overrides: Partial<typeof prepareDeps>): void {
|
||||
Object.assign(prepareDeps, overrides);
|
||||
}
|
||||
|
||||
export async function prepareCliRunContext(
|
||||
params: RunCliAgentParams,
|
||||
): Promise<PreparedCliRunContext> {
|
||||
@@ -74,12 +86,15 @@ export async function prepareCliRunContext(
|
||||
const modelDisplay = `${params.provider}/${modelId}`;
|
||||
|
||||
const sessionLabel = params.sessionKey ?? params.sessionId;
|
||||
const { bootstrapFiles, contextFiles } = await resolveBootstrapContextForRun({
|
||||
const { bootstrapFiles, contextFiles } = await prepareDeps.resolveBootstrapContextForRun({
|
||||
workspaceDir,
|
||||
config: params.config,
|
||||
sessionKey: params.sessionKey,
|
||||
sessionId: params.sessionId,
|
||||
warn: makeBootstrapWarn({ sessionLabel, warn: (message) => cliBackendLog.warn(message) }),
|
||||
warn: prepareDeps.makeBootstrapWarn({
|
||||
sessionLabel,
|
||||
warn: (message) => cliBackendLog.warn(message),
|
||||
}),
|
||||
});
|
||||
const bootstrapMaxChars = resolveBootstrapMaxChars(params.config);
|
||||
const bootstrapTotalMaxChars = resolveBootstrapTotalMaxChars(params.config);
|
||||
|
||||
Reference in New Issue
Block a user