@damper/mcp 0.8.4 → 0.8.6
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 +5 -2
- package/dist/index.js +8 -6
- package/package.json +1 -1
package/dist/formatters.js
CHANGED
|
@@ -95,7 +95,10 @@ export function formatSelfAssessmentActions(assessment) {
|
|
|
95
95
|
* Format complete_task response
|
|
96
96
|
*/
|
|
97
97
|
export function formatCompleteTaskResponse(result, assessment) {
|
|
98
|
-
const
|
|
98
|
+
const statusMessage = result.status === 'done'
|
|
99
|
+
? `✅ Task ${result.id} marked as done`
|
|
100
|
+
: `✅ Task ${result.id} moved to review`;
|
|
101
|
+
const lines = [statusMessage];
|
|
99
102
|
// Self-assessment follow-up actions (shown first if provided)
|
|
100
103
|
if (assessment) {
|
|
101
104
|
const actions = formatSelfAssessmentActions(assessment);
|
|
@@ -131,7 +134,7 @@ export function formatAbandonTaskResponse(result, hasSummary, assessment) {
|
|
|
131
134
|
if (!hasSummary) {
|
|
132
135
|
lines.push('\n⚠️ Tip: Include a summary next time for better handoff.');
|
|
133
136
|
}
|
|
134
|
-
lines.push('\n💡 Task returned to "planned". Notes preserved for next agent.');
|
|
137
|
+
lines.push('\n💡 Task returned to "planned" (from in_progress or in_review). Notes preserved for next agent.');
|
|
135
138
|
// Self-assessment follow-up actions
|
|
136
139
|
if (assessment) {
|
|
137
140
|
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,8 @@ 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. ' +
|
|
612
|
+
'Pass `skipReview: true` to mark as done immediately (use when the human explicitly asks).\n\n' +
|
|
612
613
|
'**Before calling:**\n' +
|
|
613
614
|
'1. Push all commits\n' +
|
|
614
615
|
'2. Check if project context docs need updating\n\n' +
|
|
@@ -633,6 +634,7 @@ server.registerTool('complete_task', {
|
|
|
633
634
|
item: z.string().describe('Checklist item text from start_task'),
|
|
634
635
|
evidence: z.string().describe('Concrete proof of verification (e.g., "bun test: 47 passed, 0 failed")'),
|
|
635
636
|
})).optional().describe('Completion checklist confirmations — echo back each item from the checklist shown in start_task'),
|
|
637
|
+
skipReview: z.boolean().optional().describe('Skip human review and mark task as done immediately (default: false, task goes to in_review)'),
|
|
636
638
|
}),
|
|
637
639
|
outputSchema: z.object({
|
|
638
640
|
id: z.string(),
|
|
@@ -645,9 +647,9 @@ server.registerTool('complete_task', {
|
|
|
645
647
|
idempotentHint: true,
|
|
646
648
|
openWorldHint: false,
|
|
647
649
|
},
|
|
648
|
-
}, async ({ taskId, summary, selfAssessment, commits, confirmations }) => {
|
|
650
|
+
}, async ({ taskId, summary, selfAssessment, commits, confirmations, skipReview }) => {
|
|
649
651
|
try {
|
|
650
|
-
const result = await api('POST', `/api/agent/tasks/${taskId}/complete`, { summary, commits, confirmations });
|
|
652
|
+
const result = await api('POST', `/api/agent/tasks/${taskId}/complete`, { summary, commits, confirmations, skipReview });
|
|
651
653
|
// Log self-assessment as a structured note if provided
|
|
652
654
|
if (selfAssessment) {
|
|
653
655
|
const assessmentLines = ['Self-Assessment:'];
|
|
@@ -713,7 +715,7 @@ server.registerTool('complete_task', {
|
|
|
713
715
|
// Tool: Abandon task
|
|
714
716
|
server.registerTool('abandon_task', {
|
|
715
717
|
title: 'Abandon Task',
|
|
716
|
-
description: 'Release lock and return task to planned status.
|
|
718
|
+
description: 'Release lock and return task to planned status. Works for in_progress and in_review tasks.\n\n' +
|
|
717
719
|
'**Before calling:**\n' +
|
|
718
720
|
'1. Push any WIP commits\n\n' +
|
|
719
721
|
'**Summary parameter:** What was done, what remains, blockers. Helps the next agent.\n\n' +
|