mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
Review staging merge conflict status
This commit is contained in:
@@ -646,6 +646,7 @@ impl AppBuilder {
|
||||
Arc::clone(&mcp_session_manager),
|
||||
Arc::clone(&mcp_process_manager),
|
||||
Some(Arc::clone(&self.session)),
|
||||
self.config.llm.nearai.api_key.clone(),
|
||||
ext_secrets,
|
||||
Arc::clone(tools),
|
||||
Some(Arc::clone(hooks)),
|
||||
|
||||
@@ -3366,6 +3366,7 @@ mod tests {
|
||||
mcp_sm,
|
||||
mcp_pm,
|
||||
None,
|
||||
None,
|
||||
secrets,
|
||||
tool_registry,
|
||||
None,
|
||||
|
||||
@@ -65,6 +65,7 @@ pub struct ExtensionManager {
|
||||
mcp_session_manager: Arc<McpSessionManager>,
|
||||
mcp_process_manager: Arc<crate::tools::mcp::process::McpProcessManager>,
|
||||
nearai_session_manager: Option<Arc<crate::llm::SessionManager>>,
|
||||
nearai_api_key: Option<secrecy::SecretString>,
|
||||
/// Active MCP clients keyed by server name.
|
||||
mcp_clients: RwLock<HashMap<String, Arc<McpClient>>>,
|
||||
|
||||
@@ -151,6 +152,7 @@ impl ExtensionManager {
|
||||
mcp_session_manager: Arc<McpSessionManager>,
|
||||
mcp_process_manager: Arc<crate::tools::mcp::process::McpProcessManager>,
|
||||
nearai_session_manager: Option<Arc<crate::llm::SessionManager>>,
|
||||
nearai_api_key: Option<secrecy::SecretString>,
|
||||
secrets: Arc<dyn SecretsStore + Send + Sync>,
|
||||
tool_registry: Arc<ToolRegistry>,
|
||||
hooks: Option<Arc<HookRegistry>>,
|
||||
@@ -174,6 +176,7 @@ impl ExtensionManager {
|
||||
mcp_session_manager,
|
||||
mcp_process_manager,
|
||||
nearai_session_manager,
|
||||
nearai_api_key,
|
||||
mcp_clients: RwLock::new(HashMap::new()),
|
||||
wasm_tool_runtime,
|
||||
wasm_tools_dir,
|
||||
@@ -2869,7 +2872,7 @@ impl ExtensionManager {
|
||||
server.clone(),
|
||||
&self.mcp_session_manager,
|
||||
self.nearai_session_manager.clone(),
|
||||
None,
|
||||
self.nearai_api_key.clone(),
|
||||
&self.mcp_process_manager,
|
||||
Some(Arc::clone(&self.secrets)),
|
||||
&self.user_id,
|
||||
@@ -4612,6 +4615,7 @@ mod tests {
|
||||
mcp,
|
||||
Arc::new(McpProcessManager::new()),
|
||||
None,
|
||||
None,
|
||||
secrets,
|
||||
tools,
|
||||
None, // hooks
|
||||
@@ -4793,6 +4797,7 @@ mod tests {
|
||||
Arc::new(McpSessionManager::new()),
|
||||
Arc::new(McpProcessManager::new()),
|
||||
None,
|
||||
None,
|
||||
Arc::new(InMemorySecretsStore::new(crypto)),
|
||||
Arc::new(ToolRegistry::new()),
|
||||
None,
|
||||
@@ -4877,6 +4882,8 @@ mod tests {
|
||||
let manager = ExtensionManager::new(
|
||||
Arc::new(McpSessionManager::new()),
|
||||
Arc::new(McpProcessManager::new()),
|
||||
None,
|
||||
None,
|
||||
Arc::new(InMemorySecretsStore::new(crypto)),
|
||||
Arc::new(ToolRegistry::new()),
|
||||
None,
|
||||
@@ -4886,6 +4893,7 @@ mod tests {
|
||||
None,
|
||||
"test".to_string(),
|
||||
Some(db.clone() as Arc<dyn crate::db::Database>),
|
||||
None,
|
||||
Vec::new(),
|
||||
);
|
||||
|
||||
@@ -5365,6 +5373,7 @@ mod tests {
|
||||
mcp,
|
||||
Arc::new(McpProcessManager::new()),
|
||||
None,
|
||||
None,
|
||||
secrets,
|
||||
tools,
|
||||
None,
|
||||
|
||||
@@ -801,6 +801,7 @@ mod tests {
|
||||
Arc::new(McpSessionManager::new()),
|
||||
Arc::new(crate::tools::mcp::process::McpProcessManager::new()),
|
||||
None,
|
||||
None,
|
||||
Arc::new(InMemorySecretsStore::new(crypto)),
|
||||
Arc::new(ToolRegistry::new()),
|
||||
None,
|
||||
|
||||
@@ -905,7 +905,9 @@ mod tests {
|
||||
.set_token(SecretString::from("sess_test_token"))
|
||||
.await;
|
||||
|
||||
let client = McpClient::new_with_config(config).with_nearai_session_manager(nearai_session);
|
||||
let client = McpClient::new_with_config(config)
|
||||
.expect("valid MCP config")
|
||||
.with_nearai_session_manager(nearai_session);
|
||||
let headers = client.build_request_headers().await.expect("headers");
|
||||
|
||||
assert_eq!(
|
||||
|
||||
@@ -20,6 +20,8 @@ pub enum McpFactoryError {
|
||||
UnixNotSupported { name: String },
|
||||
#[error("Invalid configuration for MCP server '{name}': {reason}")]
|
||||
InvalidConfig { name: String, reason: String },
|
||||
#[error("Missing runtime auth context for MCP server '{name}': {reason}")]
|
||||
MissingRuntimeAuthContext { name: String, reason: String },
|
||||
}
|
||||
|
||||
/// Create an `McpClient` from a server configuration, dispatching on the
|
||||
@@ -81,12 +83,20 @@ pub async fn create_client_from_config(
|
||||
}
|
||||
EffectiveTransport::Http => {
|
||||
if server.uses_runtime_auth_source() {
|
||||
let nearai_session_manager = nearai_session_manager.ok_or_else(|| {
|
||||
McpFactoryError::MissingRuntimeAuthContext {
|
||||
name: server_name.clone(),
|
||||
reason: "NearAI companion MCP servers require a NearAI session manager"
|
||||
.to_string(),
|
||||
}
|
||||
})?;
|
||||
|
||||
return Ok(McpClient::new_with_config(server)
|
||||
.with_nearai_session_manager(
|
||||
nearai_session_manager.expect(
|
||||
"NearAI companion MCP servers require a NearAI session manager",
|
||||
),
|
||||
)
|
||||
.map_err(|e| McpFactoryError::InvalidConfig {
|
||||
name: server_name.clone(),
|
||||
reason: e.to_string(),
|
||||
})?
|
||||
.with_nearai_session_manager(nearai_session_manager)
|
||||
.with_nearai_api_key(nearai_api_key)
|
||||
.with_session_manager(Arc::clone(session_manager)));
|
||||
}
|
||||
|
||||
@@ -204,6 +204,7 @@ async fn extension_manager_with_process_manager_constructs() {
|
||||
Arc::new(McpSessionManager::new()),
|
||||
Arc::new(McpProcessManager::new()),
|
||||
None,
|
||||
None,
|
||||
secrets,
|
||||
tools,
|
||||
None,
|
||||
|
||||
Reference in New Issue
Block a user