{{ 'XP.AgentEvolution.OverallHealth' | translate }} {{ 'XP.AgentEvolution.AllBlockingGatesHealthy' | translate }}

{{ 'XP.AgentEvolution.HealthSummary' | translate: { pending: todos().length, severe: severeErrors() } }}

@if (todos().length) { {{ 'XP.AgentEvolution.ProcessTodo' | translate }} }
{{ 'XP.AgentEvolution.ProductionCapabilities' | translate }}
{{ facade.contextPointers().length }}

{{ 'XP.AgentEvolution.ActiveImmutablePointers' | translate }}

{{ 'XP.AgentEvolution.ActiveCandidates' | translate }}
{{ facade.contextLifecycleRecords().length }}

{{ 'XP.AgentEvolution.ProposalsInValidation' | translate: { count: facade.contextProposals().length } }}

{{ 'XP.AgentEvolution.EvaluationPassRate' | translate }}
{{ percent(passRate()) }}

{{ 'XP.AgentEvolution.PassedBlockingGates' | translate: { count: passedEvaluations() } }}

{{ 'XP.AgentEvolution.SevereErrors' | translate }}
{{ severeErrors() }}

{{ (severeErrors() === 0 ? 'XP.AgentEvolution.WithinSafetyThreshold' : 'XP.AgentEvolution.RequiresImmediateAction' ) | translate }}

{{ 'XP.AgentEvolution.TodayTodos' | translate }} {{ 'XP.AgentEvolution.TodayTodosDescription' | translate }}
{{ todos().length }}
@if (todos().length) {
@for (todo of todos(); track todo.typeKey + todo.title) { }
{{ 'XP.AgentEvolution.Item' | translate }} {{ 'XP.AgentEvolution.EvolutionTarget' | translate }} {{ 'XP.AgentEvolution.StatusLabel' | translate }} {{ 'XP.AgentEvolution.Actions' | translate }}
{{ todo.titleKey ? (todo.titleKey | translate: todo.titleParams) : todo.title }}
{{ todo.typeKey | translate }}
{{ todo.target }} {{ 'XP.AgentEvolution.Status.' + todo.status | translate: { Default: todo.status } }} {{ 'XP.AgentEvolution.View' | translate }}
} @else {
{{ 'XP.AgentEvolution.NoPendingTodos' | translate }}

{{ 'XP.AgentEvolution.NoPendingTodosDescription' | translate }}

}
{{ 'XP.AgentEvolution.EvolutionLoop' | translate }} {{ 'XP.AgentEvolution.EvolutionLoopDescription' | translate }}
@for (stage of loopStages(); track stage.labelKey; let last = $last) {
@if (!last) { }
{{ stage.labelKey | translate }} {{ stage.value }}
}
{{ 'XP.AgentEvolution.GovernanceAdvice' | translate }}

{{ 'XP.AgentEvolution.GovernanceAdviceDescription' | translate }}

{{ 'XP.AgentEvolution.TargetHealth' | translate }} {{ 'XP.AgentEvolution.TargetHealthDescription' | translate }}
{{ 'XP.AgentEvolution.TargetCount' | translate: { count: facade.contextTargets().length } }}
@for (target of facade.contextTargets(); track target.targetId) { } @empty { }
{{ 'XP.AgentEvolution.Target' | translate }} {{ 'XP.AgentEvolution.Type' | translate }} {{ 'XP.AgentEvolution.Risk' | translate }} {{ 'XP.AgentEvolution.Capabilities' | translate }} {{ 'XP.AgentEvolution.Provider' | translate }} {{ 'XP.AgentEvolution.StatusLabel' | translate }}
{{ target.displayName }}
{{ target.targetId }}
{{ 'XP.AgentEvolution.TargetType.' + target.targetType | translate: { Default: target.targetType } }} {{ target.riskLevel }} @if (target.capabilities.replay) { {{ 'XP.AgentEvolution.Replay' | translate }} } @if (target.capabilities.shadow) { · {{ 'XP.AgentEvolution.Shadow' | translate }} } @if (target.capabilities.canary) { · {{ 'XP.AgentEvolution.Canary' | translate }} } {{ target.providerKey }}@{{ target.providerVersion }} {{ 'XP.AgentEvolution.Status.' + target.status | translate: { Default: target.status } }}
{{ 'XP.AgentEvolution.NoSynchronizedTargets' | translate }}