feat: MCP support for agentic CLI providers (#6972)
Signed-off-by: Adrian Cole <adrian@tetrate.io>
This commit is contained in:
@@ -740,7 +740,7 @@ impl GooseAcpAgent {
|
||||
goose::model::ModelConfig::new(&model_id)?
|
||||
}
|
||||
};
|
||||
let provider = (self.provider_factory)(model_config).await?;
|
||||
let provider = (self.provider_factory)(model_config, Vec::new()).await?;
|
||||
agent.update_provider(provider.clone(), &session.id).await?;
|
||||
Ok(provider)
|
||||
}
|
||||
@@ -958,9 +958,11 @@ impl GooseAcpAgent {
|
||||
let model_config = goose::model::ModelConfig::new(model_id).map_err(|e| {
|
||||
sacp::Error::invalid_params().data(format!("Invalid model config: {}", e))
|
||||
})?;
|
||||
let provider = (self.provider_factory)(model_config).await.map_err(|e| {
|
||||
sacp::Error::internal_error().data(format!("Failed to create provider: {}", e))
|
||||
})?;
|
||||
let provider = (self.provider_factory)(model_config, Vec::new())
|
||||
.await
|
||||
.map_err(|e| {
|
||||
sacp::Error::internal_error().data(format!("Failed to create provider: {}", e))
|
||||
})?;
|
||||
|
||||
let agent = {
|
||||
let sessions = self.sessions.lock().await;
|
||||
|
||||
@@ -33,7 +33,7 @@ impl AcpServer {
|
||||
let disable_session_naming = config.get_goose_disable_session_naming().unwrap_or(false);
|
||||
|
||||
let config_dir = self.config.config_dir.clone();
|
||||
let provider_factory: ProviderConstructor = Arc::new(move |model_config| {
|
||||
let provider_factory: ProviderConstructor = Arc::new(move |model_config, extensions| {
|
||||
let config_dir = config_dir.clone();
|
||||
Box::pin(async move {
|
||||
let config_path = config_dir.join(goose::config::base::CONFIG_YAML_NAME);
|
||||
@@ -41,7 +41,7 @@ impl AcpServer {
|
||||
let provider_name = config
|
||||
.get_goose_provider()
|
||||
.map_err(|_| anyhow::anyhow!("No provider configured"))?;
|
||||
goose::providers::create(&provider_name, model_config).await
|
||||
goose::providers::create(&provider_name, model_config, extensions).await
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ pub async fn run_initialize_without_provider() {
|
||||
let temp_dir = tempfile::tempdir().unwrap();
|
||||
|
||||
let provider_factory: ProviderConstructor =
|
||||
Arc::new(|_| Box::pin(async { Err(anyhow::anyhow!("no provider configured")) }));
|
||||
Arc::new(|_, _| Box::pin(async { Err(anyhow::anyhow!("no provider configured")) }));
|
||||
|
||||
let agent = Arc::new(
|
||||
GooseAcpAgent::new(
|
||||
|
||||
+1
-1
@@ -203,7 +203,7 @@ pub async fn spawn_acp_server_in_process(
|
||||
}
|
||||
let provider_factory = provider_factory.unwrap_or_else(|| {
|
||||
let base_url = openai_base_url.to_string();
|
||||
Arc::new(move |model_config| {
|
||||
Arc::new(move |model_config, _extensions| {
|
||||
let base_url = base_url.clone();
|
||||
Box::pin(async move {
|
||||
let api_client =
|
||||
|
||||
Reference in New Issue
Block a user