feat(acp): add session/set_config and stabilize list, delete and close (#7984)

Signed-off-by: Adrian Cole <adrian@tetrate.io>
This commit is contained in:
Adrian Cole
2026-03-22 18:33:26 -04:00
committed by GitHub
parent 6afaeb8432
commit 1426c8bfa0
32 changed files with 2539 additions and 1100 deletions
+15 -16
View File
@@ -1,6 +1,7 @@
use anyhow::Result;
use dotenvy::dotenv;
use futures::StreamExt;
use goose::acp::ACP_CURRENT_MODEL;
use goose::agents::{Agent, AgentConfig, AgentEvent, GoosePlatform, PromptManager, SessionConfig};
use goose::config::{ExtensionConfig, GooseMode, PermissionManager};
use goose::conversation::message::{ActionRequiredData, Message, MessageContent};
@@ -10,14 +11,11 @@ use goose::providers::anthropic::ANTHROPIC_DEFAULT_MODEL;
use goose::providers::azure::AZURE_DEFAULT_MODEL;
use goose::providers::base::Provider;
use goose::providers::bedrock::BEDROCK_DEFAULT_MODEL;
use goose::providers::claude_acp::CLAUDE_ACP_DEFAULT_MODEL;
use goose::providers::claude_code::CLAUDE_CODE_DEFAULT_MODEL;
use goose::providers::codex::CODEX_DEFAULT_MODEL;
use goose::providers::codex_acp::CODEX_ACP_DEFAULT_MODEL;
use goose::providers::create_with_named_model;
use goose::providers::databricks::DATABRICKS_DEFAULT_MODEL;
use goose::providers::errors::ProviderError;
use goose::providers::gemini_acp::GEMINI_ACP_DEFAULT_MODEL;
use goose::providers::google::GOOGLE_DEFAULT_MODEL;
use goose::providers::litellm::LITELLM_DEFAULT_MODEL;
use goose::providers::openai::OPEN_AI_DEFAULT_MODEL;
@@ -492,11 +490,11 @@ impl ProviderFixture {
println!("===================");
assert!(!models.is_empty());
let model_name = &self.provider.get_model_config().model_name;
// model names may be substrings (e.g. "sonnet" vs "claude-sonnet-4-5-20250929")
let resolved = &self.provider.get_model_config().model_name;
assert_ne!(resolved.as_str(), ACP_CURRENT_MODEL);
assert!(models
.iter()
.any(|m| m == model_name || m.contains(model_name) || model_name.contains(m)));
.any(|m| m == resolved || m.contains(resolved) || resolved.contains(m)));
if let Some(alt) = &self.model_switch_name {
assert!(models
.iter()
@@ -873,20 +871,17 @@ async fn test_codex_provider() -> Result<()> {
// Requires: npm install -g @zed-industries/claude-agent-acp
#[tokio::test]
async fn test_claude_acp_provider() -> Result<()> {
ProviderTestConfig::with_agentic_provider(
"claude-acp",
CLAUDE_ACP_DEFAULT_MODEL,
"claude-agent-acp",
)
.model_switch_name("sonnet")
.run()
.await
ProviderTestConfig::with_agentic_provider("claude-acp", ACP_CURRENT_MODEL, "claude-agent-acp")
.model_switch_name("sonnet")
.run()
.await
}
// Requires: npm install -g @zed-industries/codex-acp
#[tokio::test]
async fn test_codex_acp_provider() -> Result<()> {
ProviderTestConfig::with_agentic_provider("codex-acp", CODEX_ACP_DEFAULT_MODEL, "codex-acp")
ProviderTestConfig::with_agentic_provider("codex-acp", ACP_CURRENT_MODEL, "codex-acp")
.model_switch_name("gpt-5.4-mini")
.run()
.await
}
@@ -894,7 +889,11 @@ async fn test_codex_acp_provider() -> Result<()> {
// Requires: npm install -g @google/gemini-cli
#[tokio::test]
async fn test_gemini_acp_provider() -> Result<()> {
ProviderTestConfig::with_agentic_provider("gemini-acp", GEMINI_ACP_DEFAULT_MODEL, "gemini")
// Don't run tests with ACP_CURRENT_MODEL, as gemini sets "auto-gemini-3" even when the user
// has no access to the Preview Release Channel, resulting in "Requested entity was not found."
// See https://github.com/google-gemini/gemini-cli/issues/22803
ProviderTestConfig::with_agentic_provider("gemini-acp", "auto-gemini-2.5", "gemini")
.model_switch_name("gemini-2.5-flash")
.run()
.await
}