mirror of
https://github.com/iflytek/skillhub.git
synced 2026-10-07 02:57:51 +00:00
* feat(cli,domain): support non-global namespace skill download Parse namespace from skill name using -- separator (e.g., astroclaw--api-gateway) so users don't need --namespace flag. Allow anonymous download for any PUBLIC skill regardless of namespace. CLI changes: - Add cli/src/shared/skill-name-parser.ts utility - Update install and remove commands to parse skill name argument - 10 unit tests covering edge cases Domain changes: - SkillDownloadService.isAnonymousDownloadAllowed: drop namespace type check, only require PUBLIC visibility - Update test to expect success for team-namespace public skill Synced from SAAS commit 26c67e31b1221249cf9b73321d1b726d8ba6e6df * fix(cli): use bun:test instead of vitest in skill-name-parser test
27 lines
632 B
TypeScript
27 lines
632 B
TypeScript
export interface ParsedSkillName {
|
|
namespace: string
|
|
slug: string
|
|
}
|
|
|
|
export function parseSkillName(skillName: string, defaultNamespace = 'global'): ParsedSkillName {
|
|
const separatorIndex = skillName.indexOf('--')
|
|
|
|
if (separatorIndex <= 0) {
|
|
return {
|
|
namespace: defaultNamespace,
|
|
slug: separatorIndex === 0 ? skillName.slice(2) : skillName
|
|
}
|
|
}
|
|
|
|
if (separatorIndex === skillName.length - 2) {
|
|
return {
|
|
namespace: defaultNamespace,
|
|
slug: skillName.slice(0, -2)
|
|
}
|
|
}
|
|
|
|
return {
|
|
namespace: skillName.slice(0, separatorIndex),
|
|
slug: skillName.slice(separatorIndex + 2)
|
|
}
|
|
}
|