feat(mcp): expose verified replay receipts
This commit is contained in:
@@ -38,6 +38,14 @@ interface Capability extends CapabilitySummary {
|
||||
digest_state: string
|
||||
sbom_state: string
|
||||
signature_state: string
|
||||
compatibility_state?: string
|
||||
replay_status?: string
|
||||
replay_protocol_version?: string
|
||||
replay_server_version?: string
|
||||
replay_tool_count?: number
|
||||
replay_run_id?: string
|
||||
replay_independent_verifier?: boolean
|
||||
replay_promotion_allowed?: boolean
|
||||
rag_policy: string
|
||||
blockers: string[]
|
||||
}
|
||||
@@ -633,7 +641,7 @@ export default function McpControlPlanePage({ params }: { params: { locale: stri
|
||||
</div>
|
||||
</div>
|
||||
<div className="mt-4 max-w-full overflow-x-auto overscroll-x-contain">
|
||||
<table className="min-w-[980px] w-full border-collapse text-left text-xs">
|
||||
<table className="min-w-[1160px] w-full border-collapse text-left text-xs">
|
||||
<caption className="sr-only">{t('external.caption')}</caption>
|
||||
<thead>
|
||||
<tr className="border-b border-[#dedbd1] text-[#6c685f]">
|
||||
@@ -643,6 +651,7 @@ export default function McpControlPlanePage({ params }: { params: { locale: stri
|
||||
<th className="px-3 py-3 font-semibold">{t('external.columns.scope')}</th>
|
||||
<th className="px-3 py-3 font-semibold">{t('external.columns.version')}</th>
|
||||
<th className="px-3 py-3 font-semibold">{t('external.columns.supply')}</th>
|
||||
<th className="px-3 py-3 font-semibold">{t('external.columns.replay')}</th>
|
||||
<th className="px-3 py-3 font-semibold">{t('external.columns.promote')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -662,8 +671,32 @@ export default function McpControlPlanePage({ params }: { params: { locale: stri
|
||||
) : null}
|
||||
</td>
|
||||
<td className="px-3 py-3 text-[#5f5b54]">{item.digest_state} / {item.sbom_state} / {item.signature_state}</td>
|
||||
<td className="px-3 py-3 text-[#5f5b54]">
|
||||
{item.compatibility_state === 'protocol_schema_compatibility_verified'
|
||||
&& item.replay_status === 'completed_protocol_schema_replay_verified'
|
||||
&& item.replay_independent_verifier === true ? (
|
||||
<div>
|
||||
<div className="font-semibold text-[#17602a]">{t('external.replay.verified')}</div>
|
||||
<div className="mt-1 text-[10px] text-[#6c685f]">
|
||||
{t('external.replay.protocolTools', {
|
||||
protocol: item.replay_protocol_version ?? '--',
|
||||
tools: item.replay_tool_count ?? 0,
|
||||
})}
|
||||
</div>
|
||||
<div
|
||||
className="mt-1 font-mono text-[10px] text-[#8a867e]"
|
||||
title={item.replay_run_id}
|
||||
>
|
||||
{t('external.replay.receipt', { id: item.replay_run_id?.slice(0, 8) ?? '--' })}
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
<span className="text-[#8b5e18]">{t('external.replay.pending')}</span>
|
||||
)}
|
||||
</td>
|
||||
<td className="px-3 py-3">
|
||||
{item.deployment_allowed ? <CheckCircle2 className="h-4 w-4 text-[#2f7d54]" aria-label={t('external.allowed')} /> : <XCircle className="h-4 w-4 text-[#b2432d]" aria-label={t('external.blocked')} />}
|
||||
<p className="mt-1 text-[10px] text-[#8a867e]">{t('external.blockerCount', { count: item.blockers.length })}</p>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
|
||||
Reference in New Issue
Block a user