mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-16 08:02:17 +00:00
feat(coding-agent): add resources_discover hook
This commit is contained in:
parent
6b6030d549
commit
3b8d0a8921
18 changed files with 489 additions and 53 deletions
|
|
@ -168,6 +168,71 @@ Content`,
|
|||
});
|
||||
});
|
||||
|
||||
describe("extendResources", () => {
|
||||
it("should load skills and prompts with extension metadata", async () => {
|
||||
const extraSkillDir = join(tempDir, "extra-skills", "extra-skill");
|
||||
mkdirSync(extraSkillDir, { recursive: true });
|
||||
const skillPath = join(extraSkillDir, "SKILL.md");
|
||||
writeFileSync(
|
||||
skillPath,
|
||||
`---
|
||||
name: extra-skill
|
||||
description: Extra skill
|
||||
---
|
||||
Extra content`,
|
||||
);
|
||||
|
||||
const extraPromptDir = join(tempDir, "extra-prompts");
|
||||
mkdirSync(extraPromptDir, { recursive: true });
|
||||
const promptPath = join(extraPromptDir, "extra.md");
|
||||
writeFileSync(
|
||||
promptPath,
|
||||
`---
|
||||
description: Extra prompt
|
||||
---
|
||||
Extra prompt content`,
|
||||
);
|
||||
|
||||
const loader = new DefaultResourceLoader({ cwd, agentDir });
|
||||
await loader.reload();
|
||||
|
||||
loader.extendResources({
|
||||
skillPaths: [
|
||||
{
|
||||
path: extraSkillDir,
|
||||
metadata: {
|
||||
source: "extension:extra",
|
||||
scope: "temporary",
|
||||
origin: "top-level",
|
||||
baseDir: extraSkillDir,
|
||||
},
|
||||
},
|
||||
],
|
||||
promptPaths: [
|
||||
{
|
||||
path: promptPath,
|
||||
metadata: {
|
||||
source: "extension:extra",
|
||||
scope: "temporary",
|
||||
origin: "top-level",
|
||||
baseDir: extraPromptDir,
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
const { skills } = loader.getSkills();
|
||||
expect(skills.some((skill) => skill.name === "extra-skill")).toBe(true);
|
||||
|
||||
const { prompts } = loader.getPrompts();
|
||||
expect(prompts.some((prompt) => prompt.name === "extra")).toBe(true);
|
||||
|
||||
const metadata = loader.getPathMetadata();
|
||||
expect(metadata.get(skillPath)?.source).toBe("extension:extra");
|
||||
expect(metadata.get(promptPath)?.source).toBe("extension:extra");
|
||||
});
|
||||
});
|
||||
|
||||
describe("noSkills option", () => {
|
||||
it("should skip skill discovery when noSkills is true", async () => {
|
||||
const skillsDir = join(agentDir, "skills");
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ This is a test skill.
|
|||
getSystemPrompt: () => undefined,
|
||||
getAppendSystemPrompt: () => [],
|
||||
getPathMetadata: () => new Map(),
|
||||
extendResources: () => {},
|
||||
reload: async () => {},
|
||||
};
|
||||
|
||||
|
|
@ -92,6 +93,7 @@ This is a test skill.
|
|||
getSystemPrompt: () => undefined,
|
||||
getAppendSystemPrompt: () => [],
|
||||
getPathMetadata: () => new Map(),
|
||||
extendResources: () => {},
|
||||
reload: async () => {},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -184,6 +184,7 @@ export function createTestResourceLoader(): ResourceLoader {
|
|||
getSystemPrompt: () => undefined,
|
||||
getAppendSystemPrompt: () => [],
|
||||
getPathMetadata: () => new Map(),
|
||||
extendResources: () => {},
|
||||
reload: async () => {},
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue