summaryrefslogtreecommitdiffstats
path: root/src/config/mod.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/mod.rs
parentbc532d99be0c407fe5e6ef82018350837ac2fb97 (diff)
downloadaichat-77d6c33d9e1438338a7a530c98f717a5f9f10e67.tar.gz
refactor: improve autocompletion for agent variable (#1104)
Diffstat (limited to 'src/config/mod.rs')
-rw-r--r--src/config/mod.rs18
1 files changed, 3 insertions, 15 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs
index 97e095c..5dfb2d9 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -3,7 +3,7 @@ mod input;
mod role;
mod session;
-pub use self::agent::{list_agents, Agent, AgentDefinition, AgentVariables};
+pub use self::agent::{complete_agent_variables, list_agents, Agent, AgentVariables};
pub use self::input::Input;
pub use self::role::{
Role, RoleLike, CODE_ROLE, CREATE_TITLE_ROLE, EXPLAIN_SHELL_ROLE, SHELL_ROLE,
@@ -1739,7 +1739,7 @@ impl Config {
_line: &str,
) -> Vec<(String, Option<String>)> {
let mut values: Vec<(String, Option<String>)> = vec![];
- let mut filter = "";
+ let filter = args.last().unwrap_or(&"");
if args.len() == 1 {
values = match cmd {
".role" => map_completion_values(Self::list_roles(true)),
@@ -1799,7 +1799,6 @@ impl Config {
}
_ => vec![],
};
- filter = args[0]
} else if cmd == ".set" && args.len() == 2 {
let candidates = match args[0] {
"max_output_tokens" => match self.model.max_output_tokens() {
@@ -1845,7 +1844,6 @@ impl Config {
_ => vec![],
};
values = candidates.into_iter().map(|v| (v, None)).collect();
- filter = args[1];
} else if cmd == ".agent" {
if args.len() == 2 {
let dir = Self::agent_data_dir(args[0]).join(SESSIONS_DIR_NAME);
@@ -1854,17 +1852,7 @@ impl Config {
.map(|v| (v, None))
.collect();
}
- let definition_file_path = Self::agent_functions_dir(args[0]).join("index.yaml");
- if definition_file_path.exists() {
- if let Ok(definition) = AgentDefinition::load(&definition_file_path) {
- values.extend(
- definition
- .variables
- .iter()
- .map(|v| (format!("{}=", v.name), Some(v.description.clone()))),
- );
- }
- }
+ values.extend(complete_agent_variables(args[0]));
};
values
.into_iter()