agents: propagate config for embedded skill loading

This commit is contained in:
Gustavo Madeira Santana
2026-03-03 02:44:04 -05:00
parent ae29842158
commit 2370ea5d1b
6 changed files with 189 additions and 10 deletions

View File

@@ -0,0 +1,67 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
import type { OpenClawConfig } from "../../config/config.js";
import type { SkillSnapshot } from "../skills.js";
const hoisted = vi.hoisted(() => ({
loadWorkspaceSkillEntries: vi.fn(() => []),
}));
vi.mock("../skills.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("../skills.js")>();
return {
...actual,
loadWorkspaceSkillEntries: (...args: unknown[]) => hoisted.loadWorkspaceSkillEntries(...args),
};
});
const { resolveEmbeddedRunSkillEntries } = await import("./skills-runtime.js");
describe("resolveEmbeddedRunSkillEntries", () => {
beforeEach(() => {
hoisted.loadWorkspaceSkillEntries.mockReset();
hoisted.loadWorkspaceSkillEntries.mockReturnValue([]);
});
it("loads skill entries with config when no resolved snapshot skills exist", () => {
const config: OpenClawConfig = {
plugins: {
entries: {
diffs: { enabled: true },
},
},
};
const result = resolveEmbeddedRunSkillEntries({
workspaceDir: "/tmp/workspace",
config,
skillsSnapshot: {
prompt: "skills prompt",
skills: [],
},
});
expect(result.shouldLoadSkillEntries).toBe(true);
expect(hoisted.loadWorkspaceSkillEntries).toHaveBeenCalledTimes(1);
expect(hoisted.loadWorkspaceSkillEntries).toHaveBeenCalledWith("/tmp/workspace", { config });
});
it("skips skill entry loading when resolved snapshot skills are present", () => {
const snapshot: SkillSnapshot = {
prompt: "skills prompt",
skills: [{ name: "diffs" }],
resolvedSkills: [],
};
const result = resolveEmbeddedRunSkillEntries({
workspaceDir: "/tmp/workspace",
config: {},
skillsSnapshot: snapshot,
});
expect(result).toEqual({
shouldLoadSkillEntries: false,
skillEntries: [],
});
expect(hoisted.loadWorkspaceSkillEntries).not.toHaveBeenCalled();
});
});