@damper/mcp 0.8.4 → 0.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/formatters.js +2 -2
- package/dist/index.js +7 -6
- package/package.json +1 -1
package/dist/formatters.js
CHANGED
|
@@ -95,7 +95,7 @@ export function formatSelfAssessmentActions(assessment) {
|
|
|
95
95
|
* Format complete_task response
|
|
96
96
|
*/
|
|
97
97
|
export function formatCompleteTaskResponse(result, assessment) {
|
|
98
|
-
const lines = [`✅
|
|
98
|
+
const lines = [`✅ Task ${result.id} moved to review`];
|
|
99
99
|
// Self-assessment follow-up actions (shown first if provided)
|
|
100
100
|
if (assessment) {
|
|
101
101
|
const actions = formatSelfAssessmentActions(assessment);
|
|
@@ -131,7 +131,7 @@ export function formatAbandonTaskResponse(result, hasSummary, assessment) {
|
|
|
131
131
|
if (!hasSummary) {
|
|
132
132
|
lines.push('\n⚠️ Tip: Include a summary next time for better handoff.');
|
|
133
133
|
}
|
|
134
|
-
lines.push('\n💡 Task returned to "planned". Notes preserved for next agent.');
|
|
134
|
+
lines.push('\n💡 Task returned to "planned" (from in_progress or in_review). Notes preserved for next agent.');
|
|
135
135
|
// Self-assessment follow-up actions
|
|
136
136
|
if (assessment) {
|
|
137
137
|
const actions = formatSelfAssessmentActions(assessment);
|
package/dist/index.js
CHANGED
|
@@ -123,7 +123,7 @@ server.registerTool('list_tasks', {
|
|
|
123
123
|
'If total > returned tasks, paginate with offset (e.g. offset=50 for page 2).\n\n' +
|
|
124
124
|
'**Recommended:** Call `get_project_context` before starting work to understand codebase patterns.',
|
|
125
125
|
inputSchema: z.object({
|
|
126
|
-
status: z.enum(['planned', 'in_progress', 'done', 'all']).optional(),
|
|
126
|
+
status: z.enum(['planned', 'in_progress', 'in_review', 'done', 'all']).optional(),
|
|
127
127
|
type: z.enum(['bug', 'feature', 'improvement', 'task']).optional().describe('Filter by task type'),
|
|
128
128
|
quarter: z.string().optional().describe('Filter by quarter (e.g., "Q1 2025") or "none" for unscheduled'),
|
|
129
129
|
sort: z.enum(['importance', 'newest', 'votes']).optional().describe('Sort order: importance (priority+votes, default), newest, or votes'),
|
|
@@ -359,7 +359,7 @@ server.registerTool('create_task', {
|
|
|
359
359
|
description: z.string().optional().describe('Task description (shown on public roadmap). Write for end users: 1-3 sentences on what changes and why it matters. ' +
|
|
360
360
|
'No code references, file paths, or jargon.'),
|
|
361
361
|
type: z.enum(['bug', 'feature', 'improvement', 'task']).optional().describe('Task type (default: feature)'),
|
|
362
|
-
status: z.enum(['planned', 'in_progress', 'done']).optional(),
|
|
362
|
+
status: z.enum(['planned', 'in_progress', 'in_review', 'done']).optional(),
|
|
363
363
|
priority: z.enum(['high', 'medium', 'low']).optional().describe('Task priority'),
|
|
364
364
|
implementationPlan: z.string().optional().describe('Implementation plan (markdown, internal only - never shown publicly)'),
|
|
365
365
|
isPublic: z.boolean().optional().describe('Whether task is visible on public roadmap (default: true)'),
|
|
@@ -608,7 +608,7 @@ const DocumentationSchema = z.object({
|
|
|
608
608
|
// Tool: Complete task
|
|
609
609
|
server.registerTool('complete_task', {
|
|
610
610
|
title: 'Complete Task',
|
|
611
|
-
description: 'Mark task
|
|
611
|
+
description: 'Mark task as ready for review (in_review). A human will verify and move it to done.\n\n' +
|
|
612
612
|
'**Before calling:**\n' +
|
|
613
613
|
'1. Push all commits\n' +
|
|
614
614
|
'2. Check if project context docs need updating\n\n' +
|
|
@@ -633,6 +633,7 @@ server.registerTool('complete_task', {
|
|
|
633
633
|
item: z.string().describe('Checklist item text from start_task'),
|
|
634
634
|
evidence: z.string().describe('Concrete proof of verification (e.g., "bun test: 47 passed, 0 failed")'),
|
|
635
635
|
})).optional().describe('Completion checklist confirmations — echo back each item from the checklist shown in start_task'),
|
|
636
|
+
skipReview: z.boolean().optional().describe('Skip human review and mark task as done immediately (default: false, task goes to in_review)'),
|
|
636
637
|
}),
|
|
637
638
|
outputSchema: z.object({
|
|
638
639
|
id: z.string(),
|
|
@@ -645,9 +646,9 @@ server.registerTool('complete_task', {
|
|
|
645
646
|
idempotentHint: true,
|
|
646
647
|
openWorldHint: false,
|
|
647
648
|
},
|
|
648
|
-
}, async ({ taskId, summary, selfAssessment, commits, confirmations }) => {
|
|
649
|
+
}, async ({ taskId, summary, selfAssessment, commits, confirmations, skipReview }) => {
|
|
649
650
|
try {
|
|
650
|
-
const result = await api('POST', `/api/agent/tasks/${taskId}/complete`, { summary, commits, confirmations });
|
|
651
|
+
const result = await api('POST', `/api/agent/tasks/${taskId}/complete`, { summary, commits, confirmations, skipReview });
|
|
651
652
|
// Log self-assessment as a structured note if provided
|
|
652
653
|
if (selfAssessment) {
|
|
653
654
|
const assessmentLines = ['Self-Assessment:'];
|
|
@@ -713,7 +714,7 @@ server.registerTool('complete_task', {
|
|
|
713
714
|
// Tool: Abandon task
|
|
714
715
|
server.registerTool('abandon_task', {
|
|
715
716
|
title: 'Abandon Task',
|
|
716
|
-
description: 'Release lock and return task to planned status.
|
|
717
|
+
description: 'Release lock and return task to planned status. Works for in_progress and in_review tasks.\n\n' +
|
|
717
718
|
'**Before calling:**\n' +
|
|
718
719
|
'1. Push any WIP commits\n\n' +
|
|
719
720
|
'**Summary parameter:** What was done, what remains, blockers. Helps the next agent.\n\n' +
|