mirror of
https://github.com/aljazceru/goose.git
synced 2025-12-18 22:54:24 +01:00
Add the ability to configure rustyline to use a different edit mode (e.g. vi) (#2769)
Co-authored-by: Jack Wright <jack.wright@nike.com> Co-authored-by: Michael Neale <michael.neale@gmail.com>
This commit is contained in:
@@ -7,6 +7,7 @@ use goose::recipe::{Response, SubRecipe};
|
||||
use goose::session;
|
||||
use goose::session::Identifier;
|
||||
use mcp_client::transport::Error as McpClientError;
|
||||
use rustyline::EditMode;
|
||||
use std::process;
|
||||
use std::sync::Arc;
|
||||
|
||||
@@ -136,6 +137,7 @@ async fn offer_extension_debugging_help(
|
||||
false,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
);
|
||||
|
||||
// Process the debugging request
|
||||
@@ -383,6 +385,19 @@ pub async fn build_session(session_config: SessionBuilderConfig) -> Session {
|
||||
}
|
||||
}
|
||||
|
||||
// Determine editor mode
|
||||
let edit_mode = config
|
||||
.get_param::<String>("EDIT_MODE")
|
||||
.ok()
|
||||
.and_then(|edit_mode| match edit_mode.to_lowercase().as_str() {
|
||||
"emacs" => Some(EditMode::Emacs),
|
||||
"vi" => Some(EditMode::Vi),
|
||||
_ => {
|
||||
eprintln!("Invalid EDIT_MODE specified, defaulting to Emacs");
|
||||
None
|
||||
}
|
||||
});
|
||||
|
||||
// Create new session
|
||||
let mut session = Session::new(
|
||||
agent,
|
||||
@@ -390,6 +405,7 @@ pub async fn build_session(session_config: SessionBuilderConfig) -> Session {
|
||||
session_config.debug,
|
||||
session_config.scheduled_job_id.clone(),
|
||||
session_config.max_turns,
|
||||
edit_mode,
|
||||
);
|
||||
|
||||
// Add extensions if provided
|
||||
|
||||
Reference in New Issue
Block a user