8f48dd838b
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
42 lines
1.5 KiB
Go
42 lines
1.5 KiB
Go
package database
|
|
|
|
import "context"
|
|
|
|
func (db *DB) migrate() error {
|
|
_, err := db.Pool.Exec(context.Background(), `
|
|
CREATE TABLE IF NOT EXISTS tasks (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
parent_task_id UUID REFERENCES tasks(id),
|
|
command TEXT NOT NULL,
|
|
skill TEXT NOT NULL DEFAULT '',
|
|
repository TEXT NOT NULL,
|
|
ref TEXT NOT NULL,
|
|
issue_number INTEGER NOT NULL DEFAULT 0,
|
|
pr_number INTEGER NOT NULL DEFAULT 0,
|
|
comment_id BIGINT NOT NULL DEFAULT 0,
|
|
body TEXT NOT NULL DEFAULT '',
|
|
author TEXT NOT NULL,
|
|
extra_tools TEXT[] NOT NULL DEFAULT '{}',
|
|
status TEXT NOT NULL DEFAULT 'todo',
|
|
pool_ref TEXT NOT NULL DEFAULT '',
|
|
job_name TEXT NOT NULL DEFAULT '',
|
|
result TEXT NOT NULL DEFAULT '',
|
|
error_message TEXT NOT NULL DEFAULT '',
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
started_at TIMESTAMPTZ,
|
|
completed_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_repository ON tasks(repository);
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_parent ON tasks(parent_task_id);
|
|
|
|
-- migrate legacy statuses
|
|
UPDATE tasks SET status = 'todo' WHERE status IN ('pending', 'failed');
|
|
UPDATE tasks SET status = 'in_progress' WHERE status = 'running';
|
|
UPDATE tasks SET status = 'done' WHERE status = 'succeeded';
|
|
UPDATE tasks SET status = 'wontdo' WHERE status = 'cancelled';
|
|
`)
|
|
return err
|
|
}
|