summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-05-11 09:23:59 +0800
committerGitHub <noreply@github.com>2024-05-11 09:23:59 +0800
commit1e8fc5d269985048d8d3023a615b94a8908571cf (patch)
treee1e43a67bf1e7b5d878d2a7cac5d25a07cda8bdc /src/main.rs
parent058299e500af86adbc065eced542e108ae325458 (diff)
downloadaichat-1e8fc5d269985048d8d3023a615b94a8908571cf.tar.gz
refactor: list roles includeing builtin roles (#499)
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/main.rs b/src/main.rs
index 397ab1e..558e473 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -14,7 +14,8 @@ extern crate log;
use crate::cli::Cli;
use crate::client::{ensure_model_capabilities, init_client, list_models, send_stream};
use crate::config::{
- Config, GlobalConfig, Input, WorkingMode, CODE_ROLE, EXPLAIN_ROLE, SHELL_ROLE,
+ Config, GlobalConfig, Input, InputContext, WorkingMode, CODE_ROLE, EXPLAIN_SHELL_ROLE,
+ SHELL_ROLE,
};
use crate::render::{render_error, MarkdownRender};
use crate::repl::Repl;
@@ -200,7 +201,6 @@ async fn execute(config: &GlobalConfig, mut input: Input) -> Result<()> {
return Ok(());
}
if is_terminal_stdout {
- let mut explain = false;
loop {
let answer = Select::new(
markdown_render.render(&eval_str).trim(),
@@ -222,13 +222,10 @@ async fn execute(config: &GlobalConfig, mut input: Input) -> Result<()> {
return execute(config, input).await;
}
"📙 Explain" => {
- if !explain {
- config.write().set_role(EXPLAIN_ROLE)?;
- }
- let input = Input::from_str(&eval_str, config.read().input_context());
+ let role = config.read().retrieve_role(EXPLAIN_SHELL_ROLE)?;
+ let input = Input::from_str(&eval_str, InputContext::role(role));
let abort = create_abort_signal();
send_stream(&input, client.as_ref(), config, abort).await?;
- explain = true;
continue;
}
_ => {}