@damper/mcp 0.10.4 → 0.10.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/index.js +28 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -106,6 +106,7 @@ const FeedbackSummarySchema = z.object({
|
|
|
106
106
|
id: z.string(),
|
|
107
107
|
title: z.string(),
|
|
108
108
|
type: z.string(),
|
|
109
|
+
status: z.string(),
|
|
109
110
|
voterCount: z.number(),
|
|
110
111
|
isPublic: z.boolean(),
|
|
111
112
|
linkedTaskId: z.string().nullish(),
|
|
@@ -486,10 +487,12 @@ server.registerTool('add_note', {
|
|
|
486
487
|
'**When to use:**\n' +
|
|
487
488
|
'- Decisions: "Decision: Using X because Y"\n' +
|
|
488
489
|
'- Blockers: "Blocked: X needs Y before we can proceed"\n\n' +
|
|
489
|
-
'**Do NOT use for:** Session start/end ceremony, commit logging (use `add_commit`), or restating what code changes do
|
|
490
|
+
'**Do NOT use for:** Session start/end ceremony, commit logging (use `add_commit`), or restating what code changes do.\n\n' +
|
|
491
|
+
'**Formatting:** Notes are rendered as markdown. Use **bold** for key terms, `code` for technical names, and bullet lists for multiple points. ' +
|
|
492
|
+
'Start with a short bold label like **Decision:** or **Blocked:**.',
|
|
490
493
|
inputSchema: z.object({
|
|
491
494
|
taskId: z.string(),
|
|
492
|
-
note: z.string(),
|
|
495
|
+
note: z.string().describe('Markdown-formatted note. Use **bold** labels, `code` for technical terms, and bullet lists for structure.'),
|
|
493
496
|
}),
|
|
494
497
|
outputSchema: z.object({
|
|
495
498
|
taskId: z.string(),
|
|
@@ -850,7 +853,7 @@ This project uses Damper MCP for task tracking. **You MUST follow this workflow.
|
|
|
850
853
|
### While Working
|
|
851
854
|
- **Do NOT commit or complete tasks without explicit user confirmation** - Always ask the user before running \`git commit\` or calling \`complete_task\`
|
|
852
855
|
- \`add_commit\` after each commit with hash and message
|
|
853
|
-
- \`add_note\` for decisions
|
|
856
|
+
- \`add_note\` for decisions (use markdown: **bold** labels, \`code\`, bullet lists)
|
|
854
857
|
- \`update_subtask\` to mark subtask progress
|
|
855
858
|
- **Follow patterns from project context** - Don't reinvent; use existing conventions
|
|
856
859
|
- When you need architecture context mid-task, use \`get_section_block_content\` to load specific blocks rather than full sections
|
|
@@ -1354,10 +1357,15 @@ server.registerTool('list_feedback', {
|
|
|
1354
1357
|
const lines = data.feedback.map((f) => {
|
|
1355
1358
|
const link = f.linkedTaskId ? ` → ${f.linkedTaskId}` : '';
|
|
1356
1359
|
const hidden = !f.isPublic ? ' [hidden]' : '';
|
|
1357
|
-
return `• ${f.id}: ${f.title} [${f.type}] (${f.voterCount} votes)${hidden}${link}`;
|
|
1360
|
+
return `• ${f.id}: ${f.title} [${f.type}] (${f.status}) (${f.voterCount} votes)${hidden}${link}`;
|
|
1358
1361
|
});
|
|
1362
|
+
const newCount = data.feedback.filter((f) => f.status === 'new').length;
|
|
1363
|
+
const nudge = newCount > 0
|
|
1364
|
+
? `\n\n💡 ${newCount} feedback item${newCount > 1 ? 's are' : ' is'} still "new". ` +
|
|
1365
|
+
'Use `update_feedback` to triage (e.g., set to "under_review" or "planned").'
|
|
1366
|
+
: '';
|
|
1359
1367
|
return {
|
|
1360
|
-
content: [{ type: 'text', text: `Feedback:\n${lines.join('\n')}` }],
|
|
1368
|
+
content: [{ type: 'text', text: `Feedback:\n${lines.join('\n')}${nudge}` }],
|
|
1361
1369
|
structuredContent: { feedback: data.feedback },
|
|
1362
1370
|
};
|
|
1363
1371
|
});
|
|
@@ -1384,6 +1392,9 @@ server.registerTool('get_feedback', {
|
|
|
1384
1392
|
f.linkedTaskId ? `Linked: ${f.linkedTaskId}` : '',
|
|
1385
1393
|
`\n${f.description}`,
|
|
1386
1394
|
].filter(Boolean);
|
|
1395
|
+
if (f.aiSummary) {
|
|
1396
|
+
parts.push(`\n## AI Summary\n${f.aiSummary}`);
|
|
1397
|
+
}
|
|
1387
1398
|
if (f.metadata && typeof f.metadata === 'object' && Object.keys(f.metadata).length > 0) {
|
|
1388
1399
|
const meta = f.metadata;
|
|
1389
1400
|
parts.push(`\n## Debug Info`);
|
|
@@ -1423,6 +1434,10 @@ server.registerTool('get_feedback', {
|
|
|
1423
1434
|
if (f.comments.length > 3)
|
|
1424
1435
|
parts.push(`... and ${f.comments.length - 3} more`);
|
|
1425
1436
|
}
|
|
1437
|
+
if (f.status === 'new') {
|
|
1438
|
+
parts.push('\n---\n💡 This feedback is still "new". Use `update_feedback` to triage it ' +
|
|
1439
|
+
'(e.g., "under_review", "planned", or "in_progress").');
|
|
1440
|
+
}
|
|
1426
1441
|
return {
|
|
1427
1442
|
content: [{ type: 'text', text: parts.join('\n') }],
|
|
1428
1443
|
structuredContent: f,
|
|
@@ -1834,7 +1849,14 @@ server.registerTool('link_feedback_to_task', {
|
|
|
1834
1849
|
};
|
|
1835
1850
|
}
|
|
1836
1851
|
return {
|
|
1837
|
-
content: [
|
|
1852
|
+
content: [
|
|
1853
|
+
{
|
|
1854
|
+
type: 'text',
|
|
1855
|
+
text: `🔗 Linked ${linkedCount} feedback to task: ${result.feedbackTitles.join(', ')}\n\n` +
|
|
1856
|
+
'💡 Consider updating the linked feedback status with `update_feedback` ' +
|
|
1857
|
+
'(e.g., to "planned" or "in_progress").',
|
|
1858
|
+
},
|
|
1859
|
+
],
|
|
1838
1860
|
structuredContent: result,
|
|
1839
1861
|
};
|
|
1840
1862
|
});
|