Skip to main content

locus_mcp/tools/
calibrate_session.rs

1use 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}