From 8bd1a20e09cd44e0e035d10bb48bd0f6bf5d65ed Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Sun, 24 May 2026 19:07:43 +0200 Subject: [PATCH] DPL MCP: expose the version in the MCP This allows your favourite LLM to spot missing recompilations. --- Framework/Core/scripts/dpl-mcp-server/dpl_mcp_server.py | 6 ++++-- Framework/Core/src/StatusWebSocketHandler.cxx | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Framework/Core/scripts/dpl-mcp-server/dpl_mcp_server.py b/Framework/Core/scripts/dpl-mcp-server/dpl_mcp_server.py index ed457b8a57d9d..6ad91dd44764e 100644 --- a/Framework/Core/scripts/dpl-mcp-server/dpl_mcp_server.py +++ b/Framework/Core/scripts/dpl-mcp-server/dpl_mcp_server.py @@ -190,9 +190,10 @@ async def connect(port: int = 0, pid: int = 0, name: str = "") -> str: _workflows[wf_name] = conn devices = conn.snapshot.get("devices", []) + version = conn.snapshot.get("version", "unknown") return ( f"Connected to workflow '{wf_name}' on port {port} " - f"({len(devices)} device(s))." + f"({len(devices)} device(s), version: {version})." ) @@ -232,9 +233,10 @@ async def connect_hyperloop(url: str, name: str = "", token: str = "") -> str: _workflows[wf_name] = conn devices = conn.snapshot.get("devices", []) + version = conn.snapshot.get("version", "unknown") return ( f"Connected to Hyperloop workflow '{wf_name}' via {ws_url} " - f"({len(devices)} device(s))." + f"({len(devices)} device(s), version: {version})." ) diff --git a/Framework/Core/src/StatusWebSocketHandler.cxx b/Framework/Core/src/StatusWebSocketHandler.cxx index 065a6f4b05b4a..46c3e5d686c1a 100644 --- a/Framework/Core/src/StatusWebSocketHandler.cxx +++ b/Framework/Core/src/StatusWebSocketHandler.cxx @@ -23,6 +23,7 @@ #include "Framework/DeviceStateEnums.h" #include "Framework/LogParsingHelpers.h" #include "Framework/Signpost.h" +#include "O2Version.h" #include #include #include @@ -286,7 +287,9 @@ void StatusWebSocketHandler::sendSnapshot() std::string out; out.reserve(512 + specs.size() * 128); - out += R"({"type":"snapshot","devices":[)"; + out += R"({"type":"snapshot","version":")"; + out += jsonEscape(o2::gitRevision()); + out += R"(","devices":[)"; for (size_t di = 0; di < specs.size(); ++di) { if (di > 0) { out += ',';