feat: $ skills mention
This commit is contained in:
@@ -2023,6 +2023,40 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Parse skill mentions (<$skillId|label>) from user messages
|
||||
const skillMentionRegex = /<\$([^|>]+)\|?[^>]*>/g;
|
||||
const skillIds = [];
|
||||
for (const message of messages) {
|
||||
const content = typeof message.content === 'string' ? message.content : message.content?.[0]?.text ?? '';
|
||||
for (const match of content.matchAll(skillMentionRegex)) {
|
||||
if (!skillIds.includes(match[1])) {
|
||||
skillIds.push(match[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Strip skill mentions from message content
|
||||
if (skillIds.length > 0) {
|
||||
messages = messages.map((message) => {
|
||||
if (typeof message.content === 'string') {
|
||||
return {
|
||||
...message,
|
||||
content: message.content.replace(/<\$[^>]+>/g, '').trim()
|
||||
};
|
||||
} else if (Array.isArray(message.content)) {
|
||||
return {
|
||||
...message,
|
||||
content: message.content.map((part) =>
|
||||
part.type === 'text'
|
||||
? { ...part, text: part.text.replace(/<\$[^>]+>/g, '').trim() }
|
||||
: part
|
||||
)
|
||||
};
|
||||
}
|
||||
return message;
|
||||
});
|
||||
}
|
||||
|
||||
const res = await generateOpenAIChatCompletion(
|
||||
localStorage.token,
|
||||
{
|
||||
@@ -2044,6 +2078,7 @@
|
||||
|
||||
filter_ids: selectedFilterIds.length > 0 ? selectedFilterIds : undefined,
|
||||
tool_ids: toolIds.length > 0 ? toolIds : undefined,
|
||||
skill_ids: skillIds.length > 0 ? skillIds : undefined,
|
||||
tool_servers: ($toolServers ?? []).filter(
|
||||
(server, idx) => toolServerIds.includes(idx) || toolServerIds.includes(server?.id)
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user