feat(skills): reload registry on watcher change events
This commit is contained in:
@@ -106,6 +106,23 @@ describe('SkillRegistry', () => {
|
||||
expect(registry.unregister('ghost')).toBe(false);
|
||||
});
|
||||
|
||||
it('reset replaces all existing skills with a new set', () => {
|
||||
const registry = new SkillRegistry();
|
||||
registry.register(makeSkill({ name: 'old-one' }));
|
||||
registry.register(makeSkill({ name: 'old-two' }));
|
||||
|
||||
registry.reset([
|
||||
makeSkill({ name: 'new-one' }),
|
||||
makeSkill({ name: 'new-two', available: false }),
|
||||
]);
|
||||
|
||||
expect(registry.get('old-one')).toBeUndefined();
|
||||
expect(registry.get('old-two')).toBeUndefined();
|
||||
expect(registry.get('new-one')).toBeDefined();
|
||||
expect(registry.get('new-two')).toBeDefined();
|
||||
expect(registry.list()).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('getSystemPromptAdditions returns empty string with no skills', () => {
|
||||
// Negative: with nothing registered the prompt additions should be empty.
|
||||
const registry = new SkillRegistry();
|
||||
|
||||
@@ -9,6 +9,14 @@ import type { Skill } from './types.js';
|
||||
export class SkillRegistry {
|
||||
private skills: Map<string, Skill> = new Map();
|
||||
|
||||
/** Replace all registered skills with the provided set. */
|
||||
reset(skills: Skill[]): void {
|
||||
this.skills.clear();
|
||||
for (const skill of skills) {
|
||||
this.skills.set(skill.manifest.name, skill);
|
||||
}
|
||||
}
|
||||
|
||||
/** Register a skill. Replaces any existing skill with the same name. */
|
||||
register(skill: Skill): void {
|
||||
this.skills.set(skill.manifest.name, skill);
|
||||
|
||||
Reference in New Issue
Block a user