* Find an available task that can be worked on: * - Status is 'pending' * - No owner assigned * - Not blocked by any unresolved tasks
(tasks: Task[])
| 195 | * - Not blocked by any unresolved tasks |
| 196 | */ |
| 197 | function findAvailableTask(tasks: Task[]): Task | undefined { |
| 198 | const unresolvedTaskIds = new Set( |
| 199 | tasks.filter(t => t.status !== 'completed').map(t => t.id), |
| 200 | ) |
| 201 | |
| 202 | return tasks.find(task => { |
| 203 | if (task.status !== 'pending') return false |
| 204 | if (task.owner) return false |
| 205 | // Check all blockers are completed |
| 206 | return task.blockedBy.every(id => !unresolvedTaskIds.has(id)) |
| 207 | }) |
| 208 | } |
| 209 | |
| 210 | /** |
| 211 | * Format a task as a prompt for Claude to work on. |
no test coverage detected