From 8974ec96d0c487c2e84e225f165cbd9ae4dc47f1 Mon Sep 17 00:00:00 2001 From: soryu Date: Thu, 29 Jan 2026 01:20:09 +0000 Subject: Add Red Team fields to makima/frontend contract creation - Add redTeamEnabled and redTeamPrompt state to contracts.tsx - Add UI toggle checkbox for 'Enable Red Team monitoring' - Add conditional textarea for 'Custom review criteria' - Include red_team_enabled and red_team_prompt in CreateContractRequest - Reset red team fields on form cancel/success - Add redTeamEnabled to ContractSummary type in api.ts - Add redTeamEnabled/redTeamPrompt to CreateContractRequest type - Add red team badge to ContractList.tsx contract items Co-Authored-By: Claude Opus 4.5 --- makima/frontend/src/routes/contracts.tsx | 66 ++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'makima/frontend/src/routes') diff --git a/makima/frontend/src/routes/contracts.tsx b/makima/frontend/src/routes/contracts.tsx index aa62bd9..2f1f246 100644 --- a/makima/frontend/src/routes/contracts.tsx +++ b/makima/frontend/src/routes/contracts.tsx @@ -93,6 +93,8 @@ function ContractsPageContent() { const [contractTypes, setContractTypes] = useState([]); const [contractTypesLoading, setContractTypesLoading] = useState(false); const [localOnly, setLocalOnly] = useState(false); + const [redTeamEnabled, setRedTeamEnabled] = useState(false); + const [redTeamPrompt, setRedTeamPrompt] = useState(""); // Fetch contract types when modal opens - merges built-in types with user templates useEffect(() => { @@ -265,6 +267,8 @@ function ContractsPageContent() { contractType: contractType, initialPhase: initialPhase !== defaultPhaseForType ? initialPhase : undefined, localOnly: localOnly || undefined, + redTeamEnabled: redTeamEnabled || undefined, + redTeamPrompt: redTeamEnabled && redTeamPrompt.trim() ? redTeamPrompt.trim() : undefined, }; try { @@ -306,6 +310,8 @@ function ContractsPageContent() { setRepoUrl(""); setRepoPath(""); setLocalOnly(false); + setRedTeamEnabled(false); + setRedTeamPrompt(""); navigate(`/contracts/${contract.id}`); } } catch (err) { @@ -340,6 +346,8 @@ function ContractsPageContent() { setRepoUrl(""); setRepoPath(""); setLocalOnly(false); + setRedTeamEnabled(false); + setRedTeamPrompt(""); setCreateError(null); }, []); @@ -705,6 +713,64 @@ function ContractsPageContent() {

+ {/* Red Team Monitoring */} +
+
+ + +
+

+ Spawns a parallel task that monitors work output for quality and compliance. +

+
+ + {/* Red Team Prompt (shown when red team enabled) */} + {redTeamEnabled && ( +
+ +