@extends('admin.layouts.app') @section('title', 'Approval #' . $approval->id . ' — ' . __('admin.brand.name')) @section('page_title', 'Approval #' . $approval->id) @push('styles') @endpush @section('content') @if (session('status'))
{{ session('status') }}
@endif @if (session('error'))
{{ session('error') }}
@endif @php $run = $approval->agentRun; $statusColors = ['pending'=>'#b76e00','approved'=>'#1e7a33','rejected'=>'#c62828','cancelled'=>'#64748b','expired'=>'#64748b']; $steps = [ ['t' => 'Agent analyzed', 'ts' => optional($run?->completed_at ?? $run?->started_at)->format('Y-m-d H:i'), 'done' => $run !== null], ['t' => 'Approval created', 'ts' => optional($approval->created_at)->format('Y-m-d H:i'), 'done' => true], ['t' => 'Admin viewed', 'ts' => optional($approval->viewed_at)->format('Y-m-d H:i'), 'done' => $approval->viewed_at !== null], ['t' => 'Decision: ' . ucfirst($approval->status), 'ts' => optional($approval->decided_at)->format('Y-m-d H:i'), 'done' => in_array($approval->status, ['approved','rejected','cancelled','expired'], true)], ['t' => 'Execution ' . ($run?->execution_status ?? 'not_started'), 'ts' => $run && $run->execution_status !== 'not_started' ? optional($run->completed_at)->format('Y-m-d H:i') : null, 'done' => in_array($run?->execution_status, ['executed','failed','blocked','cancelled'], true)], ]; @endphp

Request

Startup
{{ $approval->startup?->name ?? '—' }}
Agent
{{ $approval->agent?->name ?? $approval->agent_key }}
Run ID
#{{ $approval->agent_run_id }}
Correlation ID
{{ $approval->correlation_id }}
Proposed action
{{ $approval->action_key }}
Transition
{{ $approval->current_group ?? '—' }} → {{ $approval->proposed_group ?? '—' }} @if($approval->proposed_status) ({{ $approval->proposed_status }}) @endif
Risk
{{ ucfirst($approval->risk_level) }}
Policy version
{{ $approval->policy_version ?? '—' }}
Status
{{ ucfirst($approval->status) }}
Execution status
{{ $run?->execution_status ?? 'not_started' }}
Reason
{{ $approval->reason ?? '—' }}
Expires
{{ optional($approval->expires_at)->format('Y-m-d H:i') ?? '—' }}
@if ($approval->decided_by)
Decided by
{{ $approval->decidedBy?->name }} · {{ optional($approval->decided_at)->format('Y-m-d H:i') }}
@endif @if ($approval->decision_comment)
Comment
{{ $approval->decision_comment }}
@endif
@if ($approval->isPending())
@csrf

On approval, Make re-runs expected-state + transition + idempotency validation before executing. Human decisions take precedence over AI.

@endif

{{ __('admin.agents.approvals.timeline') }}

    @foreach ($steps as $i => $s)
  • {{ $s['t'] }}
    {{ $s['ts'] ?? '—' }}
  • @endforeach
@endsection