Persist provider name and model config in the session (#5419)

This commit is contained in:
Will Pfleger
2025-11-20 15:55:32 -05:00
committed by GitHub
parent f4724cbf23
commit 682e315be8
18 changed files with 311 additions and 106 deletions
+16 -19
View File
@@ -10,15 +10,21 @@ use goose::session::SessionManager;
use std::path::PathBuf;
#[tokio::main]
async fn main() {
async fn main() -> anyhow::Result<()> {
let _ = dotenv();
let provider = create_with_named_model("databricks", DATABRICKS_DEFAULT_MODEL)
.await
.expect("Couldn't create provider");
let provider = create_with_named_model("databricks", DATABRICKS_DEFAULT_MODEL).await?;
let agent = Agent::new();
let _ = agent.update_provider(provider).await;
let session = SessionManager::create_session(
PathBuf::default(),
"max-turn-test".to_string(),
SessionType::Hidden,
)
.await?;
let _ = agent.update_provider(provider, &session.id).await;
let config = ExtensionConfig::stdio(
"developer",
@@ -27,21 +33,13 @@ async fn main() {
DEFAULT_EXTENSION_TIMEOUT,
)
.with_args(vec!["mcp", "developer"]);
agent.add_extension(config).await.unwrap();
agent.add_extension(config).await?;
println!("Extensions:");
for extension in agent.list_extensions().await {
println!(" {}", extension);
}
let session = SessionManager::create_session(
PathBuf::default(),
"max-turn-test".to_string(),
SessionType::Hidden,
)
.await
.expect("session manager creation failed");
let session_config = SessionConfig {
id: session.id,
schedule_id: None,
@@ -52,13 +50,12 @@ async fn main() {
let user_message = Message::user()
.with_text("can you summarize the readme.md in this dir using just a haiku?");
let mut stream = agent
.reply(user_message, session_config, None)
.await
.unwrap();
let mut stream = agent.reply(user_message, session_config, None).await?;
while let Some(Ok(AgentEvent::Message(message))) = stream.next().await {
println!("{}", serde_json::to_string_pretty(&message).unwrap());
println!("{}", serde_json::to_string_pretty(&message)?);
println!("\n");
}
Ok(())
}