47
return [];
48
}
50
>
// `/abc` → typed = 'abc'; empty after just '/' → typed = ''.
51
>
const typed = leading.typed;
52
>
const skillsSeen = new Set<string>();
53
>
return candidates
54
>
.filter(skill => {
55
>
const uri = skill.uri;
56
>
if (matchesSlashCompletion(typed, skill.slashCommandName) && !skillsSeen.has(uri)) {
57
>
skillsSeen.add(uri);
58
>
return true;
59
>
}
60
return false;
62
>
.map(skill => ({
63
>
insertText: '/' + skill.slashCommandName + ' ',
64
>
rangeStart: leading.rangeStart,
65
>
rangeEnd: leading.rangeEnd,
66
>
attachment: {
67
>
type: MessageAttachmentKind.Simple,
68
>
label: '/' + skill.slashCommandName,
69
>
_meta: toSkillCompletionAttachmentMeta({
70
>
uri: skill.uri,
71
>
name: skill.name,
72
>
displayName: skill.slashCommandName,
73
>
description: skill.description,
74
>
}),
75
>
},
76
>
}));
77
}
78