From a500001093ed3bd42c21b08144a819e023c7cb8d Mon Sep 17 00:00:00 2001 From: Naiyuan Qing <145280634+NevilleQingNY@users.noreply.github.com> Date: Thu, 26 Mar 2026 19:24:34 +0800 Subject: [PATCH] refactor: remove acceptance_criteria and context_refs from issues These fields were unused in practice. Removed from frontend types, issue detail UI, backend handlers, daemon prompt/context, protocol messages, SQL queries, and tests. DB columns retained with defaults. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../app/(dashboard)/issues/[id]/page.test.tsx | 2 - apps/web/app/(dashboard)/issues/page.test.tsx | 2 - .../issues/components/issue-detail.tsx | 169 ------------------ apps/web/shared/types/api.ts | 4 - apps/web/shared/types/issue.ts | 2 - server/internal/daemon/daemon.go | 12 +- server/internal/daemon/execenv/context.go | 16 -- server/internal/daemon/execenv/execenv.go | 8 +- .../internal/daemon/execenv/execenv_test.go | 15 +- server/internal/daemon/prompt.go | 8 - server/internal/daemon/types.go | 8 +- server/internal/handler/agent.go | 2 - server/internal/handler/issue.go | 73 ++------ server/internal/service/task.go | 64 ++----- server/pkg/db/generated/issue.sql.go | 57 +++--- server/pkg/db/queries/issue.sql | 7 +- server/pkg/protocol/messages.go | 10 +- 17 files changed, 77 insertions(+), 382 deletions(-) diff --git a/apps/web/app/(dashboard)/issues/[id]/page.test.tsx b/apps/web/app/(dashboard)/issues/[id]/page.test.tsx index 05fd853a..7d335a8e 100644 --- a/apps/web/app/(dashboard)/issues/[id]/page.test.tsx +++ b/apps/web/app/(dashboard)/issues/[id]/page.test.tsx @@ -139,8 +139,6 @@ const mockIssue: Issue = { creator_type: "member", creator_id: "user-1", parent_issue_id: null, - acceptance_criteria: [], - context_refs: [], position: 0, due_date: "2026-06-01T00:00:00Z", created_at: "2026-01-15T00:00:00Z", diff --git a/apps/web/app/(dashboard)/issues/page.test.tsx b/apps/web/app/(dashboard)/issues/page.test.tsx index dab97b15..64372832 100644 --- a/apps/web/app/(dashboard)/issues/page.test.tsx +++ b/apps/web/app/(dashboard)/issues/page.test.tsx @@ -178,8 +178,6 @@ vi.mock("@dnd-kit/utilities", () => ({ const issueDefaults = { parent_issue_id: null, - acceptance_criteria: [], - context_refs: [], position: 0, }; diff --git a/apps/web/features/issues/components/issue-detail.tsx b/apps/web/features/issues/components/issue-detail.tsx index 723e7139..edd525e2 100644 --- a/apps/web/features/issues/components/issue-detail.tsx +++ b/apps/web/features/issues/components/issue-detail.tsx @@ -108,164 +108,6 @@ function PropRow({ } -// --------------------------------------------------------------------------- -// Acceptance Criteria Editor -// --------------------------------------------------------------------------- - -function AcceptanceCriteriaEditor({ - criteria, - onUpdate, -}: { - criteria: string[]; - onUpdate: (updates: Partial) => void; -}) { - const [newItem, setNewItem] = useState(""); - - const addItem = () => { - if (!newItem.trim()) return; - onUpdate({ acceptance_criteria: [...criteria, newItem.trim()] }); - setNewItem(""); - }; - - const removeItem = (index: number) => { - onUpdate({ acceptance_criteria: criteria.filter((_, i) => i !== index) }); - }; - - const [adding, setAdding] = useState(false); - - return ( -
-

Acceptance Criteria

- {criteria.length > 0 && ( -
- {criteria.map((item, i) => ( -
- - {item} - -
- ))} -
- )} - {(criteria.length > 0 || adding) ? ( -
{ e.preventDefault(); addItem(); }} - className="flex items-center gap-2" - > - setNewItem(e.target.value)} - onBlur={() => { if (!newItem.trim()) setAdding(false); }} - placeholder="Add criteria..." - aria-label="Add acceptance criteria" - className="flex-1 text-sm bg-transparent outline-none placeholder:text-muted-foreground" - /> -
- ) : ( - - )} -
- ); -} - -// --------------------------------------------------------------------------- -// Context Refs Editor -// --------------------------------------------------------------------------- - -function ContextRefsEditor({ - refs, - onUpdate, -}: { - refs: string[]; - onUpdate: (updates: Partial) => void; -}) { - const [newRef, setNewRef] = useState(""); - - const addRef = () => { - if (!newRef.trim()) return; - onUpdate({ context_refs: [...refs, newRef.trim()] }); - setNewRef(""); - }; - - const removeRef = (index: number) => { - onUpdate({ context_refs: refs.filter((_, i) => i !== index) }); - }; - - const [adding, setAdding] = useState(false); - - const isUrl = (s: string) => s.startsWith("http://") || s.startsWith("https://"); - - return ( -
-

Context References

- {refs.length > 0 && ( -
- {refs.map((ref, i) => ( -
- - {isUrl(ref) ? ( - - {ref} - - ) : ( - {ref} - )} - -
- ))} -
- )} - {(refs.length > 0 || adding) ? ( -
{ e.preventDefault(); addRef(); }} - className="flex items-center gap-2" - > - setNewRef(e.target.value)} - onBlur={() => { if (!newRef.trim()) setAdding(false); }} - placeholder="Add reference URL..." - aria-label="Add context reference URL" - className="flex-1 text-sm bg-transparent outline-none placeholder:text-muted-foreground" - /> -
- ) : ( - - )} -
- ); -} - // --------------------------------------------------------------------------- // Props // --------------------------------------------------------------------------- @@ -707,17 +549,6 @@ export function IssueDetail({ issueId, onDelete }: IssueDetailProps) { className="mt-5" /> -
- - -
-
{/* Activity / Comments */} diff --git a/apps/web/shared/types/api.ts b/apps/web/shared/types/api.ts index 3bcd8754..cdeeae4e 100644 --- a/apps/web/shared/types/api.ts +++ b/apps/web/shared/types/api.ts @@ -10,8 +10,6 @@ export interface CreateIssueRequest { assignee_type?: IssueAssigneeType; assignee_id?: string; parent_issue_id?: string; - acceptance_criteria?: string[]; - context_refs?: string[]; due_date?: string; } @@ -24,8 +22,6 @@ export interface UpdateIssueRequest { assignee_id?: string | null; position?: number; due_date?: string | null; - acceptance_criteria?: string[]; - context_refs?: string[]; } export interface ListIssuesParams { diff --git a/apps/web/shared/types/issue.ts b/apps/web/shared/types/issue.ts index efc73730..98620386 100644 --- a/apps/web/shared/types/issue.ts +++ b/apps/web/shared/types/issue.ts @@ -23,8 +23,6 @@ export interface Issue { creator_type: IssueAssigneeType; creator_id: string; parent_issue_id: string | null; - acceptance_criteria: string[]; - context_refs: string[]; position: number; due_date: string | null; created_at: string; diff --git a/server/internal/daemon/daemon.go b/server/internal/daemon/daemon.go index f0ac56de..5464fc6c 100644 --- a/server/internal/daemon/daemon.go +++ b/server/internal/daemon/daemon.go @@ -373,13 +373,11 @@ func (d *Daemon) runTask(ctx context.Context, task Task) (TaskResult, error) { // Prepare isolated execution environment. taskCtx := execenv.TaskContextForEnv{ - IssueTitle: task.Context.Issue.Title, - IssueDescription: task.Context.Issue.Description, - AcceptanceCriteria: task.Context.Issue.AcceptanceCriteria, - ContextRefs: task.Context.Issue.ContextRefs, - WorkspaceContext: task.Context.WorkspaceContext, - AgentName: task.Context.Agent.Name, - AgentSkills: convertSkillsForEnv(task.Context.Agent.Skills), + IssueTitle: task.Context.Issue.Title, + IssueDescription: task.Context.Issue.Description, + WorkspaceContext: task.Context.WorkspaceContext, + AgentName: task.Context.Agent.Name, + AgentSkills: convertSkillsForEnv(task.Context.Agent.Skills), } env, err := execenv.Prepare(execenv.PrepareParams{ WorkspacesRoot: d.cfg.WorkspacesRoot, diff --git a/server/internal/daemon/execenv/context.go b/server/internal/daemon/execenv/context.go index f4484ff0..e3f1f2a8 100644 --- a/server/internal/daemon/execenv/context.go +++ b/server/internal/daemon/execenv/context.go @@ -91,22 +91,6 @@ func renderIssueContext(ctx TaskContextForEnv) string { b.WriteString("\n\n") } - if len(ctx.AcceptanceCriteria) > 0 { - b.WriteString("## Acceptance Criteria\n\n") - for _, item := range ctx.AcceptanceCriteria { - fmt.Fprintf(&b, "- %s\n", item) - } - b.WriteString("\n") - } - - if len(ctx.ContextRefs) > 0 { - b.WriteString("## Context References\n\n") - for _, ref := range ctx.ContextRefs { - fmt.Fprintf(&b, "- %s\n", ref) - } - b.WriteString("\n") - } - if ctx.WorkspaceContext != "" { b.WriteString("## Workspace Context\n\n") b.WriteString(ctx.WorkspaceContext) diff --git a/server/internal/daemon/execenv/execenv.go b/server/internal/daemon/execenv/execenv.go index 3d56fa46..ea8536ef 100644 --- a/server/internal/daemon/execenv/execenv.go +++ b/server/internal/daemon/execenv/execenv.go @@ -29,11 +29,9 @@ type PrepareParams struct { // TaskContextForEnv is the subset of task context used for writing context files. type TaskContextForEnv struct { - IssueTitle string - IssueDescription string - AcceptanceCriteria []string - ContextRefs []string - WorkspaceContext string + IssueTitle string + IssueDescription string + WorkspaceContext string AgentName string AgentSkills []SkillContextForEnv } diff --git a/server/internal/daemon/execenv/execenv_test.go b/server/internal/daemon/execenv/execenv_test.go index 9568bd5d..20c7f4ec 100644 --- a/server/internal/daemon/execenv/execenv_test.go +++ b/server/internal/daemon/execenv/execenv_test.go @@ -220,11 +220,9 @@ func TestWriteContextFiles(t *testing.T) { dir := t.TempDir() ctx := TaskContextForEnv{ - IssueTitle: "Test Issue", - IssueDescription: "A detailed description.", - AcceptanceCriteria: []string{"Criterion A", "Criterion B"}, - ContextRefs: []string{"ref-1", "ref-2"}, - WorkspaceContext: "We use Go and TypeScript.", + IssueTitle: "Test Issue", + IssueDescription: "A detailed description.", + WorkspaceContext: "We use Go and TypeScript.", AgentSkills: []SkillContextForEnv{ { Name: "Go Conventions", @@ -250,11 +248,6 @@ func TestWriteContextFiles(t *testing.T) { "# Issue: Test Issue", "## Description", "A detailed description.", - "## Acceptance Criteria", - "- Criterion A", - "- Criterion B", - "## Context References", - "- ref-1", "## Workspace Context", "Go and TypeScript", "## Agent Skills", @@ -304,7 +297,7 @@ func TestWriteContextFilesOmitsEmpty(t *testing.T) { if !strings.Contains(s, "Minimal Issue") { t.Error("expected title to be present") } - for _, absent := range []string{"## Description", "## Acceptance Criteria", "## Context References", "## Workspace Context", "## Agent Skills"} { + for _, absent := range []string{"## Description", "## Workspace Context", "## Agent Skills"} { if strings.Contains(s, absent) { t.Errorf("expected %q to be omitted for empty content", absent) } diff --git a/server/internal/daemon/prompt.go b/server/internal/daemon/prompt.go index 381ee2e6..c151e6d7 100644 --- a/server/internal/daemon/prompt.go +++ b/server/internal/daemon/prompt.go @@ -25,13 +25,5 @@ func BuildPrompt(task Task) string { fmt.Fprintf(&b, "**Summary:** %s\n\n", desc) } - if len(task.Context.Issue.AcceptanceCriteria) > 0 { - b.WriteString("## Acceptance Criteria\n\n") - for _, item := range task.Context.Issue.AcceptanceCriteria { - fmt.Fprintf(&b, "- %s\n", item) - } - b.WriteString("\n") - } - return b.String() } diff --git a/server/internal/daemon/types.go b/server/internal/daemon/types.go index e36d581d..ae6fedf8 100644 --- a/server/internal/daemon/types.go +++ b/server/internal/daemon/types.go @@ -33,11 +33,9 @@ type TaskContext struct { // IssueContext holds issue details for task execution. type IssueContext struct { - ID string `json:"id"` - Title string `json:"title"` - Description string `json:"description"` - AcceptanceCriteria []string `json:"acceptance_criteria"` - ContextRefs []string `json:"context_refs"` + ID string `json:"id"` + Title string `json:"title"` + Description string `json:"description"` } // AgentContext holds agent details for task execution. diff --git a/server/internal/handler/agent.go b/server/internal/handler/agent.go index d098a5da..c3ea1357 100644 --- a/server/internal/handler/agent.go +++ b/server/internal/handler/agent.go @@ -322,8 +322,6 @@ func (h *Handler) createAgentInitIssue(ctx context.Context, agent db.Agent, crea AssigneeID: agent.ID, CreatorType: "member", CreatorID: creatorID, - AcceptanceCriteria: []byte("[]"), - ContextRefs: []byte("[]"), Position: 0, }) if err != nil { diff --git a/server/internal/handler/issue.go b/server/internal/handler/issue.go index 1225a83b..172fd8a9 100644 --- a/server/internal/handler/issue.go +++ b/server/internal/handler/issue.go @@ -29,8 +29,6 @@ type IssueResponse struct { CreatorType string `json:"creator_type"` CreatorID string `json:"creator_id"` ParentIssueID *string `json:"parent_issue_id"` - AcceptanceCriteria []any `json:"acceptance_criteria"` - ContextRefs []any `json:"context_refs"` Position float64 `json:"position"` DueDate *string `json:"due_date"` CreatedAt string `json:"created_at"` @@ -44,40 +42,22 @@ type agentTriggerSnapshot struct { } func issueToResponse(i db.Issue) IssueResponse { - var ac []any - if i.AcceptanceCriteria != nil { - json.Unmarshal(i.AcceptanceCriteria, &ac) - } - if ac == nil { - ac = []any{} - } - - var cr []any - if i.ContextRefs != nil { - json.Unmarshal(i.ContextRefs, &cr) - } - if cr == nil { - cr = []any{} - } - return IssueResponse{ - ID: uuidToString(i.ID), - WorkspaceID: uuidToString(i.WorkspaceID), - Title: i.Title, - Description: textToPtr(i.Description), - Status: i.Status, - Priority: i.Priority, - AssigneeType: textToPtr(i.AssigneeType), - AssigneeID: uuidToPtr(i.AssigneeID), - CreatorType: i.CreatorType, - CreatorID: uuidToString(i.CreatorID), - ParentIssueID: uuidToPtr(i.ParentIssueID), - AcceptanceCriteria: ac, - ContextRefs: cr, - Position: i.Position, - DueDate: timestampToPtr(i.DueDate), - CreatedAt: timestampToString(i.CreatedAt), - UpdatedAt: timestampToString(i.UpdatedAt), + ID: uuidToString(i.ID), + WorkspaceID: uuidToString(i.WorkspaceID), + Title: i.Title, + Description: textToPtr(i.Description), + Status: i.Status, + Priority: i.Priority, + AssigneeType: textToPtr(i.AssigneeType), + AssigneeID: uuidToPtr(i.AssigneeID), + CreatorType: i.CreatorType, + CreatorID: uuidToString(i.CreatorID), + ParentIssueID: uuidToPtr(i.ParentIssueID), + Position: i.Position, + DueDate: timestampToPtr(i.DueDate), + CreatedAt: timestampToString(i.CreatedAt), + UpdatedAt: timestampToString(i.UpdatedAt), } } @@ -157,8 +137,6 @@ type CreateIssueRequest struct { AssigneeType *string `json:"assignee_type"` AssigneeID *string `json:"assignee_id"` ParentIssueID *string `json:"parent_issue_id"` - AcceptanceCriteria []any `json:"acceptance_criteria"` - ContextRefs []any `json:"context_refs"` DueDate *string `json:"due_date"` } @@ -194,14 +172,6 @@ func (h *Handler) CreateIssue(w http.ResponseWriter, r *http.Request) { priority = "none" } - ac, _ := json.Marshal(req.AcceptanceCriteria) - if req.AcceptanceCriteria == nil { - ac = []byte("[]") - } - cr, _ := json.Marshal(req.ContextRefs) - if req.ContextRefs == nil { - cr = []byte("[]") - } var assigneeType pgtype.Text var assigneeID pgtype.UUID if req.AssigneeType != nil { @@ -237,8 +207,6 @@ func (h *Handler) CreateIssue(w http.ResponseWriter, r *http.Request) { CreatorType: "member", CreatorID: parseUUID(creatorID), ParentIssueID: parentIssueID, - AcceptanceCriteria: ac, - ContextRefs: cr, Position: 0, DueDate: dueDate, }) @@ -271,8 +239,6 @@ type UpdateIssueRequest struct { AssigneeID *string `json:"assignee_id"` Position *float64 `json:"position"` DueDate *string `json:"due_date"` - AcceptanceCriteria *[]any `json:"acceptance_criteria"` - ContextRefs *[]any `json:"context_refs"` } func (h *Handler) UpdateIssue(w http.ResponseWriter, r *http.Request) { @@ -325,15 +291,6 @@ func (h *Handler) UpdateIssue(w http.ResponseWriter, r *http.Request) { if req.Position != nil { params.Position = pgtype.Float8{Float64: *req.Position, Valid: true} } - if req.AcceptanceCriteria != nil { - ac, _ := json.Marshal(*req.AcceptanceCriteria) - params.AcceptanceCriteria = ac - } - if req.ContextRefs != nil { - cr, _ := json.Marshal(*req.ContextRefs) - params.ContextRefs = cr - } - // Nullable fields — only override when explicitly present in JSON if _, ok := rawFields["assignee_type"]; ok { if req.AssigneeType != nil { diff --git a/server/internal/service/task.go b/server/internal/service/task.go index da2a8332..e8489057 100644 --- a/server/internal/service/task.go +++ b/server/internal/service/task.go @@ -322,14 +322,6 @@ func (s *TaskService) loadAgentSkillsForSnapshot(ctx context.Context, agentID pg } func buildContextSnapshot(issue db.Issue, agent db.Agent, runtime db.AgentRuntime, workspaceContext string, skills []skillSnapshot) map[string]any { - var ac []string - if issue.AcceptanceCriteria != nil { - json.Unmarshal(issue.AcceptanceCriteria, &ac) - } - var cr []string - if issue.ContextRefs != nil { - json.Unmarshal(issue.ContextRefs, &cr) - } var tools any if agent.Tools != nil { json.Unmarshal(agent.Tools, &tools) @@ -341,11 +333,9 @@ func buildContextSnapshot(issue db.Issue, agent db.Agent, runtime db.AgentRuntim m := map[string]any{ "issue": map[string]any{ - "id": util.UUIDToString(issue.ID), - "title": issue.Title, - "description": issue.Description.String, - "acceptance_criteria": ac, - "context_refs": cr, + "id": util.UUIDToString(issue.ID), + "title": issue.Title, + "description": issue.Description.String, }, "agent": map[string]any{ "id": util.UUIDToString(agent.ID), @@ -505,40 +495,22 @@ func (s *TaskService) createInboxForIssueCreator(ctx context.Context, issue db.I } func issueToMap(issue db.Issue) map[string]any { - var ac []any - if issue.AcceptanceCriteria != nil { - json.Unmarshal(issue.AcceptanceCriteria, &ac) - } - if ac == nil { - ac = []any{} - } - - var cr []any - if issue.ContextRefs != nil { - json.Unmarshal(issue.ContextRefs, &cr) - } - if cr == nil { - cr = []any{} - } - return map[string]any{ - "id": util.UUIDToString(issue.ID), - "workspace_id": util.UUIDToString(issue.WorkspaceID), - "title": issue.Title, - "description": util.TextToPtr(issue.Description), - "status": issue.Status, - "priority": issue.Priority, - "assignee_type": util.TextToPtr(issue.AssigneeType), - "assignee_id": util.UUIDToPtr(issue.AssigneeID), - "creator_type": issue.CreatorType, - "creator_id": util.UUIDToString(issue.CreatorID), - "parent_issue_id": util.UUIDToPtr(issue.ParentIssueID), - "acceptance_criteria": ac, - "context_refs": cr, - "position": issue.Position, - "due_date": util.TimestampToPtr(issue.DueDate), - "created_at": util.TimestampToString(issue.CreatedAt), - "updated_at": util.TimestampToString(issue.UpdatedAt), + "id": util.UUIDToString(issue.ID), + "workspace_id": util.UUIDToString(issue.WorkspaceID), + "title": issue.Title, + "description": util.TextToPtr(issue.Description), + "status": issue.Status, + "priority": issue.Priority, + "assignee_type": util.TextToPtr(issue.AssigneeType), + "assignee_id": util.UUIDToPtr(issue.AssigneeID), + "creator_type": issue.CreatorType, + "creator_id": util.UUIDToString(issue.CreatorID), + "parent_issue_id": util.UUIDToPtr(issue.ParentIssueID), + "position": issue.Position, + "due_date": util.TimestampToPtr(issue.DueDate), + "created_at": util.TimestampToString(issue.CreatedAt), + "updated_at": util.TimestampToString(issue.UpdatedAt), } } diff --git a/server/pkg/db/generated/issue.sql.go b/server/pkg/db/generated/issue.sql.go index f94261c4..8279be45 100644 --- a/server/pkg/db/generated/issue.sql.go +++ b/server/pkg/db/generated/issue.sql.go @@ -15,28 +15,25 @@ const createIssue = `-- name: CreateIssue :one INSERT INTO issue ( workspace_id, title, description, status, priority, assignee_type, assignee_id, creator_type, creator_id, - parent_issue_id, acceptance_criteria, context_refs, - position, due_date + parent_issue_id, position, due_date ) VALUES ( - $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14 + $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12 ) RETURNING id, workspace_id, title, description, status, priority, assignee_type, assignee_id, creator_type, creator_id, parent_issue_id, acceptance_criteria, context_refs, position, due_date, created_at, updated_at ` type CreateIssueParams struct { - WorkspaceID pgtype.UUID `json:"workspace_id"` - Title string `json:"title"` - Description pgtype.Text `json:"description"` - Status string `json:"status"` - Priority string `json:"priority"` - AssigneeType pgtype.Text `json:"assignee_type"` - AssigneeID pgtype.UUID `json:"assignee_id"` - CreatorType string `json:"creator_type"` - CreatorID pgtype.UUID `json:"creator_id"` - ParentIssueID pgtype.UUID `json:"parent_issue_id"` - AcceptanceCriteria []byte `json:"acceptance_criteria"` - ContextRefs []byte `json:"context_refs"` - Position float64 `json:"position"` - DueDate pgtype.Timestamptz `json:"due_date"` + WorkspaceID pgtype.UUID `json:"workspace_id"` + Title string `json:"title"` + Description pgtype.Text `json:"description"` + Status string `json:"status"` + Priority string `json:"priority"` + AssigneeType pgtype.Text `json:"assignee_type"` + AssigneeID pgtype.UUID `json:"assignee_id"` + CreatorType string `json:"creator_type"` + CreatorID pgtype.UUID `json:"creator_id"` + ParentIssueID pgtype.UUID `json:"parent_issue_id"` + Position float64 `json:"position"` + DueDate pgtype.Timestamptz `json:"due_date"` } func (q *Queries) CreateIssue(ctx context.Context, arg CreateIssueParams) (Issue, error) { @@ -51,8 +48,6 @@ func (q *Queries) CreateIssue(ctx context.Context, arg CreateIssueParams) (Issue arg.CreatorType, arg.CreatorID, arg.ParentIssueID, - arg.AcceptanceCriteria, - arg.ContextRefs, arg.Position, arg.DueDate, ) @@ -192,25 +187,21 @@ UPDATE issue SET assignee_id = $7, position = COALESCE($8, position), due_date = $9, - acceptance_criteria = COALESCE($10, acceptance_criteria), - context_refs = COALESCE($11, context_refs), updated_at = now() WHERE id = $1 RETURNING id, workspace_id, title, description, status, priority, assignee_type, assignee_id, creator_type, creator_id, parent_issue_id, acceptance_criteria, context_refs, position, due_date, created_at, updated_at ` type UpdateIssueParams struct { - ID pgtype.UUID `json:"id"` - Title pgtype.Text `json:"title"` - Description pgtype.Text `json:"description"` - Status pgtype.Text `json:"status"` - Priority pgtype.Text `json:"priority"` - AssigneeType pgtype.Text `json:"assignee_type"` - AssigneeID pgtype.UUID `json:"assignee_id"` - Position pgtype.Float8 `json:"position"` - DueDate pgtype.Timestamptz `json:"due_date"` - AcceptanceCriteria []byte `json:"acceptance_criteria"` - ContextRefs []byte `json:"context_refs"` + ID pgtype.UUID `json:"id"` + Title pgtype.Text `json:"title"` + Description pgtype.Text `json:"description"` + Status pgtype.Text `json:"status"` + Priority pgtype.Text `json:"priority"` + AssigneeType pgtype.Text `json:"assignee_type"` + AssigneeID pgtype.UUID `json:"assignee_id"` + Position pgtype.Float8 `json:"position"` + DueDate pgtype.Timestamptz `json:"due_date"` } func (q *Queries) UpdateIssue(ctx context.Context, arg UpdateIssueParams) (Issue, error) { @@ -224,8 +215,6 @@ func (q *Queries) UpdateIssue(ctx context.Context, arg UpdateIssueParams) (Issue arg.AssigneeID, arg.Position, arg.DueDate, - arg.AcceptanceCriteria, - arg.ContextRefs, ) var i Issue err := row.Scan( diff --git a/server/pkg/db/queries/issue.sql b/server/pkg/db/queries/issue.sql index c4a93922..efabdc0d 100644 --- a/server/pkg/db/queries/issue.sql +++ b/server/pkg/db/queries/issue.sql @@ -15,10 +15,9 @@ WHERE id = $1; INSERT INTO issue ( workspace_id, title, description, status, priority, assignee_type, assignee_id, creator_type, creator_id, - parent_issue_id, acceptance_criteria, context_refs, - position, due_date + parent_issue_id, position, due_date ) VALUES ( - $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14 + $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12 ) RETURNING *; -- name: UpdateIssue :one @@ -31,8 +30,6 @@ UPDATE issue SET assignee_id = sqlc.narg('assignee_id'), position = COALESCE(sqlc.narg('position'), position), due_date = sqlc.narg('due_date'), - acceptance_criteria = COALESCE(sqlc.narg('acceptance_criteria'), acceptance_criteria), - context_refs = COALESCE(sqlc.narg('context_refs'), context_refs), updated_at = now() WHERE id = $1 RETURNING *; diff --git a/server/pkg/protocol/messages.go b/server/pkg/protocol/messages.go index adf91d3f..ce79ffa6 100644 --- a/server/pkg/protocol/messages.go +++ b/server/pkg/protocol/messages.go @@ -10,12 +10,10 @@ type Message struct { // TaskDispatchPayload is sent from server to daemon when a task is assigned. type TaskDispatchPayload struct { - TaskID string `json:"task_id"` - IssueID string `json:"issue_id"` - Title string `json:"title"` - Description string `json:"description"` - AcceptanceCriteria []string `json:"acceptance_criteria"` - ContextRefs []string `json:"context_refs"` + TaskID string `json:"task_id"` + IssueID string `json:"issue_id"` + Title string `json:"title"` + Description string `json:"description"` } // TaskProgressPayload is sent from daemon to server during task execution.