feat: auto-trigger reviewer after owner completion with round trip limit

- Owner finishes → auto mark review_ready → reviewer executes
- Reviewer finishes → task back to active → owner can respond
- Automatic ping-pong until consensus or round trip limit
- PAIRED_MAX_ROUND_TRIPS env var (default 10, 0 = unlimited)
- round_trip_count tracked per task in DB
This commit is contained in:
Eyejoker
2026-03-29 18:57:16 +09:00
parent 338c1f6a1d
commit a1e5418a2f
10 changed files with 105 additions and 45 deletions

View File

@@ -74,7 +74,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: 'review the owner changes',
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: null,
status: 'active',
created_at: now,
@@ -162,7 +162,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: null,
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: null,
status: 'active',
created_at: now,
@@ -214,7 +214,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: 'cross service review',
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: null,
status: 'active',
created_at: now,
@@ -289,7 +289,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: null,
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: null,
status: 'active',
created_at: now,
@@ -363,7 +363,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: null,
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: null,
status: 'active',
created_at: now,
@@ -503,7 +503,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: null,
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: null,
status: 'active',
created_at: now,
@@ -564,7 +564,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: null,
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: null,
status: 'active',
created_at: now,
@@ -619,7 +619,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: null,
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: '2026-03-28T00:01:00.000Z',
status: 'review_ready',
created_at: now,
@@ -680,7 +680,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: null,
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: null,
status: 'active',
created_at: now,
@@ -743,7 +743,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: null,
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: null,
status: 'active',
created_at: now,
@@ -831,7 +831,7 @@ describe('paired workspace manager', () => {
reviewer_service_id: 'codex-review',
title: null,
source_ref: 'HEAD',
plan_notes: null,
plan_notes: null, round_trip_count: 0,
review_requested_at: null,
status: 'active',
created_at: now,