Spaces:
Sleeping
Sleeping
File size: 1,819 Bytes
b522293 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
"""
Stage 3: Response Compiler - Data Fusion
"""
from typing import Dict, Any, List
class ResponseCompiler:
"""Stage 3: Compile results from multiple servers"""
def compile(self, raw_results: Dict[str, Any]) -> Dict[str, Any]:
"""
Merge results into structured format
Args:
raw_results: Dictionary containing results from MCPExecutor
{
"results": {
"weather": {"status": "success", "data": {...}},
"soil_properties": {"status": "success", "data": {...}},
...
},
"execution_time_seconds": 3.5
}
Returns:
{
"successful_servers": List[str],
"failed_servers": List[dict],
"data": Dict[str, Any],
"execution_time": float,
"completeness": str
}
"""
results_dict = raw_results.get("results", {})
successful = []
failed = []
compiled_data = {}
for server_name, result in results_dict.items():
if result.get("status") == "success":
successful.append(server_name)
compiled_data[server_name] = result.get("data", {})
else:
failed.append({
"server": server_name,
"error": result.get("error", "Unknown error")
})
return {
"successful_servers": successful,
"failed_servers": failed,
"data": compiled_data,
"execution_time": raw_results.get("execution_time_seconds", 0),
"completeness": f"{len(successful)}/{len(results_dict)} servers"
} |