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 && (
+
+
+
+ )}
+
{/* Repository Configuration */}