do_memory_mcp/server/tools/external_signals/
status.rs1use crate::server::MemoryMCPServer;
7use anyhow::Result;
8use serde_json::json;
9use tracing::debug;
10
11impl MemoryMCPServer {
12 pub async fn execute_external_signal_status(
22 &self,
23 input: crate::mcp::tools::external_signals::ExternalSignalStatusInput,
24 ) -> Result<serde_json::Value> {
25 self.track_tool_usage("external_signal_status").await;
26
27 debug!(
28 "Getting external signal provider status for: {:?}",
29 input.provider
30 );
31
32 let mut providers = vec![];
34
35 let agentfs_status = crate::mcp::tools::external_signals::ProviderStatus {
37 name: "agentfs".to_string(),
38 configured: false, enabled: false,
40 connected: false,
41 last_error: None,
42 signal_count: 0,
43 weight: 0.3,
44 metadata: json!({
45 "db_path": null,
46 "sanitize": true,
47 }),
48 };
49
50 if let Some(ref provider_filter) = input.provider {
52 if provider_filter == "agentfs" {
53 providers.push(agentfs_status);
54 }
55 } else {
56 providers.push(agentfs_status);
58 }
59
60 let result = crate::mcp::tools::external_signals::ExternalSignalStatusOutput {
61 total_providers: providers.len(),
62 active_providers: providers
63 .iter()
64 .filter(|p| p.enabled && p.connected)
65 .count(),
66 providers,
67 };
68
69 Ok(json!(result))
71 }
72}
73
74#[cfg(test)]
75mod tests {
76 use super::*;
77
78 #[test]
79 #[allow(clippy::manual_async_fn)]
80 fn test_external_signal_status_signature_compile() {
81 use crate::mcp::tools::external_signals::ExternalSignalStatusInput;
83 fn method_signature(
84 _server: &MemoryMCPServer,
85 _input: ExternalSignalStatusInput,
86 ) -> impl std::future::Future<Output = Result<serde_json::Value>> {
87 async { Ok(json!({})) }
88 }
89 let _ = method_signature; }
91}