@brxce/mcp-server 1.0.3 → 1.0.4
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/http-server.d.ts +5 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +154 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -1
- package/dist/resources/workspace-members-resource.d.ts.map +1 -1
- package/dist/resources/workspace-members-resource.js +4 -2
- package/dist/resources/workspace-members-resource.js.map +1 -1
- package/dist/server.d.ts +24 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +212 -0
- package/dist/server.js.map +1 -0
- package/dist/services/api-client.d.ts +32 -1
- package/dist/services/api-client.d.ts.map +1 -1
- package/dist/services/api-client.js +140 -65
- package/dist/services/api-client.js.map +1 -1
- package/dist/tools/comment-tool.d.ts +4 -0
- package/dist/tools/comment-tool.d.ts.map +1 -0
- package/dist/tools/comment-tool.js +139 -0
- package/dist/tools/comment-tool.js.map +1 -0
- package/dist/tools/criteria-tool.d.ts +4 -0
- package/dist/tools/criteria-tool.d.ts.map +1 -0
- package/dist/tools/criteria-tool.js +194 -0
- package/dist/tools/criteria-tool.js.map +1 -0
- package/dist/tools/invitation-tool.d.ts +11 -0
- package/dist/tools/invitation-tool.d.ts.map +1 -0
- package/dist/tools/invitation-tool.js +245 -0
- package/dist/tools/invitation-tool.js.map +1 -0
- package/dist/tools/meeting-agenda-tool.d.ts.map +1 -1
- package/dist/tools/meeting-agenda-tool.js +9 -86
- package/dist/tools/meeting-agenda-tool.js.map +1 -1
- package/dist/tools/meeting-create-tool.d.ts.map +1 -1
- package/dist/tools/meeting-create-tool.js +3 -91
- package/dist/tools/meeting-create-tool.js.map +1 -1
- package/dist/tools/meeting-decisions-tool.d.ts.map +1 -1
- package/dist/tools/meeting-decisions-tool.js +8 -83
- package/dist/tools/meeting-decisions-tool.js.map +1 -1
- package/dist/tools/meeting-delete-tool.d.ts +7 -0
- package/dist/tools/meeting-delete-tool.d.ts.map +1 -0
- package/dist/tools/meeting-delete-tool.js +57 -0
- package/dist/tools/meeting-delete-tool.js.map +1 -0
- package/dist/tools/meeting-list-tool.d.ts.map +1 -1
- package/dist/tools/meeting-list-tool.js +6 -93
- package/dist/tools/meeting-list-tool.js.map +1 -1
- package/dist/tools/meeting-notes-tool.d.ts.map +1 -1
- package/dist/tools/meeting-notes-tool.js +8 -69
- package/dist/tools/meeting-notes-tool.js.map +1 -1
- package/dist/tools/meeting-update-tool.d.ts.map +1 -1
- package/dist/tools/meeting-update-tool.js +4 -132
- package/dist/tools/meeting-update-tool.js.map +1 -1
- package/dist/tools/notification-tool.d.ts +11 -0
- package/dist/tools/notification-tool.d.ts.map +1 -0
- package/dist/tools/notification-tool.js +143 -0
- package/dist/tools/notification-tool.js.map +1 -0
- package/dist/tools/tag-category-tool.d.ts.map +1 -1
- package/dist/tools/tag-category-tool.js +9 -63
- package/dist/tools/tag-category-tool.js.map +1 -1
- package/dist/tools/tag-search-tool.d.ts.map +1 -1
- package/dist/tools/tag-search-tool.js +11 -87
- package/dist/tools/tag-search-tool.js.map +1 -1
- package/dist/tools/tag-tool.d.ts.map +1 -1
- package/dist/tools/tag-tool.js +13 -101
- package/dist/tools/tag-tool.js.map +1 -1
- package/dist/tools/worknode-archive-tool.d.ts.map +1 -1
- package/dist/tools/worknode-archive-tool.js +4 -44
- package/dist/tools/worknode-archive-tool.js.map +1 -1
- package/dist/tools/worknode-batch-tool.d.ts +4 -0
- package/dist/tools/worknode-batch-tool.d.ts.map +1 -0
- package/dist/tools/worknode-batch-tool.js +109 -0
- package/dist/tools/worknode-batch-tool.js.map +1 -0
- package/dist/tools/worknode-by-member-tool.d.ts +4 -0
- package/dist/tools/worknode-by-member-tool.d.ts.map +1 -0
- package/dist/tools/worknode-by-member-tool.js +168 -0
- package/dist/tools/worknode-by-member-tool.js.map +1 -0
- package/dist/tools/worknode-complete-tool.d.ts +4 -0
- package/dist/tools/worknode-complete-tool.d.ts.map +1 -0
- package/dist/tools/worknode-complete-tool.js +83 -0
- package/dist/tools/worknode-complete-tool.js.map +1 -0
- package/dist/tools/worknode-create-tool.d.ts.map +1 -1
- package/dist/tools/worknode-create-tool.js +22 -113
- package/dist/tools/worknode-create-tool.js.map +1 -1
- package/dist/tools/worknode-delete-tool.d.ts +4 -0
- package/dist/tools/worknode-delete-tool.d.ts.map +1 -0
- package/dist/tools/worknode-delete-tool.js +51 -0
- package/dist/tools/worknode-delete-tool.js.map +1 -0
- package/dist/tools/worknode-history-tool.d.ts +4 -0
- package/dist/tools/worknode-history-tool.d.ts.map +1 -0
- package/dist/tools/worknode-history-tool.js +101 -0
- package/dist/tools/worknode-history-tool.js.map +1 -0
- package/dist/tools/worknode-move-tool.d.ts +4 -0
- package/dist/tools/worknode-move-tool.d.ts.map +1 -0
- package/dist/tools/worknode-move-tool.js +78 -0
- package/dist/tools/worknode-move-tool.js.map +1 -0
- package/dist/tools/worknode-plan-organize-tool.d.ts.map +1 -1
- package/dist/tools/worknode-plan-organize-tool.js +8 -117
- package/dist/tools/worknode-plan-organize-tool.js.map +1 -1
- package/dist/tools/worknode-read-tool.d.ts.map +1 -1
- package/dist/tools/worknode-read-tool.js +7 -110
- package/dist/tools/worknode-read-tool.js.map +1 -1
- package/dist/tools/worknode-subtree-tool.d.ts.map +1 -1
- package/dist/tools/worknode-subtree-tool.js +5 -65
- package/dist/tools/worknode-subtree-tool.js.map +1 -1
- package/dist/tools/worknode-tag-tool.d.ts.map +1 -1
- package/dist/tools/worknode-tag-tool.js +11 -99
- package/dist/tools/worknode-tag-tool.js.map +1 -1
- package/dist/tools/worknode-update-tool.d.ts.map +1 -1
- package/dist/tools/worknode-update-tool.js +22 -110
- package/dist/tools/worknode-update-tool.js.map +1 -1
- package/dist/tools/workspace-ascii-export-tool.d.ts +4 -0
- package/dist/tools/workspace-ascii-export-tool.d.ts.map +1 -0
- package/dist/tools/workspace-ascii-export-tool.js +96 -0
- package/dist/tools/workspace-ascii-export-tool.js.map +1 -0
- package/dist/tools/workspace-inbox-tool.d.ts.map +1 -1
- package/dist/tools/workspace-inbox-tool.js +4 -72
- package/dist/tools/workspace-inbox-tool.js.map +1 -1
- package/dist/tools/workspace-list-tool.d.ts.map +1 -1
- package/dist/tools/workspace-list-tool.js +3 -49
- package/dist/tools/workspace-list-tool.js.map +1 -1
- package/dist/tools/workspace-member-tool.d.ts +7 -0
- package/dist/tools/workspace-member-tool.d.ts.map +1 -0
- package/dist/tools/workspace-member-tool.js +172 -0
- package/dist/tools/workspace-member-tool.js.map +1 -0
- package/dist/tools/workspace-members-list-tool.d.ts.map +1 -1
- package/dist/tools/workspace-members-list-tool.js +5 -84
- package/dist/tools/workspace-members-list-tool.js.map +1 -1
- package/dist/tools/workspace-statistics-tool.d.ts.map +1 -1
- package/dist/tools/workspace-statistics-tool.js +3 -169
- package/dist/tools/workspace-statistics-tool.js.map +1 -1
- package/dist/tools/workspace-tree-tool.d.ts.map +1 -1
- package/dist/tools/workspace-tree-tool.js +10 -178
- package/dist/tools/workspace-tree-tool.js.map +1 -1
- package/package.json +12 -11
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerWorknodeByMemberTool(server, apiClient) {
|
|
3
|
+
/**
|
|
4
|
+
* Get WorkNodes assigned to a specific member
|
|
5
|
+
*/
|
|
6
|
+
server.registerTool('brxce_worknodes_by_member', {
|
|
7
|
+
description: `Get WorkNodes assigned to a specific member.
|
|
8
|
+
|
|
9
|
+
Params: workspaceId, memberId (required), status (optional), limit (default: 50)
|
|
10
|
+
Returns: nodes sorted by priority then updatedAt. Dates in UTC.`,
|
|
11
|
+
inputSchema: {
|
|
12
|
+
workspaceId: z.string().uuid().describe('Workspace ID'),
|
|
13
|
+
memberId: z.string().uuid().describe('Member user ID'),
|
|
14
|
+
status: z.enum(['backlog', 'not_started', 'in_progress', 'completed', 'pause', 'archived']).optional()
|
|
15
|
+
.describe('Filter by status'),
|
|
16
|
+
limit: z.number().optional().default(50).describe('Maximum results (default: 50, max: 200)')
|
|
17
|
+
}
|
|
18
|
+
}, async (args) => {
|
|
19
|
+
try {
|
|
20
|
+
const { workspaceId, memberId, status, limit = 50 } = args;
|
|
21
|
+
const queryParams = new URLSearchParams({
|
|
22
|
+
memberId,
|
|
23
|
+
limit: String(limit)
|
|
24
|
+
});
|
|
25
|
+
if (status) {
|
|
26
|
+
queryParams.append('status', status);
|
|
27
|
+
}
|
|
28
|
+
const response = await apiClient.get(`/mcp/workspaces/${workspaceId}/worknodes/by-member?${queryParams.toString()}`);
|
|
29
|
+
if (!response.success) {
|
|
30
|
+
return {
|
|
31
|
+
content: [
|
|
32
|
+
{
|
|
33
|
+
type: 'text',
|
|
34
|
+
text: `Failed to fetch WorkNodes by member: ${response.message || 'Unknown error'}`,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
isError: true,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const { nodes, total, hasMore } = response.data;
|
|
41
|
+
let resultText = `## WorkNodes Assigned to Member\n\n`;
|
|
42
|
+
// Search criteria
|
|
43
|
+
resultText += `👤 **Member ID:** ${memberId}\n`;
|
|
44
|
+
resultText += `📁 **Workspace ID:** ${workspaceId}\n`;
|
|
45
|
+
if (status)
|
|
46
|
+
resultText += `🏷️ **Status Filter:** ${status}\n`;
|
|
47
|
+
resultText += `\n**Found:** ${total} WorkNode(s) (showing ${nodes.length})\n\n`;
|
|
48
|
+
if (nodes.length === 0) {
|
|
49
|
+
resultText += `No WorkNodes found assigned to this member.\n\n`;
|
|
50
|
+
resultText += `💡 **Tip**: Try:\n`;
|
|
51
|
+
resultText += `- Removing status filter\n`;
|
|
52
|
+
resultText += `- Checking if the member ID is correct\n`;
|
|
53
|
+
resultText += `- Verifying the member is part of this workspace\n`;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const byStatus = nodes.reduce((acc, node) => {
|
|
57
|
+
if (!acc[node.status])
|
|
58
|
+
acc[node.status] = [];
|
|
59
|
+
acc[node.status].push(node);
|
|
60
|
+
return acc;
|
|
61
|
+
}, {});
|
|
62
|
+
const statusOrder = ['in_progress', 'not_started', 'backlog', 'completed', 'pause', 'archived'];
|
|
63
|
+
statusOrder.forEach((statusKey) => {
|
|
64
|
+
const statusNodes = byStatus[statusKey];
|
|
65
|
+
if (!statusNodes || statusNodes.length === 0)
|
|
66
|
+
return;
|
|
67
|
+
const statusEmojiMap = {
|
|
68
|
+
backlog: '📥',
|
|
69
|
+
not_started: '⭕',
|
|
70
|
+
in_progress: '🔄',
|
|
71
|
+
completed: '✅',
|
|
72
|
+
pause: '⏸️',
|
|
73
|
+
archived: '📦'
|
|
74
|
+
};
|
|
75
|
+
const statusEmoji = statusEmojiMap[statusKey] || '❓';
|
|
76
|
+
resultText += `### ${statusEmoji} ${statusKey.toUpperCase()} (${statusNodes.length})\n\n`;
|
|
77
|
+
statusNodes.forEach((node) => {
|
|
78
|
+
const priorityEmojiMap = {
|
|
79
|
+
critical: '🔥',
|
|
80
|
+
urgent: '⚡',
|
|
81
|
+
high: '🔴',
|
|
82
|
+
medium: '🟡',
|
|
83
|
+
low: '🟢'
|
|
84
|
+
};
|
|
85
|
+
const priorityEmoji = priorityEmojiMap[node.priority] || '';
|
|
86
|
+
const typeEmojiMap = {
|
|
87
|
+
goal: '🎯',
|
|
88
|
+
project: '📁',
|
|
89
|
+
subproject: '📂',
|
|
90
|
+
task: '✅',
|
|
91
|
+
subtask: '☑️'
|
|
92
|
+
};
|
|
93
|
+
const typeEmoji = typeEmojiMap[node.nodeType] || '📄';
|
|
94
|
+
resultText += `**${node.title}** (ID: ${node.id})\n`;
|
|
95
|
+
resultText += ` ${typeEmoji} ${node.nodeType}`;
|
|
96
|
+
if (priorityEmoji)
|
|
97
|
+
resultText += ` | ${priorityEmoji} ${node.priority}`;
|
|
98
|
+
if (node.displayId !== null)
|
|
99
|
+
resultText += ` | #${node.displayId}`;
|
|
100
|
+
if (node.parentNodeId)
|
|
101
|
+
resultText += ` | Parent: ${node.parentNodeId}`;
|
|
102
|
+
if (node.dueDate) {
|
|
103
|
+
resultText += ` | 📅 Due: ${node.dueDate}`;
|
|
104
|
+
}
|
|
105
|
+
if (node.tags && Array.isArray(node.tags) && node.tags.length > 0) {
|
|
106
|
+
resultText += ` | 🏷️ ${node.tags.map((t) => t.name).join(', ')}`;
|
|
107
|
+
}
|
|
108
|
+
resultText += `\n`;
|
|
109
|
+
if (node.description) {
|
|
110
|
+
const truncatedDesc = node.description.length > 100
|
|
111
|
+
? node.description.substring(0, 100) + '...'
|
|
112
|
+
: node.description;
|
|
113
|
+
resultText += ` 📝 ${truncatedDesc}\n`;
|
|
114
|
+
}
|
|
115
|
+
resultText += `\n`;
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
// Pagination info
|
|
119
|
+
if (hasMore) {
|
|
120
|
+
const remaining = total - nodes.length;
|
|
121
|
+
resultText += `\n---\n\n`;
|
|
122
|
+
resultText += `📄 **Pagination**: Showing ${nodes.length} of ${total}\n`;
|
|
123
|
+
resultText += `💡 **Tip**: ${remaining} more WorkNode(s) available. Increase \`limit\` to see more (max: 200)\n`;
|
|
124
|
+
}
|
|
125
|
+
// Summary by priority
|
|
126
|
+
const priorityCounts = nodes.reduce((acc, node) => {
|
|
127
|
+
acc[node.priority] = (acc[node.priority] || 0) + 1;
|
|
128
|
+
return acc;
|
|
129
|
+
}, {});
|
|
130
|
+
resultText += `\n### 📊 Priority Summary\n`;
|
|
131
|
+
const priorityOrder = ['critical', 'urgent', 'high', 'medium', 'low'];
|
|
132
|
+
priorityOrder.forEach(priority => {
|
|
133
|
+
const count = priorityCounts[priority] || 0;
|
|
134
|
+
if (count > 0) {
|
|
135
|
+
const emoji = {
|
|
136
|
+
critical: '🔥',
|
|
137
|
+
urgent: '⚡',
|
|
138
|
+
high: '🔴',
|
|
139
|
+
medium: '🟡',
|
|
140
|
+
low: '🟢'
|
|
141
|
+
}[priority] || '';
|
|
142
|
+
resultText += `- ${emoji} **${priority}**: ${count}\n`;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
content: [
|
|
148
|
+
{
|
|
149
|
+
type: 'text',
|
|
150
|
+
text: resultText,
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
return {
|
|
157
|
+
content: [
|
|
158
|
+
{
|
|
159
|
+
type: 'text',
|
|
160
|
+
text: `Error fetching WorkNodes by member: ${error.message || 'Unknown error'}`,
|
|
161
|
+
},
|
|
162
|
+
],
|
|
163
|
+
isError: true,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=worknode-by-member-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worknode-by-member-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-by-member-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { ApiClient } from '../services/api-client.js';
|
|
3
|
+
export declare function registerWorknodeCompleteTool(server: McpServer, apiClient: ApiClient): void;
|
|
4
|
+
//# sourceMappingURL=worknode-complete-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worknode-complete-tool.d.ts","sourceRoot":"","sources":["../../src/tools/worknode-complete-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAStD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA2GnF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const CompleteWorknodeSchema = z.object({
|
|
3
|
+
nodeId: z.string().uuid().describe('WorkNode UUID to complete'),
|
|
4
|
+
cascade: z.boolean().optional().default(false).describe('If true, complete all descendants. Default: false (warns about incomplete children)'),
|
|
5
|
+
});
|
|
6
|
+
export function registerWorknodeCompleteTool(server, apiClient) {
|
|
7
|
+
server.registerTool('brxce_complete_worknode', {
|
|
8
|
+
description: `Complete a WorkNode (status→completed).
|
|
9
|
+
|
|
10
|
+
Params: nodeId (required), cascade (complete all descendants, default: false)
|
|
11
|
+
Without cascade: warns about incomplete children. With cascade: completes entire subtree.`,
|
|
12
|
+
inputSchema: {
|
|
13
|
+
nodeId: z.string().uuid().describe('WorkNode UUID to complete'),
|
|
14
|
+
cascade: z.boolean().optional().describe('Complete all descendants'),
|
|
15
|
+
},
|
|
16
|
+
}, async (args) => {
|
|
17
|
+
const request = args;
|
|
18
|
+
try {
|
|
19
|
+
const response = await apiClient.post('/mcp/worknodes/complete', request);
|
|
20
|
+
if (!response.success) {
|
|
21
|
+
return {
|
|
22
|
+
content: [
|
|
23
|
+
{
|
|
24
|
+
type: 'text',
|
|
25
|
+
text: `Failed to complete WorkNode: ${response.message || 'Unknown error'}`,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const { data } = response;
|
|
31
|
+
let resultText = '## WorkNode Completion Result\n\n';
|
|
32
|
+
resultText += `✅ **Completed**: ${data.completedCount} WorkNode(s)\n\n`;
|
|
33
|
+
resultText += `### Node: ${data.node.title}\n`;
|
|
34
|
+
resultText += `- **ID**: ${data.node.id}\n`;
|
|
35
|
+
resultText += `- **Status**: ${data.node.status}\n`;
|
|
36
|
+
if (data.node.completedAt) {
|
|
37
|
+
resultText += `- **Completed At**: ${data.node.completedAt}\n`;
|
|
38
|
+
}
|
|
39
|
+
resultText += '\n';
|
|
40
|
+
if (data.completedCount > 1) {
|
|
41
|
+
resultText += `### Cascade Details\n`;
|
|
42
|
+
resultText += `- Completed ${data.completedCount} nodes in total\n`;
|
|
43
|
+
resultText += `- Completed IDs: ${data.completedNodeIds.length} nodes\n\n`;
|
|
44
|
+
}
|
|
45
|
+
if (data.warnings && data.warnings.length > 0) {
|
|
46
|
+
resultText += `### ⚠️ Warnings\n`;
|
|
47
|
+
data.warnings.forEach((warning) => {
|
|
48
|
+
resultText += `- ${warning}\n`;
|
|
49
|
+
});
|
|
50
|
+
resultText += '\n';
|
|
51
|
+
}
|
|
52
|
+
if (data.incompleteChildren && data.incompleteChildren.length > 0) {
|
|
53
|
+
resultText += `### Incomplete Children\n`;
|
|
54
|
+
resultText += `The following children are still incomplete:\n\n`;
|
|
55
|
+
data.incompleteChildren.forEach((child) => {
|
|
56
|
+
resultText += `- **${child.title}** (${child.status})\n`;
|
|
57
|
+
resultText += ` - ID: ${child.id}\n`;
|
|
58
|
+
});
|
|
59
|
+
resultText += '\n';
|
|
60
|
+
resultText += `💡 **Tip**: Use \`cascade: true\` to complete all children automatically.\n`;
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
content: [
|
|
64
|
+
{
|
|
65
|
+
type: 'text',
|
|
66
|
+
text: resultText,
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return {
|
|
73
|
+
content: [
|
|
74
|
+
{
|
|
75
|
+
type: 'text',
|
|
76
|
+
text: `Error completing WorkNode: ${error.message || 'Unknown error'}`,
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=worknode-complete-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worknode-complete-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-complete-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worknode-create-tool.d.ts","sourceRoot":"","sources":["../../src/tools/worknode-create-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"worknode-create-tool.d.ts","sourceRoot":"","sources":["../../src/tools/worknode-create-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAkFtD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA0KjF"}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
const WorknodeTypeSchema = z.enum(['goal', 'project', 'subproject', 'task', 'subtask']);
|
|
3
|
-
const WorkNodeStatusSchema = z.enum(['backlog', 'not_started', 'in_progress', '
|
|
3
|
+
const WorkNodeStatusSchema = z.enum(['backlog', 'not_started', 'in_progress', 'completed', 'pause', 'archived']);
|
|
4
4
|
const WorkNodePrioritySchema = z.enum(['critical', 'urgent', 'high', 'medium', 'low']);
|
|
5
|
+
// ISO 8601 date-time format validation
|
|
6
|
+
// Valid: "2025-01-31T23:59:59Z", "2025-01-31T23:59:59.999Z", "2025-01-31T23:59:59+09:00"
|
|
7
|
+
// Invalid: "2025-01-31" (date-only), "January 31, 2025"
|
|
8
|
+
const ISO_DATE_TIME_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-]\d{2}:\d{2})$/;
|
|
9
|
+
const isoDateTimeSchema = z
|
|
10
|
+
.string()
|
|
11
|
+
.refine((val) => ISO_DATE_TIME_REGEX.test(val), { message: 'Must be ISO 8601 date-time format (e.g., 2025-01-31T23:59:59Z)' })
|
|
12
|
+
.optional();
|
|
5
13
|
const CreateWorknodeSchema = z.object({
|
|
6
14
|
title: z.string().min(1).describe('WorkNode title (required, min 1 char). Example: "Backend API Development"'),
|
|
7
15
|
description: z.string().optional().describe('Detailed description. Example: "Implement REST API endpoints for user authentication"'),
|
|
@@ -22,11 +30,15 @@ const CreateWorknodeSchema = z.object({
|
|
|
22
30
|
'Required only for root-level items. Get from user://me resource. ' +
|
|
23
31
|
'Example: "138"'),
|
|
24
32
|
status: WorkNodeStatusSchema.optional().describe('Initial status (default: backlog). Options: ' +
|
|
25
|
-
'backlog (inbox/quick capture), not_started, in_progress,
|
|
33
|
+
'backlog (inbox/quick capture), not_started, in_progress, completed, pause, archived. ' +
|
|
26
34
|
'Omit for default backlog behavior.'),
|
|
27
35
|
priority: WorkNodePrioritySchema.optional().describe('Priority level (default: medium). Options: low | medium | high | urgent | critical'),
|
|
28
|
-
startDate:
|
|
29
|
-
|
|
36
|
+
startDate: isoDateTimeSchema.describe('Start date in ISO 8601 date-time format. ' +
|
|
37
|
+
'MUST include time and timezone. Example: "2025-01-20T09:00:00Z" (UTC). ' +
|
|
38
|
+
'Invalid: "2025-01-20" (date-only format will be rejected)'),
|
|
39
|
+
dueDate: isoDateTimeSchema.describe('Due date in ISO 8601 date-time format. ' +
|
|
40
|
+
'MUST include time and timezone. Example: "2025-01-31T23:59:59Z" (UTC). ' +
|
|
41
|
+
'Invalid: "2025-01-31" (date-only format will be rejected)'),
|
|
30
42
|
tags: z.array(z.string()).optional().describe('Array of tag names. Example: ["backend", "urgent", "api"]'),
|
|
31
43
|
assignee: z.array(z.string()).optional().describe('Array of user UUIDs. Example: ["user-uuid-1", "user-uuid-2"]'),
|
|
32
44
|
});
|
|
@@ -39,117 +51,14 @@ const BatchCreateRequestSchema = z.object({
|
|
|
39
51
|
});
|
|
40
52
|
export function registerWorknodeCreateTool(server, apiClient) {
|
|
41
53
|
server.registerTool('brxce_create_worknodes', {
|
|
42
|
-
description: `Create WorkNodes
|
|
54
|
+
description: `Create WorkNodes. Use preview:true first.
|
|
43
55
|
|
|
44
|
-
|
|
56
|
+
Required: title, nodeType (goal|project|subproject|task|subtask)
|
|
57
|
+
Conditional: parentNodeId (for task/subtask), workspaceId (for root items)
|
|
58
|
+
Optional: status, priority, startDate, dueDate, tags, assignee
|
|
45
59
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
- **nodeType** (enum): goal | project | subproject | task | subtask
|
|
49
|
-
|
|
50
|
-
### Conditional Fields (one required)
|
|
51
|
-
- **parentNodeId** (uuid): Parent node ID for structured work (task/subtask require this)
|
|
52
|
-
- **workspaceId** (uuid): Workspace ID for root items (auto-inherited from parent)
|
|
53
|
-
|
|
54
|
-
### Optional Fields
|
|
55
|
-
- **description** (string): Detailed description
|
|
56
|
-
- **status** (enum): backlog (default) | not_started | in_progress | in_review | completed | cancelled
|
|
57
|
-
- **priority** (enum): low | medium (default) | high | urgent | critical
|
|
58
|
-
- **startDate** (ISO 8601): Start date, e.g., "2025-01-20T09:00:00Z"
|
|
59
|
-
- **dueDate** (ISO 8601): Due date, e.g., "2025-01-31T23:59:59Z"
|
|
60
|
-
- **tags** (string[]): Tag names, e.g., ["backend", "urgent"]
|
|
61
|
-
- **assignee** (string[]): User IDs, e.g., ["user-uuid-1", "user-uuid-2"]
|
|
62
|
-
|
|
63
|
-
### Special Fields
|
|
64
|
-
- **preview** (boolean): Always use \`true\` first to validate before creating
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## ⚡ Quick Start (3-Step Workflow)
|
|
69
|
-
|
|
70
|
-
**Step 1: Find parent** (if creating under existing structure)
|
|
71
|
-
\`\`\`typescript
|
|
72
|
-
brxce_workspace_overview({ workspaceId: 138 })
|
|
73
|
-
\`\`\`
|
|
74
|
-
|
|
75
|
-
**Step 2: Preview**
|
|
76
|
-
\`\`\`json
|
|
77
|
-
{
|
|
78
|
-
"worknodes": [{
|
|
79
|
-
"title": "Backend API Development",
|
|
80
|
-
"nodeType": "task",
|
|
81
|
-
"parentNodeId": "parent-uuid-here"
|
|
82
|
-
}],
|
|
83
|
-
"preview": true
|
|
84
|
-
}
|
|
85
|
-
\`\`\`
|
|
86
|
-
|
|
87
|
-
**Step 3: Create** (after confirming preview)
|
|
88
|
-
\`\`\`json
|
|
89
|
-
{ "worknodes": [...], "preview": false }
|
|
90
|
-
\`\`\`
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## ❌ Common Mistakes
|
|
95
|
-
|
|
96
|
-
1. **Guessing IDs**: ❌ Never guess \`parentNodeId\` or \`workspaceId\`
|
|
97
|
-
→ ✅ Always use \`brxce_workspace_overview\` or \`brxce_read_worknodes\` to find IDs
|
|
98
|
-
|
|
99
|
-
2. **Skipping preview**: ❌ Creating directly with \`preview: false\`
|
|
100
|
-
→ ✅ Always preview first with \`preview: true\`
|
|
101
|
-
|
|
102
|
-
3. **Missing nodeType**: ❌ \`{ title: "Task" }\`
|
|
103
|
-
→ ✅ \`{ title: "Task", nodeType: "task" }\`
|
|
104
|
-
|
|
105
|
-
4. **Invalid hierarchy**: ❌ Creating subtask without parent
|
|
106
|
-
→ ✅ Check hierarchy rules below
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## 🏗️ Hierarchy Rules
|
|
111
|
-
|
|
112
|
-
\`\`\`
|
|
113
|
-
Goal (root-level, no parent needed)
|
|
114
|
-
└─ Project (can be root-level or under goal)
|
|
115
|
-
└─ SubProject (requires project/subproject parent)
|
|
116
|
-
└─ Task (requires project/subproject parent)
|
|
117
|
-
└─ SubTask (requires task parent)
|
|
118
|
-
\`\`\`
|
|
119
|
-
|
|
120
|
-
**Rules:**
|
|
121
|
-
- Goal/Project: \`parentNodeId\` optional (can be root-level)
|
|
122
|
-
- SubProject/Task/SubTask: \`parentNodeId\` required
|
|
123
|
-
- Workspace: Auto-inherited from parent, or specify for root items
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## 🔗 Advanced Topics
|
|
128
|
-
|
|
129
|
-
**Finding Parents**: Always search workspace first using \`brxce_workspace_overview\`
|
|
130
|
-
- NEVER guess or hardcode parent IDs
|
|
131
|
-
- Present suggestions to user before creating
|
|
132
|
-
- Only create in inbox if NO suitable parent exists
|
|
133
|
-
|
|
134
|
-
**Two Creation Modes**:
|
|
135
|
-
- Inbox Mode: Quick capture with \`status: "backlog"\`, no parent
|
|
136
|
-
- Direct Mode: Structured work with parent, ready to work
|
|
137
|
-
|
|
138
|
-
**Batch Creation**: Create multiple nodes at once in \`worknodes\` array
|
|
139
|
-
|
|
140
|
-
**Validation**: Preview shows warnings, errors, inferred values, and hierarchy validation
|
|
141
|
-
|
|
142
|
-
**Timezone**: Provide dates in ISO 8601 with timezone (e.g., "2025-01-20T09:00:00Z")
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## 💡 Tips
|
|
147
|
-
|
|
148
|
-
- **Default behavior**: If you omit \`status\`, it defaults to \`"backlog"\` (inbox mode)
|
|
149
|
-
- **Safety first**: Preview validates hierarchy, permissions, and shows impact
|
|
150
|
-
- **Workspace inheritance**: Children automatically inherit workspace from parent
|
|
151
|
-
- **User timezone**: Convert local times to UTC in ISO 8601 format (e.g., Korea UTC+9)
|
|
152
|
-
- **Proactive search**: Search for appropriate parent even when user doesn't mention one`,
|
|
60
|
+
Hierarchy: goal > project > subproject > task > subtask
|
|
61
|
+
Dates: ISO 8601 with timezone (e.g., 2025-01-20T09:00:00Z)`,
|
|
153
62
|
inputSchema: {
|
|
154
63
|
worknodes: z.array(CreateWorknodeSchema).min(1).describe('Array of WorkNodes to create'),
|
|
155
64
|
preview: z.boolean().optional().describe('If true, validate but do not create (dry run for user confirmation)'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worknode-create-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-create-tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACxF,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"worknode-create-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-create-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { ApiClient } from '../services/api-client.js';
|
|
3
|
+
export declare function registerWorknodeDeleteTool(server: McpServer, apiClient: ApiClient): void;
|
|
4
|
+
//# sourceMappingURL=worknode-delete-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worknode-delete-tool.d.ts","sourceRoot":"","sources":["../../src/tools/worknode-delete-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA8DjF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerWorknodeDeleteTool(server, apiClient) {
|
|
3
|
+
server.registerTool('brxce_delete_worknode', {
|
|
4
|
+
description: `Soft delete WorkNode (sets deletedAt, recoverable by admin).
|
|
5
|
+
|
|
6
|
+
Params: nodeId (required)`,
|
|
7
|
+
inputSchema: {
|
|
8
|
+
nodeId: z.string().uuid().describe('WorkNode UUID to delete'),
|
|
9
|
+
},
|
|
10
|
+
}, async (args) => {
|
|
11
|
+
const { nodeId } = args;
|
|
12
|
+
try {
|
|
13
|
+
const response = await apiClient.delete(`/mcp/worknodes/${nodeId}`);
|
|
14
|
+
if (!response.success) {
|
|
15
|
+
return {
|
|
16
|
+
content: [
|
|
17
|
+
{
|
|
18
|
+
type: 'text',
|
|
19
|
+
text: `Failed to delete WorkNode: ${response.message || 'Unknown error'}`,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const { data } = response;
|
|
25
|
+
let resultText = '## WorkNode Deletion Result\n\n';
|
|
26
|
+
resultText += `✅ **Successfully deleted WorkNode**\n\n`;
|
|
27
|
+
resultText += `- **Node ID**: ${data.nodeId}\n`;
|
|
28
|
+
resultText += `- **Deleted At**: ${data.deletedAt}\n\n`;
|
|
29
|
+
resultText += `💡 **Note**: This is a soft delete. The node can potentially be restored by an admin.\n`;
|
|
30
|
+
return {
|
|
31
|
+
content: [
|
|
32
|
+
{
|
|
33
|
+
type: 'text',
|
|
34
|
+
text: resultText,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
return {
|
|
41
|
+
content: [
|
|
42
|
+
{
|
|
43
|
+
type: 'text',
|
|
44
|
+
text: `Error deleting WorkNode: ${error.message || 'Unknown error'}`,
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=worknode-delete-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worknode-delete-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-delete-tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,SAAoB;IAChF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EAAE;;0BAEO;QACpB,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SAC9D;KACF,EACD,KAAK,EAAE,IAAyB,EAAE,EAAE;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,IAA0B,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAOpC,kBAAkB,MAAM,EAAE,CAAC,CAAC;YAE/B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,8BAA8B,QAAQ,CAAC,OAAO,IAAI,eAAe,EAAE;yBAC1E;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;YAE1B,IAAI,UAAU,GAAG,iCAAiC,CAAC;YACnD,UAAU,IAAI,yCAAyC,CAAC;YACxD,UAAU,IAAI,kBAAkB,IAAI,CAAC,MAAM,IAAI,CAAC;YAChD,UAAU,IAAI,qBAAqB,IAAI,CAAC,SAAS,MAAM,CAAC;YACxD,UAAU,IAAI,yFAAyF,CAAC;YAExG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU;qBACjB;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4BAA4B,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE;qBACrE;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { ApiClient } from '../services/api-client.js';
|
|
3
|
+
export declare function registerWorknodeHistoryTool(server: McpServer, apiClient: ApiClient): void;
|
|
4
|
+
//# sourceMappingURL=worknode-history-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worknode-history-tool.d.ts","sourceRoot":"","sources":["../../src/tools/worknode-history-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAyIlF"}
|