mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 16:30:57 +00:00
fix(providers): handle proxied DeepSeek V4 replay
This commit is contained in:
@@ -686,6 +686,128 @@ describe("skill-workshop", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("uses the configured agent default for reviewer fallback", async () => {
|
||||
const workspaceDir = await makeTempDir();
|
||||
const stateDir = await makeTempDir();
|
||||
const runEmbeddedPiAgent = vi.fn(async () => ({
|
||||
payloads: [{ text: JSON.stringify({ action: "none" }) }],
|
||||
meta: {},
|
||||
}));
|
||||
const api = createTestPluginApi({
|
||||
config: {
|
||||
agents: {
|
||||
defaults: {
|
||||
model: { primary: "openai-codex/gpt-5.5" },
|
||||
},
|
||||
},
|
||||
},
|
||||
runtime: {
|
||||
agent: {
|
||||
defaults: { provider: "openai", model: "gpt-5.4" },
|
||||
resolveAgentDir: () => path.join(workspaceDir, ".agent"),
|
||||
runEmbeddedPiAgent,
|
||||
},
|
||||
state: {
|
||||
resolveStateDir: () => stateDir,
|
||||
},
|
||||
} as never,
|
||||
});
|
||||
|
||||
await reviewTranscriptForProposal({
|
||||
api,
|
||||
config: {
|
||||
enabled: true,
|
||||
autoCapture: true,
|
||||
approvalPolicy: "pending",
|
||||
reviewMode: "llm",
|
||||
reviewInterval: 1,
|
||||
reviewMinToolCalls: 1,
|
||||
reviewTimeoutMs: 5_000,
|
||||
maxPending: 50,
|
||||
maxSkillBytes: 40_000,
|
||||
},
|
||||
ctx: { agentId: "main", workspaceDir },
|
||||
messages: [{ role: "user", content: "Remember this repeatable fix." }],
|
||||
});
|
||||
|
||||
expect(runEmbeddedPiAgent).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
provider: "openai-codex",
|
||||
model: "gpt-5.5",
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it("infers reviewer fallback provider for a bare configured model", async () => {
|
||||
const workspaceDir = await makeTempDir();
|
||||
const stateDir = await makeTempDir();
|
||||
const runEmbeddedPiAgent = vi.fn(async () => ({
|
||||
payloads: [{ text: JSON.stringify({ action: "none" }) }],
|
||||
meta: {},
|
||||
}));
|
||||
const api = createTestPluginApi({
|
||||
config: {
|
||||
agents: {
|
||||
defaults: {
|
||||
model: { primary: "gpt-5.5" },
|
||||
},
|
||||
},
|
||||
models: {
|
||||
providers: {
|
||||
"openai-codex": {
|
||||
baseUrl: "https://chatgpt.com/backend-api/codex",
|
||||
models: [
|
||||
{
|
||||
id: "gpt-5.5",
|
||||
name: "GPT 5.5",
|
||||
reasoning: true,
|
||||
input: ["text"],
|
||||
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
||||
contextWindow: 200_000,
|
||||
maxTokens: 128_000,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
runtime: {
|
||||
agent: {
|
||||
defaults: { provider: "openai", model: "gpt-5.4" },
|
||||
resolveAgentDir: () => path.join(workspaceDir, ".agent"),
|
||||
runEmbeddedPiAgent,
|
||||
},
|
||||
state: {
|
||||
resolveStateDir: () => stateDir,
|
||||
},
|
||||
} as never,
|
||||
});
|
||||
|
||||
await reviewTranscriptForProposal({
|
||||
api,
|
||||
config: {
|
||||
enabled: true,
|
||||
autoCapture: true,
|
||||
approvalPolicy: "pending",
|
||||
reviewMode: "llm",
|
||||
reviewInterval: 1,
|
||||
reviewMinToolCalls: 1,
|
||||
reviewTimeoutMs: 5_000,
|
||||
maxPending: 50,
|
||||
maxSkillBytes: 40_000,
|
||||
},
|
||||
ctx: { agentId: "main", workspaceDir },
|
||||
messages: [{ role: "user", content: "Remember this bare-model default." }],
|
||||
});
|
||||
|
||||
expect(runEmbeddedPiAgent).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
provider: "openai-codex",
|
||||
model: "gpt-5.5",
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it("runs reviewer after threshold and queues the proposal", async () => {
|
||||
const workspaceDir = await makeTempDir();
|
||||
const stateDir = await makeTempDir();
|
||||
|
||||
Reference in New Issue
Block a user