locus_mcp/tools/
calibrate_session.rs1use serde_json::json;
2use tracing::error;
3
4use crate::{CalibrateSessionRequest, SttpMcpServer, avec_to_json, to_json_string, tool_error};
5
6pub(crate) async fn execute(server: &SttpMcpServer, request: CalibrateSessionRequest) -> String {
7 match server
8 .calibration
9 .calibrate_async(
10 &request.session_id,
11 request.stability,
12 request.friction,
13 request.logic,
14 request.autonomy,
15 &request.trigger,
16 )
17 .await
18 {
19 Ok(result) => to_json_string(json!({
20 "previous_avec": avec_to_json(result.previous_avec),
21 "delta": result.delta,
22 "drift_classification": format!("{:?}", result.drift_classification),
23 "trigger": result.trigger,
24 "trigger_history": result.trigger_history,
25 "is_first_calibration": result.is_first_calibration,
26 })),
27 Err(err) => {
28 error!(error = %err, "calibrate_session failed");
29 tool_error("CalibrationFailure", &err.to_string())
30 }
31 }
32}