




















11import { describe, expect, it } from "vitest";
2-import { createCanonicalFixtureSkill } from "../test-support/test-helpers.js";
3-import type { SkillEntry } from "../types.js";
2+import { createFixtureSkillEntry } from "../test-support/test-helpers.js";
43import {
54buildSkillIndex,
65buildSkillIndexEntries,
@@ -21,8 +20,8 @@ describe("skill index", () => {
21202221it("indexes entries by exact and normalized name without changing input order", () => {
2322const entries = [
24-createEntry("Excel XLSX", { skillKey: "excel_xlsx" }),
25-createEntry("GitHub Review"),
23+createFixtureSkillEntry("Excel XLSX", { skillKey: "excel_xlsx" }),
24+createFixtureSkillEntry("GitHub Review"),
2625];
27262827const index = buildSkillIndex(entries);
@@ -39,8 +38,8 @@ describe("skill index", () => {
39384039it("keeps ambiguous normalized names as multiple index entries", () => {
4140const entries = [
42-createEntry("Excel/XLSX", { skillKey: "excel-slash" }),
43-createEntry("Excel_XLSX", { skillKey: "excel-underscore" }),
41+createFixtureSkillEntry("Excel/XLSX", { skillKey: "excel-slash" }),
42+createFixtureSkillEntry("Excel_XLSX", { skillKey: "excel-underscore" }),
4443];
45444645const index = buildSkillIndex(entries);
@@ -52,28 +51,28 @@ describe("skill index", () => {
5251});
53525453it("centralizes runtime, prompt, and command exposure policy", () => {
55-const runtimeHidden = createEntry("runtime-hidden", {
54+const runtimeHidden = createFixtureSkillEntry("runtime-hidden", {
5655exposure: {
5756includeInRuntimeRegistry: false,
5857includeInAvailableSkillsPrompt: true,
5958userInvocable: true,
6059},
6160});
62-const promptHidden = createEntry("prompt-hidden", {
61+const promptHidden = createFixtureSkillEntry("prompt-hidden", {
6362exposure: {
6463includeInRuntimeRegistry: true,
6564includeInAvailableSkillsPrompt: false,
6665userInvocable: true,
6766},
6867});
69-const commandHidden = createEntry("command-hidden", {
68+const commandHidden = createFixtureSkillEntry("command-hidden", {
7069exposure: {
7170includeInRuntimeRegistry: true,
7271includeInAvailableSkillsPrompt: true,
7372userInvocable: false,
7473},
7574});
76-const legacyPromptHidden = createEntry("legacy-prompt-hidden", {
75+const legacyPromptHidden = createFixtureSkillEntry("legacy-prompt-hidden", {
7776invocation: { disableModelInvocation: true, userInvocable: true },
7877});
7978@@ -108,9 +107,9 @@ describe("skill index", () => {
108107});
109108110109it("records source, bundled state, skill key, and agent filter state", () => {
111-const bundled = createEntry("bundle", { source: "openclaw-bundled" });
112-const unknownBundled = createEntry("unknown-bundle", { source: "unknown" });
113-const workspace = createEntry("workspace", {
110+const bundled = createFixtureSkillEntry("bundle", { source: "openclaw-bundled" });
111+const unknownBundled = createFixtureSkillEntry("unknown-bundle", { source: "unknown" });
112+const workspace = createFixtureSkillEntry("workspace", {
114113source: "openclaw-workspace",
115114skillKey: "workspace-key",
116115});
@@ -148,30 +147,3 @@ describe("skill index", () => {
148147]);
149148});
150149});
151-152-function createEntry(
153-name: string,
154-opts?: {
155-source?: string;
156-skillKey?: string;
157-exposure?: SkillEntry["exposure"];
158-invocation?: SkillEntry["invocation"];
159-},
160-): SkillEntry {
161-return {
162-skill: createCanonicalFixtureSkill({
163- name,
164-description: `${name} description`,
165-filePath: `/skills/${name}/SKILL.md`,
166-baseDir: `/skills/${name}`,
167-source: opts?.source ?? "openclaw-workspace",
168-}),
169-frontmatter: {},
170-metadata: opts?.skillKey ? { skillKey: opts.skillKey } : undefined,
171-invocation: opts?.invocation ?? {
172-userInvocable: true,
173-disableModelInvocation: false,
174-},
175-exposure: opts?.exposure,
176-};
177-}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。