























@@ -34,6 +34,19 @@ beforeEach(() => {
3434callGatewayMock.mockReset();
3535});
363637+function expectResolvedSessionReference(
38+result: Awaited<ReturnType<typeof resolveSessionReference>>,
39+expected: { key: string; displayKey: string; resolvedViaSessionId: boolean },
40+) {
41+expect(result.ok).toBe(true);
42+if (!result.ok) {
43+throw new Error("Expected resolved session reference");
44+}
45+expect(result.key).toBe(expected.key);
46+expect(result.displayKey).toBe(expected.displayKey);
47+expect(result.resolvedViaSessionId).toBe(expected.resolvedViaSessionId);
48+}
49+3750describe("resolveMainSessionAlias", () => {
3851it("uses normalized main key and global alias for global scope", () => {
3952const cfg = {
@@ -236,16 +249,14 @@ describe("resolveSessionReference", () => {
236249it("prefers a literal current session key before alias fallback", async () => {
237250callGatewayMock.mockResolvedValueOnce({ key: "current" });
238251239-await expect(
240-resolveSessionReference({
241-sessionKey: "current",
242-alias: "main",
243-mainKey: "main",
244-requesterInternalKey: "agent:main:subagent:child",
245-restrictToSpawned: false,
246-}),
247-).resolves.toMatchObject({
248-ok: true,
252+const result = await resolveSessionReference({
253+sessionKey: "current",
254+alias: "main",
255+mainKey: "main",
256+requesterInternalKey: "agent:main:subagent:child",
257+restrictToSpawned: false,
258+});
259+expectResolvedSessionReference(result, {
249260key: "current",
250261displayKey: "current",
251262resolvedViaSessionId: false,
@@ -263,16 +274,14 @@ describe("resolveSessionReference", () => {
263274callGatewayMock.mockResolvedValueOnce({});
264275callGatewayMock.mockResolvedValueOnce({ key: "agent:ops:main" });
265276266-await expect(
267-resolveSessionReference({
268-sessionKey: "current",
269-alias: "main",
270-mainKey: "main",
271-requesterInternalKey: "agent:main:subagent:child",
272-restrictToSpawned: false,
273-}),
274-).resolves.toMatchObject({
275-ok: true,
277+const result = await resolveSessionReference({
278+sessionKey: "current",
279+alias: "main",
280+mainKey: "main",
281+requesterInternalKey: "agent:main:subagent:child",
282+restrictToSpawned: false,
283+});
284+expectResolvedSessionReference(result, {
276285key: "agent:ops:main",
277286displayKey: "agent:ops:main",
278287resolvedViaSessionId: true,
@@ -296,16 +305,14 @@ describe("resolveSessionReference", () => {
296305});
297306298307it("skips literal current key lookup when spawned visibility is restricted", async () => {
299-await expect(
300-resolveSessionReference({
301-sessionKey: "current",
302-alias: "main",
303-mainKey: "main",
304-requesterInternalKey: "agent:main:subagent:child",
305-restrictToSpawned: true,
306-}),
307-).resolves.toMatchObject({
308-ok: true,
308+const result = await resolveSessionReference({
309+sessionKey: "current",
310+alias: "main",
311+mainKey: "main",
312+requesterInternalKey: "agent:main:subagent:child",
313+restrictToSpawned: true,
314+});
315+expectResolvedSessionReference(result, {
309316key: "agent:main:subagent:child",
310317displayKey: "agent:main:subagent:child",
311318resolvedViaSessionId: false,
@@ -323,16 +330,14 @@ describe("resolveSessionReference", () => {
323330});
324331325332it("treats the TUI client label as the requester session", async () => {
326-await expect(
327-resolveSessionReference({
328-sessionKey: "openclaw-tui",
329-alias: "main",
330-mainKey: "main",
331-requesterInternalKey: "agent:main:main",
332-restrictToSpawned: false,
333-}),
334-).resolves.toMatchObject({
335-ok: true,
333+const result = await resolveSessionReference({
334+sessionKey: "openclaw-tui",
335+alias: "main",
336+mainKey: "main",
337+requesterInternalKey: "agent:main:main",
338+restrictToSpawned: false,
339+});
340+expectResolvedSessionReference(result, {
336341key: "agent:main:main",
337342displayKey: "agent:main:main",
338343resolvedViaSessionId: false,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。