Skip to main content

vtcode_core/core/interfaces/
acp.rs

1use anyhow::Result;
2use async_trait::async_trait;
3
4use crate::config::loader::VTCodeConfig;
5use crate::config::types::AgentConfig as CoreAgentConfig;
6
7/// Parameters required to launch an Agent Client Protocol adapter.
8#[derive(Debug)]
9pub struct AcpLaunchParams<'a> {
10    pub agent_config: &'a CoreAgentConfig,
11    pub runtime_config: &'a VTCodeConfig,
12}
13
14impl<'a> AcpLaunchParams<'a> {
15    pub fn new(agent_config: &'a CoreAgentConfig, runtime_config: &'a VTCodeConfig) -> Self {
16        Self {
17            agent_config,
18            runtime_config,
19        }
20    }
21}
22
23/// Interface for components that expose VT Code over the Agent Client Protocol.
24#[async_trait(?Send)]
25pub trait AcpClientAdapter: Send + Sync {
26    async fn serve(&self, params: AcpLaunchParams<'_>) -> Result<()>;
27}