feat: Add 'testing' status to task workflow

Workflow: open → in_progress → testing → completed

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Christian Gick
2026-01-09 00:13:31 +02:00
parent f193581805
commit 3fc8f2d5e0
2 changed files with 53 additions and 3 deletions

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', 'blocked', 'completed'], description: 'Filter by status' }, status: { type: 'string', enum: ['open', 'in_progress', 'testing', 'blocked', 'completed'], description: 'Filter by status' },
type: { type: 'string', enum: ['task', 'bug', 'feature', 'debt'], description: 'Filter by type' }, type: { type: 'string', enum: ['task', 'bug', 'feature', 'debt'], 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', 'blocked', 'completed'], description: 'New status' }, status: { type: 'string', enum: ['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'], description: 'New type' }, type: { type: 'string', enum: ['task', 'bug', 'feature', 'debt'], description: 'New type' },
title: { type: 'string', description: 'New title' }, title: { type: 'string', description: 'New title' },
@@ -135,4 +135,54 @@ export const toolDefinitions = [
required: ['item_id', 'checked'], required: ['item_id', 'checked'],
}, },
}, },
// Epic Tools
{
name: 'epic_add',
description: 'Create a new epic (session-scoped work bundle) with auto-generated ID',
inputSchema: {
type: 'object',
properties: {
title: { type: 'string', description: 'Epic title (required)' },
project: { type: 'string', description: 'Project key (e.g., VPN, ST). Auto-detected if not provided.' },
description: { type: 'string', description: 'Optional description of the epic scope' },
},
required: ['title'],
},
},
{
name: 'epic_list',
description: 'List epics with task counts and progress',
inputSchema: {
type: 'object',
properties: {
project: { type: 'string', description: 'Filter by project key' },
status: { type: 'string', enum: ['open', 'in_progress', 'completed'], description: 'Filter by status' },
limit: { type: 'number', description: 'Max results (default: 20)' },
},
},
},
{
name: 'epic_show',
description: 'Show epic details with all assigned tasks',
inputSchema: {
type: 'object',
properties: {
id: { type: 'string', description: 'Epic ID (e.g., VPN-E1, ST-E3)' },
},
required: ['id'],
},
},
{
name: 'epic_assign',
description: 'Assign a task to an epic',
inputSchema: {
type: 'object',
properties: {
task_id: { type: 'string', description: 'Task ID to assign' },
epic_id: { type: 'string', description: 'Epic ID to assign to' },
},
required: ['task_id', 'epic_id'],
},
},
]; ];

View File

@@ -6,7 +6,7 @@ export interface Task {
title: string; title: string;
description?: string; description?: string;
type: 'task' | 'bug' | 'feature' | 'debt'; type: 'task' | 'bug' | 'feature' | 'debt';
status: 'open' | 'in_progress' | 'blocked' | 'completed'; status: 'open' | 'in_progress' | 'testing' | 'blocked' | 'completed';
priority: 'P0' | 'P1' | 'P2' | 'P3'; priority: 'P0' | 'P1' | 'P2' | 'P3';
version_id?: string; version_id?: string;
epic_id?: string; epic_id?: string;