diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/app/init.rs | 33 | ||||
-rw-r--r-- | src/app/llm.rs | 2 | ||||
-rw-r--r-- | src/helper/init.rs | 2 | ||||
-rw-r--r-- | src/main.rs | 1 | ||||
-rw-r--r-- | src/ui/init.rs | 4 |
5 files changed, 19 insertions, 23 deletions
diff --git a/src/app/init.rs b/src/app/init.rs index f62b2d0..201e79e 100644 --- a/src/app/init.rs +++ b/src/app/init.rs @@ -1,7 +1,7 @@ use crate::app::llm::{Message, MessageType, LLM}; use crate::helper::init::warn; use uuid::Uuid; -use tokio; +use tokio::runtime::Builder; pub struct App { pub messages: Vec<Message>, // History of recorded message @@ -30,14 +30,16 @@ impl App { self.messages.push(message); } - pub fn send_message(&mut self, content: String) { - self.append_message(content, MessageType::USER); - - let runtime = tokio::runtime::Builder::new_current_thread() + fn ask(&mut self, mode: &str) { + let runtime = Builder::new_current_thread() .enable_all() .build().unwrap(); let result = runtime.block_on(async { - self.chat_llm.ask(&self.messages).await + if mode == "resume" { + self.resume_llm.ask(&self.messages).await + } else { + self.chat_llm.ask(&self.messages).await + } }); match result { @@ -46,20 +48,13 @@ impl App { } } + pub fn send_message(&mut self, content: String) { + self.append_message(content, MessageType::USER); + self.ask("chat"); + } + pub fn resume_conv(&mut self) { self.append_message(self.resume_llm.system_prompt.to_string(), MessageType::USER); - - let runtime = tokio::runtime::Builder::new_current_thread() - .enable_all() - .build().unwrap(); - - let result = runtime.block_on(async { - self.resume_llm.ask(&self.messages).await - }); - - match result { - Ok(msg) => self.append_message(msg, MessageType::ASSISTANT), - Err(e) => self.append_message(e.to_string(), MessageType::ASSISTANT), - } + self.ask("resume"); } } diff --git a/src/app/llm.rs b/src/app/llm.rs index 59e045b..9fc1b3a 100644 --- a/src/app/llm.rs +++ b/src/app/llm.rs @@ -3,7 +3,7 @@ use reqwest::{header::CONTENT_TYPE, Client}; use serde::{Deserialize, Serialize}; use serde_json::Value; use std::fmt; -use std::fs::{OpenOptions, create_dir_all}; +use std::fs::{self, OpenOptions, create_dir_all}; use std::io::Write; #[derive(Deserialize, Debug)] diff --git a/src/helper/init.rs b/src/helper/init.rs index abee146..2e0537d 100644 --- a/src/helper/init.rs +++ b/src/helper/init.rs @@ -1,6 +1,6 @@ use chrono::prelude::*; use std::fs::OpenOptions; -use std::io::{self, Write}; +use std::io::Write; pub fn warn(content: String) { let mut file = OpenOptions::new() diff --git a/src/main.rs b/src/main.rs index 524a03a..7548f49 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,6 @@ mod ui; use crate::{app::init::App, ui::init::Ui}; use color_eyre::Result; use ratatui; -use tokio; fn main() -> Result<()> { // Setup terminal diff --git a/src/ui/init.rs b/src/ui/init.rs index 87b31b6..eadaf36 100644 --- a/src/ui/init.rs +++ b/src/ui/init.rs @@ -102,7 +102,9 @@ impl Ui { "q".bold(), " to exit, ".into(), "e".bold(), - " to start editing.".bold(), + " to start editing, ".into(), + "r".bold(), + " to resume the conversation.".into(), ], Style::default(), ), |