Removed redundant extension check with goose config when resuming a session (#6759)
This commit is contained in:
@@ -4,9 +4,7 @@ use console::style;
|
|||||||
use goose::agents::{Agent, Container};
|
use goose::agents::{Agent, Container};
|
||||||
use goose::config::get_enabled_extensions;
|
use goose::config::get_enabled_extensions;
|
||||||
use goose::config::resolve_extensions_for_new_session;
|
use goose::config::resolve_extensions_for_new_session;
|
||||||
use goose::config::{
|
use goose::config::{get_all_extensions, Config, ExtensionConfig};
|
||||||
extensions::get_extension_by_name, get_all_extensions, Config, ExtensionConfig,
|
|
||||||
};
|
|
||||||
use goose::providers::create;
|
use goose::providers::create;
|
||||||
use goose::recipe::Recipe;
|
use goose::recipe::Recipe;
|
||||||
use goose::session::session_manager::SessionType;
|
use goose::session::session_manager::SessionType;
|
||||||
@@ -330,45 +328,6 @@ async fn load_extensions(
|
|||||||
agent_ptr
|
agent_ptr
|
||||||
}
|
}
|
||||||
|
|
||||||
fn check_missing_extensions_or_exit(saved_extensions: &[ExtensionConfig], interactive: bool) {
|
|
||||||
let missing: Vec<_> = saved_extensions
|
|
||||||
.iter()
|
|
||||||
.filter(|ext| get_extension_by_name(&ext.name()).is_none())
|
|
||||||
.cloned()
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
if !missing.is_empty() {
|
|
||||||
let names = missing
|
|
||||||
.iter()
|
|
||||||
.map(|e| e.name())
|
|
||||||
.collect::<Vec<_>>()
|
|
||||||
.join(", ");
|
|
||||||
|
|
||||||
if interactive {
|
|
||||||
if !cliclack::confirm(format!(
|
|
||||||
"Extension(s) {} from previous session are no longer available. Restore for this session?",
|
|
||||||
names
|
|
||||||
))
|
|
||||||
.initial_value(true)
|
|
||||||
.interact()
|
|
||||||
.unwrap_or(false)
|
|
||||||
{
|
|
||||||
println!("{}", style("Resume cancelled.").yellow());
|
|
||||||
process::exit(0);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
eprintln!(
|
|
||||||
"{}",
|
|
||||||
style(format!(
|
|
||||||
"Warning: Extension(s) {} from previous session are no longer available, continuing without them.",
|
|
||||||
names
|
|
||||||
))
|
|
||||||
.yellow()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn build_session(session_config: SessionBuilderConfig) -> CliSession {
|
pub async fn build_session(session_config: SessionBuilderConfig) -> CliSession {
|
||||||
goose::posthog::set_session_context("cli", session_config.resume);
|
goose::posthog::set_session_context("cli", session_config.resume);
|
||||||
|
|
||||||
@@ -566,10 +525,7 @@ pub async fn build_session(session_config: SessionBuilderConfig) -> CliSession {
|
|||||||
.await
|
.await
|
||||||
.ok()
|
.ok()
|
||||||
.and_then(|s| EnabledExtensionsState::from_extension_data(&s.extension_data))
|
.and_then(|s| EnabledExtensionsState::from_extension_data(&s.extension_data))
|
||||||
.map(|state| {
|
.map(|state| state.extensions)
|
||||||
check_missing_extensions_or_exit(&state.extensions, session_config.interactive);
|
|
||||||
state.extensions
|
|
||||||
})
|
|
||||||
.unwrap_or_else(get_enabled_extensions)
|
.unwrap_or_else(get_enabled_extensions)
|
||||||
} else {
|
} else {
|
||||||
resolve_extensions_for_new_session(recipe.and_then(|r| r.extensions.as_deref()), None)
|
resolve_extensions_for_new_session(recipe.and_then(|r| r.extensions.as_deref()), None)
|
||||||
|
|||||||
Reference in New Issue
Block a user