use rmcp::model::{
ClientCapabilities, ElicitationCapability, ExtensionCapabilities, FormElicitationCapability,
TASKS_EXTENSION_ID, UrlElicitationCapability,
};
use systemprompt_models::mcp::McpExtensionId;
pub(super) fn client_capabilities(with_elicitation: bool) -> ClientCapabilities {
let mut extensions = ExtensionCapabilities::new();
extensions.insert(
McpExtensionId::EnterpriseManagedAuth.as_str().to_owned(),
serde_json::Map::new(),
);
extensions.insert(TASKS_EXTENSION_ID.to_owned(), serde_json::Map::new());
let builder = ClientCapabilities::builder().enable_extensions_with(extensions);
let mut capabilities = builder.build();
if with_elicitation {
capabilities.elicitation = Some(
ElicitationCapability::new()
.with_form(FormElicitationCapability::default())
.with_url(UrlElicitationCapability::default()),
);
}
capabilities
}