summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-29 01:10:43 +0000
committersoryu <soryu@soryu.co>2026-01-29 17:23:03 +0000
commitaef9c46c5608c8e455d49d31d790a4cc483706b9 (patch)
treeaf17139c38e362385b5b02160308817617d5b577
parentb07424f87185fd0e4ee3d5c472df70e5f575a259 (diff)
downloadsoryu-aef9c46c5608c8e455d49d31d790a4cc483706b9.tar.gz
soryu-aef9c46c5608c8e455d49d31d790a4cc483706b9.zip
Fix Red Team UI visibility by adding red_team_enabled to ContractSummary
The Red Team toggle was implemented in the frontend but not visible because the backend API's ContractSummary response struct was missing the red_team_enabled field. The frontend relies on this field to: 1. Show the red team badge in the contract list view 2. Show the red team badge and tab in the contract detail view Changes: - Add red_team_enabled field to ContractSummary struct in models.rs - Update list_contracts_for_owner SQL query to include red_team_enabled - Update get_contract_summary_for_owner SQL query to include red_team_enabled - Update all fallback ContractSummary constructions in contracts.rs handler Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
-rw-r--r--makima/src/db/models.rs3
-rw-r--r--makima/src/db/repository.rs4
-rw-r--r--makima/src/server/handlers/contracts.rs4
3 files changed, 9 insertions, 2 deletions
diff --git a/makima/src/db/models.rs b/makima/src/db/models.rs
index 91564c8..4411747 100644
--- a/makima/src/db/models.rs
+++ b/makima/src/db/models.rs
@@ -1641,6 +1641,9 @@ pub struct ContractSummary {
/// When true, tasks do not auto-execute completion actions and work stays in worktrees.
#[serde(default)]
pub local_only: bool,
+ /// Whether red team monitoring is enabled for this contract.
+ #[serde(default)]
+ pub red_team_enabled: bool,
pub file_count: i64,
pub task_count: i64,
pub repository_count: i64,
diff --git a/makima/src/db/repository.rs b/makima/src/db/repository.rs
index 1ab4165..9a1bf2d 100644
--- a/makima/src/db/repository.rs
+++ b/makima/src/db/repository.rs
@@ -2517,7 +2517,7 @@ pub async fn list_contracts_for_owner(
r#"
SELECT
c.id, c.name, c.description, c.contract_type, c.phase, c.status,
- c.supervisor_task_id, c.local_only, c.version, c.created_at,
+ c.supervisor_task_id, c.local_only, c.red_team_enabled, c.version, c.created_at,
(SELECT COUNT(*) FROM files WHERE contract_id = c.id) as file_count,
(SELECT COUNT(*) FROM tasks WHERE contract_id = c.id) as task_count,
(SELECT COUNT(*) FROM contract_repositories WHERE contract_id = c.id) as repository_count
@@ -2541,7 +2541,7 @@ pub async fn get_contract_summary_for_owner(
r#"
SELECT
c.id, c.name, c.description, c.contract_type, c.phase, c.status,
- c.supervisor_task_id, c.local_only, c.version, c.created_at,
+ c.supervisor_task_id, c.local_only, c.red_team_enabled, c.version, c.created_at,
(SELECT COUNT(*) FROM files WHERE contract_id = c.id) as file_count,
(SELECT COUNT(*) FROM tasks WHERE contract_id = c.id) as task_count,
(SELECT COUNT(*) FROM contract_repositories WHERE contract_id = c.id) as repository_count
diff --git a/makima/src/server/handlers/contracts.rs b/makima/src/server/handlers/contracts.rs
index 7ed84e3..9979c1f 100644
--- a/makima/src/server/handlers/contracts.rs
+++ b/makima/src/server/handlers/contracts.rs
@@ -369,6 +369,7 @@ pub async fn create_contract(
status: contract.status,
supervisor_task_id: contract.supervisor_task_id,
local_only: contract.local_only,
+ red_team_enabled: contract.red_team_enabled,
file_count: 0,
task_count: 0,
repository_count: 0,
@@ -391,6 +392,7 @@ pub async fn create_contract(
status: contract.status,
supervisor_task_id: contract.supervisor_task_id,
local_only: contract.local_only,
+ red_team_enabled: contract.red_team_enabled,
file_count: 0,
task_count: 0,
repository_count: 0,
@@ -520,6 +522,7 @@ pub async fn update_contract(
status: contract.status,
supervisor_task_id: contract.supervisor_task_id,
local_only: contract.local_only,
+ red_team_enabled: contract.red_team_enabled,
file_count: 0,
task_count: 0,
repository_count: 0,
@@ -1405,6 +1408,7 @@ pub async fn change_phase(
status: updated_contract.status,
supervisor_task_id: updated_contract.supervisor_task_id,
local_only: updated_contract.local_only,
+ red_team_enabled: updated_contract.red_team_enabled,
file_count: 0,
task_count: 0,
repository_count: 0,