Problem
AgentCoder had a GitHub-issues kanban; the PAGS port scaffolded the DB columns (coding_sessions.issue_number/issue_title) but never wired the API or UI. There's no backlog/board for the coding agent.
Approach
Lead with an internal, provider-agnostic task model (keeps us multi-provider, works for local-only repos), with GitHub-issue import as the first adapter.
- New
coding_tasks table (per repo): id, repo_id, title, body, status (todo/doing/needs-you/done), source (manual | github), external_ref (issue #/url), created/updated.
- Board: reuse the generic
renderKanbanBoard. Columns ~ Ready · Working · Needs you · Done. A card's status comes from the live session run-state (the work I shipped: working/ready/needs-you).
- Tap a card → opens/starts the coding session for that repo targeting the task (the
issue_number/issue_title plumbing already exists).
- Optional "Import GitHub issues" (when the GitHub App is installed) creates task cards from open issues; future adapters: GitLab/Bitbucket.
Scope
- Migration +
lib/coding-tasks.ts (D1 CRUD) + routes (/coding/tasks CRUD, /coding/issues/import).
- A "Board" surface for coding agents (new console view).
Acceptance
- A coding agent shows a board of tasks; create a task manually OR import GitHub issues; clicking a task starts/visits the session; card status reflects live agent state.
Notes
Reuses renderKanbanBoard, the capability registry, and the live status work. Provider-agnostic by design so it's not GitHub-locked.
Problem
AgentCoder had a GitHub-issues kanban; the PAGS port scaffolded the DB columns (
coding_sessions.issue_number/issue_title) but never wired the API or UI. There's no backlog/board for the coding agent.Approach
Lead with an internal, provider-agnostic task model (keeps us multi-provider, works for local-only repos), with GitHub-issue import as the first adapter.
coding_taskstable (per repo): id, repo_id, title, body, status (todo/doing/needs-you/done), source (manual | github), external_ref (issue #/url), created/updated.renderKanbanBoard. Columns ~ Ready · Working · Needs you · Done. A card's status comes from the live session run-state (the work I shipped: working/ready/needs-you).issue_number/issue_titleplumbing already exists).Scope
lib/coding-tasks.ts(D1 CRUD) + routes (/coding/tasksCRUD,/coding/issues/import).Acceptance
Notes
Reuses
renderKanbanBoard, the capability registry, and the live status work. Provider-agnostic by design so it's not GitHub-locked.