diff --git a/src/tools/get-claude-context.ts b/src/tools/get-claude-context.ts index 11a8055..355f939 100644 --- a/src/tools/get-claude-context.ts +++ b/src/tools/get-claude-context.ts @@ -58,6 +58,10 @@ export function registerGetClaudeContextTool(server: McpServer) { where: { sprint_id: activeSprint.id, status: { in: ['OPEN', 'IN_SPRINT'] }, + OR: [ + { tasks: { none: {} } }, + { tasks: { some: { status: { not: 'DONE' } } } }, + ], }, orderBy: [{ priority: 'asc' }, { sort_order: 'asc' }], select: { diff --git a/src/tools/update-task-status.ts b/src/tools/update-task-status.ts index 68f482c..d3756ce 100644 --- a/src/tools/update-task-status.ts +++ b/src/tools/update-task-status.ts @@ -1,10 +1,10 @@ import { z } from 'zod' import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js' -import { prisma } from '../prisma.js' import { requireWriteAccess } from '../auth.js' import { userCanAccessTask } from '../access.js' import { toolError, toolJson, withToolErrors } from '../errors.js' import { TASK_STATUS_API_VALUES, taskStatusFromApi, taskStatusToApi } from '../status.js' +import { updateTaskStatusWithStoryPromotion } from '../lib/tasks-status-update.js' const inputSchema = z.object({ task_id: z.string().min(1), @@ -31,15 +31,15 @@ export function registerUpdateTaskStatusTool(server: McpServer) { if (!(await userCanAccessTask(task_id, auth.userId))) { return toolError(`Task ${task_id} not found or not accessible`) } - const task = await prisma.task.update({ - where: { id: task_id }, - data: { status: dbStatus }, - select: { id: true, status: true, implementation_plan: true }, - }) + const { task, storyStatusChange } = await updateTaskStatusWithStoryPromotion( + task_id, + dbStatus, + ) return toolJson({ id: task.id, status: taskStatusToApi(task.status), implementation_plan: task.implementation_plan, + story_status_change: storyStatusChange, }) }), )