mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-05-04 22:51:08 +00:00
fix: hide skills with cron allowedTools when cron is disabled
When cron functionality is disabled, skills that require cron tools (like the 'loop' skill) should be hidden from the available commands to avoid confusing users with non-functional commands. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
a5f17ee39c
commit
a827e8bfa6
2 changed files with 39 additions and 1 deletions
|
|
@ -33,6 +33,7 @@ describe('BundledSkillLoader', () => {
|
|||
};
|
||||
mockConfig = {
|
||||
getSkillManager: vi.fn().mockReturnValue(mockSkillManager),
|
||||
isCronEnabled: vi.fn().mockReturnValue(false),
|
||||
} as unknown as Config;
|
||||
});
|
||||
|
||||
|
|
@ -125,4 +126,25 @@ describe('BundledSkillLoader', () => {
|
|||
expect(commands).toHaveLength(2);
|
||||
expect(commands.map((c) => c.name)).toEqual(['review', 'deploy']);
|
||||
});
|
||||
|
||||
it('should hide skills with cron allowedTools when cron is disabled', async () => {
|
||||
const skills = [
|
||||
makeSkill({ name: 'review', description: 'Review code' }),
|
||||
makeSkill({
|
||||
name: 'loop',
|
||||
description: 'Loop command',
|
||||
allowedTools: ['cron_create', 'cron_list', 'cron_delete'],
|
||||
}),
|
||||
];
|
||||
mockSkillManager.listSkills.mockResolvedValue(skills);
|
||||
(mockConfig.isCronEnabled as ReturnType<typeof vi.fn>).mockReturnValue(
|
||||
false,
|
||||
);
|
||||
|
||||
const loader = new BundledSkillLoader(mockConfig);
|
||||
const commands = await loader.loadCommands(signal);
|
||||
|
||||
expect(commands).toHaveLength(1);
|
||||
expect(commands[0].name).toBe('review');
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -33,7 +33,23 @@ export class BundledSkillLoader implements ICommandLoader {
|
|||
}
|
||||
|
||||
try {
|
||||
const skills = await skillManager.listSkills({ level: 'bundled' });
|
||||
const allSkills = await skillManager.listSkills({ level: 'bundled' });
|
||||
|
||||
// Hide skills whose allowedTools require cron when cron is disabled
|
||||
const cronEnabled = this.config?.isCronEnabled() ?? false;
|
||||
const skills = allSkills.filter((skill) => {
|
||||
if (
|
||||
!cronEnabled &&
|
||||
skill.allowedTools?.some((t) => t.startsWith('cron_'))
|
||||
) {
|
||||
debugLogger.debug(
|
||||
`Hiding skill "${skill.name}" because cron is not enabled`,
|
||||
);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
debugLogger.debug(
|
||||
`Loaded ${skills.length} bundled skill(s) as slash commands`,
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue