feat(orchestration): add orchestration system with task scheduling
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
31
backend/app/agents/orchestration/monitor.py
Normal file
31
backend/app/agents/orchestration/monitor.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
|
||||
def build_parallel_runtime_metrics(
|
||||
*,
|
||||
task_graph: dict[str, Any] | None,
|
||||
scheduled_subtasks: list[dict[str, Any]] | None,
|
||||
task_results: list[dict[str, Any]] | None,
|
||||
merge_report: dict[str, Any] | None,
|
||||
) -> dict[str, Any]:
|
||||
task_graph = task_graph or {}
|
||||
scheduled_subtasks = list(scheduled_subtasks or [])
|
||||
task_results = list(task_results or [])
|
||||
merge_report = merge_report or {}
|
||||
|
||||
completed = sum(1 for item in task_results if item.get("status") == "completed")
|
||||
failed = sum(1 for item in task_results if item.get("status") == "failed")
|
||||
blocked = sum(1 for item in task_results if item.get("status") == "blocked")
|
||||
|
||||
return {
|
||||
"task_graph_node_count": len(task_graph.get("nodes") or []),
|
||||
"scheduled_subtask_count": len(scheduled_subtasks),
|
||||
"completed_subtask_count": completed,
|
||||
"failed_subtask_count": failed,
|
||||
"blocked_subtask_count": blocked,
|
||||
"merge_status": merge_report.get("status"),
|
||||
"merge_conflict_count": len(merge_report.get("conflict_flags") or []),
|
||||
"fallback_used": bool(merge_report.get("fallback_used") or False),
|
||||
}
|
||||
Reference in New Issue
Block a user