From ccd68d8166df4212c06a578e39451e4412e60c4e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 19 Feb 2026 07:44:34 +0000 Subject: [PATCH] test(subagents): dedupe sessions_spawn model expectation paths --- ...subagents.sessions-spawn.model.e2e.test.ts | 70 +++++-------------- 1 file changed, 18 insertions(+), 52 deletions(-) diff --git a/src/agents/openclaw-tools.subagents.sessions-spawn.model.e2e.test.ts b/src/agents/openclaw-tools.subagents.sessions-spawn.model.e2e.test.ts index c0e67858fd..94c317fdde 100644 --- a/src/agents/openclaw-tools.subagents.sessions-spawn.model.e2e.test.ts +++ b/src/agents/openclaw-tools.subagents.sessions-spawn.model.e2e.test.ts @@ -62,14 +62,18 @@ function mockPatchAndSingleAgentRun(params: { calls: GatewayCall[]; runId: strin } async function expectSpawnUsesConfiguredModel(params: { - config: SessionsSpawnConfigOverride; + config?: SessionsSpawnConfigOverride; runId: string; callId: string; expectedModel: string; }) { resetSubagentRegistryForTests(); callGatewayMock.mockReset(); - setSessionsSpawnConfigOverride(params.config); + if (params.config) { + setSessionsSpawnConfigOverride(params.config); + } else { + resetSessionsSpawnConfigOverride(); + } const calls: GatewayCall[] = []; mockPatchAndSingleAgentRun({ calls, runId: params.runId }); @@ -198,60 +202,22 @@ describe("openclaw-tools: subagents (sessions_spawn model + thinking)", () => { }); it("sessions_spawn applies default subagent model from defaults config", async () => { - resetSubagentRegistryForTests(); - callGatewayMock.mockReset(); - setSessionsSpawnConfigOverride({ - session: { mainKey: "main", scope: "per-sender" }, - agents: { defaults: { subagents: { model: "minimax/MiniMax-M2.1" } } }, - }); - const calls: GatewayCall[] = []; - mockPatchAndSingleAgentRun({ calls, runId: "run-default-model" }); - - const tool = await getSessionsSpawnTool({ - agentSessionKey: "agent:main:main", - agentChannel: "discord", - }); - - const result = await tool.execute("call-default-model", { - task: "do thing", - }); - expect(result.details).toMatchObject({ - status: "accepted", - modelApplied: true, - }); - - const patchCall = calls.find( - (call) => call.method === "sessions.patch" && (call.params as { model?: string })?.model, - ); - expect(patchCall?.params).toMatchObject({ - model: "minimax/MiniMax-M2.1", + await expectSpawnUsesConfiguredModel({ + config: { + session: { mainKey: "main", scope: "per-sender" }, + agents: { defaults: { subagents: { model: "minimax/MiniMax-M2.1" } } }, + }, + runId: "run-default-model", + callId: "call-default-model", + expectedModel: "minimax/MiniMax-M2.1", }); }); it("sessions_spawn falls back to runtime default model when no model config is set", async () => { - resetSubagentRegistryForTests(); - callGatewayMock.mockReset(); - const calls: GatewayCall[] = []; - mockPatchAndSingleAgentRun({ calls, runId: "run-runtime-default-model" }); - - const tool = await getSessionsSpawnTool({ - agentSessionKey: "agent:main:main", - agentChannel: "discord", - }); - - const result = await tool.execute("call-runtime-default-model", { - task: "do thing", - }); - expect(result.details).toMatchObject({ - status: "accepted", - modelApplied: true, - }); - - const patchCall = calls.find( - (call) => call.method === "sessions.patch" && (call.params as { model?: string })?.model, - ); - expect(patchCall?.params).toMatchObject({ - model: `${DEFAULT_PROVIDER}/${DEFAULT_MODEL}`, + await expectSpawnUsesConfiguredModel({ + runId: "run-runtime-default-model", + callId: "call-runtime-default-model", + expectedModel: `${DEFAULT_PROVIDER}/${DEFAULT_MODEL}`, }); });