fix: Add 'pending' status to task status enum

Resolves MCP error when trying to set status="pending" on tasks.

Changes:
- Migration 019: Add 'pending' to tasks.status CHECK constraint
- Update task_update tool schema to accept 'pending' status
- Update task_list tool schema to filter by 'pending' status

Status meanings:
- pending: Created, awaiting approval or dependencies
- open: Approved and ready to start
- in_progress: Currently being worked on
- testing: Implementation complete, being tested
- blocked: Stuck waiting for something
- completed: Done

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Christian Gick
2026-01-20 18:04:05 +02:00
parent b145e1effd
commit 3da714e8bf
2 changed files with 23 additions and 2 deletions

View File

@@ -0,0 +1,21 @@
-- Add "pending" as valid task status
--
-- Migration: 019_add_pending_status
-- Purpose: Add "pending" status to support tasks awaiting approval/dependencies
--
-- Status meanings:
-- - pending: Created, awaiting approval or dependencies
-- - open: Approved and ready to start
-- - in_progress: Currently being worked on
-- - testing: Implementation complete, being tested
-- - blocked: Stuck waiting for something
-- - completed: Done
--
-- Related: MCP error when trying to set status="pending"
-- Drop existing constraint
ALTER TABLE tasks DROP CONSTRAINT IF EXISTS tasks_status_check;
-- Add new constraint with pending status
ALTER TABLE tasks ADD CONSTRAINT tasks_status_check
CHECK (status IN ('pending', 'open', 'in_progress', 'testing', 'blocked', 'completed'));

View File

@@ -24,7 +24,7 @@ export const toolDefinitions = [
type: 'object', type: 'object',
properties: { properties: {
project: { type: 'string', description: 'Filter by project key' }, project: { type: 'string', description: 'Filter by project key' },
status: { type: 'string', enum: ['open', 'in_progress', 'testing', 'blocked', 'completed'], description: 'Filter by status' }, status: { type: 'string', enum: ['pending', 'open', 'in_progress', 'testing', 'blocked', 'completed'], description: 'Filter by status' },
type: { type: 'string', enum: ['task', 'bug', 'feature', 'debt', 'investigation'], description: 'Filter by type' }, type: { type: 'string', enum: ['task', 'bug', 'feature', 'debt', 'investigation'], description: 'Filter by type' },
priority: { type: 'string', enum: ['P0', 'P1', 'P2', 'P3'], description: 'Filter by priority' }, priority: { type: 'string', enum: ['P0', 'P1', 'P2', 'P3'], description: 'Filter by priority' },
limit: { type: 'number', description: 'Max results (default: 20)' }, limit: { type: 'number', description: 'Max results (default: 20)' },
@@ -60,7 +60,7 @@ export const toolDefinitions = [
type: 'object', type: 'object',
properties: { properties: {
id: { type: 'string', description: 'Task ID to update' }, id: { type: 'string', description: 'Task ID to update' },
status: { type: 'string', enum: ['open', 'in_progress', 'testing', 'blocked', 'completed'], description: 'New status' }, status: { type: 'string', enum: ['pending', 'open', 'in_progress', 'testing', 'blocked', 'completed'], description: 'New status' },
priority: { type: 'string', enum: ['P0', 'P1', 'P2', 'P3'], description: 'New priority' }, priority: { type: 'string', enum: ['P0', 'P1', 'P2', 'P3'], description: 'New priority' },
type: { type: 'string', enum: ['task', 'bug', 'feature', 'debt', 'investigation'], description: 'New type' }, type: { type: 'string', enum: ['task', 'bug', 'feature', 'debt', 'investigation'], description: 'New type' },
title: { type: 'string', description: 'New title' }, title: { type: 'string', description: 'New title' },