mirror of
https://github.com/danbulant/dots-hyprland
synced 2026-05-24 12:22:09 +00:00
ai: add suggestions for /tool
This commit is contained in:
parent
f98d869c21
commit
4a9e342a1c
2 changed files with 27 additions and 2 deletions
|
|
@ -56,7 +56,7 @@ Item {
|
||||||
const tool = args[0];
|
const tool = args[0];
|
||||||
const switched = Ai.setTool(tool);
|
const switched = Ai.setTool(tool);
|
||||||
if (switched) {
|
if (switched) {
|
||||||
Ai.addMessage(Translation.tr("Tool set to %1").arg(tool), Ai.interfaceRole);
|
Ai.addMessage(Translation.tr("Tool set to: %1").arg(tool), Ai.interfaceRole);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -538,6 +538,25 @@ Inline w/ backslash and round brackets \\(e^{i\\pi} + 1 = 0\\)
|
||||||
description: Translation.tr(`Load chat from %1`).arg(file.target),
|
description: Translation.tr(`Load chat from %1`).arg(file.target),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
} else if (messageInputField.text.startsWith(`${root.commandPrefix}tool`)) {
|
||||||
|
root.suggestionQuery = messageInputField.text.split(" ")[1] ?? ""
|
||||||
|
const toolResults = Fuzzy.go(root.suggestionQuery, Ai.availableTools.map(tool => {
|
||||||
|
return {
|
||||||
|
name: Fuzzy.prepare(tool),
|
||||||
|
obj: tool,
|
||||||
|
}
|
||||||
|
}), {
|
||||||
|
all: true,
|
||||||
|
key: "name"
|
||||||
|
})
|
||||||
|
root.suggestionList = toolResults.map(tool => {
|
||||||
|
const toolName = tool.target
|
||||||
|
return {
|
||||||
|
name: `${messageInputField.text.trim().split(" ").length == 1 ? (root.commandPrefix + "tool ") : ""}${tool.target}`,
|
||||||
|
displayName: toolName,
|
||||||
|
description: Ai.toolDescriptions[toolName],
|
||||||
|
}
|
||||||
|
})
|
||||||
} else if(messageInputField.text.startsWith(root.commandPrefix)) {
|
} else if(messageInputField.text.startsWith(root.commandPrefix)) {
|
||||||
root.suggestionQuery = messageInputField.text
|
root.suggestionQuery = messageInputField.text
|
||||||
root.suggestionList = root.allCommands.filter(cmd => cmd.name.startsWith(messageInputField.text.substring(1))).map(cmd => {
|
root.suggestionList = root.allCommands.filter(cmd => cmd.name.startsWith(messageInputField.text.substring(1))).map(cmd => {
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,12 @@ Singleton {
|
||||||
"none": [],
|
"none": [],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
property list<var> availableTools: Object.keys(root.tools[models[currentModelId]?.api_format])
|
||||||
|
property var toolDescriptions: {
|
||||||
|
"functions": Translation.tr("Commands, edit configs, search.\nTakes an extra turn to switch to search mode if that's needed"),
|
||||||
|
"search": Translation.tr("Gives the model search capabilities (immediately)"),
|
||||||
|
"none": Translation.tr("Disable tools")
|
||||||
|
}
|
||||||
|
|
||||||
// Model properties:
|
// Model properties:
|
||||||
// - name: Name of the model
|
// - name: Name of the model
|
||||||
|
|
@ -402,7 +408,7 @@ Singleton {
|
||||||
|
|
||||||
function setTool(tool) {
|
function setTool(tool) {
|
||||||
if (!root.tools[models[currentModelId]?.api_format] || !(tool in root.tools[models[currentModelId]?.api_format])) {
|
if (!root.tools[models[currentModelId]?.api_format] || !(tool in root.tools[models[currentModelId]?.api_format])) {
|
||||||
root.addMessage(Translation.tr("Invalid tool. Supported tools:\n- %1").arg(Object.keys(root.tools[models[currentModelId]?.api_format]).join("\n- ")), root.interfaceRole);
|
root.addMessage(Translation.tr("Invalid tool. Supported tools:\n- %1").arg(root.availableTools.join("\n- ")), root.interfaceRole);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Config.options.ai.tool = tool;
|
Config.options.ai.tool = tool;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue