























@@ -1,7 +1,7 @@
11import fs from "node:fs";
22import os from "node:os";
33import path from "node:path";
4-import { afterEach, beforeEach, describe, expect, test } from "vitest";
4+import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
55import {
66addSubagentRunForTests,
77resetSubagentRegistryForTests,
@@ -32,6 +32,68 @@ describe("listSessionsFromStore subagent metadata", () => {
3232agents: { list: [{ id: "main", default: true }] },
3333} as OpenClawConfig;
343435+test("searches channel-derived display names before row enrichment", () => {
36+const result = listSessionsFromStore({
37+ cfg,
38+storePath: "/tmp/sessions.json",
39+store: {
40+"agent:main:slack:group:general": {
41+sessionId: "slack-general-session",
42+updatedAt: 2,
43+channel: "slack",
44+} as SessionEntry,
45+"agent:main:discord:group:random": {
46+sessionId: "discord-random-session",
47+updatedAt: 1,
48+channel: "discord",
49+} as SessionEntry,
50+},
51+opts: { search: "slack:g-general" },
52+});
53+54+expect(result.sessions.map((session) => session.key)).toEqual([
55+"agent:main:slack:group:general",
56+]);
57+expect(result.sessions[0]?.displayName).toBe("slack:g-general");
58+});
59+60+test("applies limit before transcript enrichment", () => {
61+const store: Record<string, SessionEntry> = {
62+"agent:main:newest": {
63+sessionId: "newest-session",
64+sessionFile: "/tmp/newest-session.jsonl",
65+updatedAt: 300,
66+} as SessionEntry,
67+"agent:main:middle": {
68+sessionId: "middle-session",
69+sessionFile: "/tmp/middle-session.jsonl",
70+updatedAt: 200,
71+} as SessionEntry,
72+"agent:main:oldest": {
73+sessionId: "old-session",
74+sessionFile: "/tmp/old-session.jsonl",
75+updatedAt: 100,
76+} as SessionEntry,
77+};
78+const existsSpy = vi.spyOn(fs, "existsSync").mockReturnValue(false);
79+try {
80+const result = listSessionsFromStore({
81+ cfg,
82+storePath: "/tmp/sessions.json",
83+ store,
84+opts: { limit: 2 },
85+});
86+87+expect(result.sessions.map((session) => session.sessionId)).toEqual([
88+"newest-session",
89+"middle-session",
90+]);
91+expect(existsSpy.mock.calls.flat().join("\n")).not.toContain("old-session");
92+} finally {
93+existsSpy.mockRestore();
94+}
95+});
96+3597test("includes subagent status timing and direct child session keys", () => {
3698const now = Date.now();
3799const store: Record<string, SessionEntry> = {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。