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 --- .../src/components/contracts/ContractList.tsx | 5 ++ makima/frontend/src/lib/api.ts | 6 ++ makima/frontend/src/routes/contracts.tsx | 66 ++++++++++++++++++++++ 3 files changed, 77 insertions(+) diff --git a/makima/frontend/src/components/contracts/ContractList.tsx b/makima/frontend/src/components/contracts/ContractList.tsx index 98f8ff6..d56c9fd 100644 --- a/makima/frontend/src/components/contracts/ContractList.tsx +++ b/makima/frontend/src/components/contracts/ContractList.tsx @@ -136,6 +136,11 @@ export function ContractList({ Local )} + {contract.redTeamEnabled && ( + + Red Team + + )} ([]); 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 && ( +
+ +