Add TUI kanban board, review workflow, and new task statuses
Replace task statuses (pending/running/succeeded/failed/cancelled) with
a kanban workflow: todo → in_progress → in_review → done/wontdo.
When a non-review agent task completes, the API auto-creates a child
review task and moves the parent to in_review. Only humans can move
tasks from in_review to done/wontdo via the TUI.
New components:
- cmd/tui: bubbletea kanban board with $EDITOR integration
- POST /api/v1/tasks/{id}/complete: agent completion callback
- Operator --api-url flag for completion callbacks
- ProviderQueue sets tasks to in_progress on pickup
- AgentTask reconciler calls /complete on job finish
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package tui
|
||||
|
||||
import (
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
|
||||
"git.unkin.net/unkin/forgebot/pkg/models"
|
||||
)
|
||||
|
||||
var statusColors = map[models.TaskStatus]lipgloss.Color{
|
||||
models.StatusTodo: lipgloss.Color("3"),
|
||||
models.StatusInProgress: lipgloss.Color("4"),
|
||||
models.StatusInReview: lipgloss.Color("5"),
|
||||
models.StatusDone: lipgloss.Color("2"),
|
||||
models.StatusWontdo: lipgloss.Color("8"),
|
||||
}
|
||||
|
||||
var (
|
||||
columnTitleStyle = lipgloss.NewStyle().
|
||||
Bold(true).
|
||||
Padding(0, 1)
|
||||
|
||||
cardStyle = lipgloss.NewStyle().
|
||||
Border(lipgloss.RoundedBorder()).
|
||||
Padding(0, 1)
|
||||
|
||||
cardSelectedStyle = lipgloss.NewStyle().
|
||||
Border(lipgloss.ThickBorder()).
|
||||
Padding(0, 1)
|
||||
|
||||
detailLabelStyle = lipgloss.NewStyle().Bold(true).Width(14)
|
||||
detailValueStyle = lipgloss.NewStyle()
|
||||
|
||||
helpStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("8"))
|
||||
errStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("1"))
|
||||
|
||||
dimStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("8"))
|
||||
)
|
||||
Reference in New Issue
Block a user