@brxce/mcp-server 1.0.0
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/README.md +220 -0
- package/dist/config/environment.d.ts +8 -0
- package/dist/config/environment.d.ts.map +1 -0
- package/dist/config/environment.js +16 -0
- package/dist/config/environment.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +167 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/worknode-prompts.d.ts +7 -0
- package/dist/prompts/worknode-prompts.d.ts.map +1 -0
- package/dist/prompts/worknode-prompts.js +369 -0
- package/dist/prompts/worknode-prompts.js.map +1 -0
- package/dist/prompts/workspace-context-prompt.d.ts +4 -0
- package/dist/prompts/workspace-context-prompt.d.ts.map +1 -0
- package/dist/prompts/workspace-context-prompt.js +101 -0
- package/dist/prompts/workspace-context-prompt.js.map +1 -0
- package/dist/resources/user-resource.d.ts +4 -0
- package/dist/resources/user-resource.d.ts.map +1 -0
- package/dist/resources/user-resource.js +40 -0
- package/dist/resources/user-resource.js.map +1 -0
- package/dist/resources/workspace-members-resource.d.ts +4 -0
- package/dist/resources/workspace-members-resource.d.ts.map +1 -0
- package/dist/resources/workspace-members-resource.js +39 -0
- package/dist/resources/workspace-members-resource.js.map +1 -0
- package/dist/resources/workspace-resource.d.ts +4 -0
- package/dist/resources/workspace-resource.d.ts.map +1 -0
- package/dist/resources/workspace-resource.js +27 -0
- package/dist/resources/workspace-resource.js.map +1 -0
- package/dist/services/api-client.d.ts +17 -0
- package/dist/services/api-client.d.ts.map +1 -0
- package/dist/services/api-client.js +118 -0
- package/dist/services/api-client.js.map +1 -0
- package/dist/tools/meeting-agenda-tool.d.ts +7 -0
- package/dist/tools/meeting-agenda-tool.d.ts.map +1 -0
- package/dist/tools/meeting-agenda-tool.js +452 -0
- package/dist/tools/meeting-agenda-tool.js.map +1 -0
- package/dist/tools/meeting-create-tool.d.ts +8 -0
- package/dist/tools/meeting-create-tool.d.ts.map +1 -0
- package/dist/tools/meeting-create-tool.js +309 -0
- package/dist/tools/meeting-create-tool.js.map +1 -0
- package/dist/tools/meeting-decisions-tool.d.ts +7 -0
- package/dist/tools/meeting-decisions-tool.d.ts.map +1 -0
- package/dist/tools/meeting-decisions-tool.js +431 -0
- package/dist/tools/meeting-decisions-tool.js.map +1 -0
- package/dist/tools/meeting-list-tool.d.ts +7 -0
- package/dist/tools/meeting-list-tool.d.ts.map +1 -0
- package/dist/tools/meeting-list-tool.js +305 -0
- package/dist/tools/meeting-list-tool.js.map +1 -0
- package/dist/tools/meeting-notes-tool.d.ts +7 -0
- package/dist/tools/meeting-notes-tool.d.ts.map +1 -0
- package/dist/tools/meeting-notes-tool.js +318 -0
- package/dist/tools/meeting-notes-tool.js.map +1 -0
- package/dist/tools/meeting-update-tool.d.ts +7 -0
- package/dist/tools/meeting-update-tool.d.ts.map +1 -0
- package/dist/tools/meeting-update-tool.js +310 -0
- package/dist/tools/meeting-update-tool.js.map +1 -0
- package/dist/tools/tag-category-tool.d.ts +4 -0
- package/dist/tools/tag-category-tool.d.ts.map +1 -0
- package/dist/tools/tag-category-tool.js +293 -0
- package/dist/tools/tag-category-tool.js.map +1 -0
- package/dist/tools/tag-search-tool.d.ts +4 -0
- package/dist/tools/tag-search-tool.d.ts.map +1 -0
- package/dist/tools/tag-search-tool.js +358 -0
- package/dist/tools/tag-search-tool.js.map +1 -0
- package/dist/tools/tag-tool.d.ts +4 -0
- package/dist/tools/tag-tool.d.ts.map +1 -0
- package/dist/tools/tag-tool.js +450 -0
- package/dist/tools/tag-tool.js.map +1 -0
- package/dist/tools/worknode-archive-tool.d.ts +7 -0
- package/dist/tools/worknode-archive-tool.d.ts.map +1 -0
- package/dist/tools/worknode-archive-tool.js +163 -0
- package/dist/tools/worknode-archive-tool.js.map +1 -0
- package/dist/tools/worknode-create-tool.d.ts +4 -0
- package/dist/tools/worknode-create-tool.d.ts.map +1 -0
- package/dist/tools/worknode-create-tool.js +382 -0
- package/dist/tools/worknode-create-tool.js.map +1 -0
- package/dist/tools/worknode-my-work-tool.d.ts +8 -0
- package/dist/tools/worknode-my-work-tool.d.ts.map +1 -0
- package/dist/tools/worknode-my-work-tool.js +302 -0
- package/dist/tools/worknode-my-work-tool.js.map +1 -0
- package/dist/tools/worknode-search-tool.d.ts +4 -0
- package/dist/tools/worknode-search-tool.d.ts.map +1 -0
- package/dist/tools/worknode-search-tool.js +289 -0
- package/dist/tools/worknode-search-tool.js.map +1 -0
- package/dist/tools/worknode-subtree-tool.d.ts +4 -0
- package/dist/tools/worknode-subtree-tool.d.ts.map +1 -0
- package/dist/tools/worknode-subtree-tool.js +175 -0
- package/dist/tools/worknode-subtree-tool.js.map +1 -0
- package/dist/tools/worknode-tag-tool.d.ts +4 -0
- package/dist/tools/worknode-tag-tool.d.ts.map +1 -0
- package/dist/tools/worknode-tag-tool.js +353 -0
- package/dist/tools/worknode-tag-tool.js.map +1 -0
- package/dist/tools/worknode-update-tool.d.ts +4 -0
- package/dist/tools/worknode-update-tool.d.ts.map +1 -0
- package/dist/tools/worknode-update-tool.js +409 -0
- package/dist/tools/worknode-update-tool.js.map +1 -0
- package/dist/tools/workspace-inbox-tool.d.ts +8 -0
- package/dist/tools/workspace-inbox-tool.d.ts.map +1 -0
- package/dist/tools/workspace-inbox-tool.js +210 -0
- package/dist/tools/workspace-inbox-tool.js.map +1 -0
- package/dist/tools/workspace-tree-tool.d.ts +4 -0
- package/dist/tools/workspace-tree-tool.d.ts.map +1 -0
- package/dist/tools/workspace-tree-tool.js +419 -0
- package/dist/tools/workspace-tree-tool.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerTagTools(server, apiClient) {
|
|
3
|
+
/**
|
|
4
|
+
* Create multiple tags at once
|
|
5
|
+
*/
|
|
6
|
+
server.registerTool('brxce_create_tags_batch', {
|
|
7
|
+
description: `Create multiple tags at once with optional preview mode.
|
|
8
|
+
|
|
9
|
+
**When to use:**
|
|
10
|
+
- When you need to create many tags quickly
|
|
11
|
+
- To set up a new tag taxonomy (e.g., all tech stack tags)
|
|
12
|
+
- When user provides a list of tags to create
|
|
13
|
+
|
|
14
|
+
**Preview mode:**
|
|
15
|
+
- Use preview: true to validate before creating
|
|
16
|
+
- Shows which tags will succeed/fail
|
|
17
|
+
- User can review before confirming
|
|
18
|
+
|
|
19
|
+
**Example scenarios:**
|
|
20
|
+
|
|
21
|
+
User: "Create tags for React, TypeScript, Node.js, and PostgreSQL in Tech Stack category"
|
|
22
|
+
Assistant:
|
|
23
|
+
1. Get Tech Stack category ID (e.g., 5)
|
|
24
|
+
2. Call brxce_create_tags_batch with preview: true to show what will be created
|
|
25
|
+
3. If user confirms, call again with preview: false
|
|
26
|
+
|
|
27
|
+
brxce_create_tags_batch(
|
|
28
|
+
workspaceId: 4,
|
|
29
|
+
tags: [
|
|
30
|
+
{ name: "React", slug: "react", categoryId: 5 },
|
|
31
|
+
{ name: "TypeScript", slug: "typescript", categoryId: 5 },
|
|
32
|
+
{ name: "Node.js", slug: "nodejs", categoryId: 5 },
|
|
33
|
+
{ name: "PostgreSQL", slug: "postgresql", categoryId: 5 }
|
|
34
|
+
],
|
|
35
|
+
preview: false
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
User: "Set up a Backend tag with Node.js and Python as children"
|
|
39
|
+
Assistant:
|
|
40
|
+
1. Create Backend tag first (gets ID, e.g., 100)
|
|
41
|
+
2. Create child tags with parentTagId: 100
|
|
42
|
+
|
|
43
|
+
**Returns:**
|
|
44
|
+
- created: List of successfully created tags
|
|
45
|
+
- failed: List of failed tags with errors
|
|
46
|
+
- summary: Total, created, and failed counts`,
|
|
47
|
+
inputSchema: {
|
|
48
|
+
workspaceId: z.number().describe('The workspace ID'),
|
|
49
|
+
tags: z.array(z.object({
|
|
50
|
+
name: z.string().describe('Tag name'),
|
|
51
|
+
slug: z.string().describe('URL-friendly slug'),
|
|
52
|
+
categoryId: z.number().describe('Category ID'),
|
|
53
|
+
parentTagId: z.number().optional().describe('Parent tag ID for hierarchy'),
|
|
54
|
+
description: z.string().optional().describe('Tag description'),
|
|
55
|
+
color: z.string().optional().describe('Hex color code'),
|
|
56
|
+
icon: z.string().optional().describe('Icon identifier')
|
|
57
|
+
})).describe('Array of tags to create'),
|
|
58
|
+
preview: z.boolean().optional().describe('If true, validate but do not create (default: false)')
|
|
59
|
+
}
|
|
60
|
+
}, async (args) => {
|
|
61
|
+
try {
|
|
62
|
+
const { workspaceId, tags, preview } = args;
|
|
63
|
+
const url = `/mcp/workspaces/${workspaceId}/tags/batch`;
|
|
64
|
+
const response = await apiClient.post(url, { tags, preview });
|
|
65
|
+
if (!response.success) {
|
|
66
|
+
return {
|
|
67
|
+
content: [
|
|
68
|
+
{
|
|
69
|
+
type: 'text',
|
|
70
|
+
text: `Failed to create tags: ${response.message || 'Unknown error'}`,
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const { created, failed, summary, preview: isPreview } = response.data;
|
|
76
|
+
let resultText = '';
|
|
77
|
+
if (isPreview) {
|
|
78
|
+
resultText += `## Tag Creation Preview (Workspace ${workspaceId})\\n\\n`;
|
|
79
|
+
resultText += `Total tags: ${summary.total}\\n`;
|
|
80
|
+
resultText += `Valid: ${summary.valid}\\n`;
|
|
81
|
+
resultText += `Invalid: ${summary.invalid}\\n\\n`;
|
|
82
|
+
if (created.length > 0) {
|
|
83
|
+
resultText += `### Will be created (${created.length}):\\n`;
|
|
84
|
+
created.forEach((item) => {
|
|
85
|
+
resultText += `- **${item.tag.name}** (slug: ${item.tag.slug}, category: ${item.category})\\n`;
|
|
86
|
+
if (item.tag.parentTagId)
|
|
87
|
+
resultText += ` Parent ID: ${item.tag.parentTagId}\\n`;
|
|
88
|
+
});
|
|
89
|
+
resultText += `\\n`;
|
|
90
|
+
}
|
|
91
|
+
if (failed.length > 0) {
|
|
92
|
+
resultText += `### Validation errors (${failed.length}):\\n`;
|
|
93
|
+
failed.forEach((item) => {
|
|
94
|
+
resultText += `- **${item.tag.name}**: ${item.errors.join(', ')}\\n`;
|
|
95
|
+
});
|
|
96
|
+
resultText += `\\n`;
|
|
97
|
+
}
|
|
98
|
+
resultText += `To proceed with creation, call again with preview: false\\n`;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
resultText += `## Batch Tag Creation Result (Workspace ${workspaceId})\\n\\n`;
|
|
102
|
+
resultText += `Total: ${summary.total}\\n`;
|
|
103
|
+
resultText += `Created: ${summary.created}\\n`;
|
|
104
|
+
resultText += `Failed: ${summary.failed}\\n\\n`;
|
|
105
|
+
if (created.length > 0) {
|
|
106
|
+
resultText += `### Successfully created (${created.length}):\\n`;
|
|
107
|
+
created.forEach((tag) => {
|
|
108
|
+
resultText += `- **${tag.name}** (ID: ${tag.id}, slug: ${tag.slug})\\n`;
|
|
109
|
+
resultText += ` Category: ${tag.category.name}\\n`;
|
|
110
|
+
if (tag.parentTag)
|
|
111
|
+
resultText += ` Parent: ${tag.parentTag.name}\\n`;
|
|
112
|
+
resultText += ` Level: ${tag.tagLevel}\\n`;
|
|
113
|
+
});
|
|
114
|
+
resultText += `\\n`;
|
|
115
|
+
}
|
|
116
|
+
if (failed.length > 0) {
|
|
117
|
+
resultText += `### Failed (${failed.length}):\\n`;
|
|
118
|
+
failed.forEach((item) => {
|
|
119
|
+
resultText += `- **${item.tag.name}**: ${item.error}\\n`;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
content: [
|
|
125
|
+
{
|
|
126
|
+
type: 'text',
|
|
127
|
+
text: resultText,
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
return {
|
|
134
|
+
content: [
|
|
135
|
+
{
|
|
136
|
+
type: 'text',
|
|
137
|
+
text: `Error creating tags: ${error.message || 'Unknown error'}`,
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
/**
|
|
144
|
+
* List tags in workspace
|
|
145
|
+
*/
|
|
146
|
+
server.registerTool('brxce_list_tags', {
|
|
147
|
+
description: `List all tags in a workspace with hierarchical structure.
|
|
148
|
+
|
|
149
|
+
**When to use:**
|
|
150
|
+
- When user asks "what tags exist?" or "show me all tags"
|
|
151
|
+
- Before adding tags to WorkNodes
|
|
152
|
+
- To understand available tags in a category
|
|
153
|
+
- To see tag usage statistics
|
|
154
|
+
|
|
155
|
+
**Filtering:**
|
|
156
|
+
- Filter by category ID or slug
|
|
157
|
+
- Filter by parent tag (use 0 for root tags)
|
|
158
|
+
- Filter by usage (unused/popular tags)
|
|
159
|
+
|
|
160
|
+
**Returns:**
|
|
161
|
+
- Tags with category, parent info, usage count
|
|
162
|
+
- Hierarchical structure (tagPath, tagLevel)
|
|
163
|
+
- Children count
|
|
164
|
+
|
|
165
|
+
**Example usage:**
|
|
166
|
+
User: "What React-related tags do we have?"
|
|
167
|
+
Assistant: First get Tech Stack category, then filter by it
|
|
168
|
+
brxce_list_tags(workspaceId: 4, categorySlug: "tech-stack")`,
|
|
169
|
+
inputSchema: {
|
|
170
|
+
workspaceId: z.number().describe('The workspace ID'),
|
|
171
|
+
categoryId: z.number().optional().describe('Filter by category ID'),
|
|
172
|
+
parentTagId: z.number().optional().describe('Filter by parent tag ID (use 0 for root tags)'),
|
|
173
|
+
includeDeleted: z.boolean().optional().describe('Include deleted tags (default: false)')
|
|
174
|
+
}
|
|
175
|
+
}, async (args) => {
|
|
176
|
+
try {
|
|
177
|
+
const { workspaceId, categoryId, parentTagId, includeDeleted } = args;
|
|
178
|
+
const queryParams = new URLSearchParams();
|
|
179
|
+
if (categoryId !== undefined)
|
|
180
|
+
queryParams.set('categoryId', String(categoryId));
|
|
181
|
+
if (parentTagId !== undefined)
|
|
182
|
+
queryParams.set('parentTagId', String(parentTagId));
|
|
183
|
+
if (includeDeleted !== undefined)
|
|
184
|
+
queryParams.set('includeDeleted', String(includeDeleted));
|
|
185
|
+
const url = `/mcp/workspaces/${workspaceId}/tags${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
|
|
186
|
+
const response = await apiClient.get(url);
|
|
187
|
+
if (!response.success) {
|
|
188
|
+
return {
|
|
189
|
+
content: [
|
|
190
|
+
{
|
|
191
|
+
type: 'text',
|
|
192
|
+
text: `Failed to list tags: ${response.message || 'Unknown error'}`,
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
const { tags, total } = response.data;
|
|
198
|
+
let resultText = `## Tags (Workspace ${workspaceId})\\n\\n`;
|
|
199
|
+
resultText += `Total tags: ${total}\\n\\n`;
|
|
200
|
+
if (tags.length === 0) {
|
|
201
|
+
resultText += `No tags found.\\n`;
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
// Group by category
|
|
205
|
+
const byCategory = tags.reduce((acc, tag) => {
|
|
206
|
+
const catName = tag.category.name;
|
|
207
|
+
if (!acc[catName])
|
|
208
|
+
acc[catName] = [];
|
|
209
|
+
acc[catName].push(tag);
|
|
210
|
+
return acc;
|
|
211
|
+
}, {});
|
|
212
|
+
Object.entries(byCategory).forEach(([catName, catTags]) => {
|
|
213
|
+
resultText += `### ${catName}\\n`;
|
|
214
|
+
catTags.forEach((tag) => {
|
|
215
|
+
const indent = ' '.repeat(tag.tagLevel);
|
|
216
|
+
resultText += `${indent}- **${tag.name}** (ID: ${tag.id}, slug: ${tag.slug})\\n`;
|
|
217
|
+
if (tag.description)
|
|
218
|
+
resultText += `${indent} Description: ${tag.description}\\n`;
|
|
219
|
+
resultText += `${indent} Usage: ${tag.usageCount} WorkNode(s)\\n`;
|
|
220
|
+
if (tag._count.childTags > 0) {
|
|
221
|
+
resultText += `${indent} Children: ${tag._count.childTags}\\n`;
|
|
222
|
+
}
|
|
223
|
+
if (tag.parentTag) {
|
|
224
|
+
resultText += `${indent} Parent: ${tag.parentTag.name}\\n`;
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
resultText += `\\n`;
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
content: [
|
|
232
|
+
{
|
|
233
|
+
type: 'text',
|
|
234
|
+
text: resultText,
|
|
235
|
+
},
|
|
236
|
+
],
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
return {
|
|
241
|
+
content: [
|
|
242
|
+
{
|
|
243
|
+
type: 'text',
|
|
244
|
+
text: `Error listing tags: ${error.message || 'Unknown error'}`,
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
/**
|
|
251
|
+
* Create tag
|
|
252
|
+
*/
|
|
253
|
+
server.registerTool('brxce_create_tag', {
|
|
254
|
+
description: `Create a new tag in a category, optionally with a parent for hierarchical structure.
|
|
255
|
+
|
|
256
|
+
**When to use:**
|
|
257
|
+
- When user mentions a new tag that should be created
|
|
258
|
+
- To build hierarchical tag taxonomy (e.g., Frontend ā React ā Hooks)
|
|
259
|
+
|
|
260
|
+
**Hierarchical tags:**
|
|
261
|
+
- Use parentTagId to create child tags
|
|
262
|
+
- Example: "Backend" ā "Node.js" ā "Express"
|
|
263
|
+
- tagPath and tagLevel are auto-calculated
|
|
264
|
+
|
|
265
|
+
**Example flat tags:**
|
|
266
|
+
User: "Create tags for React, TypeScript, and Node.js in Tech Stack"
|
|
267
|
+
Assistant: Get Tech Stack category ID, then create 3 separate tags
|
|
268
|
+
|
|
269
|
+
**Example hierarchical:**
|
|
270
|
+
User: "Create Backend tag with Node.js and Python as sub-tags"
|
|
271
|
+
Assistant:
|
|
272
|
+
1. Create "Backend" tag (no parent)
|
|
273
|
+
2. Create "Node.js" tag (parentTagId: Backend ID)
|
|
274
|
+
3. Create "Python" tag (parentTagId: Backend ID)`,
|
|
275
|
+
inputSchema: {
|
|
276
|
+
workspaceId: z.number().describe('The workspace ID'),
|
|
277
|
+
name: z.string().describe('Tag name (e.g., "React", "Backend/Node.js")'),
|
|
278
|
+
slug: z.string().describe('URL-friendly slug (e.g., "react", "backend-nodejs")'),
|
|
279
|
+
categoryId: z.number().describe('Category ID this tag belongs to'),
|
|
280
|
+
parentTagId: z.number().optional().describe('Parent tag ID for hierarchical tags'),
|
|
281
|
+
description: z.string().optional().describe('Tag description'),
|
|
282
|
+
color: z.string().optional().describe('Hex color code'),
|
|
283
|
+
icon: z.string().optional().describe('Icon identifier')
|
|
284
|
+
}
|
|
285
|
+
}, async (args) => {
|
|
286
|
+
try {
|
|
287
|
+
const url = `/mcp/workspaces/${args.workspaceId}/tags`;
|
|
288
|
+
const response = await apiClient.post(url, {
|
|
289
|
+
name: args.name,
|
|
290
|
+
slug: args.slug,
|
|
291
|
+
categoryId: args.categoryId,
|
|
292
|
+
parentTagId: args.parentTagId,
|
|
293
|
+
description: args.description,
|
|
294
|
+
color: args.color,
|
|
295
|
+
icon: args.icon
|
|
296
|
+
});
|
|
297
|
+
if (!response.success) {
|
|
298
|
+
return {
|
|
299
|
+
content: [
|
|
300
|
+
{
|
|
301
|
+
type: 'text',
|
|
302
|
+
text: `Failed to create tag: ${response.message || 'Unknown error'}`,
|
|
303
|
+
},
|
|
304
|
+
],
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
const tag = response.data;
|
|
308
|
+
let resultText = `Tag "${tag.name}" created successfully!\\n\\n`;
|
|
309
|
+
resultText += `ID: ${tag.id}\\n`;
|
|
310
|
+
resultText += `Slug: ${tag.slug}\\n`;
|
|
311
|
+
resultText += `Category: ${tag.category.name}\\n`;
|
|
312
|
+
resultText += `Level: ${tag.tagLevel}\\n`;
|
|
313
|
+
if (tag.parentTag)
|
|
314
|
+
resultText += `Parent: ${tag.parentTag.name}\\n`;
|
|
315
|
+
return {
|
|
316
|
+
content: [
|
|
317
|
+
{
|
|
318
|
+
type: 'text',
|
|
319
|
+
text: resultText,
|
|
320
|
+
},
|
|
321
|
+
],
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
return {
|
|
326
|
+
content: [
|
|
327
|
+
{
|
|
328
|
+
type: 'text',
|
|
329
|
+
text: `Error creating tag: ${error.message || 'Unknown error'}`,
|
|
330
|
+
},
|
|
331
|
+
],
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
/**
|
|
336
|
+
* Update tag
|
|
337
|
+
*/
|
|
338
|
+
server.registerTool('brxce_update_tag', {
|
|
339
|
+
description: `Update an existing tag.
|
|
340
|
+
|
|
341
|
+
**When to use:**
|
|
342
|
+
- To rename or change tag properties
|
|
343
|
+
- To update color/icon for better visual organization
|
|
344
|
+
- To fix tag descriptions
|
|
345
|
+
|
|
346
|
+
**Note:** Cannot change category or parent (would break hierarchy)
|
|
347
|
+
|
|
348
|
+
**Example:**
|
|
349
|
+
User: "Rename the 'Reactjs' tag to 'React'"
|
|
350
|
+
Assistant calls: brxce_update_tag(workspaceId: 4, tagId: 25, name: "React", slug: "react")`,
|
|
351
|
+
inputSchema: {
|
|
352
|
+
workspaceId: z.number().describe('The workspace ID'),
|
|
353
|
+
tagId: z.number().describe('Tag ID to update'),
|
|
354
|
+
name: z.string().optional().describe('New tag name'),
|
|
355
|
+
slug: z.string().optional().describe('New slug'),
|
|
356
|
+
description: z.string().optional().describe('New description'),
|
|
357
|
+
color: z.string().optional().describe('New color'),
|
|
358
|
+
icon: z.string().optional().describe('New icon')
|
|
359
|
+
}
|
|
360
|
+
}, async (args) => {
|
|
361
|
+
try {
|
|
362
|
+
const { workspaceId, tagId, ...updates } = args;
|
|
363
|
+
const url = `/mcp/workspaces/${workspaceId}/tags/${tagId}`;
|
|
364
|
+
const response = await apiClient.put(url, updates);
|
|
365
|
+
if (!response.success) {
|
|
366
|
+
return {
|
|
367
|
+
content: [
|
|
368
|
+
{
|
|
369
|
+
type: 'text',
|
|
370
|
+
text: `Failed to update tag: ${response.message || 'Unknown error'}`,
|
|
371
|
+
},
|
|
372
|
+
],
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
return {
|
|
376
|
+
content: [
|
|
377
|
+
{
|
|
378
|
+
type: 'text',
|
|
379
|
+
text: `Tag updated successfully!`,
|
|
380
|
+
},
|
|
381
|
+
],
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
catch (error) {
|
|
385
|
+
return {
|
|
386
|
+
content: [
|
|
387
|
+
{
|
|
388
|
+
type: 'text',
|
|
389
|
+
text: `Error updating tag: ${error.message || 'Unknown error'}`,
|
|
390
|
+
},
|
|
391
|
+
],
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
/**
|
|
396
|
+
* Delete tag
|
|
397
|
+
*/
|
|
398
|
+
server.registerTool('brxce_delete_tag', {
|
|
399
|
+
description: `Delete (soft delete) a tag.
|
|
400
|
+
|
|
401
|
+
**When to use:**
|
|
402
|
+
- When a tag is no longer needed or was created by mistake
|
|
403
|
+
- To clean up unused tags
|
|
404
|
+
|
|
405
|
+
**Note:** This is a soft delete. The tag remains in database but is hidden.
|
|
406
|
+
|
|
407
|
+
**Example:**
|
|
408
|
+
User: "Remove the deprecated 'Angular' tag"
|
|
409
|
+
Assistant calls: brxce_delete_tag(workspaceId: 4, tagId: 30)`,
|
|
410
|
+
inputSchema: {
|
|
411
|
+
workspaceId: z.number().describe('The workspace ID'),
|
|
412
|
+
tagId: z.number().describe('Tag ID to delete')
|
|
413
|
+
}
|
|
414
|
+
}, async (args) => {
|
|
415
|
+
try {
|
|
416
|
+
const { workspaceId, tagId } = args;
|
|
417
|
+
const url = `/mcp/workspaces/${workspaceId}/tags/${tagId}`;
|
|
418
|
+
const response = await apiClient.delete(url);
|
|
419
|
+
if (!response.success) {
|
|
420
|
+
return {
|
|
421
|
+
content: [
|
|
422
|
+
{
|
|
423
|
+
type: 'text',
|
|
424
|
+
text: `Failed to delete tag: ${response.message || 'Unknown error'}`,
|
|
425
|
+
},
|
|
426
|
+
],
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
return {
|
|
430
|
+
content: [
|
|
431
|
+
{
|
|
432
|
+
type: 'text',
|
|
433
|
+
text: `Tag deleted successfully.`,
|
|
434
|
+
},
|
|
435
|
+
],
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
return {
|
|
440
|
+
content: [
|
|
441
|
+
{
|
|
442
|
+
type: 'text',
|
|
443
|
+
text: `Error deleting tag: ${error.message || 'Unknown error'}`,
|
|
444
|
+
},
|
|
445
|
+
],
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
//# sourceMappingURL=tag-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag-tool.js","sourceRoot":"","sources":["../../src/tools/tag-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { ApiClient } from '../services/api-client.js';
|
|
3
|
+
/**
|
|
4
|
+
* Register WorkNode Archive Tools for LLM-invoked operations
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerWorknodeArchiveTools(server: McpServer, apiClient: ApiClient): void;
|
|
7
|
+
//# sourceMappingURL=worknode-archive-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worknode-archive-tool.d.ts","sourceRoot":"","sources":["../../src/tools/worknode-archive-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA4LnF"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Register WorkNode Archive Tools for LLM-invoked operations
|
|
4
|
+
*/
|
|
5
|
+
export function registerWorknodeArchiveTools(server, apiClient) {
|
|
6
|
+
/**
|
|
7
|
+
* brxce_archive_worknodes - Archive one or more WorkNodes
|
|
8
|
+
*/
|
|
9
|
+
server.registerTool('brxce_archive_worknodes', {
|
|
10
|
+
description: `Archive one or more WorkNodes (soft delete to trash).
|
|
11
|
+
|
|
12
|
+
**When to use this tool:**
|
|
13
|
+
- User wants to remove WorkNodes without deleting permanently
|
|
14
|
+
- Cleaning up old or irrelevant work items
|
|
15
|
+
- Organizing workspace by moving items to trash
|
|
16
|
+
- Replacing old structure with new one
|
|
17
|
+
|
|
18
|
+
**Features:**
|
|
19
|
+
- Archive single or multiple WorkNodes at once
|
|
20
|
+
- Optionally archive all children recursively
|
|
21
|
+
- Archived items are hidden from default views
|
|
22
|
+
- Can be restored using brxce_unarchive_worknodes
|
|
23
|
+
|
|
24
|
+
**Access Control:**
|
|
25
|
+
- Requires workspace membership
|
|
26
|
+
- Only workspace members can archive nodes
|
|
27
|
+
|
|
28
|
+
**Example:**
|
|
29
|
+
User: "Archive old AI nodes #3451, #3443"
|
|
30
|
+
LLM calls: brxce_archive_worknodes(nodeIds: [3451, 3443], includeChildren: true)
|
|
31
|
+
|
|
32
|
+
User: "Move task #100 to trash"
|
|
33
|
+
LLM calls: brxce_archive_worknodes(nodeIds: [100], includeChildren: false)`,
|
|
34
|
+
inputSchema: {
|
|
35
|
+
nodeIds: z.array(z.number()).min(1).describe('Array of WorkNode IDs to archive'),
|
|
36
|
+
includeChildren: z.boolean().optional().describe('If true, archive all descendant nodes recursively (default: false)')
|
|
37
|
+
}
|
|
38
|
+
}, async (args) => {
|
|
39
|
+
const { nodeIds, includeChildren = false } = args;
|
|
40
|
+
try {
|
|
41
|
+
const response = await apiClient.post(`/mcp/worknodes/archive`, { nodeIds, includeChildren });
|
|
42
|
+
if (!response.success) {
|
|
43
|
+
return {
|
|
44
|
+
content: [
|
|
45
|
+
{
|
|
46
|
+
type: 'text',
|
|
47
|
+
text: `Failed to archive WorkNodes: ${response.message || 'Unknown error'}`,
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
isError: true,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const { archived, failed } = response.data;
|
|
54
|
+
let resultText = '## WorkNodes Archived\n\n';
|
|
55
|
+
resultText += `ā
**Successfully archived ${archived} of ${nodeIds.length} WorkNodes**\n\n`;
|
|
56
|
+
if (includeChildren) {
|
|
57
|
+
resultText += `š **Recursive mode**: All descendant nodes were also archived\n\n`;
|
|
58
|
+
}
|
|
59
|
+
if (failed && failed.length > 0) {
|
|
60
|
+
resultText += `ā **Failed to archive**: ${failed.length} nodes\n`;
|
|
61
|
+
resultText += `Failed IDs: ${failed.join(', ')}\n`;
|
|
62
|
+
}
|
|
63
|
+
resultText += `\nš” **Note**: Archived nodes can be restored using brxce_unarchive_worknodes\n`;
|
|
64
|
+
return {
|
|
65
|
+
content: [
|
|
66
|
+
{
|
|
67
|
+
type: 'text',
|
|
68
|
+
text: resultText,
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
return {
|
|
75
|
+
content: [
|
|
76
|
+
{
|
|
77
|
+
type: 'text',
|
|
78
|
+
text: `Error archiving WorkNodes: ${error.message || 'Unknown error'}`,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
isError: true,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* brxce_unarchive_worknodes - Restore archived WorkNodes
|
|
87
|
+
*/
|
|
88
|
+
server.registerTool('brxce_unarchive_worknodes', {
|
|
89
|
+
description: `Restore archived WorkNodes from trash.
|
|
90
|
+
|
|
91
|
+
**When to use this tool:**
|
|
92
|
+
- User wants to restore previously archived nodes
|
|
93
|
+
- Recovering accidentally archived items
|
|
94
|
+
- Bringing back work items from trash
|
|
95
|
+
|
|
96
|
+
**Features:**
|
|
97
|
+
- Restore single or multiple WorkNodes at once
|
|
98
|
+
- Optionally restore all children recursively
|
|
99
|
+
- Restored items become visible in default views
|
|
100
|
+
|
|
101
|
+
**Access Control:**
|
|
102
|
+
- Requires workspace membership
|
|
103
|
+
- Only workspace members can restore nodes
|
|
104
|
+
|
|
105
|
+
**Example:**
|
|
106
|
+
User: "Restore nodes #3451, #3443 from trash"
|
|
107
|
+
LLM calls: brxce_unarchive_worknodes(nodeIds: [3451, 3443], includeChildren: true)
|
|
108
|
+
|
|
109
|
+
User: "Unarchive task #100"
|
|
110
|
+
LLM calls: brxce_unarchive_worknodes(nodeIds: [100], includeChildren: false)`,
|
|
111
|
+
inputSchema: {
|
|
112
|
+
nodeIds: z.array(z.number()).min(1).describe('Array of WorkNode IDs to unarchive'),
|
|
113
|
+
includeChildren: z.boolean().optional().describe('If true, unarchive all descendant nodes recursively (default: false)')
|
|
114
|
+
}
|
|
115
|
+
}, async (args) => {
|
|
116
|
+
const { nodeIds, includeChildren = false } = args;
|
|
117
|
+
try {
|
|
118
|
+
const response = await apiClient.post(`/mcp/worknodes/unarchive`, { nodeIds, includeChildren });
|
|
119
|
+
if (!response.success) {
|
|
120
|
+
return {
|
|
121
|
+
content: [
|
|
122
|
+
{
|
|
123
|
+
type: 'text',
|
|
124
|
+
text: `Failed to unarchive WorkNodes: ${response.message || 'Unknown error'}`,
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
isError: true,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
const { unarchived, failed } = response.data;
|
|
131
|
+
let resultText = '## WorkNodes Restored\n\n';
|
|
132
|
+
resultText += `ā
**Successfully restored ${unarchived} of ${nodeIds.length} WorkNodes**\n\n`;
|
|
133
|
+
if (includeChildren) {
|
|
134
|
+
resultText += `š **Recursive mode**: All descendant nodes were also restored\n\n`;
|
|
135
|
+
}
|
|
136
|
+
if (failed && failed.length > 0) {
|
|
137
|
+
resultText += `ā **Failed to restore**: ${failed.length} nodes\n`;
|
|
138
|
+
resultText += `Failed IDs: ${failed.join(', ')}\n`;
|
|
139
|
+
}
|
|
140
|
+
resultText += `\nš” **Note**: Restored nodes are now visible in workspace views\n`;
|
|
141
|
+
return {
|
|
142
|
+
content: [
|
|
143
|
+
{
|
|
144
|
+
type: 'text',
|
|
145
|
+
text: resultText,
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
return {
|
|
152
|
+
content: [
|
|
153
|
+
{
|
|
154
|
+
type: 'text',
|
|
155
|
+
text: `Error unarchiving WorkNodes: ${error.message || 'Unknown error'}`,
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
isError: true,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=worknode-archive-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worknode-archive-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-archive-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 registerWorknodeCreateTool(server: McpServer, apiClient: ApiClient): void;
|
|
4
|
+
//# sourceMappingURL=worknode-create-tool.d.ts.map
|
|
@@ -0,0 +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;AA4BtD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAgZjF"}
|