agent-ecosystem/src/shared/utils/reviewState.ts
iliya 86a1abdefa feat: introduce 'needsFix' review state and enhance task management features
- Added 'needsFix' as a new review state to improve task tracking and management.
- Updated kanban and task handling functions to accommodate the new review state, including modifications to clearKanban and task status updates.
- Enhanced task briefing output to include sections for tasks needing fixes, pending tasks, and approved tasks, improving clarity in task management.
- Updated UI components to display the 'needsFix' state appropriately across various views, including task rows and tooltips.
- Refactored tests to cover new functionalities related to the 'needsFix' state, ensuring comprehensive coverage of task management scenarios.
2026-03-09 13:50:45 +02:00

46 lines
1.4 KiB
TypeScript

import type { TeamReviewState } from '@shared/types';
interface ReviewStateLike {
reviewState?: TeamReviewState | null;
kanbanColumn?: 'review' | 'approved' | null;
status?: string | null;
}
export function normalizeReviewState(value: unknown): TeamReviewState {
return value === 'review' || value === 'needsFix' || value === 'approved' ? value : 'none';
}
export function getReviewStateFromTask(task: ReviewStateLike): TeamReviewState {
const explicit = normalizeReviewState(task.reviewState);
if (explicit !== 'none') {
return explicit;
}
if (task.kanbanColumn === 'review' || task.kanbanColumn === 'approved') {
return task.kanbanColumn;
}
return 'none';
}
export function getKanbanColumnFromReviewState(
reviewState: TeamReviewState
): 'review' | 'approved' | undefined {
return reviewState === 'review' || reviewState === 'approved' ? reviewState : undefined;
}
export function getTaskKanbanColumn(task: ReviewStateLike): 'review' | 'approved' | undefined {
return getKanbanColumnFromReviewState(getReviewStateFromTask(task));
}
export function isApprovedTask(task: ReviewStateLike): boolean {
return getReviewStateFromTask(task) === 'approved';
}
export function isReviewTask(task: ReviewStateLike): boolean {
return getReviewStateFromTask(task) === 'review';
}
export function isNeedsFixTask(task: ReviewStateLike): boolean {
return getReviewStateFromTask(task) === 'needsFix';
}