惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
爱范儿
爱范儿
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
J
Java Code Geeks
宝玉的分享
宝玉的分享
Jina AI
Jina AI
B
Blog
N
Netflix TechBlog - Medium
Recent Announcements
Recent Announcements
aimingoo的专栏
aimingoo的专栏
腾讯CDC
C
Check Point Blog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
罗磊的独立博客
B
Blog RSS Feed
WordPress大学
WordPress大学
小众软件
小众软件
博客园 - 叶小钗
M
MIT News - Artificial intelligence
GbyAI
GbyAI

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
test: guard server chat agent event mock calls · openclaw...
steipete · 2026-05-12 · via Recent Commits to openclaw:main

@@ -13,10 +13,6 @@ vi.mock("../config/io.js", () => ({

1313

getRuntimeConfig: vi.fn(() => ({})),

1414

}));

151516-

vi.mock("../config/io.js", () => ({

17-

getRuntimeConfig: vi.fn(() => ({})),

18-

}));

19-2016

vi.mock("../infra/heartbeat-visibility.js", () => ({

2117

resolveHeartbeatVisibility: vi.fn(() => ({

2218

showOk: false,

@@ -184,7 +180,7 @@ describe("agent event handler", () => {

184180

payloadIndex: number,

185181

label: string,

186182

) {

187-

const call = mock.mock.calls[index];

183+

const call = mock.mock.calls.at(index);

188184

if (!call) {

189185

throw new Error(`missing ${label} call ${index + 1}`);

190186

}

@@ -930,7 +926,7 @@ describe("agent event handler", () => {

930926

});

931927932928

expect(broadcastToConnIds).toHaveBeenCalledTimes(1);

933-

expect(broadcastToConnIds.mock.calls[0]?.[0]).toBe("session.tool");

929+

expect(broadcastToConnIds.mock.calls.at(0)?.[0]).toBe("session.tool");

934930

const sessionToolPayload = requireMockPayload(broadcastToConnIds, 0, 1, "session tool payload");

935931

expectRecordFields(sessionToolPayload, {

936932

runId: "run-session-tool",

@@ -953,8 +949,8 @@ describe("agent event handler", () => {

953949

toolCallId: "tool-session-1",

954950

args: { command: "echo hi" },

955951

});

956-

expect(broadcastToConnIds.mock.calls[0]?.[2]).toEqual(new Set(["conn-session"]));

957-

expect(broadcastToConnIds.mock.calls[0]?.[3]).toEqual({ dropIfSlow: true });

952+

expect(broadcastToConnIds.mock.calls.at(0)?.[2]).toEqual(new Set(["conn-session"]));

953+

expect(broadcastToConnIds.mock.calls.at(0)?.[3]).toEqual({ dropIfSlow: true });

958954

resetAgentRunContextForTest();

959955

});

960956

@@ -995,7 +991,7 @@ describe("agent event handler", () => {

995991

});

996992997993

expect(broadcastToConnIds).toHaveBeenCalledTimes(1);

998-

expect(broadcastToConnIds.mock.calls[0]?.[0]).toBe("agent");

994+

expect(broadcastToConnIds.mock.calls.at(0)?.[0]).toBe("agent");

999995

const runToolPayload = requireMockPayload(broadcastToConnIds, 0, 1, "run tool payload");

1000996

expectRecordFields(runToolPayload, {

1001997

runId: "run-tool-owner",

@@ -1018,7 +1014,7 @@ describe("agent event handler", () => {

10181014

toolCallId: "tool-run-1",

10191015

args: { command: "echo hi" },

10201016

});

1021-

expect(broadcastToConnIds.mock.calls[0]?.[2]).toEqual(new Set(["conn-run"]));

1017+

expect(broadcastToConnIds.mock.calls.at(0)?.[2]).toEqual(new Set(["conn-run"]));

10221018

resetAgentRunContextForTest();

10231019

});

10241020

@@ -1047,7 +1043,7 @@ describe("agent event handler", () => {

10471043

},

10481044

});

104910451050-

const payload = nodeSendToSession.mock.calls[0]?.[2] as {

1046+

const payload = nodeSendToSession.mock.calls.at(0)?.[2] as {

10511047

stream?: string;

10521048

data?: { name?: string; args?: Record<string, unknown> };

10531049

};

@@ -1111,8 +1107,8 @@ describe("agent event handler", () => {

11111107

},

11121108

});

111311091114-

expect(nodeSendToSession.mock.calls[0]?.[0]).toBe("session-1");

1115-

expect(nodeSendToSession.mock.calls[0]?.[1]).toBe("agent");

1110+

expect(nodeSendToSession.mock.calls.at(0)?.[0]).toBe("session-1");

1111+

expect(nodeSendToSession.mock.calls.at(0)?.[1]).toBe("agent");

11161112

const nodeToolPayload = requireMockPayload(nodeSendToSession, 0, 2, "node tool payload");

11171113

expectRecordFields(nodeToolPayload, {

11181114

runId: "run-tool-node",

@@ -1270,8 +1266,8 @@ describe("agent event handler", () => {

12701266

},

12711267

});

127212681273-

expect(broadcastToConnIds.mock.calls[0]?.[0]).toBe("sessions.changed");

1274-

expectPayloadFields(broadcastToConnIds.mock.calls[0]?.[1], {

1269+

expect(broadcastToConnIds.mock.calls.at(0)?.[0]).toBe("sessions.changed");

1270+

expectPayloadFields(broadcastToConnIds.mock.calls.at(0)?.[1], {

12751271

sessionKey: "session-finished",

12761272

phase: "end",

12771273

spawnedBy: "agent:main:main",

@@ -1290,8 +1286,8 @@ describe("agent event handler", () => {

12901286

estimatedCostUsd: 0.12,

12911287

lastThreadId: 42,

12921288

});

1293-

expect(broadcastToConnIds.mock.calls[0]?.[2]).toEqual(new Set(["conn-session"]));

1294-

expect(broadcastToConnIds.mock.calls[0]?.[3]).toEqual({ dropIfSlow: true });

1289+

expect(broadcastToConnIds.mock.calls.at(0)?.[2]).toEqual(new Set(["conn-session"]));

1290+

expect(broadcastToConnIds.mock.calls.at(0)?.[3]).toEqual({ dropIfSlow: true });

12951291

});

1296129212971293

it("keeps tool output for Control UI recipients when verbose is on", () => {

@@ -1317,7 +1313,9 @@ describe("agent event handler", () => {

13171313

});

1318131413191315

expect(broadcastToConnIds).toHaveBeenCalledTimes(1);

1320-

const payload = broadcastToConnIds.mock.calls[0]?.[1] as { data?: Record<string, unknown> };

1316+

const payload = broadcastToConnIds.mock.calls.at(0)?.[1] as {

1317+

data?: Record<string, unknown>;

1318+

};

13211319

expect(payload.data?.result).toEqual({ content: [{ type: "text", text: "secret" }] });

13221320

expect(payload.data?.partialResult).toEqual({ content: [{ type: "text", text: "partial" }] });

13231321

resetAgentRunContextForTest();

@@ -1346,7 +1344,9 @@ describe("agent event handler", () => {

13461344

});

1347134513481346

expect(broadcastToConnIds).toHaveBeenCalledTimes(1);

1349-

const payload = broadcastToConnIds.mock.calls[0]?.[1] as { data?: Record<string, unknown> };

1347+

const payload = broadcastToConnIds.mock.calls.at(0)?.[1] as {

1348+

data?: Record<string, unknown>;

1349+

};

13501350

expect(payload.data?.result).toEqual(result);

13511351

resetAgentRunContextForTest();

13521352

});

@@ -1627,7 +1627,7 @@ describe("agent event handler", () => {

16271627

expect(broadcast.mock.calls.some(([event]) => event === "agent")).toBe(false);

16281628

expect(nodeSendToSession).not.toHaveBeenCalled();

16291629

const persistParams = requireRecord(

1630-

persistGatewaySessionLifecycleEventMock.mock.calls[0]?.[0],

1630+

persistGatewaySessionLifecycleEventMock.mock.calls.at(0)?.[0],

16311631

"persist lifecycle params",

16321632

);

16331633

expect(persistParams.sessionKey).toBe("session-hidden");

@@ -1680,7 +1680,7 @@ describe("agent event handler", () => {

16801680

});

1681168116821682

expect(broadcastToConnIds).toHaveBeenCalledTimes(1);

1683-

const payload = broadcastToConnIds.mock.calls[0]?.[1] as { runId?: string };

1683+

const payload = broadcastToConnIds.mock.calls.at(0)?.[1] as { runId?: string };

16841684

expect(payload.runId).toBe("run-tool-client");

16851685

resetAgentRunContextForTest();

16861686

});