summaryrefslogtreecommitdiffstats
path: root/src/config/agent.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2025-01-19 19:38:14 +0800
committerGitHub <noreply@github.com>2025-01-19 19:38:14 +0800
commit77d6c33d9e1438338a7a530c98f717a5f9f10e67 (patch)
treeea51d0f9c5234aa0759ea8dc46e0d2118d24a2a4 /src/config/agent.rs
parentbc532d99be0c407fe5e6ef82018350837ac2fb97 (diff)
downloadaichat-77d6c33d9e1438338a7a530c98f717a5f9f10e67.tar.gz
refactor: improve autocompletion for agent variable (#1104)
Diffstat (limited to 'src/config/agent.rs')
-rw-r--r--src/config/agent.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/config/agent.rs b/src/config/agent.rs
index 591bc9d..f535d32 100644
--- a/src/config/agent.rs
+++ b/src/config/agent.rs
@@ -532,3 +532,24 @@ pub fn list_agents() -> Vec<String> {
})
.collect()
}
+
+pub fn complete_agent_variables(agent_name: &str) -> Vec<(String, Option<String>)> {
+ let index_path = Config::agent_functions_dir(agent_name).join("index.yaml");
+ if !index_path.exists() {
+ return vec![];
+ }
+ let Ok(definition) = AgentDefinition::load(&index_path) else {
+ return vec![];
+ };
+ definition
+ .variables
+ .iter()
+ .map(|v| {
+ let description = match &v.default {
+ Some(default) => format!("{} [default: {default}]", v.description),
+ None => v.description.clone(),
+ };
+ (format!("{}=", v.name), Some(description))
+ })
+ .collect()
+}