@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.
Files changed (134) hide show
  1. package/dist/http-server.d.ts +5 -0
  2. package/dist/http-server.d.ts.map +1 -0
  3. package/dist/http-server.js +154 -0
  4. package/dist/http-server.js.map +1 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +34 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/resources/workspace-members-resource.d.ts.map +1 -1
  9. package/dist/resources/workspace-members-resource.js +4 -2
  10. package/dist/resources/workspace-members-resource.js.map +1 -1
  11. package/dist/server.d.ts +24 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/server.js +212 -0
  14. package/dist/server.js.map +1 -0
  15. package/dist/services/api-client.d.ts +32 -1
  16. package/dist/services/api-client.d.ts.map +1 -1
  17. package/dist/services/api-client.js +140 -65
  18. package/dist/services/api-client.js.map +1 -1
  19. package/dist/tools/comment-tool.d.ts +4 -0
  20. package/dist/tools/comment-tool.d.ts.map +1 -0
  21. package/dist/tools/comment-tool.js +139 -0
  22. package/dist/tools/comment-tool.js.map +1 -0
  23. package/dist/tools/criteria-tool.d.ts +4 -0
  24. package/dist/tools/criteria-tool.d.ts.map +1 -0
  25. package/dist/tools/criteria-tool.js +194 -0
  26. package/dist/tools/criteria-tool.js.map +1 -0
  27. package/dist/tools/invitation-tool.d.ts +11 -0
  28. package/dist/tools/invitation-tool.d.ts.map +1 -0
  29. package/dist/tools/invitation-tool.js +245 -0
  30. package/dist/tools/invitation-tool.js.map +1 -0
  31. package/dist/tools/meeting-agenda-tool.d.ts.map +1 -1
  32. package/dist/tools/meeting-agenda-tool.js +9 -86
  33. package/dist/tools/meeting-agenda-tool.js.map +1 -1
  34. package/dist/tools/meeting-create-tool.d.ts.map +1 -1
  35. package/dist/tools/meeting-create-tool.js +3 -91
  36. package/dist/tools/meeting-create-tool.js.map +1 -1
  37. package/dist/tools/meeting-decisions-tool.d.ts.map +1 -1
  38. package/dist/tools/meeting-decisions-tool.js +8 -83
  39. package/dist/tools/meeting-decisions-tool.js.map +1 -1
  40. package/dist/tools/meeting-delete-tool.d.ts +7 -0
  41. package/dist/tools/meeting-delete-tool.d.ts.map +1 -0
  42. package/dist/tools/meeting-delete-tool.js +57 -0
  43. package/dist/tools/meeting-delete-tool.js.map +1 -0
  44. package/dist/tools/meeting-list-tool.d.ts.map +1 -1
  45. package/dist/tools/meeting-list-tool.js +6 -93
  46. package/dist/tools/meeting-list-tool.js.map +1 -1
  47. package/dist/tools/meeting-notes-tool.d.ts.map +1 -1
  48. package/dist/tools/meeting-notes-tool.js +8 -69
  49. package/dist/tools/meeting-notes-tool.js.map +1 -1
  50. package/dist/tools/meeting-update-tool.d.ts.map +1 -1
  51. package/dist/tools/meeting-update-tool.js +4 -132
  52. package/dist/tools/meeting-update-tool.js.map +1 -1
  53. package/dist/tools/notification-tool.d.ts +11 -0
  54. package/dist/tools/notification-tool.d.ts.map +1 -0
  55. package/dist/tools/notification-tool.js +143 -0
  56. package/dist/tools/notification-tool.js.map +1 -0
  57. package/dist/tools/tag-category-tool.d.ts.map +1 -1
  58. package/dist/tools/tag-category-tool.js +9 -63
  59. package/dist/tools/tag-category-tool.js.map +1 -1
  60. package/dist/tools/tag-search-tool.d.ts.map +1 -1
  61. package/dist/tools/tag-search-tool.js +11 -87
  62. package/dist/tools/tag-search-tool.js.map +1 -1
  63. package/dist/tools/tag-tool.d.ts.map +1 -1
  64. package/dist/tools/tag-tool.js +13 -101
  65. package/dist/tools/tag-tool.js.map +1 -1
  66. package/dist/tools/worknode-archive-tool.d.ts.map +1 -1
  67. package/dist/tools/worknode-archive-tool.js +4 -44
  68. package/dist/tools/worknode-archive-tool.js.map +1 -1
  69. package/dist/tools/worknode-batch-tool.d.ts +4 -0
  70. package/dist/tools/worknode-batch-tool.d.ts.map +1 -0
  71. package/dist/tools/worknode-batch-tool.js +109 -0
  72. package/dist/tools/worknode-batch-tool.js.map +1 -0
  73. package/dist/tools/worknode-by-member-tool.d.ts +4 -0
  74. package/dist/tools/worknode-by-member-tool.d.ts.map +1 -0
  75. package/dist/tools/worknode-by-member-tool.js +168 -0
  76. package/dist/tools/worknode-by-member-tool.js.map +1 -0
  77. package/dist/tools/worknode-complete-tool.d.ts +4 -0
  78. package/dist/tools/worknode-complete-tool.d.ts.map +1 -0
  79. package/dist/tools/worknode-complete-tool.js +83 -0
  80. package/dist/tools/worknode-complete-tool.js.map +1 -0
  81. package/dist/tools/worknode-create-tool.d.ts.map +1 -1
  82. package/dist/tools/worknode-create-tool.js +22 -113
  83. package/dist/tools/worknode-create-tool.js.map +1 -1
  84. package/dist/tools/worknode-delete-tool.d.ts +4 -0
  85. package/dist/tools/worknode-delete-tool.d.ts.map +1 -0
  86. package/dist/tools/worknode-delete-tool.js +51 -0
  87. package/dist/tools/worknode-delete-tool.js.map +1 -0
  88. package/dist/tools/worknode-history-tool.d.ts +4 -0
  89. package/dist/tools/worknode-history-tool.d.ts.map +1 -0
  90. package/dist/tools/worknode-history-tool.js +101 -0
  91. package/dist/tools/worknode-history-tool.js.map +1 -0
  92. package/dist/tools/worknode-move-tool.d.ts +4 -0
  93. package/dist/tools/worknode-move-tool.d.ts.map +1 -0
  94. package/dist/tools/worknode-move-tool.js +78 -0
  95. package/dist/tools/worknode-move-tool.js.map +1 -0
  96. package/dist/tools/worknode-plan-organize-tool.d.ts.map +1 -1
  97. package/dist/tools/worknode-plan-organize-tool.js +8 -117
  98. package/dist/tools/worknode-plan-organize-tool.js.map +1 -1
  99. package/dist/tools/worknode-read-tool.d.ts.map +1 -1
  100. package/dist/tools/worknode-read-tool.js +7 -110
  101. package/dist/tools/worknode-read-tool.js.map +1 -1
  102. package/dist/tools/worknode-subtree-tool.d.ts.map +1 -1
  103. package/dist/tools/worknode-subtree-tool.js +5 -65
  104. package/dist/tools/worknode-subtree-tool.js.map +1 -1
  105. package/dist/tools/worknode-tag-tool.d.ts.map +1 -1
  106. package/dist/tools/worknode-tag-tool.js +11 -99
  107. package/dist/tools/worknode-tag-tool.js.map +1 -1
  108. package/dist/tools/worknode-update-tool.d.ts.map +1 -1
  109. package/dist/tools/worknode-update-tool.js +22 -110
  110. package/dist/tools/worknode-update-tool.js.map +1 -1
  111. package/dist/tools/workspace-ascii-export-tool.d.ts +4 -0
  112. package/dist/tools/workspace-ascii-export-tool.d.ts.map +1 -0
  113. package/dist/tools/workspace-ascii-export-tool.js +96 -0
  114. package/dist/tools/workspace-ascii-export-tool.js.map +1 -0
  115. package/dist/tools/workspace-inbox-tool.d.ts.map +1 -1
  116. package/dist/tools/workspace-inbox-tool.js +4 -72
  117. package/dist/tools/workspace-inbox-tool.js.map +1 -1
  118. package/dist/tools/workspace-list-tool.d.ts.map +1 -1
  119. package/dist/tools/workspace-list-tool.js +3 -49
  120. package/dist/tools/workspace-list-tool.js.map +1 -1
  121. package/dist/tools/workspace-member-tool.d.ts +7 -0
  122. package/dist/tools/workspace-member-tool.d.ts.map +1 -0
  123. package/dist/tools/workspace-member-tool.js +172 -0
  124. package/dist/tools/workspace-member-tool.js.map +1 -0
  125. package/dist/tools/workspace-members-list-tool.d.ts.map +1 -1
  126. package/dist/tools/workspace-members-list-tool.js +5 -84
  127. package/dist/tools/workspace-members-list-tool.js.map +1 -1
  128. package/dist/tools/workspace-statistics-tool.d.ts.map +1 -1
  129. package/dist/tools/workspace-statistics-tool.js +3 -169
  130. package/dist/tools/workspace-statistics-tool.js.map +1 -1
  131. package/dist/tools/workspace-tree-tool.d.ts.map +1 -1
  132. package/dist/tools/workspace-tree-tool.js +10 -178
  133. package/dist/tools/workspace-tree-tool.js.map +1 -1
  134. 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;AAiEtD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAiRjF"}
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', 'in_review', 'completed', 'cancelled']);
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, in_review, completed, cancelled. ' +
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: z.string().optional().describe('Start date in ISO 8601 format. Example: "2025-01-20T09:00:00Z" (UTC)'),
29
- dueDate: z.string().optional().describe('Due date in ISO 8601 format. Example: "2025-01-31T23:59:59Z" (UTC)'),
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 in BRXCE with batch support and preview mode.
54
+ description: `Create WorkNodes. Use preview:true first.
43
55
 
44
- ## 📋 Available Fields
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
- ### Required Fields
47
- - **title** (string): WorkNode title (min 1 char)
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":"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"}
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"}