|
|
@ -1149,9 +1149,16 @@ impl Config {
|
|
|
|
.or_else(|| env::var("VISUAL").ok().or_else(|| env::var("EDITOR").ok()))
|
|
|
|
.or_else(|| env::var("VISUAL").ok().or_else(|| env::var("EDITOR").ok()))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
pub fn repl_complete(&self, cmd: &str, args: &[&str]) -> Vec<(String, Option<String>)> {
|
|
|
|
pub fn repl_complete(
|
|
|
|
let (values, filter) = if args.len() == 1 {
|
|
|
|
&self,
|
|
|
|
let values = match cmd {
|
|
|
|
cmd: &str,
|
|
|
|
|
|
|
|
args: &[&str],
|
|
|
|
|
|
|
|
line: &str,
|
|
|
|
|
|
|
|
) -> Vec<(String, Option<String>)> {
|
|
|
|
|
|
|
|
let mut values: Vec<(String, Option<String>)> = vec![];
|
|
|
|
|
|
|
|
let mut filter = "";
|
|
|
|
|
|
|
|
if args.len() == 1 {
|
|
|
|
|
|
|
|
values = match cmd {
|
|
|
|
".role" => self
|
|
|
|
".role" => self
|
|
|
|
.roles
|
|
|
|
.roles
|
|
|
|
.iter()
|
|
|
|
.iter()
|
|
|
@ -1203,9 +1210,9 @@ impl Config {
|
|
|
|
.collect(),
|
|
|
|
.collect(),
|
|
|
|
_ => vec![],
|
|
|
|
_ => vec![],
|
|
|
|
};
|
|
|
|
};
|
|
|
|
(values, args[0])
|
|
|
|
filter = args[0]
|
|
|
|
} else if args.len() == 2 && cmd == ".set" {
|
|
|
|
} else if cmd == ".set" && args.len() == 2 {
|
|
|
|
let values = match args[0] {
|
|
|
|
let candidates = match args[0] {
|
|
|
|
"max_output_tokens" => match self.model.max_output_tokens() {
|
|
|
|
"max_output_tokens" => match self.model.max_output_tokens() {
|
|
|
|
Some(v) => vec![v.to_string()],
|
|
|
|
Some(v) => vec![v.to_string()],
|
|
|
|
None => vec![],
|
|
|
|
None => vec![],
|
|
|
@ -1242,9 +1249,16 @@ impl Config {
|
|
|
|
"highlight" => complete_bool(self.highlight),
|
|
|
|
"highlight" => complete_bool(self.highlight),
|
|
|
|
_ => vec![],
|
|
|
|
_ => vec![],
|
|
|
|
};
|
|
|
|
};
|
|
|
|
(values.into_iter().map(|v| (v, None)).collect(), args[1])
|
|
|
|
values = candidates.into_iter().map(|v| (v, None)).collect();
|
|
|
|
} else {
|
|
|
|
filter = args[1];
|
|
|
|
return vec![];
|
|
|
|
} 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
|
|
|
|
values
|
|
|
|
.into_iter()
|
|
|
|
.into_iter()
|
|
|
|