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