brainwires_agent_network/middleware/
logging.rs1use async_trait::async_trait;
2use brainwires_mcp::{JsonRpcRequest, JsonRpcResponse};
3
4use super::{Middleware, MiddlewareResult};
5use crate::connection::RequestContext;
6
7pub struct LoggingMiddleware;
9
10impl LoggingMiddleware {
11 pub fn new() -> Self {
13 Self
14 }
15}
16
17impl Default for LoggingMiddleware {
18 fn default() -> Self {
19 Self::new()
20 }
21}
22
23#[async_trait]
24impl Middleware for LoggingMiddleware {
25 async fn process_request(
26 &self,
27 request: &JsonRpcRequest,
28 _ctx: &mut RequestContext,
29 ) -> MiddlewareResult {
30 tracing::debug!(
31 method = %request.method,
32 id = %request.id,
33 "MCP request received"
34 );
35 MiddlewareResult::Continue
36 }
37
38 async fn process_response(&self, response: &mut JsonRpcResponse, _ctx: &RequestContext) {
39 if response.error.is_some() {
40 tracing::warn!(
41 id = %response.id,
42 error = ?response.error,
43 "MCP response with error"
44 );
45 } else {
46 tracing::debug!(
47 id = %response.id,
48 "MCP response sent"
49 );
50 }
51 }
52}