@damper/mcp 0.8.5 → 0.8.7

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.
@@ -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 lines = [`✅ Task ${result.id} moved to review`];
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);
package/dist/index.js CHANGED
@@ -110,6 +110,7 @@ const FeedbackDetailSchema = z.object({
110
110
  type: z.string(),
111
111
  status: z.string(),
112
112
  voteScore: z.number(),
113
+ metadata: z.unknown().optional(),
113
114
  linkedTaskId: z.string().nullish(),
114
115
  voters: z.array(z.object({ email: z.string(), plan: z.string() })),
115
116
  comments: z.array(z.object({ author: z.string(), body: z.string() })),
@@ -608,7 +609,8 @@ const DocumentationSchema = z.object({
608
609
  // Tool: Complete task
609
610
  server.registerTool('complete_task', {
610
611
  title: 'Complete Task',
611
- description: 'Mark task as ready for review (in_review). A human will verify and move it to done.\n\n' +
612
+ description: 'Mark task as ready for review (in_review). A human will verify and move it to done. ' +
613
+ 'Pass `skipReview: true` to mark as done immediately (use when the human explicitly asks).\n\n' +
612
614
  '**Before calling:**\n' +
613
615
  '1. Push all commits\n' +
614
616
  '2. Check if project context docs need updating\n\n' +
@@ -1363,6 +1365,33 @@ server.registerTool('get_feedback', {
1363
1365
  f.linkedTaskId ? `Linked: ${f.linkedTaskId}` : '',
1364
1366
  `\n${f.description}`,
1365
1367
  ].filter(Boolean);
1368
+ if (f.metadata && typeof f.metadata === 'object' && Object.keys(f.metadata).length > 0) {
1369
+ const meta = f.metadata;
1370
+ parts.push(`\n## Debug Info`);
1371
+ if (meta.url)
1372
+ parts.push(`URL: ${meta.url}`);
1373
+ if (meta.userAgent)
1374
+ parts.push(`User Agent: ${meta.userAgent}`);
1375
+ if (meta.viewport)
1376
+ parts.push(`Viewport: ${JSON.stringify(meta.viewport)}`);
1377
+ if (meta.screen)
1378
+ parts.push(`Screen: ${JSON.stringify(meta.screen)}`);
1379
+ if (meta.language)
1380
+ parts.push(`Language: ${meta.language}`);
1381
+ if (meta.referrer)
1382
+ parts.push(`Referrer: ${meta.referrer}`);
1383
+ if (meta.timeOnPage)
1384
+ parts.push(`Time on page: ${meta.timeOnPage}s`);
1385
+ if (meta.debug) {
1386
+ const debug = meta.debug;
1387
+ if (Array.isArray(debug.errors) && debug.errors.length)
1388
+ parts.push(`\n### Errors\n${debug.errors.map((e) => `- ${typeof e === 'string' ? e : JSON.stringify(e)}`).join('\n')}`);
1389
+ if (Array.isArray(debug.networkFailures) && debug.networkFailures.length)
1390
+ parts.push(`\n### Network Failures\n${debug.networkFailures.map((n) => `- ${typeof n === 'string' ? n : JSON.stringify(n)}`).join('\n')}`);
1391
+ if (Array.isArray(debug.breadcrumbs) && debug.breadcrumbs.length)
1392
+ parts.push(`\n### Breadcrumbs\n${debug.breadcrumbs.map((b) => `- ${typeof b === 'string' ? b : JSON.stringify(b)}`).join('\n')}`);
1393
+ }
1394
+ }
1366
1395
  if (f.voters.length) {
1367
1396
  parts.push(`\n## Voters (${f.voters.length})`);
1368
1397
  f.voters.slice(0, 5).forEach((v) => parts.push(`- ${v.email} (${v.plan})`));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@damper/mcp",
3
- "version": "0.8.5",
3
+ "version": "0.8.7",
4
4
  "description": "MCP server for Damper task management",
5
5
  "author": "Damper <hello@usedamper.com>",
6
6
  "repository": {