mirror of
https://github.com/leonvanzyl/autocoder.git
synced 2026-01-30 06:12:06 +00:00
Add in-progress status tracking for features
Implements feature locking to prevent multiple agent sessions from working on the same feature simultaneously. This is essential for parallel agent execution. Database changes: - Add `in_progress` boolean column to Feature model - Add migration function to handle existing databases MCP Server tools: - Add `feature_mark_in_progress` - lock feature when starting work - Add `feature_clear_in_progress` - unlock feature when abandoning - Update `feature_get_next` to skip in-progress features - Update `feature_get_stats` to include in_progress count - Update `feature_mark_passing` and `feature_skip` to clear in_progress Backend updates: - Update progress.py to track and display in_progress count - Update features router to properly categorize in-progress features - Update WebSocket to broadcast in_progress in progress updates - Add in_progress to FeatureResponse schema Frontend updates: - Add in_progress to TypeScript types (Feature, ProjectStats, WSProgressMessage) - Update useWebSocket hook to track in_progress state Prompt template: - Add instructions for agents to mark features in-progress immediately - Document new MCP tools in allowed tools section Also fixes spec_chat_session.py to use absolute project path instead of relative path for consistency with CLI behavior. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ import type { WSMessage, AgentStatus } from '../lib/types'
|
||||
interface WebSocketState {
|
||||
progress: {
|
||||
passing: number
|
||||
in_progress: number
|
||||
total: number
|
||||
percentage: number
|
||||
}
|
||||
@@ -20,7 +21,7 @@ const MAX_LOGS = 100 // Keep last 100 log lines
|
||||
|
||||
export function useProjectWebSocket(projectName: string | null) {
|
||||
const [state, setState] = useState<WebSocketState>({
|
||||
progress: { passing: 0, total: 0, percentage: 0 },
|
||||
progress: { passing: 0, in_progress: 0, total: 0, percentage: 0 },
|
||||
agentStatus: 'stopped',
|
||||
logs: [],
|
||||
isConnected: false,
|
||||
@@ -57,6 +58,7 @@ export function useProjectWebSocket(projectName: string | null) {
|
||||
...prev,
|
||||
progress: {
|
||||
passing: message.passing,
|
||||
in_progress: message.in_progress,
|
||||
total: message.total,
|
||||
percentage: message.percentage,
|
||||
},
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
// Project types
|
||||
export interface ProjectStats {
|
||||
passing: number
|
||||
in_progress: number
|
||||
total: number
|
||||
percentage: number
|
||||
}
|
||||
@@ -34,6 +35,7 @@ export interface Feature {
|
||||
description: string
|
||||
steps: string[]
|
||||
passes: boolean
|
||||
in_progress: boolean
|
||||
}
|
||||
|
||||
export interface FeatureListResponse {
|
||||
@@ -79,6 +81,7 @@ export type WSMessageType = 'progress' | 'feature_update' | 'log' | 'agent_statu
|
||||
export interface WSProgressMessage {
|
||||
type: 'progress'
|
||||
passing: number
|
||||
in_progress: number
|
||||
total: number
|
||||
percentage: number
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user