@brxce/mcp-server 1.0.2 → 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 +15 -92
- 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 +14 -89
- 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 +7 -94
- 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 +14 -75
- 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 +6 -134
- 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
|
@@ -1,114 +1,189 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Enhanced API client for BRXCE backend with:
|
|
3
|
+
* - Token auto-refresh
|
|
4
|
+
* - Retry logic with exponential backoff
|
|
5
|
+
* - Request timeout
|
|
6
|
+
* - Error classification and handling
|
|
3
7
|
*/
|
|
8
|
+
import jwt from 'jsonwebtoken';
|
|
4
9
|
export class ApiClient {
|
|
5
10
|
baseUrl;
|
|
6
11
|
authToken;
|
|
12
|
+
refreshToken;
|
|
13
|
+
timeout;
|
|
14
|
+
maxRetries;
|
|
7
15
|
constructor(config) {
|
|
8
16
|
this.baseUrl = config.baseUrl;
|
|
9
17
|
this.authToken = config.authToken;
|
|
18
|
+
this.refreshToken = config.refreshToken;
|
|
19
|
+
this.timeout = config.timeout ?? 10000;
|
|
20
|
+
this.maxRetries = config.maxRetries ?? 3;
|
|
10
21
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
22
|
+
/**
|
|
23
|
+
* A-1: Token auto-refresh
|
|
24
|
+
* Ensures token is valid, refreshes if expiring within 60 seconds
|
|
25
|
+
*/
|
|
26
|
+
async ensureValidToken() {
|
|
27
|
+
if (!this.authToken || !this.refreshToken) {
|
|
28
|
+
return;
|
|
16
29
|
}
|
|
17
30
|
try {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
const decoded = jwt.decode(this.authToken);
|
|
32
|
+
if (!decoded || !decoded.exp) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const now = Math.floor(Date.now() / 1000);
|
|
36
|
+
const timeUntilExpiry = decoded.exp - now;
|
|
37
|
+
// Refresh if expiring within 60 seconds
|
|
38
|
+
if (timeUntilExpiry < 60) {
|
|
39
|
+
const response = await fetch(`${this.baseUrl}/auth/refresh`, {
|
|
40
|
+
method: 'POST',
|
|
41
|
+
headers: { 'Content-Type': 'application/json' },
|
|
42
|
+
body: JSON.stringify({ refreshToken: this.refreshToken }),
|
|
43
|
+
});
|
|
44
|
+
if (response.ok) {
|
|
45
|
+
const data = (await response.json());
|
|
46
|
+
this.authToken = data.accessToken;
|
|
47
|
+
}
|
|
25
48
|
}
|
|
26
|
-
return response.json();
|
|
27
49
|
}
|
|
28
50
|
catch (error) {
|
|
29
|
-
|
|
30
|
-
throw error;
|
|
31
|
-
}
|
|
32
|
-
throw new Error(`Network error when calling ${url}: ${error instanceof Error ? error.message : String(error)}`);
|
|
51
|
+
// Ignore token refresh errors, continue with existing token
|
|
33
52
|
}
|
|
34
53
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
54
|
+
/**
|
|
55
|
+
* A-2: Retry logic with exponential backoff
|
|
56
|
+
*/
|
|
57
|
+
async withRetry(fn, retries = this.maxRetries) {
|
|
58
|
+
let lastError = null;
|
|
59
|
+
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
60
|
+
try {
|
|
61
|
+
return await fn();
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
lastError = error;
|
|
65
|
+
// Don't retry if error has skipRetry flag (4xx errors)
|
|
66
|
+
if (error.skipRetry) {
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
// Don't retry on last attempt
|
|
70
|
+
if (attempt === retries) {
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
// Exponential backoff: 100ms, 200ms, 400ms
|
|
74
|
+
const delay = 100 * Math.pow(2, attempt);
|
|
75
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
76
|
+
}
|
|
42
77
|
}
|
|
78
|
+
throw lastError;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* A-3: Timeout handling using AbortController
|
|
82
|
+
*/
|
|
83
|
+
async fetchWithTimeout(url, options, timeoutMs = this.timeout) {
|
|
84
|
+
const controller = new AbortController();
|
|
85
|
+
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
43
86
|
try {
|
|
44
87
|
const response = await fetch(url, {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
body: data ? JSON.stringify(data) : undefined,
|
|
88
|
+
...options,
|
|
89
|
+
signal: controller.signal,
|
|
48
90
|
});
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
throw new Error(`API request failed: ${response.status} ${response.statusText}\nURL: ${url}\nResponse: ${errorText}`);
|
|
52
|
-
}
|
|
53
|
-
return response.json();
|
|
91
|
+
clearTimeout(timeoutId);
|
|
92
|
+
return response;
|
|
54
93
|
}
|
|
55
94
|
catch (error) {
|
|
56
|
-
|
|
57
|
-
|
|
95
|
+
clearTimeout(timeoutId);
|
|
96
|
+
if (error.name === 'AbortError' ||
|
|
97
|
+
error.message.includes('AbortError')) {
|
|
98
|
+
throw new Error(`Request timeout after ${timeoutMs}ms`);
|
|
58
99
|
}
|
|
59
|
-
throw
|
|
100
|
+
throw error;
|
|
60
101
|
}
|
|
61
102
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
body: data ? JSON.stringify(data) : undefined,
|
|
103
|
+
/**
|
|
104
|
+
* A-4: Error classification and smart retry
|
|
105
|
+
*/
|
|
106
|
+
async handleErrorResponse(response, url, retryFn) {
|
|
107
|
+
const status = response.status;
|
|
108
|
+
const errorText = await response.text().catch(() => 'Unable to read error response');
|
|
109
|
+
// 401: Try token refresh and retry once
|
|
110
|
+
if (status === 401 && this.refreshToken) {
|
|
111
|
+
const refreshResponse = await fetch(`${this.baseUrl}/auth/refresh`, {
|
|
112
|
+
method: 'POST',
|
|
113
|
+
headers: { 'Content-Type': 'application/json' },
|
|
114
|
+
body: JSON.stringify({ refreshToken: this.refreshToken }),
|
|
75
115
|
});
|
|
76
|
-
if (
|
|
77
|
-
const
|
|
78
|
-
|
|
116
|
+
if (refreshResponse.ok) {
|
|
117
|
+
const data = (await refreshResponse.json());
|
|
118
|
+
this.authToken = data.accessToken;
|
|
119
|
+
return retryFn();
|
|
79
120
|
}
|
|
80
|
-
return response.json();
|
|
81
121
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
122
|
+
// 429: Rate limit, wait and retry
|
|
123
|
+
if (status === 429) {
|
|
124
|
+
const retryAfter = response.headers.get('Retry-After');
|
|
125
|
+
const delay = retryAfter ? parseInt(retryAfter) * 1000 : 1000;
|
|
126
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
127
|
+
return retryFn();
|
|
128
|
+
}
|
|
129
|
+
// 5xx: Server error, let retry logic handle it
|
|
130
|
+
if (status >= 500) {
|
|
131
|
+
throw new Error('Server error');
|
|
87
132
|
}
|
|
133
|
+
// 4xx: Client error - throw immediately, don't retry
|
|
134
|
+
const err = new Error(`API request failed: ${status} ${response.statusText}\nURL: ${url}\nResponse: ${errorText}`);
|
|
135
|
+
err.skipRetry = true;
|
|
136
|
+
throw err;
|
|
88
137
|
}
|
|
89
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Core request method with all features
|
|
140
|
+
*/
|
|
141
|
+
async request(method, path, data) {
|
|
142
|
+
await this.ensureValidToken();
|
|
90
143
|
const url = `${this.baseUrl}${path}`;
|
|
91
144
|
const headers = {};
|
|
92
145
|
if (this.authToken) {
|
|
93
146
|
headers['Authorization'] = `Bearer ${this.authToken}`;
|
|
94
147
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
148
|
+
if (data !== undefined) {
|
|
149
|
+
headers['Content-Type'] = 'application/json';
|
|
150
|
+
}
|
|
151
|
+
const makeRequest = async () => {
|
|
152
|
+
const response = await this.fetchWithTimeout(url, {
|
|
153
|
+
method,
|
|
98
154
|
headers,
|
|
155
|
+
body: data ? JSON.stringify(data) : undefined,
|
|
99
156
|
});
|
|
100
157
|
if (!response.ok) {
|
|
101
|
-
|
|
102
|
-
throw new Error(`API request failed: ${response.status} ${response.statusText}\nURL: ${url}\nResponse: ${errorText}`);
|
|
158
|
+
return this.handleErrorResponse(response, url, makeRequest);
|
|
103
159
|
}
|
|
160
|
+
return response;
|
|
161
|
+
};
|
|
162
|
+
try {
|
|
163
|
+
const response = await this.withRetry(makeRequest, this.maxRetries);
|
|
104
164
|
return response.json();
|
|
105
165
|
}
|
|
106
166
|
catch (error) {
|
|
107
|
-
|
|
167
|
+
// Pass through API errors, timeouts, and other structured errors
|
|
168
|
+
if (error instanceof Error &&
|
|
169
|
+
(error.message.includes('API request failed') || error.message.includes('timeout'))) {
|
|
108
170
|
throw error;
|
|
109
171
|
}
|
|
172
|
+
// Wrap only true network errors
|
|
110
173
|
throw new Error(`Network error when calling ${url}: ${error instanceof Error ? error.message : String(error)}`);
|
|
111
174
|
}
|
|
112
175
|
}
|
|
176
|
+
async get(path) {
|
|
177
|
+
return this.request('GET', path);
|
|
178
|
+
}
|
|
179
|
+
async post(path, data) {
|
|
180
|
+
return this.request('POST', path, data);
|
|
181
|
+
}
|
|
182
|
+
async put(path, data) {
|
|
183
|
+
return this.request('PUT', path, data);
|
|
184
|
+
}
|
|
185
|
+
async delete(path) {
|
|
186
|
+
return this.request('DELETE', path);
|
|
187
|
+
}
|
|
113
188
|
}
|
|
114
189
|
//# sourceMappingURL=api-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comment-tool.d.ts","sourceRoot":"","sources":["../../src/tools/comment-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAkM3E"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerCommentTools(server, apiClient) {
|
|
3
|
+
// Create Comment
|
|
4
|
+
server.registerTool('brxce_create_comment', {
|
|
5
|
+
description: `Create comment on WorkNode.
|
|
6
|
+
|
|
7
|
+
Params: nodeId, content, parentCommentId?, mentions[]?`,
|
|
8
|
+
inputSchema: {
|
|
9
|
+
nodeId: z.string().uuid().describe('WorkNode UUID'),
|
|
10
|
+
content: z.string().min(1).describe('Comment content'),
|
|
11
|
+
parentCommentId: z.string().uuid().optional().describe('Parent comment UUID for replies'),
|
|
12
|
+
mentions: z.array(z.string()).optional().describe('User IDs to mention'),
|
|
13
|
+
},
|
|
14
|
+
}, async (args) => {
|
|
15
|
+
try {
|
|
16
|
+
const response = await apiClient.post('/mcp/comments/create', args);
|
|
17
|
+
if (!response.success) {
|
|
18
|
+
return {
|
|
19
|
+
content: [
|
|
20
|
+
{ type: 'text', text: `Failed to create comment: ${response.message || 'Unknown error'}` },
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const { comment } = response.data;
|
|
25
|
+
let resultText = '## Comment Created\n\n';
|
|
26
|
+
resultText += `✅ **Comment ID**: ${comment.id}\n`;
|
|
27
|
+
resultText += `- **Content**: ${comment.content}\n`;
|
|
28
|
+
resultText += `- **Created At**: ${comment.createdAt}\n`;
|
|
29
|
+
return { content: [{ type: 'text', text: resultText }] };
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: 'text', text: `Error creating comment: ${error.message || 'Unknown error'}` }],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
// List Comments
|
|
38
|
+
server.registerTool('brxce_list_comments', {
|
|
39
|
+
description: `List WorkNode comments.
|
|
40
|
+
|
|
41
|
+
Params: nodeId`,
|
|
42
|
+
inputSchema: {
|
|
43
|
+
nodeId: z.string().uuid().describe('WorkNode UUID'),
|
|
44
|
+
},
|
|
45
|
+
}, async (args) => {
|
|
46
|
+
try {
|
|
47
|
+
const response = await apiClient.get(`/mcp/comments/list?nodeId=${args.nodeId}`);
|
|
48
|
+
if (!response.success) {
|
|
49
|
+
return {
|
|
50
|
+
content: [
|
|
51
|
+
{ type: 'text', text: `Failed to list comments: ${response.message || 'Unknown error'}` },
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const { comments, count } = response.data;
|
|
56
|
+
let resultText = `## Comments (${count})\n\n`;
|
|
57
|
+
if (count === 0) {
|
|
58
|
+
resultText += 'No comments found.\n';
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
comments.forEach((comment, i) => {
|
|
62
|
+
resultText += `${i + 1}. **${comment.authorId}** (${comment.createdAt})\n`;
|
|
63
|
+
resultText += ` ${comment.content}\n\n`;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return { content: [{ type: 'text', text: resultText }] };
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
return {
|
|
70
|
+
content: [{ type: 'text', text: `Error listing comments: ${error.message || 'Unknown error'}` }],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
// Update Comment
|
|
75
|
+
server.registerTool('brxce_update_comment', {
|
|
76
|
+
description: `Update comment (author only).
|
|
77
|
+
|
|
78
|
+
Params: commentId, content?, mentions[]?`,
|
|
79
|
+
inputSchema: {
|
|
80
|
+
commentId: z.string().uuid().describe('Comment UUID'),
|
|
81
|
+
content: z.string().optional().describe('Updated content'),
|
|
82
|
+
mentions: z.array(z.string()).optional().describe('Updated mentions'),
|
|
83
|
+
},
|
|
84
|
+
}, async (args) => {
|
|
85
|
+
try {
|
|
86
|
+
const { commentId, ...body } = args;
|
|
87
|
+
const response = await apiClient.put(`/mcp/comments/${commentId}`, body);
|
|
88
|
+
if (!response.success) {
|
|
89
|
+
return {
|
|
90
|
+
content: [
|
|
91
|
+
{ type: 'text', text: `Failed to update comment: ${response.message || 'Unknown error'}` },
|
|
92
|
+
],
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const { comment } = response.data;
|
|
96
|
+
let resultText = '## Comment Updated\n\n';
|
|
97
|
+
resultText += `✅ **Comment ID**: ${comment.id}\n`;
|
|
98
|
+
resultText += `- **New Content**: ${comment.content}\n`;
|
|
99
|
+
return { content: [{ type: 'text', text: resultText }] };
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return {
|
|
103
|
+
content: [{ type: 'text', text: `Error updating comment: ${error.message || 'Unknown error'}` }],
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
// Delete Comment
|
|
108
|
+
server.registerTool('brxce_delete_comment', {
|
|
109
|
+
description: `Delete comment (author only, soft delete).
|
|
110
|
+
|
|
111
|
+
Params: commentId`,
|
|
112
|
+
inputSchema: {
|
|
113
|
+
commentId: z.string().uuid().describe('Comment UUID'),
|
|
114
|
+
},
|
|
115
|
+
}, async (args) => {
|
|
116
|
+
try {
|
|
117
|
+
const { commentId } = args;
|
|
118
|
+
const response = await apiClient.delete(`/mcp/comments/${commentId}`);
|
|
119
|
+
if (!response.success) {
|
|
120
|
+
return {
|
|
121
|
+
content: [
|
|
122
|
+
{ type: 'text', text: `Failed to delete comment: ${response.message || 'Unknown error'}` },
|
|
123
|
+
],
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const { deletedAt } = response.data;
|
|
127
|
+
let resultText = '## Comment Deleted\n\n';
|
|
128
|
+
resultText += `✅ **Comment ID**: ${commentId}\n`;
|
|
129
|
+
resultText += `- **Deleted At**: ${deletedAt}\n`;
|
|
130
|
+
return { content: [{ type: 'text', text: resultText }] };
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
return {
|
|
134
|
+
content: [{ type: 'text', text: `Error deleting comment: ${error.message || 'Unknown error'}` }],
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=comment-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comment-tool.js","sourceRoot":"","sources":["../../src/tools/comment-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"criteria-tool.d.ts","sourceRoot":"","sources":["../../src/tools/criteria-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA0Q5E"}
|