summaryrefslogtreecommitdiffstats
path: root/src/config/mod.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2025-01-18 08:46:33 +0800
committerGitHub <noreply@github.com>2025-01-18 08:46:33 +0800
commit58c3cdc9d9c65ff2ef89eaf16588e613d9ca2f49 (patch)
tree402afb39fa89f0fc21448aec2aeb17d41aa4244f /src/config/mod.rs
parentd37d99c63dafaa606ece5aa3b36ad9c5e58e5cbb (diff)
downloadaichat-58c3cdc9d9c65ff2ef89eaf16588e613d9ca2f49.tar.gz
feat: `.starter` accepts index other than text (#1093)
Diffstat (limited to 'src/config/mod.rs')
-rw-r--r--src/config/mod.rs19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs
index 3ea7648..20f19e5 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -1688,7 +1688,7 @@ impl Config {
&self,
cmd: &str,
args: &[&str],
- line: &str,
+ _line: &str,
) -> Vec<(String, Option<String>)> {
let mut values: Vec<(String, Option<String>)> = vec![];
let mut filter = "";
@@ -1716,7 +1716,12 @@ impl Config {
".agent" => map_completion_values(list_agents()),
".macro" => map_completion_values(Self::list_macros()),
".starter" => match &self.agent {
- Some(agent) => map_completion_values(agent.conversation_staters().to_vec()),
+ Some(agent) => agent
+ .conversation_staters()
+ .iter()
+ .enumerate()
+ .map(|(i, v)| ((i + 1).to_string(), Some(v.to_string())))
+ .collect(),
None => vec![],
},
".set" => {
@@ -1793,20 +1798,12 @@ impl Config {
};
values = candidates.into_iter().map(|v| (v, None)).collect();
filter = args[1];
- } else if cmd == ".agent" && args.len() >= 2 {
+ } else if cmd == ".agent" && args.len() == 2 {
let dir = Self::agent_data_dir(args[0]).join(SESSIONS_DIR_NAME);
values = list_file_names(dir, ".yaml")
.into_iter()
.map(|v| (v, None))
.collect();
- } else if cmd == ".starter" && args.len() >= 2 {
- if let Some(agent) = &self.agent {
- values = agent
- .conversation_staters()
- .iter()
- .filter_map(|v| v.strip_prefix(line).map(|x| (x.to_string(), None)))
- .collect()
- }
};
values
.into_iter()