mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-16 05:46:36 +02:00
109 lines
3.4 KiB
TypeScript
109 lines
3.4 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const {
|
|
buildWorkspaceSkillSnapshotMock,
|
|
ensureSkillsWatcherMock,
|
|
getSkillsSnapshotVersionMock,
|
|
shouldRefreshSnapshotForVersionMock,
|
|
getRemoteSkillEligibilityMock,
|
|
resolveAgentConfigMock,
|
|
resolveSessionAgentIdMock,
|
|
resolveAgentIdFromSessionKeyMock,
|
|
} = vi.hoisted(() => ({
|
|
buildWorkspaceSkillSnapshotMock: vi.fn(() => ({ prompt: "", skills: [], resolvedSkills: [] })),
|
|
ensureSkillsWatcherMock: vi.fn(),
|
|
getSkillsSnapshotVersionMock: vi.fn(() => 0),
|
|
shouldRefreshSnapshotForVersionMock: vi.fn(() => false),
|
|
getRemoteSkillEligibilityMock: vi.fn(() => ({
|
|
platforms: [],
|
|
hasBin: () => false,
|
|
hasAnyBin: () => false,
|
|
})),
|
|
resolveAgentConfigMock: vi.fn(() => undefined),
|
|
resolveSessionAgentIdMock: vi.fn(() => "writer"),
|
|
resolveAgentIdFromSessionKeyMock: vi.fn(() => "main"),
|
|
}));
|
|
|
|
vi.mock("../../agents/agent-scope.js", () => ({
|
|
resolveAgentConfig: resolveAgentConfigMock,
|
|
resolveSessionAgentId: resolveSessionAgentIdMock,
|
|
}));
|
|
|
|
vi.mock("../../agents/skills.js", () => ({
|
|
buildWorkspaceSkillSnapshot: buildWorkspaceSkillSnapshotMock,
|
|
}));
|
|
|
|
vi.mock("../../agents/skills/refresh.js", () => ({
|
|
ensureSkillsWatcher: ensureSkillsWatcherMock,
|
|
getSkillsSnapshotVersion: getSkillsSnapshotVersionMock,
|
|
shouldRefreshSnapshotForVersion: shouldRefreshSnapshotForVersionMock,
|
|
}));
|
|
|
|
vi.mock("../../config/sessions.js", () => ({
|
|
updateSessionStore: vi.fn(),
|
|
resolveSessionFilePath: vi.fn(),
|
|
resolveSessionFilePathOptions: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("../../infra/skills-remote.js", () => ({
|
|
getRemoteSkillEligibility: getRemoteSkillEligibilityMock,
|
|
}));
|
|
|
|
vi.mock("../../routing/session-key.js", () => ({
|
|
normalizeAgentId: (id: string) => id,
|
|
normalizeMainKey: (key?: string) => key ?? "main",
|
|
resolveAgentIdFromSessionKey: resolveAgentIdFromSessionKeyMock,
|
|
}));
|
|
|
|
const { ensureSkillSnapshot } = await import("./session-updates.js");
|
|
|
|
describe("ensureSkillSnapshot", () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
buildWorkspaceSkillSnapshotMock.mockReturnValue({ prompt: "", skills: [], resolvedSkills: [] });
|
|
getSkillsSnapshotVersionMock.mockReturnValue(0);
|
|
shouldRefreshSnapshotForVersionMock.mockReturnValue(false);
|
|
getRemoteSkillEligibilityMock.mockReturnValue({
|
|
platforms: [],
|
|
hasBin: () => false,
|
|
hasAnyBin: () => false,
|
|
});
|
|
resolveAgentConfigMock.mockReturnValue(undefined);
|
|
resolveSessionAgentIdMock.mockReturnValue("writer");
|
|
resolveAgentIdFromSessionKeyMock.mockReturnValue("main");
|
|
});
|
|
|
|
afterEach(() => {
|
|
vi.unstubAllEnvs();
|
|
});
|
|
|
|
it("uses config-aware session agent resolution for legacy session keys", async () => {
|
|
vi.stubEnv("OPENCLAW_TEST_FAST", "0");
|
|
|
|
await ensureSkillSnapshot({
|
|
sessionKey: "main",
|
|
isFirstTurnInSession: false,
|
|
workspaceDir: "/tmp/workspace",
|
|
cfg: {
|
|
agents: {
|
|
list: [{ id: "writer", default: true }],
|
|
},
|
|
},
|
|
});
|
|
|
|
expect(resolveSessionAgentIdMock).toHaveBeenCalledWith({
|
|
sessionKey: "main",
|
|
config: {
|
|
agents: {
|
|
list: [{ id: "writer", default: true }],
|
|
},
|
|
},
|
|
});
|
|
expect(buildWorkspaceSkillSnapshotMock).toHaveBeenCalledWith(
|
|
"/tmp/workspace",
|
|
expect.objectContaining({ agentId: "writer" }),
|
|
);
|
|
expect(resolveAgentIdFromSessionKeyMock).not.toHaveBeenCalled();
|
|
});
|
|
});
|