wolfpack-mcp 1.0.11 → 1.0.12
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/client.js +22 -0
- package/dist/index.js +97 -0
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -166,6 +166,28 @@ export class WolfpackClient {
|
|
|
166
166
|
throw error;
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
+
async updateWorkItemAssignee(workItemId, data) {
|
|
170
|
+
try {
|
|
171
|
+
return await this.api.put(`/work-items/${workItemId}/assignee`, data);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
throw error;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async pullWorkItem(workItemId, data) {
|
|
181
|
+
try {
|
|
182
|
+
return await this.api.post(`/work-items/${workItemId}/pull`, data || {});
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
169
191
|
// Radar Item (Initiative/Roadmap) methods
|
|
170
192
|
async listRadarItems(options) {
|
|
171
193
|
const params = new URLSearchParams();
|
package/dist/index.js
CHANGED
|
@@ -92,6 +92,20 @@ const UpdateWorkItemStatusSchema = z.object({
|
|
|
92
92
|
work_item_id: z.string().describe('The ID of the work item'),
|
|
93
93
|
status: z.string().describe('New status'),
|
|
94
94
|
});
|
|
95
|
+
const UpdateWorkItemAssigneeSchema = z.object({
|
|
96
|
+
work_item_id: z.string().describe('The ID of the work item'),
|
|
97
|
+
leading_user_id: z
|
|
98
|
+
.string()
|
|
99
|
+
.nullable()
|
|
100
|
+
.describe('User ID to assign as leading user, or null to unassign'),
|
|
101
|
+
});
|
|
102
|
+
const PullWorkItemSchema = z.object({
|
|
103
|
+
work_item_id: z.string().describe('The ID of the work item to pull from backlog'),
|
|
104
|
+
leading_user_id: z
|
|
105
|
+
.string()
|
|
106
|
+
.optional()
|
|
107
|
+
.describe('User ID to assign as leading user (defaults to API key owner)'),
|
|
108
|
+
});
|
|
95
109
|
// Radar Item (Initiative/Roadmap) schemas
|
|
96
110
|
const ListRadarItemsSchema = z.object({
|
|
97
111
|
team_id: z.number().optional().describe('Team ID to filter radar items'),
|
|
@@ -352,6 +366,48 @@ class WolfpackMCPServer {
|
|
|
352
366
|
required: ['work_item_id', 'status'],
|
|
353
367
|
},
|
|
354
368
|
},
|
|
369
|
+
{
|
|
370
|
+
name: 'update_work_item_assignee',
|
|
371
|
+
description: 'Change the assignee (leading user) on a work item. ' +
|
|
372
|
+
'Use this to assign work to yourself or another team member, or to unassign by passing null.',
|
|
373
|
+
inputSchema: {
|
|
374
|
+
type: 'object',
|
|
375
|
+
properties: {
|
|
376
|
+
work_item_id: {
|
|
377
|
+
type: 'string',
|
|
378
|
+
description: 'The ID of the work item',
|
|
379
|
+
},
|
|
380
|
+
leading_user_id: {
|
|
381
|
+
type: ['string', 'null'],
|
|
382
|
+
description: 'User ID to assign as leading user, or null to unassign',
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
required: ['work_item_id', 'leading_user_id'],
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
name: 'pull_work_item',
|
|
390
|
+
description: 'Pull a specific work item from the backlog to the board. ' +
|
|
391
|
+
'WORKFLOW: 1) Use list_work_items with status="pending" to browse backlog items, ' +
|
|
392
|
+
'2) Evaluate and select an item, ' +
|
|
393
|
+
'3) Use this tool to pull it onto the board. ' +
|
|
394
|
+
'This changes the status from "pending" to "new" and assigns the item. ' +
|
|
395
|
+
'If no assignee is specified, assigns to the API key owner.',
|
|
396
|
+
inputSchema: {
|
|
397
|
+
type: 'object',
|
|
398
|
+
properties: {
|
|
399
|
+
work_item_id: {
|
|
400
|
+
type: 'string',
|
|
401
|
+
description: 'The ID of the work item to pull from backlog',
|
|
402
|
+
},
|
|
403
|
+
leading_user_id: {
|
|
404
|
+
type: 'string',
|
|
405
|
+
description: 'User ID to assign as leading user (optional, defaults to API key owner)',
|
|
406
|
+
},
|
|
407
|
+
},
|
|
408
|
+
required: ['work_item_id'],
|
|
409
|
+
},
|
|
410
|
+
},
|
|
355
411
|
// Radar Item (Initiative/Roadmap) tools
|
|
356
412
|
{
|
|
357
413
|
name: 'list_radar_items',
|
|
@@ -761,6 +817,47 @@ class WolfpackMCPServer {
|
|
|
761
817
|
content: [{ type: 'text', text: 'Work item not found or not assigned to you' }],
|
|
762
818
|
};
|
|
763
819
|
}
|
|
820
|
+
case 'update_work_item_assignee': {
|
|
821
|
+
const parsed = UpdateWorkItemAssigneeSchema.parse(args);
|
|
822
|
+
const workItem = await this.client.updateWorkItemAssignee(parsed.work_item_id, {
|
|
823
|
+
leadingUserId: parsed.leading_user_id,
|
|
824
|
+
});
|
|
825
|
+
if (workItem) {
|
|
826
|
+
const assigneeText = parsed.leading_user_id
|
|
827
|
+
? `assigned to ${parsed.leading_user_id}`
|
|
828
|
+
: 'unassigned';
|
|
829
|
+
return {
|
|
830
|
+
content: [
|
|
831
|
+
{
|
|
832
|
+
type: 'text',
|
|
833
|
+
text: `Updated "${workItem.title}" - now ${assigneeText}\n\n${JSON.stringify(workItem, null, 2)}`,
|
|
834
|
+
},
|
|
835
|
+
],
|
|
836
|
+
};
|
|
837
|
+
}
|
|
838
|
+
return {
|
|
839
|
+
content: [{ type: 'text', text: 'Work item not found' }],
|
|
840
|
+
};
|
|
841
|
+
}
|
|
842
|
+
case 'pull_work_item': {
|
|
843
|
+
const parsed = PullWorkItemSchema.parse(args);
|
|
844
|
+
const workItem = await this.client.pullWorkItem(parsed.work_item_id, {
|
|
845
|
+
leadingUserId: parsed.leading_user_id,
|
|
846
|
+
});
|
|
847
|
+
if (workItem) {
|
|
848
|
+
return {
|
|
849
|
+
content: [
|
|
850
|
+
{
|
|
851
|
+
type: 'text',
|
|
852
|
+
text: `Pulled "${workItem.title}" from backlog to board (status: new)\n\n${JSON.stringify(workItem, null, 2)}`,
|
|
853
|
+
},
|
|
854
|
+
],
|
|
855
|
+
};
|
|
856
|
+
}
|
|
857
|
+
return {
|
|
858
|
+
content: [{ type: 'text', text: 'Work item not found' }],
|
|
859
|
+
};
|
|
860
|
+
}
|
|
764
861
|
// Radar Item handlers
|
|
765
862
|
case 'list_radar_items': {
|
|
766
863
|
const parsed = ListRadarItemsSchema.parse(args);
|