@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,194 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerCriteriaTools(server, apiClient) {
|
|
3
|
+
// Create Criteria
|
|
4
|
+
server.registerTool('brxce_create_criteria', {
|
|
5
|
+
description: `Create acceptance criteria for WorkNode.
|
|
6
|
+
|
|
7
|
+
Params: nodeId, title, description?, criteriaType?, priority?, measurementType?, targetValue?
|
|
8
|
+
Types: acceptance|exit|success|definition_of_done|business_rule|quality|performance|security
|
|
9
|
+
Priorities: critical|mandatory|important|optional|nice_to_have`,
|
|
10
|
+
inputSchema: {
|
|
11
|
+
nodeId: z.string().uuid().describe('WorkNode UUID'),
|
|
12
|
+
title: z.string().min(1).max(255).describe('Criteria title'),
|
|
13
|
+
description: z.string().optional().describe('Detailed description'),
|
|
14
|
+
criteriaType: z
|
|
15
|
+
.enum(['acceptance', 'exit', 'success', 'definition_of_done', 'business_rule', 'quality', 'performance', 'security'])
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('Type of criteria'),
|
|
18
|
+
priority: z
|
|
19
|
+
.enum(['critical', 'mandatory', 'important', 'optional', 'nice_to_have'])
|
|
20
|
+
.optional()
|
|
21
|
+
.describe('Priority level'),
|
|
22
|
+
measurementType: z
|
|
23
|
+
.enum(['boolean', 'numeric', 'percentage', 'text', 'date', 'milestone'])
|
|
24
|
+
.optional()
|
|
25
|
+
.describe('Measurement type'),
|
|
26
|
+
targetValue: z.string().optional().describe('Target value for numeric/percentage types'),
|
|
27
|
+
},
|
|
28
|
+
}, async (args) => {
|
|
29
|
+
try {
|
|
30
|
+
const response = await apiClient.post('/mcp/criteria/create', args);
|
|
31
|
+
if (!response.success) {
|
|
32
|
+
return {
|
|
33
|
+
content: [
|
|
34
|
+
{ type: 'text', text: `Failed to create criteria: ${response.message || 'Unknown error'}` },
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const { criteria } = response.data;
|
|
39
|
+
let resultText = '## Criteria Created\n\n';
|
|
40
|
+
resultText += `✅ **Criteria ID**: ${criteria.id}\n`;
|
|
41
|
+
resultText += `- **Title**: ${criteria.title}\n`;
|
|
42
|
+
resultText += `- **Type**: ${criteria.criteriaType}\n`;
|
|
43
|
+
resultText += `- **Priority**: ${criteria.priority}\n`;
|
|
44
|
+
resultText += `- **Measurement**: ${criteria.measurementType}\n`;
|
|
45
|
+
resultText += `- **Completed**: ${criteria.isCompleted}\n`;
|
|
46
|
+
return { content: [{ type: 'text', text: resultText }] };
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return {
|
|
50
|
+
content: [{ type: 'text', text: `Error creating criteria: ${error.message || 'Unknown error'}` }],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// List Criteria
|
|
55
|
+
server.registerTool('brxce_list_criteria', {
|
|
56
|
+
description: `List WorkNode acceptance criteria.
|
|
57
|
+
|
|
58
|
+
Params: nodeId, completed?`,
|
|
59
|
+
inputSchema: {
|
|
60
|
+
nodeId: z.string().uuid().describe('WorkNode UUID'),
|
|
61
|
+
completed: z.boolean().optional().describe('Filter by completion status'),
|
|
62
|
+
},
|
|
63
|
+
}, async (args) => {
|
|
64
|
+
try {
|
|
65
|
+
const queryParams = new URLSearchParams({ nodeId: args.nodeId });
|
|
66
|
+
if (args.completed !== undefined) {
|
|
67
|
+
queryParams.append('completed', String(args.completed));
|
|
68
|
+
}
|
|
69
|
+
const response = await apiClient.get(`/mcp/criteria/list?${queryParams}`);
|
|
70
|
+
if (!response.success) {
|
|
71
|
+
return {
|
|
72
|
+
content: [
|
|
73
|
+
{ type: 'text', text: `Failed to list criteria: ${response.message || 'Unknown error'}` },
|
|
74
|
+
],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const { criteria, count } = response.data;
|
|
78
|
+
let resultText = `## Acceptance Criteria (${count})\n\n`;
|
|
79
|
+
if (count === 0) {
|
|
80
|
+
resultText += 'No criteria found.\n';
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const pending = criteria.filter(c => !c.isCompleted);
|
|
84
|
+
const completed = criteria.filter(c => c.isCompleted);
|
|
85
|
+
if (pending.length > 0) {
|
|
86
|
+
resultText += `### ⏳ Pending (${pending.length})\n\n`;
|
|
87
|
+
pending.forEach((c, i) => {
|
|
88
|
+
resultText += `${i + 1}. **${c.title}** [${c.priority}]\n`;
|
|
89
|
+
if (c.description)
|
|
90
|
+
resultText += ` ${c.description}\n`;
|
|
91
|
+
if (c.measurementType !== 'boolean') {
|
|
92
|
+
resultText += ` Measurement: ${c.measurementType}`;
|
|
93
|
+
if (c.targetValue)
|
|
94
|
+
resultText += ` (target: ${c.targetValue})`;
|
|
95
|
+
resultText += '\n';
|
|
96
|
+
}
|
|
97
|
+
resultText += ` ID: ${c.id}\n\n`;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
if (completed.length > 0) {
|
|
101
|
+
resultText += `### ✅ Completed (${completed.length})\n\n`;
|
|
102
|
+
completed.forEach((c, i) => {
|
|
103
|
+
resultText += `${i + 1}. ~~${c.title}~~ [${c.priority}]\n`;
|
|
104
|
+
if (c.currentValue)
|
|
105
|
+
resultText += ` Current value: ${c.currentValue}\n`;
|
|
106
|
+
resultText += ` ID: ${c.id}\n\n`;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return { content: [{ type: 'text', text: resultText }] };
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
return {
|
|
114
|
+
content: [{ type: 'text', text: `Error listing criteria: ${error.message || 'Unknown error'}` }],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
// Update Criteria
|
|
119
|
+
server.registerTool('brxce_update_criteria', {
|
|
120
|
+
description: `Update criteria.
|
|
121
|
+
|
|
122
|
+
Params: criteriaId, title?, description?, priority?, targetValue?, currentValue?, isCompleted?`,
|
|
123
|
+
inputSchema: {
|
|
124
|
+
criteriaId: z.string().uuid().describe('Criteria UUID'),
|
|
125
|
+
title: z.string().min(1).max(255).optional().describe('Updated title'),
|
|
126
|
+
description: z.string().optional().describe('Updated description'),
|
|
127
|
+
priority: z
|
|
128
|
+
.enum(['critical', 'mandatory', 'important', 'optional', 'nice_to_have'])
|
|
129
|
+
.optional()
|
|
130
|
+
.describe('Updated priority'),
|
|
131
|
+
targetValue: z.string().optional().describe('Updated target value'),
|
|
132
|
+
currentValue: z.string().optional().describe('Current measured value'),
|
|
133
|
+
isCompleted: z.boolean().optional().describe('Completion status'),
|
|
134
|
+
},
|
|
135
|
+
}, async (args) => {
|
|
136
|
+
try {
|
|
137
|
+
const { criteriaId, ...body } = args;
|
|
138
|
+
const response = await apiClient.put(`/mcp/criteria/${criteriaId}`, body);
|
|
139
|
+
if (!response.success) {
|
|
140
|
+
return {
|
|
141
|
+
content: [
|
|
142
|
+
{ type: 'text', text: `Failed to update criteria: ${response.message || 'Unknown error'}` },
|
|
143
|
+
],
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
const { criteria } = response.data;
|
|
147
|
+
let resultText = '## Criteria Updated\n\n';
|
|
148
|
+
resultText += `✅ **Criteria ID**: ${criteria.id}\n`;
|
|
149
|
+
resultText += `- **Title**: ${criteria.title}\n`;
|
|
150
|
+
resultText += `- **Completed**: ${criteria.isCompleted}\n`;
|
|
151
|
+
if (criteria.completedAt) {
|
|
152
|
+
resultText += `- **Completed At**: ${criteria.completedAt}\n`;
|
|
153
|
+
}
|
|
154
|
+
return { content: [{ type: 'text', text: resultText }] };
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
return {
|
|
158
|
+
content: [{ type: 'text', text: `Error updating criteria: ${error.message || 'Unknown error'}` }],
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
// Delete Criteria
|
|
163
|
+
server.registerTool('brxce_delete_criteria', {
|
|
164
|
+
description: `Delete criteria.
|
|
165
|
+
|
|
166
|
+
Params: criteriaId`,
|
|
167
|
+
inputSchema: {
|
|
168
|
+
criteriaId: z.string().uuid().describe('Criteria UUID'),
|
|
169
|
+
},
|
|
170
|
+
}, async (args) => {
|
|
171
|
+
try {
|
|
172
|
+
const { criteriaId } = args;
|
|
173
|
+
const response = await apiClient.delete(`/mcp/criteria/${criteriaId}`);
|
|
174
|
+
if (!response.success) {
|
|
175
|
+
return {
|
|
176
|
+
content: [
|
|
177
|
+
{ type: 'text', text: `Failed to delete criteria: ${response.message || 'Unknown error'}` },
|
|
178
|
+
],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
const { deletedAt } = response.data;
|
|
182
|
+
let resultText = '## Criteria Deleted\n\n';
|
|
183
|
+
resultText += `✅ **Criteria ID**: ${criteriaId}\n`;
|
|
184
|
+
resultText += `- **Deleted At**: ${deletedAt}\n`;
|
|
185
|
+
return { content: [{ type: 'text', text: resultText }] };
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
return {
|
|
189
|
+
content: [{ type: 'text', text: `Error deleting criteria: ${error.message || 'Unknown error'}` }],
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=criteria-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"criteria-tool.js","sourceRoot":"","sources":["../../src/tools/criteria-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { ApiClient } from '../services/api-client.js';
|
|
3
|
+
/**
|
|
4
|
+
* Register Create Invitation tool for LLM-invoked workspace invitations
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerCreateInvitationTool(server: McpServer, apiClient: ApiClient): void;
|
|
7
|
+
/**
|
|
8
|
+
* Register List Invitations tool
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerListInvitationsTool(server: McpServer, apiClient: ApiClient): void;
|
|
11
|
+
//# sourceMappingURL=invitation-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invitation-tool.d.ts","sourceRoot":"","sources":["../../src/tools/invitation-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAgC3D;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA2JnF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAyHlF"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Register Create Invitation tool for LLM-invoked workspace invitations
|
|
4
|
+
*/
|
|
5
|
+
export function registerCreateInvitationTool(server, apiClient) {
|
|
6
|
+
server.registerTool('brxce_create_invitation', {
|
|
7
|
+
description: `Create workspace invitation. Verify workspaceId via user://me.
|
|
8
|
+
|
|
9
|
+
Params: workspaceId, email, role? (owner|admin|member|viewer, default: member)
|
|
10
|
+
Returns: invitation with status, token, expiresAt (7 days)`,
|
|
11
|
+
inputSchema: {
|
|
12
|
+
workspaceId: z
|
|
13
|
+
.string()
|
|
14
|
+
.uuid()
|
|
15
|
+
.describe('Workspace ID (get from user://me resource)'),
|
|
16
|
+
email: z
|
|
17
|
+
.string()
|
|
18
|
+
.email()
|
|
19
|
+
.describe('Email address of the person to invite'),
|
|
20
|
+
role: z
|
|
21
|
+
.enum(['owner', 'admin', 'member', 'viewer'])
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Role to assign (defaults to "member")'),
|
|
24
|
+
},
|
|
25
|
+
}, async (args) => {
|
|
26
|
+
const { workspaceId, email, role } = args;
|
|
27
|
+
// Validate required fields
|
|
28
|
+
if (!workspaceId || typeof workspaceId !== 'string') {
|
|
29
|
+
return {
|
|
30
|
+
content: [
|
|
31
|
+
{
|
|
32
|
+
type: 'text',
|
|
33
|
+
text: JSON.stringify({
|
|
34
|
+
error: 'Invalid workspace ID',
|
|
35
|
+
message: 'workspaceId is required and must be a UUID string',
|
|
36
|
+
hint: 'Use user://me resource to get valid workspace IDs',
|
|
37
|
+
}),
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
isError: true,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (!email || typeof email !== 'string') {
|
|
44
|
+
return {
|
|
45
|
+
content: [
|
|
46
|
+
{
|
|
47
|
+
type: 'text',
|
|
48
|
+
text: JSON.stringify({
|
|
49
|
+
error: 'Invalid email',
|
|
50
|
+
message: 'email is required and must be a valid email address',
|
|
51
|
+
}),
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
isError: true,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const response = await apiClient.post('/mcp/invitations/create', {
|
|
59
|
+
workspaceId,
|
|
60
|
+
email,
|
|
61
|
+
role: role || 'member',
|
|
62
|
+
});
|
|
63
|
+
if (!response.success || !response.data) {
|
|
64
|
+
return {
|
|
65
|
+
content: [
|
|
66
|
+
{
|
|
67
|
+
type: 'text',
|
|
68
|
+
text: JSON.stringify({
|
|
69
|
+
error: 'Failed to create invitation',
|
|
70
|
+
message: response.message || 'API returned unsuccessful response',
|
|
71
|
+
}),
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
isError: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const { invitation } = response.data;
|
|
78
|
+
return {
|
|
79
|
+
content: [
|
|
80
|
+
{
|
|
81
|
+
type: 'text',
|
|
82
|
+
text: JSON.stringify({
|
|
83
|
+
invitationId: invitation.id,
|
|
84
|
+
email: invitation.email,
|
|
85
|
+
role: invitation.role,
|
|
86
|
+
status: invitation.status,
|
|
87
|
+
expiresAt: invitation.expiresAt,
|
|
88
|
+
message: `Invitation sent to ${invitation.email} as ${invitation.role}`,
|
|
89
|
+
}, null, 2),
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
// Handle specific error codes
|
|
96
|
+
if (error.response?.status === 403) {
|
|
97
|
+
return {
|
|
98
|
+
content: [
|
|
99
|
+
{
|
|
100
|
+
type: 'text',
|
|
101
|
+
text: JSON.stringify({
|
|
102
|
+
error: 'Access denied',
|
|
103
|
+
message: 'Only workspace owner or admin can create invitations',
|
|
104
|
+
}),
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
isError: true,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
if (error.response?.status === 400) {
|
|
111
|
+
return {
|
|
112
|
+
content: [
|
|
113
|
+
{
|
|
114
|
+
type: 'text',
|
|
115
|
+
text: JSON.stringify({
|
|
116
|
+
error: 'Validation error',
|
|
117
|
+
message: error.response?.data?.error || 'Invalid request data',
|
|
118
|
+
}),
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
isError: true,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
content: [
|
|
126
|
+
{
|
|
127
|
+
type: 'text',
|
|
128
|
+
text: JSON.stringify({
|
|
129
|
+
error: 'Failed to create invitation',
|
|
130
|
+
message: error.message,
|
|
131
|
+
}),
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
isError: true,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Register List Invitations tool
|
|
141
|
+
*/
|
|
142
|
+
export function registerListInvitationsTool(server, apiClient) {
|
|
143
|
+
server.registerTool('brxce_list_invitations', {
|
|
144
|
+
description: `List workspace invitations. Verify workspaceId via user://me.
|
|
145
|
+
|
|
146
|
+
Params: workspaceId, status? (pending|accepted|declined|cancelled|expired)
|
|
147
|
+
Returns: invitations[] with email, role, status, expiresAt`,
|
|
148
|
+
inputSchema: {
|
|
149
|
+
workspaceId: z
|
|
150
|
+
.string()
|
|
151
|
+
.uuid()
|
|
152
|
+
.describe('Workspace ID (get from user://me resource)'),
|
|
153
|
+
status: z
|
|
154
|
+
.enum(['pending', 'accepted', 'declined', 'cancelled', 'expired'])
|
|
155
|
+
.optional()
|
|
156
|
+
.describe('Filter by status (optional)'),
|
|
157
|
+
},
|
|
158
|
+
}, async (args) => {
|
|
159
|
+
const { workspaceId, status } = args;
|
|
160
|
+
if (!workspaceId || typeof workspaceId !== 'string') {
|
|
161
|
+
return {
|
|
162
|
+
content: [
|
|
163
|
+
{
|
|
164
|
+
type: 'text',
|
|
165
|
+
text: JSON.stringify({
|
|
166
|
+
error: 'Invalid workspace ID',
|
|
167
|
+
message: 'workspaceId is required and must be a UUID string',
|
|
168
|
+
hint: 'Use user://me resource to get valid workspace IDs',
|
|
169
|
+
}),
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
isError: true,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
const queryParams = new URLSearchParams({ workspaceId });
|
|
177
|
+
if (status) {
|
|
178
|
+
queryParams.append('status', status);
|
|
179
|
+
}
|
|
180
|
+
const response = await apiClient.get(`/mcp/invitations/list?${queryParams.toString()}`);
|
|
181
|
+
if (!response.success || !response.data) {
|
|
182
|
+
return {
|
|
183
|
+
content: [
|
|
184
|
+
{
|
|
185
|
+
type: 'text',
|
|
186
|
+
text: JSON.stringify({
|
|
187
|
+
error: 'Failed to list invitations',
|
|
188
|
+
message: response.message || 'API returned unsuccessful response',
|
|
189
|
+
}),
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
isError: true,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
const { invitations } = response.data;
|
|
196
|
+
return {
|
|
197
|
+
content: [
|
|
198
|
+
{
|
|
199
|
+
type: 'text',
|
|
200
|
+
text: JSON.stringify({
|
|
201
|
+
totalInvitations: invitations.length,
|
|
202
|
+
invitations: invitations.map((inv) => ({
|
|
203
|
+
id: inv.id,
|
|
204
|
+
email: inv.email,
|
|
205
|
+
role: inv.role,
|
|
206
|
+
status: inv.status,
|
|
207
|
+
expiresAt: inv.expiresAt,
|
|
208
|
+
createdAt: inv.createdAt,
|
|
209
|
+
})),
|
|
210
|
+
}, null, 2),
|
|
211
|
+
},
|
|
212
|
+
],
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
if (error.response?.status === 403) {
|
|
217
|
+
return {
|
|
218
|
+
content: [
|
|
219
|
+
{
|
|
220
|
+
type: 'text',
|
|
221
|
+
text: JSON.stringify({
|
|
222
|
+
error: 'Access denied',
|
|
223
|
+
message: 'Only workspace owner or admin can view invitations',
|
|
224
|
+
}),
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
isError: true,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
content: [
|
|
232
|
+
{
|
|
233
|
+
type: 'text',
|
|
234
|
+
text: JSON.stringify({
|
|
235
|
+
error: 'Failed to list invitations',
|
|
236
|
+
message: error.message,
|
|
237
|
+
}),
|
|
238
|
+
},
|
|
239
|
+
],
|
|
240
|
+
isError: true,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=invitation-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invitation-tool.js","sourceRoot":"","sources":["../../src/tools/invitation-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-agenda-tool.d.ts","sourceRoot":"","sources":["../../src/tools/meeting-agenda-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAM3D;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"meeting-agenda-tool.d.ts","sourceRoot":"","sources":["../../src/tools/meeting-agenda-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAM3D;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAmYjF"}
|
|
@@ -9,37 +9,9 @@ export function registerMeetingAgendaTools(server, apiClient) {
|
|
|
9
9
|
* brxce_add_agenda_item - Add an agenda item to a meeting
|
|
10
10
|
*/
|
|
11
11
|
server.registerTool('brxce_add_agenda_item', {
|
|
12
|
-
description: `Add
|
|
12
|
+
description: `Add agenda item to meeting.
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
- Planning meeting agenda before the meeting
|
|
16
|
-
- User wants to add discussion topics
|
|
17
|
-
- Organizing meeting structure and topics
|
|
18
|
-
|
|
19
|
-
**Input:**
|
|
20
|
-
- meetingId (required): ID of the meeting
|
|
21
|
-
- title (required): Agenda item title
|
|
22
|
-
- summary (optional): Brief summary of the topic
|
|
23
|
-
- notes (optional): Additional notes or context
|
|
24
|
-
- itemSubType (optional): 'text', 'blocker', 'action', 'follow_up', 'worknode'
|
|
25
|
-
- status (optional): 'pending' (default), 'discussed', 'deferred', 'resolved', 'skipped'
|
|
26
|
-
- durationMinutes (optional): Estimated discussion time
|
|
27
|
-
- workNodeId (optional): Related work item
|
|
28
|
-
- ownerId (optional): Person responsible for this topic
|
|
29
|
-
- sortOrder (optional): Display order (default: 0)
|
|
30
|
-
|
|
31
|
-
**Access Control:**
|
|
32
|
-
- Only workspace members can add agenda items
|
|
33
|
-
- Items are ordered by sortOrder
|
|
34
|
-
|
|
35
|
-
**Example:**
|
|
36
|
-
User: "Add 'Review Q4 Metrics' to meeting #24 agenda, allocate 15 minutes"
|
|
37
|
-
LLM calls: brxce_add_agenda_item(
|
|
38
|
-
meetingId: 24,
|
|
39
|
-
title: "Review Q4 Metrics",
|
|
40
|
-
durationMinutes: 15,
|
|
41
|
-
itemSubType: "text"
|
|
42
|
-
)`,
|
|
14
|
+
Params: meetingId, title, summary?, notes?, itemSubType (text|blocker|action|follow_up|worknode)?, status?, durationMinutes?, workNodeId?, ownerId?, sortOrder?`,
|
|
43
15
|
inputSchema: {
|
|
44
16
|
meetingId: z.string().uuid().describe('Meeting ID (UUID)'),
|
|
45
17
|
title: z.string().min(1).describe('Agenda item title'),
|
|
@@ -123,21 +95,10 @@ LLM calls: brxce_add_agenda_item(
|
|
|
123
95
|
* brxce_list_agenda_items - List all agenda items for a meeting
|
|
124
96
|
*/
|
|
125
97
|
server.registerTool('brxce_list_agenda_items', {
|
|
126
|
-
description: `List
|
|
98
|
+
description: `List meeting agenda items.
|
|
127
99
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
- Need to review planned topics
|
|
131
|
-
- Checking what will be discussed
|
|
132
|
-
|
|
133
|
-
**Output:**
|
|
134
|
-
- Returns all agenda items ordered by sortOrder
|
|
135
|
-
- Shows status, duration, and assigned owners
|
|
136
|
-
- Indicates which items are pending/discussed
|
|
137
|
-
|
|
138
|
-
**Example:**
|
|
139
|
-
User: "What's on the agenda for meeting #24?"
|
|
140
|
-
LLM calls: brxce_list_agenda_items(meetingId: 24)`,
|
|
100
|
+
Params: meetingId
|
|
101
|
+
Returns: agendaItems[] ordered by sortOrder with status and duration`,
|
|
141
102
|
inputSchema: {
|
|
142
103
|
meetingId: z.string().uuid().describe('Meeting ID (UUID)')
|
|
143
104
|
}
|
|
@@ -229,32 +190,9 @@ LLM calls: brxce_list_agenda_items(meetingId: 24)`,
|
|
|
229
190
|
* brxce_update_agenda_item - Update a meeting agenda item
|
|
230
191
|
*/
|
|
231
192
|
server.registerTool('brxce_update_agenda_item', {
|
|
232
|
-
description: `Update
|
|
233
|
-
|
|
234
|
-
**When to use this tool:**
|
|
235
|
-
- Update agenda item status (e.g., pending → discussed)
|
|
236
|
-
- Change title, summary, or notes
|
|
237
|
-
- Adjust duration or reorder items
|
|
238
|
-
- Mark items as deferred or resolved
|
|
193
|
+
description: `Update agenda item.
|
|
239
194
|
|
|
240
|
-
|
|
241
|
-
- Workspace members can update agenda items
|
|
242
|
-
- Cannot update if item doesn't belong to meeting
|
|
243
|
-
|
|
244
|
-
**Input:**
|
|
245
|
-
- meetingId (required): ID of the meeting
|
|
246
|
-
- itemId (required): ID of the agenda item to update
|
|
247
|
-
- title (optional): New title
|
|
248
|
-
- summary (optional): New summary
|
|
249
|
-
- notes (optional): New notes
|
|
250
|
-
- status (optional): New status
|
|
251
|
-
- itemSubType (optional): New sub-type
|
|
252
|
-
- durationMinutes (optional): New duration
|
|
253
|
-
- sortOrder (optional): New display order
|
|
254
|
-
|
|
255
|
-
**Example:**
|
|
256
|
-
User: "Mark agenda item #45 in meeting #24 as discussed"
|
|
257
|
-
LLM calls: brxce_update_agenda_item(meetingId: 24, itemId: 45, status: "discussed")`,
|
|
195
|
+
Params: meetingId, itemId, title?, summary?, notes?, status?, itemSubType?, durationMinutes?, sortOrder?`,
|
|
258
196
|
inputSchema: {
|
|
259
197
|
meetingId: z.string().uuid().describe('Meeting ID (UUID)'),
|
|
260
198
|
itemId: z.string().uuid().describe('Agenda item ID (UUID) to update'),
|
|
@@ -346,24 +284,9 @@ LLM calls: brxce_update_agenda_item(meetingId: 24, itemId: 45, status: "discusse
|
|
|
346
284
|
* brxce_delete_agenda_item - Delete a meeting agenda item
|
|
347
285
|
*/
|
|
348
286
|
server.registerTool('brxce_delete_agenda_item', {
|
|
349
|
-
description: `Delete
|
|
350
|
-
|
|
351
|
-
**When to use this tool:**
|
|
352
|
-
- Topic is no longer relevant
|
|
353
|
-
- Duplicate agenda item
|
|
354
|
-
- Meeting plan changed
|
|
355
|
-
|
|
356
|
-
**Access Control:**
|
|
357
|
-
- Workspace members can delete agenda items
|
|
358
|
-
- Deletion is permanent and cannot be undone
|
|
359
|
-
|
|
360
|
-
**Input:**
|
|
361
|
-
- meetingId (required): ID of the meeting
|
|
362
|
-
- itemId (required): ID of the agenda item to delete
|
|
287
|
+
description: `Delete agenda item (permanent).
|
|
363
288
|
|
|
364
|
-
|
|
365
|
-
User: "Remove agenda item #45 from meeting #24"
|
|
366
|
-
LLM calls: brxce_delete_agenda_item(meetingId: 24, itemId: 45)`,
|
|
289
|
+
Params: meetingId, itemId`,
|
|
367
290
|
inputSchema: {
|
|
368
291
|
meetingId: z.string().uuid().describe('Meeting ID (UUID)'),
|
|
369
292
|
itemId: z.string().uuid().describe('Agenda item ID (UUID) to delete')
|