feat(external-pr): CEO decision surface — panel PR-review queue

The panel half of the PR-review gate. A PrReviewQueue card on the Command
Center lists external PRs the org has reviewed and awaiting the CEO's call,
each with Supersede / Dismiss / View-on-GitHub. Hidden when empty.

- tasksApi.getExternalPrReviews / supersedeExternalPr / dismissExternalPr,
  typed to the exact backend response shapes (GET /tasks/external-pr-reviews,
  POST /tasks/{id}/supersede-external-pr, POST .../dismiss-external-pr).
- Mock mode returns [] so the queue hides and the actions are unreachable —
  no mock-masked contract (the #194 trap avoided; verified FE paths/shapes
  against the real routes + route ordering).
This commit is contained in:
Renn F
2026-06-17 02:23:49 +02:00
parent 98c2a1f25f
commit 49188d1c8e
4 changed files with 284 additions and 0 deletions
@@ -9,6 +9,7 @@ import { ActiveBlockersPanel } from "./active-blockers-panel";
import { RecentActivityFeed } from "./recent-activity-feed";
import { QuickActionsBar } from "./quick-actions-bar";
import { CeoApprovalQueue } from "./ceo-approval-queue";
import { PrReviewQueue } from "./pr-review-queue";
import { StrategySignalsPanel } from "./strategy-signals-panel";
import type { Activity } from "./activity-item";
import { Button } from "@/components/ui/button";
@@ -77,6 +78,9 @@ export function CommandCenter() {
<StrategySignalsPanel />
</div>
{/* External-PR review decision queue (hidden when empty) */}
<PrReviewQueue />
{/* Metrics, Alerts, and Usage Row */}
<div className="grid grid-cols-1 lg:grid-cols-3 xl:grid-cols-3 2xl:grid-cols-3 gap-6">
<KeyMetricsPanel