Bridge Coach memory brief with project metrics summaries.
Add Performance Summary block to memory brief, document metrics synthesis in agent-coach, and add e2e and CLI tests for qualitative plus quantitative briefs.
This commit is contained in:
@@ -21,6 +21,36 @@ def _parse_timestamp(value: str) -> datetime:
|
||||
return datetime.fromisoformat(normalized)
|
||||
|
||||
|
||||
_TREND_ARROWS = {"up": "↑", "down": "↓", "stable": "→", "unknown": "?"}
|
||||
|
||||
|
||||
def performance_summary_markdown(summary: Dict[str, Any]) -> str:
|
||||
"""Format ADR-004 summary.json as a Coach brief markdown section."""
|
||||
if not summary or summary.get("execution_count", 0) == 0:
|
||||
return ""
|
||||
|
||||
trend = summary.get("trend", {})
|
||||
success_trend = trend.get("success_rate", "unknown")
|
||||
quality_trend = trend.get("quality_score", "unknown")
|
||||
|
||||
lines = [
|
||||
"## Performance Summary",
|
||||
"",
|
||||
f"- Executions: {summary['execution_count']}",
|
||||
(
|
||||
f"- Success rate: {summary['success_rate']:.1%} "
|
||||
f"({_TREND_ARROWS.get(success_trend, '?')} {success_trend})"
|
||||
),
|
||||
f"- Avg quality: {summary['avg_quality_score']:.2f} "
|
||||
f"({_TREND_ARROWS.get(quality_trend, '?')} {quality_trend})",
|
||||
f"- Avg execution time: {summary['avg_execution_time_s']:.1f}s",
|
||||
]
|
||||
if summary.get("last_execution"):
|
||||
lines.append(f"- Last execution: {summary['last_execution']}")
|
||||
lines.append("")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def _trend_direction(recent: List[float], prior: List[float]) -> str:
|
||||
if not recent:
|
||||
return "unknown"
|
||||
|
||||
Reference in New Issue
Block a user