mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-14 22:00:43 +00:00
fix: keep gateway model probes raw
This commit is contained in:
@@ -529,6 +529,70 @@ describe("CLI attempt execution", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("keeps one-shot model runs on the raw embedded provider path", async () => {
|
||||
const sessionKey = "agent:main:direct:model-run-raw";
|
||||
const sessionEntry: SessionEntry = {
|
||||
sessionId: "openclaw-session-model-run-raw",
|
||||
updatedAt: Date.now(),
|
||||
};
|
||||
const sessionStore: Record<string, SessionEntry> = { [sessionKey]: sessionEntry };
|
||||
await fs.writeFile(storePath, JSON.stringify(sessionStore, null, 2), "utf-8");
|
||||
runEmbeddedPiAgentMock.mockResolvedValueOnce({
|
||||
meta: { durationMs: 1 },
|
||||
} satisfies EmbeddedPiRunResult);
|
||||
|
||||
await runAgentAttempt({
|
||||
providerOverride: "anthropic",
|
||||
modelOverride: "claude-opus-4-7",
|
||||
cfg: {
|
||||
agents: {
|
||||
defaults: {
|
||||
agentRuntime: { id: "claude-cli", fallback: "none" },
|
||||
},
|
||||
},
|
||||
} as OpenClawConfig,
|
||||
sessionEntry,
|
||||
sessionId: sessionEntry.sessionId,
|
||||
sessionKey,
|
||||
sessionAgentId: "main",
|
||||
sessionFile: path.join(tmpDir, "session.jsonl"),
|
||||
workspaceDir: tmpDir,
|
||||
body: "raw prompt",
|
||||
isFallbackRetry: false,
|
||||
resolvedThinkLevel: "medium",
|
||||
timeoutMs: 1_000,
|
||||
runId: "run-model-run-raw",
|
||||
opts: {
|
||||
senderIsOwner: false,
|
||||
modelRun: true,
|
||||
promptMode: "none",
|
||||
} as Parameters<typeof runAgentAttempt>[0]["opts"],
|
||||
runContext: {} as Parameters<typeof runAgentAttempt>[0]["runContext"],
|
||||
spawnedBy: undefined,
|
||||
messageChannel: "telegram",
|
||||
skillsSnapshot: undefined,
|
||||
resolvedVerboseLevel: undefined,
|
||||
agentDir: tmpDir,
|
||||
onAgentEvent: vi.fn(),
|
||||
authProfileProvider: "anthropic",
|
||||
sessionStore,
|
||||
storePath,
|
||||
sessionHasHistory: true,
|
||||
});
|
||||
|
||||
expect(runCliAgentMock).not.toHaveBeenCalled();
|
||||
expect(runEmbeddedPiAgentMock).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
provider: "anthropic",
|
||||
model: "claude-opus-4-7",
|
||||
agentHarnessId: "pi",
|
||||
modelRun: true,
|
||||
promptMode: "none",
|
||||
disableTools: true,
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it("forwards one-shot CLI cleanup to CLI providers", async () => {
|
||||
const sessionKey = "agent:main:direct:cleanup-claude-cli";
|
||||
const sessionEntry: SessionEntry = {
|
||||
|
||||
@@ -261,7 +261,9 @@ export function runAgentAttempt(params: {
|
||||
allowTransientCooldownProbe?: boolean;
|
||||
sessionHasHistory?: boolean;
|
||||
}) {
|
||||
const isRawModelRun = params.opts.modelRun === true || params.opts.promptMode === "none";
|
||||
const claudeCliFallbackPrelude =
|
||||
!isRawModelRun &&
|
||||
params.isFallbackRetry &&
|
||||
isClaudeCliProvider(params.originalProvider) &&
|
||||
!isClaudeCliProvider(params.providerOverride)
|
||||
@@ -280,29 +282,36 @@ export function runAgentAttempt(params: {
|
||||
);
|
||||
const bootstrapPromptWarningSignature =
|
||||
bootstrapPromptWarningSignaturesSeen[bootstrapPromptWarningSignaturesSeen.length - 1];
|
||||
const sessionPinnedAgentHarnessId = resolveSessionPinnedAgentHarnessId({
|
||||
cfg: params.cfg,
|
||||
sessionAgentId: params.sessionAgentId,
|
||||
sessionEntry: params.sessionEntry,
|
||||
sessionHasHistory: params.sessionHasHistory,
|
||||
sessionId: params.sessionId,
|
||||
sessionKey: params.sessionKey ?? params.sessionId,
|
||||
});
|
||||
const agentRuntimeOverride = params.sessionEntry?.agentRuntimeOverride?.trim();
|
||||
const cliExecutionProvider =
|
||||
resolveCliRuntimeExecutionProvider({
|
||||
provider: params.providerOverride,
|
||||
cfg: params.cfg,
|
||||
agentId: params.sessionAgentId,
|
||||
runtimeOverride: agentRuntimeOverride,
|
||||
}) ?? params.providerOverride;
|
||||
const agentHarnessPolicy = resolveAgentHarnessPolicy({
|
||||
provider: params.providerOverride,
|
||||
modelId: params.modelOverride,
|
||||
config: params.cfg,
|
||||
agentId: params.sessionAgentId,
|
||||
sessionKey: params.sessionKey ?? params.sessionId,
|
||||
});
|
||||
const sessionPinnedAgentHarnessId = isRawModelRun
|
||||
? "pi"
|
||||
: resolveSessionPinnedAgentHarnessId({
|
||||
cfg: params.cfg,
|
||||
sessionAgentId: params.sessionAgentId,
|
||||
sessionEntry: params.sessionEntry,
|
||||
sessionHasHistory: params.sessionHasHistory,
|
||||
sessionId: params.sessionId,
|
||||
sessionKey: params.sessionKey ?? params.sessionId,
|
||||
});
|
||||
const agentRuntimeOverride = isRawModelRun
|
||||
? undefined
|
||||
: params.sessionEntry?.agentRuntimeOverride?.trim();
|
||||
const cliExecutionProvider = isRawModelRun
|
||||
? params.providerOverride
|
||||
: (resolveCliRuntimeExecutionProvider({
|
||||
provider: params.providerOverride,
|
||||
cfg: params.cfg,
|
||||
agentId: params.sessionAgentId,
|
||||
runtimeOverride: agentRuntimeOverride,
|
||||
}) ?? params.providerOverride);
|
||||
const agentHarnessPolicy = isRawModelRun
|
||||
? ({ runtime: "pi", fallback: "pi" } as const)
|
||||
: resolveAgentHarnessPolicy({
|
||||
provider: params.providerOverride,
|
||||
modelId: params.modelOverride,
|
||||
config: params.cfg,
|
||||
agentId: params.sessionAgentId,
|
||||
sessionKey: params.sessionKey ?? params.sessionId,
|
||||
});
|
||||
const runtimeAuthPlan = buildAgentRuntimeAuthPlan({
|
||||
provider: params.providerOverride,
|
||||
authProfileProvider: params.authProfileProvider,
|
||||
@@ -314,7 +323,7 @@ export function runAgentAttempt(params: {
|
||||
allowHarnessAuthProfileForwarding: !isCliProvider(cliExecutionProvider, params.cfg),
|
||||
});
|
||||
const authProfileId = runtimeAuthPlan.forwardedAuthProfileId;
|
||||
if (isCliProvider(cliExecutionProvider, params.cfg)) {
|
||||
if (!isRawModelRun && isCliProvider(cliExecutionProvider, params.cfg)) {
|
||||
const cliSessionBinding = getCliSessionBinding(params.sessionEntry, cliExecutionProvider);
|
||||
const resolveReusableCliSessionBinding = async () => {
|
||||
if (
|
||||
|
||||
Reference in New Issue
Block a user