wolfpack-mcp 1.0.39 → 1.0.40
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 +28 -36
- package/dist/index.js +84 -14
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -164,11 +164,9 @@ export class WolfpackClient {
|
|
|
164
164
|
throw error;
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
async updateWorkProgress(workItemId, description) {
|
|
167
|
+
async updateWorkProgress(workItemId, description, teamSlug) {
|
|
168
168
|
try {
|
|
169
|
-
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/progress
|
|
170
|
-
description,
|
|
171
|
-
});
|
|
169
|
+
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/progress`, teamSlug), { description });
|
|
172
170
|
}
|
|
173
171
|
catch (error) {
|
|
174
172
|
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
@@ -177,11 +175,9 @@ export class WolfpackClient {
|
|
|
177
175
|
throw error;
|
|
178
176
|
}
|
|
179
177
|
}
|
|
180
|
-
async updateWorkItemStatus(workItemId, status) {
|
|
178
|
+
async updateWorkItemStatus(workItemId, status, teamSlug) {
|
|
181
179
|
try {
|
|
182
|
-
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/status
|
|
183
|
-
status,
|
|
184
|
-
});
|
|
180
|
+
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/status`, teamSlug), { status });
|
|
185
181
|
}
|
|
186
182
|
catch (error) {
|
|
187
183
|
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
@@ -190,9 +186,9 @@ export class WolfpackClient {
|
|
|
190
186
|
throw error;
|
|
191
187
|
}
|
|
192
188
|
}
|
|
193
|
-
async updateWorkItemAssignee(workItemId, data) {
|
|
189
|
+
async updateWorkItemAssignee(workItemId, data, teamSlug) {
|
|
194
190
|
try {
|
|
195
|
-
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/assignee
|
|
191
|
+
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/assignee`, teamSlug), data);
|
|
196
192
|
}
|
|
197
193
|
catch (error) {
|
|
198
194
|
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
@@ -201,11 +197,9 @@ export class WolfpackClient {
|
|
|
201
197
|
throw error;
|
|
202
198
|
}
|
|
203
199
|
}
|
|
204
|
-
async updateWorkItemTitle(workItemId, title) {
|
|
200
|
+
async updateWorkItemTitle(workItemId, title, teamSlug) {
|
|
205
201
|
try {
|
|
206
|
-
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/title
|
|
207
|
-
title,
|
|
208
|
-
});
|
|
202
|
+
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/title`, teamSlug), { title });
|
|
209
203
|
}
|
|
210
204
|
catch (error) {
|
|
211
205
|
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
@@ -214,9 +208,9 @@ export class WolfpackClient {
|
|
|
214
208
|
throw error;
|
|
215
209
|
}
|
|
216
210
|
}
|
|
217
|
-
async updateWorkItemInitiative(workItemId, radarItemId) {
|
|
211
|
+
async updateWorkItemInitiative(workItemId, radarItemId, teamSlug) {
|
|
218
212
|
try {
|
|
219
|
-
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/initiative
|
|
213
|
+
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/initiative`, teamSlug), { radarItemId });
|
|
220
214
|
}
|
|
221
215
|
catch (error) {
|
|
222
216
|
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
@@ -225,9 +219,9 @@ export class WolfpackClient {
|
|
|
225
219
|
throw error;
|
|
226
220
|
}
|
|
227
221
|
}
|
|
228
|
-
async pullWorkItem(workItemId, data) {
|
|
222
|
+
async pullWorkItem(workItemId, data, teamSlug) {
|
|
229
223
|
try {
|
|
230
|
-
return await this.api.post(this.withTeamSlug(`/work-items/${workItemId}/pull
|
|
224
|
+
return await this.api.post(this.withTeamSlug(`/work-items/${workItemId}/pull`, teamSlug), data || {});
|
|
231
225
|
}
|
|
232
226
|
catch (error) {
|
|
233
227
|
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
@@ -236,11 +230,9 @@ export class WolfpackClient {
|
|
|
236
230
|
throw error;
|
|
237
231
|
}
|
|
238
232
|
}
|
|
239
|
-
async submitWorkItemForm(workItemId, formValues) {
|
|
233
|
+
async submitWorkItemForm(workItemId, formValues, teamSlug) {
|
|
240
234
|
try {
|
|
241
|
-
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/form
|
|
242
|
-
formValues,
|
|
243
|
-
});
|
|
235
|
+
return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/form`, teamSlug), { formValues });
|
|
244
236
|
}
|
|
245
237
|
catch (error) {
|
|
246
238
|
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
@@ -360,8 +352,8 @@ export class WolfpackClient {
|
|
|
360
352
|
const { teamSlug, ...rest } = data;
|
|
361
353
|
return this.api.post('/issues', { ...rest, teamSlug });
|
|
362
354
|
}
|
|
363
|
-
async updateIssue(issueId, data) {
|
|
364
|
-
return this.api.patch(this.withTeamSlug(`/issues/${issueId}
|
|
355
|
+
async updateIssue(issueId, data, teamSlug) {
|
|
356
|
+
return this.api.patch(this.withTeamSlug(`/issues/${issueId}`, teamSlug), data);
|
|
365
357
|
}
|
|
366
358
|
// Wiki Page methods
|
|
367
359
|
async listWikiPages(options) {
|
|
@@ -409,8 +401,8 @@ export class WolfpackClient {
|
|
|
409
401
|
const { teamSlug, ...rest } = data;
|
|
410
402
|
return this.api.post('/wiki-pages', { ...rest, teamSlug });
|
|
411
403
|
}
|
|
412
|
-
async updateWikiPage(pageId, data) {
|
|
413
|
-
return this.api.patch(this.withTeamSlug(`/wiki-pages/${pageId}
|
|
404
|
+
async updateWikiPage(pageId, data, teamSlug) {
|
|
405
|
+
return this.api.patch(this.withTeamSlug(`/wiki-pages/${pageId}`, teamSlug), data);
|
|
414
406
|
}
|
|
415
407
|
// Journal Entry methods
|
|
416
408
|
async listJournalEntries(options) {
|
|
@@ -458,21 +450,21 @@ export class WolfpackClient {
|
|
|
458
450
|
const { teamSlug, ...rest } = data;
|
|
459
451
|
return this.api.post('/journal-entries', { ...rest, teamSlug });
|
|
460
452
|
}
|
|
461
|
-
async updateJournalEntry(entryId, data) {
|
|
462
|
-
return this.api.patch(this.withTeamSlug(`/journal-entries/${entryId}
|
|
453
|
+
async updateJournalEntry(entryId, data, teamSlug) {
|
|
454
|
+
return this.api.patch(this.withTeamSlug(`/journal-entries/${entryId}`, teamSlug), data);
|
|
463
455
|
}
|
|
464
456
|
// Comment methods
|
|
465
|
-
async listWorkItemComments(workItemId) {
|
|
466
|
-
return this.api.get(this.withTeamSlug(`/work-items/${workItemId}/comments
|
|
457
|
+
async listWorkItemComments(workItemId, teamSlug) {
|
|
458
|
+
return this.api.get(this.withTeamSlug(`/work-items/${workItemId}/comments`, teamSlug));
|
|
467
459
|
}
|
|
468
|
-
async listIssueComments(issueId) {
|
|
469
|
-
return this.api.get(this.withTeamSlug(`/issues/${issueId}/comments
|
|
460
|
+
async listIssueComments(issueId, teamSlug) {
|
|
461
|
+
return this.api.get(this.withTeamSlug(`/issues/${issueId}/comments`, teamSlug));
|
|
470
462
|
}
|
|
471
|
-
async createWorkItemComment(workItemId, data) {
|
|
472
|
-
return this.api.post(this.withTeamSlug(`/work-items/${workItemId}/comments
|
|
463
|
+
async createWorkItemComment(workItemId, data, teamSlug) {
|
|
464
|
+
return this.api.post(this.withTeamSlug(`/work-items/${workItemId}/comments`, teamSlug), data);
|
|
473
465
|
}
|
|
474
|
-
async createIssueComment(issueId, data) {
|
|
475
|
-
return this.api.post(this.withTeamSlug(`/issues/${issueId}/comments
|
|
466
|
+
async createIssueComment(issueId, data, teamSlug) {
|
|
467
|
+
return this.api.post(this.withTeamSlug(`/issues/${issueId}/comments`, teamSlug), data);
|
|
476
468
|
}
|
|
477
469
|
/**
|
|
478
470
|
* Upload an image and get back a URL that can be used in markdown content.
|
package/dist/index.js
CHANGED
|
@@ -96,6 +96,10 @@ const GetWorkItemSchema = z.object({
|
|
|
96
96
|
const UpdateWorkProgressSchema = z.object({
|
|
97
97
|
work_item_id: z.string().describe('The ID of the work item'),
|
|
98
98
|
description: z.string().describe('Updated description/notes for the work item'),
|
|
99
|
+
project_slug: z
|
|
100
|
+
.string()
|
|
101
|
+
.optional()
|
|
102
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
99
103
|
});
|
|
100
104
|
const VALID_STATUSES = [
|
|
101
105
|
'pending',
|
|
@@ -111,6 +115,10 @@ const VALID_STATUSES = [
|
|
|
111
115
|
const UpdateWorkItemStatusSchema = z.object({
|
|
112
116
|
work_item_id: z.string().describe('The ID of the work item'),
|
|
113
117
|
status: z.enum(VALID_STATUSES).describe('New status'),
|
|
118
|
+
project_slug: z
|
|
119
|
+
.string()
|
|
120
|
+
.optional()
|
|
121
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
114
122
|
});
|
|
115
123
|
const UpdateWorkItemAssigneeSchema = z.object({
|
|
116
124
|
work_item_id: z.string().describe('The ID of the work item'),
|
|
@@ -118,10 +126,18 @@ const UpdateWorkItemAssigneeSchema = z.object({
|
|
|
118
126
|
.string()
|
|
119
127
|
.nullable()
|
|
120
128
|
.describe('User ID to assign as leading user, or null to unassign'),
|
|
129
|
+
project_slug: z
|
|
130
|
+
.string()
|
|
131
|
+
.optional()
|
|
132
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
121
133
|
});
|
|
122
134
|
const UpdateWorkItemTitleSchema = z.object({
|
|
123
135
|
work_item_id: z.string().describe('The ID of the work item'),
|
|
124
136
|
title: z.string().describe('New title for the work item'),
|
|
137
|
+
project_slug: z
|
|
138
|
+
.string()
|
|
139
|
+
.optional()
|
|
140
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
125
141
|
});
|
|
126
142
|
const UpdateWorkItemInitiativeSchema = z.object({
|
|
127
143
|
work_item_id: z.string().describe('The ID of the work item'),
|
|
@@ -129,6 +145,10 @@ const UpdateWorkItemInitiativeSchema = z.object({
|
|
|
129
145
|
.string()
|
|
130
146
|
.nullable()
|
|
131
147
|
.describe('Radar/initiative item ID to link to, or null to unlink'),
|
|
148
|
+
project_slug: z
|
|
149
|
+
.string()
|
|
150
|
+
.optional()
|
|
151
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
132
152
|
});
|
|
133
153
|
const PullWorkItemSchema = z.object({
|
|
134
154
|
work_item_id: z.string().describe('The ID of the work item to pull from backlog'),
|
|
@@ -136,10 +156,18 @@ const PullWorkItemSchema = z.object({
|
|
|
136
156
|
.string()
|
|
137
157
|
.optional()
|
|
138
158
|
.describe('User ID to assign as leading user (defaults to API key owner)'),
|
|
159
|
+
project_slug: z
|
|
160
|
+
.string()
|
|
161
|
+
.optional()
|
|
162
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
139
163
|
});
|
|
140
164
|
const SubmitWorkItemFormSchema = z.object({
|
|
141
165
|
work_item_id: z.string().describe('The ID of the work item'),
|
|
142
166
|
form_values: z.record(z.any()).describe('Key-value pairs matching formDefinition field names'),
|
|
167
|
+
project_slug: z
|
|
168
|
+
.string()
|
|
169
|
+
.optional()
|
|
170
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
143
171
|
});
|
|
144
172
|
// Radar Item (Initiative/Roadmap) schemas
|
|
145
173
|
const ListRadarItemsSchema = z.object({
|
|
@@ -245,6 +273,10 @@ const UpdateIssueSchema = z.object({
|
|
|
245
273
|
severity: z.enum(['low', 'medium', 'high', 'critical']).optional().describe('Updated severity'),
|
|
246
274
|
assigned_to_id: z.string().optional().describe('Updated assignee'),
|
|
247
275
|
closing_note: z.string().optional().describe('Closing note (when closing the issue)'),
|
|
276
|
+
project_slug: z
|
|
277
|
+
.string()
|
|
278
|
+
.optional()
|
|
279
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
248
280
|
});
|
|
249
281
|
// Wiki Page schemas
|
|
250
282
|
const ListWikiPagesSchema = z.object({
|
|
@@ -284,6 +316,10 @@ const UpdateWikiPageSchema = z.object({
|
|
|
284
316
|
page_id: z.string().describe('The page slug'),
|
|
285
317
|
title: z.string().optional().describe('Updated title'),
|
|
286
318
|
content: z.string().optional().describe('Updated content (markdown)'),
|
|
319
|
+
project_slug: z
|
|
320
|
+
.string()
|
|
321
|
+
.optional()
|
|
322
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
287
323
|
});
|
|
288
324
|
// Journal Entry schemas
|
|
289
325
|
const ListJournalEntriesSchema = z.object({
|
|
@@ -316,21 +352,41 @@ const UpdateJournalEntrySchema = z.object({
|
|
|
316
352
|
entry_id: z.string().describe('The entry refId (number)'),
|
|
317
353
|
title: z.string().optional().describe('Updated title'),
|
|
318
354
|
content: z.string().optional().describe('Updated content (markdown)'),
|
|
355
|
+
project_slug: z
|
|
356
|
+
.string()
|
|
357
|
+
.optional()
|
|
358
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
319
359
|
});
|
|
320
360
|
// Comment schemas
|
|
321
361
|
const ListWorkItemCommentsSchema = z.object({
|
|
322
362
|
work_item_id: z.string().describe('The work item refId (number)'),
|
|
363
|
+
project_slug: z
|
|
364
|
+
.string()
|
|
365
|
+
.optional()
|
|
366
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
323
367
|
});
|
|
324
368
|
const ListIssueCommentsSchema = z.object({
|
|
325
369
|
issue_id: z.string().describe('The issue refId (number)'),
|
|
370
|
+
project_slug: z
|
|
371
|
+
.string()
|
|
372
|
+
.optional()
|
|
373
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
326
374
|
});
|
|
327
375
|
const CreateWorkItemCommentSchema = z.object({
|
|
328
376
|
work_item_id: z.string().describe('The work item refId (number)'),
|
|
329
377
|
content: z.string().describe('Comment content (markdown)'),
|
|
378
|
+
project_slug: z
|
|
379
|
+
.string()
|
|
380
|
+
.optional()
|
|
381
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
330
382
|
});
|
|
331
383
|
const CreateIssueCommentSchema = z.object({
|
|
332
384
|
issue_id: z.string().describe('The issue refId (number)'),
|
|
333
385
|
content: z.string().describe('Comment content (markdown)'),
|
|
386
|
+
project_slug: z
|
|
387
|
+
.string()
|
|
388
|
+
.optional()
|
|
389
|
+
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
334
390
|
});
|
|
335
391
|
// Image upload schema
|
|
336
392
|
const UploadImageSchema = z.object({
|
|
@@ -1322,7 +1378,8 @@ class WolfpackMCPServer {
|
|
|
1322
1378
|
}
|
|
1323
1379
|
case 'update_work_progress': {
|
|
1324
1380
|
const parsed = UpdateWorkProgressSchema.parse(args);
|
|
1325
|
-
const
|
|
1381
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1382
|
+
const workItem = await this.client.updateWorkProgress(parsed.work_item_id, parsed.description, teamSlug);
|
|
1326
1383
|
if (workItem) {
|
|
1327
1384
|
return {
|
|
1328
1385
|
content: [
|
|
@@ -1339,7 +1396,8 @@ class WolfpackMCPServer {
|
|
|
1339
1396
|
}
|
|
1340
1397
|
case 'update_work_item_status': {
|
|
1341
1398
|
const parsed = UpdateWorkItemStatusSchema.parse(args);
|
|
1342
|
-
const
|
|
1399
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1400
|
+
const workItem = await this.client.updateWorkItemStatus(parsed.work_item_id, parsed.status, teamSlug);
|
|
1343
1401
|
if (workItem) {
|
|
1344
1402
|
return {
|
|
1345
1403
|
content: [
|
|
@@ -1356,9 +1414,10 @@ class WolfpackMCPServer {
|
|
|
1356
1414
|
}
|
|
1357
1415
|
case 'update_work_item_assignee': {
|
|
1358
1416
|
const parsed = UpdateWorkItemAssigneeSchema.parse(args);
|
|
1417
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1359
1418
|
const workItem = await this.client.updateWorkItemAssignee(parsed.work_item_id, {
|
|
1360
1419
|
leadingUserId: parsed.leading_user_id,
|
|
1361
|
-
});
|
|
1420
|
+
}, teamSlug);
|
|
1362
1421
|
if (workItem) {
|
|
1363
1422
|
const assigneeText = parsed.leading_user_id
|
|
1364
1423
|
? `assigned to ${parsed.leading_user_id}`
|
|
@@ -1378,7 +1437,8 @@ class WolfpackMCPServer {
|
|
|
1378
1437
|
}
|
|
1379
1438
|
case 'update_work_item_title': {
|
|
1380
1439
|
const parsed = UpdateWorkItemTitleSchema.parse(args);
|
|
1381
|
-
const
|
|
1440
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1441
|
+
const workItem = await this.client.updateWorkItemTitle(parsed.work_item_id, parsed.title, teamSlug);
|
|
1382
1442
|
if (workItem) {
|
|
1383
1443
|
return {
|
|
1384
1444
|
content: [
|
|
@@ -1395,7 +1455,8 @@ class WolfpackMCPServer {
|
|
|
1395
1455
|
}
|
|
1396
1456
|
case 'update_work_item_initiative': {
|
|
1397
1457
|
const parsed = UpdateWorkItemInitiativeSchema.parse(args);
|
|
1398
|
-
const
|
|
1458
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1459
|
+
const workItem = await this.client.updateWorkItemInitiative(parsed.work_item_id, parsed.radar_item_id, teamSlug);
|
|
1399
1460
|
if (workItem) {
|
|
1400
1461
|
const initiativeText = parsed.radar_item_id
|
|
1401
1462
|
? `linked to initiative ${parsed.radar_item_id}`
|
|
@@ -1415,9 +1476,10 @@ class WolfpackMCPServer {
|
|
|
1415
1476
|
}
|
|
1416
1477
|
case 'pull_work_item': {
|
|
1417
1478
|
const parsed = PullWorkItemSchema.parse(args);
|
|
1479
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1418
1480
|
const workItem = await this.client.pullWorkItem(parsed.work_item_id, {
|
|
1419
1481
|
leadingUserId: parsed.leading_user_id,
|
|
1420
|
-
});
|
|
1482
|
+
}, teamSlug);
|
|
1421
1483
|
if (workItem) {
|
|
1422
1484
|
return {
|
|
1423
1485
|
content: [
|
|
@@ -1434,7 +1496,8 @@ class WolfpackMCPServer {
|
|
|
1434
1496
|
}
|
|
1435
1497
|
case 'submit_work_item_form': {
|
|
1436
1498
|
const parsed = SubmitWorkItemFormSchema.parse(args);
|
|
1437
|
-
const
|
|
1499
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1500
|
+
const workItem = await this.client.submitWorkItemForm(parsed.work_item_id, parsed.form_values, teamSlug);
|
|
1438
1501
|
if (workItem) {
|
|
1439
1502
|
return {
|
|
1440
1503
|
content: [
|
|
@@ -1566,6 +1629,7 @@ class WolfpackMCPServer {
|
|
|
1566
1629
|
}
|
|
1567
1630
|
case 'update_issue': {
|
|
1568
1631
|
const parsed = UpdateIssueSchema.parse(args);
|
|
1632
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1569
1633
|
const issue = await this.client.updateIssue(parsed.issue_id, {
|
|
1570
1634
|
title: parsed.title,
|
|
1571
1635
|
description: parsed.description,
|
|
@@ -1573,7 +1637,7 @@ class WolfpackMCPServer {
|
|
|
1573
1637
|
severity: parsed.severity,
|
|
1574
1638
|
assignedToId: parsed.assigned_to_id,
|
|
1575
1639
|
closingNote: parsed.closing_note,
|
|
1576
|
-
});
|
|
1640
|
+
}, teamSlug);
|
|
1577
1641
|
return {
|
|
1578
1642
|
content: [
|
|
1579
1643
|
{
|
|
@@ -1633,10 +1697,11 @@ class WolfpackMCPServer {
|
|
|
1633
1697
|
}
|
|
1634
1698
|
case 'update_wiki_page': {
|
|
1635
1699
|
const parsed = UpdateWikiPageSchema.parse(args);
|
|
1700
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1636
1701
|
const page = await this.client.updateWikiPage(parsed.page_id, {
|
|
1637
1702
|
title: parsed.title,
|
|
1638
1703
|
content: parsed.content,
|
|
1639
|
-
});
|
|
1704
|
+
}, teamSlug);
|
|
1640
1705
|
return {
|
|
1641
1706
|
content: [
|
|
1642
1707
|
{
|
|
@@ -1695,10 +1760,11 @@ class WolfpackMCPServer {
|
|
|
1695
1760
|
}
|
|
1696
1761
|
case 'update_journal_entry': {
|
|
1697
1762
|
const parsed = UpdateJournalEntrySchema.parse(args);
|
|
1763
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1698
1764
|
const entry = await this.client.updateJournalEntry(parsed.entry_id, {
|
|
1699
1765
|
title: parsed.title,
|
|
1700
1766
|
content: parsed.content,
|
|
1701
|
-
});
|
|
1767
|
+
}, teamSlug);
|
|
1702
1768
|
return {
|
|
1703
1769
|
content: [
|
|
1704
1770
|
{
|
|
@@ -1711,23 +1777,26 @@ class WolfpackMCPServer {
|
|
|
1711
1777
|
// Comment handlers
|
|
1712
1778
|
case 'list_work_item_comments': {
|
|
1713
1779
|
const parsed = ListWorkItemCommentsSchema.parse(args);
|
|
1714
|
-
const
|
|
1780
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1781
|
+
const comments = await this.client.listWorkItemComments(parsed.work_item_id, teamSlug);
|
|
1715
1782
|
return {
|
|
1716
1783
|
content: [{ type: 'text', text: JSON.stringify(stripUuids(comments), null, 2) }],
|
|
1717
1784
|
};
|
|
1718
1785
|
}
|
|
1719
1786
|
case 'list_issue_comments': {
|
|
1720
1787
|
const parsed = ListIssueCommentsSchema.parse(args);
|
|
1721
|
-
const
|
|
1788
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1789
|
+
const comments = await this.client.listIssueComments(parsed.issue_id, teamSlug);
|
|
1722
1790
|
return {
|
|
1723
1791
|
content: [{ type: 'text', text: JSON.stringify(stripUuids(comments), null, 2) }],
|
|
1724
1792
|
};
|
|
1725
1793
|
}
|
|
1726
1794
|
case 'create_work_item_comment': {
|
|
1727
1795
|
const parsed = CreateWorkItemCommentSchema.parse(args);
|
|
1796
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1728
1797
|
const comment = await this.client.createWorkItemComment(parsed.work_item_id, {
|
|
1729
1798
|
content: parsed.content,
|
|
1730
|
-
});
|
|
1799
|
+
}, teamSlug);
|
|
1731
1800
|
return {
|
|
1732
1801
|
content: [
|
|
1733
1802
|
{
|
|
@@ -1739,9 +1808,10 @@ class WolfpackMCPServer {
|
|
|
1739
1808
|
}
|
|
1740
1809
|
case 'create_issue_comment': {
|
|
1741
1810
|
const parsed = CreateIssueCommentSchema.parse(args);
|
|
1811
|
+
const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
|
|
1742
1812
|
const comment = await this.client.createIssueComment(parsed.issue_id, {
|
|
1743
1813
|
content: parsed.content,
|
|
1744
|
-
});
|
|
1814
|
+
}, teamSlug);
|
|
1745
1815
|
return {
|
|
1746
1816
|
content: [
|
|
1747
1817
|
{
|